diff --git a/ci/os/internal/Classes/CLITestsMethods.os b/ci/os/internal/Classes/CLITestsMethods.os index 4c476fe890..66a690863d 100644 --- a/ci/os/internal/Classes/CLITestsMethods.os +++ b/ci/os/internal/Classes/CLITestsMethods.os @@ -66,7 +66,7 @@ ПутиСохраненияМодулейCLI = Новый Массив; ПутиСохраненияМодулейCLI.Добавить(Корень + Язык + "/OInt/tests/Modules/" + ИмяМодуляТестовCLI + ".os"); - ПутиСохраненияМодулейCLI.Добавить(Корень + Язык + "/BSL/OpenIntegrations/src/CommonModules/" + ИмяМодуляТестовCLI + "/Module.bsl"); + ПутиСохраненияМодулейCLI.Добавить(Корень + Язык + "/BSL/Tests/src/CommonModules/" + ИмяМодуляТестовCLI + "/Module.bsl"); ПреобразоватьТестыВCLI(Язык); @@ -110,8 +110,8 @@ , "#Использовать oint" , "#Использовать ""../../tools/main"" - | #Использовать ""../../tools/http"" - | #Использовать ""../../api"""); + |#Использовать ""../../tools/http"" + |#Использовать ""../../api"""); ТекстМодуля = СтрЗаменить(ТекстМодуля, "СформироватьТестыЯкс()", "СформироватьТестыЯксCLI()"); ТекстМодуля = СтрЗаменить(ТекстМодуля, "СформироватьТестыАссертс()", "СформироватьТестыАссертсCLI()"); @@ -122,8 +122,8 @@ , "#Use oint" , "#Use ""../../tools/main"" - | #Use ""../../tools/http"" - | #Use ""../../api"""); + |#Use ""../../tools/http"" + |#Use ""../../api"""); ТекстМодуля = СтрЗаменить(ТекстМодуля, "FormYAXTests()", "FormYAXTestsCLI()"); ТекстМодуля = СтрЗаменить(ТекстМодуля, "FormAssertsTests()", "FormAssertsTestsCLI()"); diff --git a/ci/os/internal/Classes/JenkinsTestsMethods.os b/ci/os/internal/Classes/JenkinsTestsMethods.os index 6ea64bbef7..07b6d9b58c 100644 --- a/ci/os/internal/Classes/JenkinsTestsMethods.os +++ b/ci/os/internal/Classes/JenkinsTestsMethods.os @@ -189,9 +189,9 @@ ФайлDebCLI = СтрШаблон("%1/cli_deb_test_%2.jenkinsfile", КаталогWorkflow, Язык); ФайлWindows1c = СтрШаблон("%1/1c_test_%2.jenkinsfile", КаталогWorkflow, Язык); - ТекстВыполненияOS = ПолучитьТекстВыполненияOs(ТаблицаТестов, СписокБиблиотек, МодульТестов, Язык); - ТекстВыполненияCLI = ПолучитьТекстВыполненияOs(ТаблицаТестов, СписокБиблиотек, МодульТестовCLI, Язык); - ТекстВыполнения1С = ПолучитьТекстВыполнения1c(ТаблицаТестов, СписокБиблиотек, МодульТестов, Язык); + ТекстВыполненияOS = ПолучитьТекстВыполненияOs(ТаблицаТестов, СписокБиблиотек, Язык, "OPIt_"); + ТекстВыполненияCLI = ПолучитьТекстВыполненияOs(ТаблицаТестов, СписокБиблиотек, Язык, "OPItc_"); + ТекстВыполнения1С = ПолучитьТекстВыполнения1c(ТаблицаТестов, СписокБиблиотек, Язык); ТекстJFCLI = СтрШаблон(ШаблонCliWindows, Язык, ТекстВыполненияCLI, КаталогOscript); ТекстJFOS = СтрШаблон(ШаблонOsWindows, Язык, ТекстВыполненияOS, КаталогOscript); @@ -250,7 +250,7 @@ КонецПроцедуры -Функция ПолучитьТекстВыполненияOs(Знач ТаблицаТестов, Знач СписокБиблиотек, Знач МодульТестов, Знач Язык) +Функция ПолучитьТекстВыполненияOs(Знач ТаблицаТестов, Знач СписокБиблиотек, Знач Язык, Знач Префикс) СтрокаРаздел = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("sectionsString", Язык); СтрокаМетод = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("methodString", Язык); @@ -278,7 +278,7 @@ Метод = Тест[СтрокаМетод]; - МассивВыполнений.Добавить(СтрШаблон(ШаблонВыполнения, МодульТестов, Метод)) + МассивВыполнений.Добавить(СтрШаблон(ШаблонВыполнения, Префикс + Раздел, Метод)) КонецЦикла; @@ -294,13 +294,12 @@ КонецФункции -Функция ПолучитьТекстВыполнения1c(Знач ТаблицаТестов, Знач СписокБиблиотек, Знач МодульТестов, Знач Язык) +Функция ПолучитьТекстВыполнения1c(Знач ТаблицаТестов, Знач СписокБиблиотек, Знач Язык) СтрокаРаздел = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("sectionsString", Язык); СтрокаМетод = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("methodString", Язык); СтрокаСиноним = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("synonymString", Язык); - ИмяМодуляТестов = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("testsModule", Язык); Если Не ТипЗнч(СписокБиблиотек) = Тип("Структура") Тогда СписокБиблиотек_ = Новый Структура; @@ -328,7 +327,7 @@ Для Каждого Тест Из ТестыТекущегоРаздела Цикл Метод = Тест[СтрокаМетод]; - МассивМетодов.Добавить("""" + ИмяМодуляТестов + "." + Метод + """" ); + МассивМетодов.Добавить("""OPIt_" + Раздел + "." + Метод + """" ); КонецЦикла; diff --git a/service/dictionaries/en.json b/service/dictionaries/en.json index 0453a0048c..95c35029c9 100644 --- a/service/dictionaries/en.json +++ b/service/dictionaries/en.json @@ -1,314 +1,246 @@ { "с": "with", -"В": "In", -"и": "and", -"в": "in", -"к": "to", -"г": "y", -"А": "A", -"И": "And", -"Н": "N", -"К": "K", -"о": "o", "а": "a", +"о": "o", +"К": "K", +"И": "And", +"А": "A", +"Н": "N", +"к": "to", +"в": "in", +"и": "and", +"В": "In", +"г": "y", +"не": "not", +"ГВ": "GW", +"1С": "1C", +"МБ": "MB", +"ПФ": "FF", +"на": "to", +"ГК": "GC", +"ФС": "FS", +"Из": "In", +"РВ": "RX", +"См": "See", +"Да": "Yes", +"НЕ": "NOT", +"АТ": "AT", +"НС": "NC", +"ВК": "VK", +"по": "to", "ДД": "BD", "Он": "He", -"Не": "Not", "ГД": "GD", "за": "for", "со": "with", -"он": "he", +"Не": "Not", "По": "To", "ПС": "PS", "но": "but", "из": "from", "ГТ": "GS", -"ВК": "VK", -"по": "to", -"АТ": "AT", -"Да": "Yes", -"ГВ": "GW", -"1С": "1C", -"МБ": "MB", -"ПФ": "FF", -"не": "not", -"на": "to", -"НЕ": "NOT", -"ФС": "FS", -"Из": "In", -"РВ": "RX", -"НС": "NC", -"См": "See", -"ГК": "GC", -"так": "that", -"Как": "How", -"Хук": "Hook", -"Все": "All", -"нет": "no", -"Вид": "View", -"Или": "Or", -"это": "this", -"Поз": "Pos", -"тип": "type", -"без": "without", -"Наш": "Our", -"Б24": "B24", -"хит": "hit", -"Для": "For", -"вес": "weight", -"ндс": "vat", -"Док": "Doc", -"ОПИ": "OPI", -"Что": "What", -"осн": "main", -"ООп": "ErrInfo", -"ОТД": "OTD", -"был": "been", -"как": "as", -"изм": "change", -"Фид": "Feed", -"код": "code", -"ИФТ": "BFN", -"ААА": "AAA", -"Тип": "Type", -"Чат": "Chat", -"при": "when", -"Нет": "No", -"Тэг": "Tag", -"Год": "Year", -"Имя": "Name", -"Код": "Code", -"ИНН": "TIN", -".PF": ".FF", -"тэг": "tag", -"Ещё": "More", -"для": "for", -"Час": "Hour", -"ПВЗ": "Point", -"НПП": "NPP", -"Тык": "Click!", -"доп": "add", -"ИВТ": "TFN", +"он": "he", "ВКТ": "VKT", -"ООД": "OOD", -"или": "or", -"Лев": "Left", -"Цел": "Int", "три": "three", +"Цел": "Int", +"Лев": "Left", +"или": "or", +"ООД": "OOD", +"ИВТ": "TFN", +"для": "for", +"Тык": "Click!", +"НПП": "NPP", +"ПВЗ": "Point", +"Час": "Hour", ".PS": ".LF", +"тэг": "tag", +".PF": ".FF", +"доп": "add", "Фон": "Background", -"Вес": "Weight", -"Таб": "Tab", -"Бан": "Ban", -"что": "that", -"Окр": "Round", -"Лог": "Log", "2 ч": "2 hr", -"Два": "Two", -"стр": "str", -"имя": "name", -"ИВФ": "TFN", -"Тег": "Tag", -"Стр": "Str", -"Хеш": "Hash", -"Три": "Three", -"БСП": "BSP", +"Таб": "Tab", +"ИНН": "TIN", ".VK": ".CR", -"Врег": "Upper", -"Пост": "Post", -"темы": "of topic", -"мета": "meta", -"Лист": "Sheet", -"Мета": "Meta", -"Офис": "Office", -"Лама": "Lama", -"Теги": "Tags", -"Цель": "Purpose", -"Итог": "Total", -"ВТаб": "VTab", -"Цвет": "Color", -"Пока": "While", -"Пинг": "Ping", -"срок": "deadline", -"Роль": "Role", -"файл": "file", -"Макс": "Max", -"план": "plan", -"цикл": "loop", -"\"No\"": "\"None\"", -"Пара": "Pair", -"Иван": "Ivan", -"веса": "of weight", -"Одно": "Single", -"Инит": "Init", -"День": "Day", -"ЧГ=0": "NG=0", -"чате": "chat", -"Цикл": "Do", -"Фото": "Photo", -"путь": "path", -"Лого": "Logo", -"Ключ": "Key", -"Прав": "Right", -"Озон": "Ozon", -"цвет": "color", -"Пути": "Paths", -"Поле": "Field", -"фото": "photo", -"Если": "If", -"Тело": "Body", -"Файл": "File", -"свой": "own", -"База": "Base", -"СУБД": "DBMS", -"пути": "paths", -"Срок": "Deadline", -"Сдэк": "Cdek", -"Сайт": "Website", -"Знач": "Val", -"Ждет": "Waiting", -"быть": "be", -"Вход": "Entry", -"Тест": "Test", -"нРег": "Lower", -"Стат": "Stat", -"цена": "price", -"тела": "of body", -"Море": "Sea", -"Слак": "Slack", -"Линк": "Link", -".NPP": ".NBSp", -"вРег": "Upper", -"Блоб": "Blob", -"если": "if", +"БСП": "BSP", +"Три": "Three", +"Хеш": "Hash", +"Стр": "Str", +"Тег": "Tag", +"ИВФ": "TFN", +"имя": "name", +"стр": "str", +"Два": "Two", +"Лог": "Log", +"Окр": "Round", +"что": "that", +"Бан": "Ban", +"Вес": "Weight", +"Код": "Code", +"Ещё": "More", +"Год": "Year", +"вес": "weight", +"Для": "For", +"хит": "hit", +"Б24": "B24", +"Наш": "Our", +"без": "without", +"тип": "type", +"ндс": "vat", +"Поз": "Pos", +"Вид": "View", +"нет": "no", +"Все": "All", +"Хук": "Hook", +"Как": "How", +"так": "that", +"Имя": "Name", +"это": "this", +"Док": "Doc", +"Или": "Or", +"Что": "What", +"Тэг": "Tag", +"ОПИ": "OPI", +"Нет": "No", +"при": "when", +"Тип": "Type", +"ААА": "AAA", +"ИФТ": "BFN", +"Чат": "Chat", +"Фид": "Feed", +"изм": "change", +"как": "as", +"осн": "main", +"был": "been", +"ОТД": "OTD", +"код": "code", +"ООп": "ErrInfo", "была": "been", "Цена": "Price", "всех": "all", "тему": "topic", -"Коды": "Codes", "СДЭК": "CDEK", "Тема": "Topic", "Блок": "Block", +"если": "if", "коду": "code", +"Коды": "Codes", +"Блоб": "Blob", +"цена": "price", +".NPP": ".NBSp", +"Линк": "Link", +"Слак": "Slack", +"Море": "Sea", +"тела": "of body", +"Стат": "Stat", +"нРег": "Lower", +"Тест": "Test", +"Вход": "Entry", "Флаг": "Flag", +"вРег": "Upper", "Пётр": "John", -"Ввод": "Typing", -"поля": "fields", -"чата": "chat", -"Путь": "Path", -"цены": "price", -"Куда": "Target", -"Дата": "Date", -"ТРег": "Title", -"лида": "of lead", -"Язык": "Lang", -"Порт": "Port", -"Олег": "Oleg", -"Авто": "Auto", -"флаг": "flag", -"Диск": "Drive", -"Ложь": "False", -"Петр": "John", -"АирТ": "AirT", "Цены": "Prices", -"виде": "view", -"Хост": "Host", -"Поля": "Fields", -"Сред": "Mid", -"Один": "One", +"поля": "fields", +"быть": "be", "дата": "date", -"Листы": "Sheets", -"Финал": "Final", -"Опция": "Option", -"КБайт": "KBytes", -"Белый": "White", -"Заказ": "Order", -"книги": "books", -"Серый": "Gray", -"Твиты": "Tweets", -"Набор": "Set", -"Файлы": "Files", -"вчера": "yesterday", -"Папка": "Folder", -"Важно": "Important", -"Схема": "Scheme", -"Скоуп": "Scope", -"набор": "set", -"Поле3": "Field3", -"отчет": "report", -"Добро": "Welcome", -"Найти": "Find", -"Успех": "Success", -"Текст": "Text", -"Схемы": "Scheme", -"файла": "file", -"серый": "gray", -"Путь1": "Path1", -"диске": "disk", -"Адрес": "Address", -"Книга": "Spreadsheet", -"Тогда": "Then", -"текст": "text", -"Тариф": "Tariff", -"число": "number", -"Монго": "Mongo", -"найти": "find", -"Часть": "Part", -"между": "between", -"Поток": "Stream", -"файлу": "file", -"Видео": "Video", -"Блоки": "Blocks", -"Любой": "Any", -"вроде": "like", -"Пакет": "Package", -"Длина": "Length", -"опции": "options", -"чтобы": "for", -"метод": "method", -"копия": "copy", -"Номер": "Number", -"Ноушн": "Notion", -"Равно": "Equal", -"Форум": "Forum", -"Поле1": "Field1", -"ответ": "response", -"нечто": "something", -"телом": "body", -"ЕдИзм": "Unit", -"Права": "Permissions", -"Сутки": "Day", -"Антон": "Anton", -"строк": "strings", -"Автор": "Author", -"Иначе": "Else", -"Метка": "Label", -"Файлу": "File", -"Сдвиг": "Shift", -"сайта": "site", -"Синий": "Blue", -"часть": "part", -"Почта": "Email", -"Дата1": "Date1", -"ЯДиск": "YDisk", -"Товар": "Product", -"метка": "tag", -"Отгул": "Time off", -"будет": "will", -"ТВЕРЬ": "Tver", -"Сканы": "Scans", -"Отчет": "Report", -"Почты": "Mails", -"Режим": "Mode", -"Пусто": "Empty", -"Число": "Number", -"Канал": "Channel", -"Метод": "Method", -"Бакет": "Bucket", -"общих": "common", -"Аудио": "Audio", -"Вызов": "Call", +"Один": "One", +"Сред": "Mid", +"Поля": "Fields", +"Хост": "Host", +"виде": "view", +"АирТ": "AirT", +"Петр": "John", +"Ложь": "False", +"Диск": "Drive", +"флаг": "flag", +"Авто": "Auto", +"Олег": "Oleg", +"Порт": "Port", +"Язык": "Lang", +"лида": "of lead", +"ТРег": "Title", +"Дата": "Date", +"Куда": "Target", +"цены": "price", +"Путь": "Path", +"чата": "chat", +"Ввод": "Typing", +"Ждет": "Waiting", +"Пути": "Paths", +"Сайт": "Website", +"Пара": "Pair", +"\"No\"": "\"None\"", +"цикл": "loop", +"план": "plan", +"Макс": "Max", +"файл": "file", +"Роль": "Role", +"срок": "deadline", +"Пинг": "Ping", +"Пока": "While", +"Цвет": "Color", +"ВТаб": "VTab", +"Итог": "Total", +"Цель": "Purpose", +"Теги": "Tags", +"Лама": "Lama", +"Офис": "Office", +"Мета": "Meta", +"мета": "meta", +"темы": "of topic", +"Пост": "Post", +"Врег": "Upper", +"Знач": "Val", +"Иван": "Ivan", +"веса": "of weight", +"Лист": "Sheet", +"Инит": "Init", +"Одно": "Single", +"Срок": "Deadline", +"пути": "paths", +"Сдэк": "Cdek", +"База": "Base", +"свой": "own", +"Файл": "File", +"Тело": "Body", +"Если": "If", +"фото": "photo", +"Поле": "Field", +"СУБД": "DBMS", +"цвет": "color", +"ЧГ=0": "NG=0", +"Цикл": "Do", +"Фото": "Photo", +"путь": "path", +"чате": "chat", +"Ключ": "Key", +"Прав": "Right", +"Озон": "Ozon", +"Лого": "Logo", +"День": "Day", +"токен": "token", +"Дата0": "Date0", +"Медиа": "Media", +"Опции": "Options", +"диска": "of drive", +"Поиск": "Search", +"нужна": "need", +"Логин": "Login", +"Путь2": "Path2", +"Ключи": "Keys", +"Слэши": "Slashes", +"Домен": "Domain", +"почта": "email", +"Токен": "Token", +"Марта": "Marta", +"Грант": "Grant", +"Файла": "File", +"путей": "paths", +"Гифки": "Gifs", +"СокрЛ": "TrimL", +"тесты": "tests", +"сумма": "amount", "ЭтоOS": "IsOS", +"Плохо": "Bad", "Сид 1": "Seed 1", "Поле2": "Field2", "ЭтоV2": "IsV2", @@ -318,7 +250,6 @@ "Шапка": "Header", "можно": "may", "Буфер": "Buffer", -"тесты": "tests", "части": "parts", "Откат": "Rollback", "Гифка": "GIF", @@ -327,32 +258,33 @@ "пакет": "package", "типов": "types", "ТЗнач": "TValue", -"сумма": "amount", "Тесты": "Tests", -"СокрЛ": "TrimL", -"токен": "token", -"Медиа": "Media", -"Опции": "Options", -"диска": "of drive", -"Поиск": "Search", -"нужна": "need", -"Логин": "Login", -"Дата0": "Date0", -"Гифки": "Gifs", -"Ключи": "Keys", -"Слэши": "Slashes", -"Домен": "Domain", -"Путь2": "Path2", -"Токен": "Token", -"Марта": "Marta", -"Грант": "Grant", -"Файла": "File", -"путей": "paths", -"почта": "email", -"Плохо": "Bad", "Ответ": "Response", -"Минск": "Minsk", +"Артем": "Artem", "Сид 2": "Seed 2", +"Общие": "Common", +"Копия": "Copy", +"имеет": "have", +"опция": "option", +"после": "after", +"Новая": "New", +"Стиль": "Style", +"вашей": "yours", +"Слово": "Word", +"места": "of the venue", +"Перем": "Var", +"Дрель": "Drill", +"С TLS": "With TLS", +"Копий": "Copies", +"Новый": "New", +"Архив": "Archive", +"КодJS": "JSCode", +"ЮТест": "UTest", +"Вызов": "Call", +"Голос": "Voice", +"Минск": "Minsk", +"Месяц": "Month", +"почты": "of email", "Время": "Time", "своей": "of its", "Отбор": "Filter", @@ -372,62 +304,225 @@ "Части": "Parts", "Перед": "Prev", "Пауза": "Pause", -"почты": "of email", "МБайт": "MByte", -"Месяц": "Month", -"Голос": "Voice", -"Артем": "Artem", -"Общие": "Common", -"Копия": "Copy", -"имеет": "have", -"опция": "option", -"после": "after", -"Новая": "New", -"Стиль": "Style", -"вашей": "yours", -"Слово": "Word", -"места": "of the venue", -"Перем": "Var", -"Дрель": "Drill", -"С TLS": "With TLS", -"Копий": "Copies", -"Новый": "New", +"Аудио": "Audio", "более": "more", -"Архив": "Archive", -"КодJS": "JSCode", -"ЮТест": "UTest", -"вызову": "of call", -"ставка": "value", -"Это B3": "ThisIsB3", -"первый": "first", -"Первое": "First", -"Символ": "Symbol", -"Завтра": "Tomorrow", -"работе": "work", -"Клиент": "Client", -"Товары": "Products", -"группы": "of group", -"Это B4": "ThisIsB4", -"строка": "string", -"частям": "parts", -"СокрЛП": "TrimAll", -"IDЧата": "ChatID", -"плёнок": "film", -"сводка": "summary", -"работы": "work", -"общего": "common", -"Это A4": "ThisIsA4", -"стадию": "stage", -"успеть": "make it in time", -"Задачи": "Tasks", -"Москва": "Moscow", -"Черный": "Black", -"ФотоID": "PhotoID", -"Строки": "Strings", -"корень": "root", -"сервер": "server", -"версии": "version", -"Маркер": "Marker", +"Бакет": "Bucket", +"Схемы": "Scheme", +"файла": "file", +"серый": "gray", +"Путь1": "Path1", +"диске": "disk", +"Адрес": "Address", +"Книга": "Spreadsheet", +"Тогда": "Then", +"Текст": "Text", +"текст": "text", +"число": "number", +"Монго": "Mongo", +"найти": "find", +"Часть": "Part", +"между": "between", +"Поток": "Stream", +"файлу": "file", +"Видео": "Video", +"Тариф": "Tariff", +"Успех": "Success", +"Найти": "Find", +"Добро": "Welcome", +"общих": "common", +"Листы": "Sheets", +"Финал": "Final", +"Опция": "Option", +"КБайт": "KBytes", +"Белый": "White", +"Заказ": "Order", +"книги": "books", +"Серый": "Gray", +"Твиты": "Tweets", +"Набор": "Set", +"Файлы": "Files", +"вчера": "yesterday", +"Папка": "Folder", +"Схема": "Scheme", +"Скоуп": "Scope", +"набор": "set", +"Поле3": "Field3", +"отчет": "report", +"Блоки": "Blocks", +"Любой": "Any", +"Важно": "Important", +"Пакет": "Package", +"сайта": "site", +"Синий": "Blue", +"часть": "part", +"Почта": "Email", +"Дата1": "Date1", +"ЯДиск": "YDisk", +"Товар": "Product", +"метка": "tag", +"Отгул": "Time off", +"будет": "will", +"ТВЕРЬ": "Tver", +"Отчет": "Report", +"Почты": "Mails", +"Режим": "Mode", +"Пусто": "Empty", +"Число": "Number", +"Канал": "Channel", +"вроде": "like", +"Метод": "Method", +"Сдвиг": "Shift", +"Файлу": "File", +"Сканы": "Scans", +"Иначе": "Else", +"опции": "options", +"Метка": "Label", +"Длина": "Length", +"чтобы": "for", +"метод": "method", +"копия": "copy", +"Ноушн": "Notion", +"Равно": "Equal", +"Форум": "Forum", +"Поле1": "Field1", +"Номер": "Number", +"нечто": "something", +"Автор": "Author", +"строк": "strings", +"ответ": "response", +"Сутки": "Day", +"Права": "Permissions", +"Антон": "Anton", +"ЕдИзм": "Unit", +"телом": "body", +"Период": "Period", +"Формат": "Format", +"ширина": "width", +"анализ": "analysis", +"Услуга": "Service", +"Пустой": "Empty", +"Рефреш": "Refresh", +"Россия": "Russia", +"Булево": "Boolean", +"вызова": "call", +"Это A2": "ThisIsA2", +"Откуда": "From", +"Объект": "Object", +"проект": "project", +"ТипЗнч": "TypeOf", +"Ячейка": "Cell", +"Скидка": "Discount", +"Это B1": "ThisIsB1", +"Регион": "Region", +"Массив": "Array", +"Раздел": "Section", +"Данные": "Data", +"Второй": "Second", +"Сессия": "Session", +"автора": "of author", +"Оценка": "Mark", +"Больше": "Bigger", +"Рандом": "Random", +"ЭтоCLI": "IsCLI", +"IDЛида": "LeadID", +"Прокси": "Proxy", +"Хорошо": "Good", +"IDТемы": "TopicID", +"Детали": "Details", +"Размер": "Size", +"базами": "bases", +"Канбан": "Kanban", +"ВКПост": "VKPost", +"Секция": "Section", +"работу": "work", +"Модель": "Model", +"Диалог": "Dialog", +"ДатаОт": "DateFrom", +"Письмо": "Letter", +"Мета 2": "Meta 2", +"Сжатие": "Compression", +"модуля": "module", +"Аватар": "Picture", +"Петров": "Doe", +"IDЛога": "LogID", +"Широта": "Latitude", +"АТПоле": "ATField", +"Курсор": "Cursor", +"статус": "status", +"метода": "method", +"ПолеID": "FieldID", +"Запись": "Record", +"Услуги": "Services", +"Замена": "Replace", +"СКонца": "FromEnd", +"Низкий": "Low", +"Иконки": "Icons", +"уценка": "discount", +"равным": "equal", +"ответа": "of response", +"Это A3": "ThisIsA3", +"Скрыть": "Hide", +"методу": "method", +"Пустая": "Clear", +"Это A1": "ThisIsA1", +"Шаблон": "Template", +"команд": "commands", +"задачи": "of topic", +"Гифка2": "Gif2", +"файлов": "of files", +"релиза": "release", +"Стадия": "Stage", +"Иконка": "Icon", +"сервис": "service", +"ПоСети": "ByNetwork", +"Память": "Memory", +"задача": "task", +"Иванов": "Ivanov", +"ФидXML": "FeedXML", +"ЭтоTls": "IsTls", +"товара": "product", +"Пакеты": "Packages", +"Первый": "First", +"вывода": "output", +"IDФида": "FeedID", +"Часть2": "Part2", +"Основа": "Base", +"ИДФото": "PhotoID", +"одежда": "clothing", +"набора": "of set", +"Товар2": "Item2", +"валюты": "of currency", +"Истина": "True", +"ВСпейс": "VSpace", +"Корень": "Root", +"Часть3": "Part3", +"Прочее": "Miscellaneous", +"релизе": "release", +"Прочие": "Others", +"ошибки": "errors", +"Пароль": "Password", +"Товар1": "Item1", +"высота": "height", +"валюта": "currency", +"прокси": "proxy", +"хлопок": "cotton", +"ФайлДД": "FileBD", +"Ошибка": "Error", +"Оплата": "Payment", +"тестов": "tests", +"2025 г": "2025", +"массив": "array", +"Флажок": "Checkbox", +"Важное": "Important", +"IDФото": "PhotoID", +"Кнопка": "Button", +"Книга2": "Spreadsheet2", +"Вопрос": "Question", +"Пример": "Example", +"начала": "of start", +"Способ": "Way", +"булево": "boolean", "ВКТЧат": "VKTChat", "данные": "Data", "Кнопки": "Buttons", @@ -455,42 +550,42 @@ "Чтение": "Reading", "данных": "data", "Начало": "Start", +"Маркер": "Marker", +"версии": "version", +"сервер": "server", +"корень": "root", +"Работа": "Work", +"вызову": "of call", +"ставка": "value", +"Это B3": "ThisIsB3", +"первый": "first", +"Первое": "First", +"Символ": "Symbol", +"Завтра": "Tomorrow", +"работе": "work", +"Клиент": "Client", +"Товары": "Products", +"группы": "of group", +"Это B4": "ThisIsB4", "Часть1": "Part1", +"строка": "string", +"СокрЛП": "TrimAll", +"IDЧата": "ChatID", +"плёнок": "film", +"сводка": "summary", +"работы": "work", +"общего": "common", +"Это A4": "ThisIsA4", +"стадию": "stage", +"успеть": "make it in time", +"Задачи": "Tasks", +"Москва": "Moscow", +"Черный": "Black", +"ФотоID": "PhotoID", +"частям": "parts", "Коммит": "Commit", -"Высота": "Height", +"Строки": "Strings", "Ответ1": "Response1", -"стадия": "stage", -"IDТипа": "TypeID", -"Индекс": "Index", -"Отступ": "Indent", -"вопрос": "question", -"методы": "methods", -"Страны": "Countrues", -"КудаID": "ToID", -"Дважды": "Twice", -"Ширина": "Width", -"Темный": "Dark", -"Состав": "Composition", -"Версия": "Version", -"опция1": "option1", -"Видео2": "Video2", -"Месяцы": "Months", -"Промпт": "Prompt", -"СлакОк": "SlackOk", -"Ресурс": "Resource", -"ошибке": "error", -"Модуль": "Module", -"Пустое": "Empty", -"Альбом": "Album", -"Запрос": "Request", -"Скрипт": "Script", -"Заказы": "Orders", -"Это B2": "ThisIsB2", -"Статус": "Status", -"Сервис": "Service", -"Записи": "Records", -"группе": "group", -"истина": "true", "Фильтр": "Filter", "клиент": "client", "Привет": "Hello", @@ -504,9 +599,8 @@ "Бирюза": "Cyan", "только": "only", "опцияN": "optionN", -"частей": "parts", +"истина": "true", "Ескейп": "Escape", -"отчете": "report", "Полную": "Full", "форума": "of forum", "Вайбер": "Viber", @@ -518,281 +612,80 @@ "Неделя": "Week", "Аддоны": "Addons", "Разбан": "Unban", +"Высота": "Height", "Строка": "String", -"булево": "boolean", -"Работа": "Work", -"начала": "of start", -"задачи": "of topic", -"IDТемы": "TopicID", -"Детали": "Details", -"Размер": "Size", -"базами": "bases", -"Канбан": "Kanban", -"ВКПост": "VKPost", -"Секция": "Section", -"работу": "work", -"Модель": "Model", -"IDЛида": "LeadID", -"Диалог": "Dialog", -"ДатаОт": "DateFrom", -"Письмо": "Letter", -"Сжатие": "Compression", -"СКонца": "FromEnd", -"модуля": "module", -"Аватар": "Picture", -"Петров": "Doe", -"IDЛога": "LogID", -"Широта": "Latitude", -"АТПоле": "ATField", -"Курсор": "Cursor", -"статус": "status", -"Способ": "Way", -"метода": "method", -"ПолеID": "FieldID", -"Запись": "Record", -"Услуги": "Services", -"Замена": "Replace", -"Прокси": "Proxy", -"Мета 2": "Meta 2", -"ЭтоCLI": "IsCLI", -"Оценка": "Mark", -"Откуда": "From", -"Булево": "Boolean", -"Период": "Period", -"ширина": "width", -"анализ": "analysis", -"Услуга": "Service", -"Пустой": "Empty", -"Рефреш": "Refresh", -"Россия": "Russia", -"вызова": "call", -"Это A2": "ThisIsA2", -"Формат": "Format", -"Объект": "Object", -"Рандом": "Random", -"ТипЗнч": "TypeOf", -"Ячейка": "Cell", -"Скидка": "Discount", -"Это B1": "ThisIsB1", -"Регион": "Region", -"Массив": "Array", -"Раздел": "Section", -"проект": "project", -"Данные": "Data", -"Второй": "Second", -"Сессия": "Session", -"автора": "of author", -"Больше": "Bigger", -"Хорошо": "Good", -"Низкий": "Low", -"ИДФото": "PhotoID", -"уценка": "discount", -"Товар2": "Item2", -"валюты": "of currency", -"Истина": "True", -"ВСпейс": "VSpace", -"Корень": "Root", -"Часть3": "Part3", -"Прочее": "Miscellaneous", -"релизе": "release", -"Прочие": "Others", -"ошибки": "errors", -"Пароль": "Password", -"Товар1": "Item1", -"высота": "height", -"прокси": "proxy", -"Пример": "Example", -"хлопок": "cotton", -"ФайлДД": "FileBD", -"Ошибка": "Error", -"Оплата": "Payment", -"тестов": "tests", -"2025 г": "2025", -"массив": "array", -"Флажок": "Checkbox", -"Важное": "Important", -"IDФото": "PhotoID", -"Кнопка": "Button", -"Книга2": "Spreadsheet2", -"Вопрос": "Question", -"набора": "of set", -"валюта": "currency", -"одежда": "clothing", -"Стадия": "Stage", -"равным": "equal", -"ответа": "of response", -"Это A3": "ThisIsA3", -"Скрыть": "Hide", -"методу": "method", -"Пустая": "Clear", -"Это A1": "ThisIsA1", -"Шаблон": "Template", -"команд": "commands", -"Иконки": "Icons", -"Гифка2": "Gif2", -"файлов": "of files", -"релиза": "release", -"Иконка": "Icon", -"Основа": "Base", -"сервис": "service", -"ПоСети": "ByNetwork", -"Память": "Memory", -"задача": "task", -"Иванов": "Ivanov", -"ФидXML": "FeedXML", -"ЭтоTls": "IsTls", -"товара": "product", -"Пакеты": "Packages", -"Первый": "First", -"вывода": "output", -"IDФида": "FeedID", -"Часть2": "Part2", -"Объекты": "Objects", -"Фильтры": "Filters", -"ГринКод": "GreenCode", -"Данные1": "Data1", -"вызвана": "called", -"Размеры": "Sizes", -"Природа": "Nature", -"крайний": "last", -"АудиоДД": "AudioDD", -"шаблону": "for pattern", -"запуска": "start", -"Позиция": "Item", -"ВКТовар": "VKProduct", -"ТипMIME": "MIMEType", -"Кластер": "Cluster", -"глубина": "depth", -"Коммент": "Comment", -"Дробное": "Float", -"Причина": "Reason", -"Частями": "ByParts", -"ссылкой": "URL", -"Фамилия": "LastName", -"функции": "functions", -"Удалить": "Delete", -"НЕ JSON": "NOT JSON", -"Фильтр3": "Filter3", -"парсера": "parser", -"Команды": "Commands", -"ЯзыкОПИ": "OPILanguage", -"Область": "Region", -"главную": "main", -"Зеленый": "Green", -"ВКВидео": "VKVideo", -"Таблица": "Table", -"S3 (ОПИ": "S3 (OpenIntegrations", -"запроса": "of request", -"рабочей": "works", -"наличие": "availability", -"Мой Мир": "My World", -"ГифкаДД": "GifDD", -"Обложка": "Cover", -"ТипХеша": "HashType", -"Простое": "Simple", -"Твиттер": "Twitter", -"Долгота": "Longitude", -"Колонки": "Columns", -"Не JSON": "Not JSON", -"Телефон": "Phone", -"Булево_": "Boolean_", -"Остатки": "Stocks", -"Вставка": "Insertion", -"Контакт": "Contact", -"Нажмите": "Click on", -"фамилия": "surname", -"VK (ОПИ": "VK (OpenIntegrations", -"Вывести": "Write", -"Фильтр4": "Filter4", -"ФайлSQL": "SQLFile", -"1 Тогда": "1 Then", -"Уровень": "Level", -"ЭтоSFTP": "IsSFTP", -"Закрыть": "Close", -"статуса": "of status", -"Попытки": "Attempts", -"Альпака": "Alpaca", -"Признак": "Indication", -"ID чата": "Chat ID", -"Консоль": "Console", -"История": "Story", -"Отлично": "Great", -"Текущее": "Current", -"ТекстДД": "TextBD", -"события": "events", -"Большой": "Big", -"Отметки": "Tags", -"ИмяРоли": "RoleName", -"Секунды": "Seconds", -"События": "Events", -"Текущая": "Current", -"Товар 2": "Product 2", -"ФайлРез": "ResultFile", -"IDМедиа": "MediaID", -"IDВидео": "VideoID", -"ЕстьТег": "HasTag", -"АБВ ГДЕ": "ABC DEF", -"Титовец": "Titovets", -"Возврат": "Return", -"Утилиты": "Tools", -"текущей": "current", -"Клиент2": "Client2", -"Клиент1": "Client1", -"ИДПоста": "PostID", -"Процент": "Percent", -"Магазин": "Market", -"Вариант": "Option", -"Попытка": "Try", -"ID лида": "Lead ID", -"Пропуск": "Skip", -"Граница": "Border", -"секцией": "section", -"Создать": "Create", -"IDАкции": "PromoID", -"ОзонSKU": "OzonSKU", -"Обратно": "Back", -"Разделы": "Sections", -"IDСтены": "WallID", -"ИмяТипа": "TypeName", -"команды": "commands", -"Сложный": "Complex", -"Запись1": "Record1", -"Без TLS": "No TLS", -"Таймаут": "Timeout", -"0 Тогда": "0 Then", -"Данные5": "Data5", -"Желтый_": "Yellow_", -"СлакБот": "SlackBot", -"Изменил": "Changer", -"Остаток": "Residue", -"Локация": "Location", -"Удаляет": "Deletes", -"Выборка": "Selection", -"Строка_": "String_", -"ID лога": "Log ID", -"Русская": "Russian", -"Ревизия": "Revision", -"ЦветИмя": "ColorName", -"ID темы": "Topic ID", -"Уволить": "Fire", -"промпта": "prompt", -"ГруппаИ": "GroupAnd", -"Каждого": "Each", -"единица": "unit", -"текущую": "current", -"Скрытый": "Hidden", -"свойств": "properties", -"указано": "filled", -"Строкой": "AsString", -"Очереди": "Queues", -"выводит": "output", -"Символы": "Chars", -"Отметка": "Timestamp", -"КакЕсть": "Raw", +"отчете": "report", +"группе": "group", +"частей": "parts", +"Сервис": "Service", +"стадия": "stage", +"IDТипа": "TypeID", +"Записи": "Records", +"Индекс": "Index", +"Отступ": "Indent", +"вопрос": "question", +"методы": "methods", +"Страны": "Countrues", +"КудаID": "ToID", +"Ширина": "Width", +"Темный": "Dark", +"Состав": "Composition", +"Версия": "Version", +"опция1": "option1", +"Видео2": "Video2", +"Дважды": "Twice", +"Месяцы": "Months", +"Статус": "Status", +"Это B2": "ThisIsB2", +"Заказы": "Orders", +"Скрипт": "Script", +"Альбом": "Album", +"Пустое": "Empty", +"Запрос": "Request", +"ошибке": "error", +"Ресурс": "Resource", +"СлакОк": "SlackOk", +"Промпт": "Prompt", +"Модуль": "Module", +"СдэкЧек": "CdekCheck", +"Атрибут": "Attribute", +"парсить": "parse", +"Русский": "Russian", +"ЭтоФлаг": "IsFlag", +"Запись2": "Record2", +"Аккаунт": "Account", +"Синоним": "Synonym", +"Префикс": "Prefix", +"ДопПоля": "AddFields", +"АТТекст": "ATText", +"Счетчик": "Counter", +"ОпросID": "PollID", +"Обычный": "Regular", +"Сделать": "Make", +"Главная": "Main", +"ВНачало": "ToStart", +"Кнопка1": "Button1", +"удалено": "deleted", +"Единица": "Unit", +"НСУспех": "NCSuccess", +"ИмяПоля": "FieldName", +"Вопрос1": "Question1", +"Двойная": "Double", +".Equal(": ".Равно(", +"Товар 3": "Product 3", +"Подпись": "Signature", +"Доступы": "Rights", +"Событие": "Event", +"цепочке": "chain", +"Текущий": "Current", +"изменен": "changed", +"главным": "main", +"Скачать": "Download", +"Метрика": "Metrika", +"ДатаISO": "DateISO", "Ресурсы": "Other", "IDКлюча": "KeyID", "ВКЧисло": "VKNumber", -"Скачать": "Download", "Фильтр2": "Filter2", "IDФайла": "FileID", "IDПапки": "FolderID", @@ -806,96 +699,24 @@ "ДопФото": "AdditionalPhoto", "ставить": "put", "Экспорт": "Export", -"декабря": "december", -"СНачала": "FromBegin", -"3 Тогда": "3 Then", -"S3Успех": "S3Success", -"Ожидаем": "Awaiting", -"признак": "attribute", -"ЮТТесты": "UTTests", -"нажмите": "press", -"Фильтр1": "Filter1", -"Каталог": "Directory", -"Данные3": "Data3", -"пустого": "empty", -"ЭтоБаза": "ThisIsBase", "КлючAPI": "APIKey", -"Метрика": "Metrika", +"ЭтоБаза": "ThisIsBase", +"пустого": "empty", +"Данные3": "Data3", +"Каталог": "Directory", +"Фильтр1": "Filter1", "телефон": "phone", -"главным": "main", -"удалено": "deleted", -"Обычный": "Regular", -"АТТекст": "ATText", -"Счетчик": "Counter", -"Аккаунт": "Account", -"ДопПоля": "AddFields", -"Префикс": "Prefix", -"Синоним": "Synonym", -"Запись2": "Record2", -"Атрибут": "Attribute", -"ЭтоФлаг": "IsFlag", -"Русский": "Russian", -"парсить": "parse", -"СдэкЧек": "CdekCheck", -"ОпросID": "PollID", -"Сделать": "Make", -"Двойная": "Double", -"ВНачало": "ToStart", -"Текущий": "Current", -"цепочке": "chain", -"Событие": "Event", -"Доступы": "Rights", -"Подпись": "Signature", -"Товар 3": "Product 3", -"Открыть": "Open", -"изменен": "changed", -".Equal(": ".Равно(", -"Вопрос1": "Question1", -"ИмяПоля": "FieldName", -"Главная": "Main", -"НСУспех": "NCSuccess", -"Единица": "Unit", -"Кнопка1": "Button1", -"ДатаISO": "DateISO", +"нажмите": "press", +"признак": "attribute", +"Ожидаем": "Awaiting", +"S3Успех": "S3Success", +"3 Тогда": "3 Then", +"СНачала": "FromBegin", +"декабря": "december", +"ЮТТесты": "UTTests", "Извлечь": "Extract", -"Найдена": "Found", +"Товар 1": "Product 1", "которые": "that", -"ТипПоля": "FieldType", -"ИмяУзла": "NodeName", -"Крайний": "Last", -"Кнопка2": "Button2", -"ЭтоВход": "Start", -"ВКТФайл": "VKTFile", -"Перенос": "LineBreak", -"Колонка": "Column", -"новинка": "new", -"ВидеоДД": "VideoDD", -"Виталий": "Vitaly", -"Высокий": "High", -"Кнопка3": "Button3", -"ТипУзла": "NodeType", -"граммах": "grams", -"Глубина": "Depth", -"Битрикс": "Bitrix", -"Отладка": "Debugging", -"Запросы": "Requests", -"IDМетки": "TagID", -"Данные4": "Data4", -"базовой": "base", -"В офисе": "InOffice", -"Функция": "Function", -"формате": "format", -"Элемент": "Element", -"Артикул": "Article", -"Альбомы": "Albums", -"Справка": "Help", -"красный": "red", -"объекты": "objects", -"Обертка": "Cover", -"ЯМаркет": "YaMarket", -"смайлов": "smiles", -"импорта": "import", -"Данные2": "Data2", "Таблицы": "Tables", "Удалять": "Delete", "товаров": "of products", @@ -913,6732 +734,6808 @@ "ОзонАПИ": "OzonAPI", "Скрытая": "Hidden", "Евгений": "Evgeniy", -"Код ПВЗ": "POZ code", -"справку": "help", -"Фильтр5": "Filter5", -"Красный": "Red", -"Команда": "Command", -"СдэкАПИ": "CdekAPI", -"IDПоста": "PostID", -"Товар 1": "Product 1", -"артикул": "article", -"Записал": "Write it!", -"Позиции": "Items", -"Активен": "Active", -"Клиент4": "Client4", +"КакЕсть": "Raw", "Средний": "Normal", -"Участник": "Member", -"IDСтадии": "StageID", -"API ключ": "API key", -"Выполнен": "Completed", -"Красный_": "Red_", -"МассивИД": "IDArray", -"Оригинал": "Original", -"Стриминг": "Streaming", -"оплачено": "paid", -"запросах": "requests", -"Хост SSH": "SSH host", -"Протокол": "Protocol", -"Условие1": "Condition1", -"БлокJSON": "JSONBlock", -"WSКлиент": "WSClient", -"IDСделки": "DealID", -"являются": "be", -"Упаковка": "Packaging", -"методами": "methods", -"IDСессии": "SessionID", -"По ключу": "By key", -"IDГруппы": "GroupID", -"параметр": "parameter", -"ID акции": "Promo ID", -"ID файла": "File ID", -"размеров": "of size", -"Прогресс": "Progress", -"ИДТовара": "ProductID", -"Контекст": "Context", -"контекст": "context", -"ЭтоКанал": "IsChannel", -"Вложения": "Attachments", -"Отложена": "Deferred", -"Добавить": "Add", -"ТипФайла": "FileType", -"Загружен": "Ready", -"ОткудаID": "FromID", -"ШаблонУП": "TemplateES", -"Загрузка": "Upload", -"ОбъектВК": "VKObject", -"Закрытие": "Closing", -"Значения": "Values", -"ВайберОк": "ViberOk", -"ГринФайл": "GreenFile", -"Основной": "Primary", -"ДанныеДД": "DataBD", -"ДатаISOZ": "DateISOZ", -"В оффисе": "On office", -"Elements": "Items", +"Клиент4": "Client4", +"Активен": "Active", +"Позиции": "Items", +"Записал": "Write it!", +"Данные2": "Data2", +"артикул": "article", +"СдэкАПИ": "CdekAPI", +"Команда": "Command", +"Красный": "Red", +"Фильтр5": "Filter5", +"справку": "help", +"Код ПВЗ": "POZ code", +"IDПоста": "PostID", +"импорта": "import", +"смайлов": "smiles", +"ЯМаркет": "YaMarket", +"ТипУзла": "NodeType", +"Кнопка3": "Button3", +"Высокий": "High", +"Виталий": "Vitaly", +"ВидеоДД": "VideoDD", +"новинка": "new", +"граммах": "grams", +"Колонка": "Column", +"ВКТФайл": "VKTFile", +"ЭтоВход": "Start", +"Кнопка2": "Button2", +"Крайний": "Last", +"ИмяУзла": "NodeName", +"ТипПоля": "FieldType", +"Перенос": "LineBreak", +"Найдена": "Found", +"Глубина": "Depth", +"Отладка": "Debugging", +"Обертка": "Cover", +"объекты": "objects", +"красный": "red", +"Справка": "Help", +"Альбомы": "Albums", +"Артикул": "Article", +"Битрикс": "Bitrix", +"Элемент": "Element", +"Функция": "Function", +"В офисе": "InOffice", +"базовой": "base", +"Данные4": "Data4", +"IDМетки": "TagID", +"Запросы": "Requests", +"формате": "format", +"Отметка": "Timestamp", +"Открыть": "Open", +"выводит": "output", +"наличие": "availability", +"Мой Мир": "My World", +"ГифкаДД": "GifDD", +"Обложка": "Cover", +"ТипХеша": "HashType", +"Простое": "Simple", +"Твиттер": "Twitter", +"Долгота": "Longitude", +"Колонки": "Columns", +"Не JSON": "Not JSON", +"Телефон": "Phone", +"Булево_": "Boolean_", +"Остатки": "Stocks", +"Вставка": "Insertion", +"Контакт": "Contact", +"Нажмите": "Click on", +"фамилия": "surname", +"Консоль": "Console", +"ID чата": "Chat ID", +"Признак": "Indication", +"Альпака": "Alpaca", +"Попытки": "Attempts", +"статуса": "of status", +"рабочей": "works", +"Закрыть": "Close", +"Уровень": "Level", +"1 Тогда": "1 Then", +"ФайлSQL": "SQLFile", +"Фильтр4": "Filter4", +"Вывести": "Write", +"VK (ОПИ": "VK (OpenIntegrations", +"ЭтоSFTP": "IsSFTP", +"S3 (ОПИ": "S3 (OpenIntegrations", +"Таблица": "Table", +"ВКВидео": "VKVideo", +"ТипMIME": "MIMEType", +"ВКТовар": "VKProduct", +"Позиция": "Item", +"запуска": "start", +"шаблону": "for pattern", +"АудиоДД": "AudioDD", +"Кластер": "Cluster", +"крайний": "last", +"Размеры": "Sizes", +"вызвана": "called", +"Данные1": "Data1", +"ГринКод": "GreenCode", +"Фильтры": "Filters", +"Объекты": "Objects", +"Природа": "Nature", +"История": "Story", +"глубина": "depth", +"Дробное": "Float", +"Зеленый": "Green", +"главную": "main", +"Область": "Region", +"ЯзыкОПИ": "OPILanguage", +"Команды": "Commands", +"парсера": "parser", +"Коммент": "Comment", +"Фильтр3": "Filter3", +"Удалить": "Delete", +"функции": "functions", +"Фамилия": "LastName", +"ссылкой": "URL", +"Частями": "ByParts", +"Причина": "Reason", +"НЕ JSON": "NOT JSON", +"Отлично": "Great", +"запроса": "of request", +"ТекстДД": "TextBD", +"Удаляет": "Deletes", +"Локация": "Location", +"Остаток": "Residue", +"Изменил": "Changer", +"СлакБот": "SlackBot", +"Желтый_": "Yellow_", +"Строка_": "String_", +"Данные5": "Data5", +"Таймаут": "Timeout", +"Без TLS": "No TLS", +"Запись1": "Record1", +"Сложный": "Complex", +"команды": "commands", +"ИмяТипа": "TypeName", +"0 Тогда": "0 Then", +"IDСтены": "WallID", +"ID лога": "Log ID", +"Ревизия": "Revision", +"Текущее": "Current", +"Очереди": "Queues", +"Строкой": "AsString", +"указано": "filled", +"свойств": "properties", +"Скрытый": "Hidden", +"Русская": "Russian", +"текущую": "current", +"Каждого": "Each", +"ГруппаИ": "GroupAnd", +"промпта": "prompt", +"Уволить": "Fire", +"ID темы": "Topic ID", +"ЦветИмя": "ColorName", +"единица": "unit", +"Разделы": "Sections", +"Выборка": "Selection", +"события": "events", +"Титовец": "Titovets", +"АБВ ГДЕ": "ABC DEF", +"ЕстьТег": "HasTag", +"IDВидео": "VideoID", +"IDМедиа": "MediaID", +"Товар 2": "Product 2", +"Возврат": "Return", +"Символы": "Chars", +"События": "Events", +"Секунды": "Seconds", +"ИмяРоли": "RoleName", +"Отметки": "Tags", +"Большой": "Big", +"Обратно": "Back", +"Текущая": "Current", +"Утилиты": "Tools", +"ФайлРез": "ResultFile", +"ОзонSKU": "OzonSKU", +"текущей": "current", +"IDАкции": "PromoID", +"Создать": "Create", +"секцией": "section", +"Граница": "Border", +"ID лида": "Lead ID", +"Попытка": "Try", +"Пропуск": "Skip", +"Магазин": "Market", +"Процент": "Percent", +"ИДПоста": "PostID", +"Клиент1": "Client1", +"Клиент2": "Client2", +"Вариант": "Option", +"ПотокZip": "ZipStream", +"ВКРепост": "VKRepost", +"Транслит": "Traslit", +"доступен": "available", +"Кнопка 2": "Button 2", +"Проверки": "Checks", +"IDЗадачи": "TaskID", +"Открытие": "Openning", +"подборку": "selection", +"Удаление": "Deletion", +"Получено": "Get it!", +"ДлинаURI": "URILength", +"например": "for example", +"ТипСвязи": "LinkType", +"Загрузки": "Downloads", +"Вложение": "Attachment", +"тип цели": "goal type", +"ИмеетТип": "HasType", +"Комплект": "Set", +"Название": "Name", +"Источник": "Source", +"МассивID": "IDArray", +"Кнопка 1": "Button 1", +"элементы": "elements", +"заполнен": "filled", +"продукты": "products", +"Страница": "Page", +"ВГраница": "UBound", +"ТипМедиа": "TypeOfMedia", +"Родитель": "Parent", +"НовоеИмя": "NewName", +"Значение": "Value", +"IDПотока": "StreamID", +"Обратный": "Reverse", +"С именем": "With name", +"Приемник": "Receiver", +"АТЗаписи": "ATRecords", +"SSH (ОПИ": "SSH (OpenIntegrations", +"URL фида": "Feed URL", +"значение": "value", +"мКоманды": "mCommands", +"Очистить": "Clear", +"проектам": "projects", +"Основная": "Main", +"Артибуты": "Attributes", +"СтрВсего": "StrTotal", +"Евгеньев": "Evgeniev", +"Аргумент": "Argument", +"Телеграм": "Telegram", +"загрузки": "upload", +"Завершен": "Completed", +"ДопОпция": "AddOption", +"РазмерДД": "SizeDD", +"Повторно": "Again", +"варианты": "variants", +"ТекстXML": "XMLText", +"Проверка": "Check", +"Варианты": "Variants", +"Выгрузка": "Unload", +"12 Тогда": "12 Then", +"Петрович": "Petrovich", +"АТЗапись": "ATRecord", +"основной": "primary", +"Подборки": "Selections", +"реальной": "real", +"Кнопка 3": "Button 3", +"FTP (ОПИ": "FTP (OpenIntegrations", +"Действия": "Actions", +"Удаления": "Deletions", +"временем": "time", +"ТипЧисло": "TypeNumber", +"Половина": "Half", +"ИмяФайла": "FileName", +"ТекстB64": "TextB64", +"ТекстSQL": "TextSQL", +"Дочерние": "Child", +"СхемаFBO": "FBOScheme", +"Включено": "Enabled", +"ФайлТела": "BodyFile", +"СтрокаТЗ": "DataString", +"Закрытые": "Closing", +"ID блока": "Block ID", +"Размер 1": "Size 1", +"Неоситиз": "Neocities", +"ДропБокс": "Dropbox", +"Вес в гр": "Weight in g", +"Порт SSH": "SSH port", +"повторов": "repeats", +"IDКанала": "ChannelID", +"ДопОпции": "AddOptions", +"ВсеТесты": "AllTests", +"Задержка": "Delay", +"возможно": "maybe", +"Свернуть": "Collapse", +"контакта": "of contact", +"Документ": "Document", +"ИДРаботы": "WorkID", +"ВКорзину": "ToCart", +"ТелоJSON": "JSONBody", +"ГуглЛист": "GoogleSheet", +"создания": "of create", +"Свойства": "Properties", +"Максимум": "Maximum", +"Отправка": "Sending", +"Действие": "Action", +"Признаки": "Indicators", +"Размер 2": "Size 2", +"СтрНайти": "StrFind", +"ФайлСлак": "SlackFile", +"Разметка": "Markup", +"ДатаСтоп": "EndDate", +"Компания": "Company", +"подборки": "selections", +"картинок": "images", +"Свойство": "Property", +"Точность": "Precision", +"Ожидание": "Waiting", +"IDРаботы": "JobID", +"получаем": "get", +"Имя,MIME": "Name,MIME", +"Черновик": "Draft", +"ИмяМедиа": "MediaName", +"Беларусь": "Belarus", +"страницу": "page", +"указания": "instructions", +"JSONДата": "JSONDate", +"Штрихкод": "Barcode", +"магазина": "store", +"ТестыCLI": "TestsCLI", +"Элементы": "Items", +"запросов": "of requests", +"описание": "description", +"пропуска": "skip", +"IDСклада": "WarehouseID", +"Числовой": "Numeric", +"ИмяКлюча": "KeyName", +"Описание": "Description", +"Кластеры": "Clusters", +"НоушнАпи": "NotionAPI", +"настроек": "settings", +"Тестовая": "Test", +"IDТовара": "ProductID", +"Уадление": "Removal", +"ХешСумма": "HashSum", "Как дела": "How are you?", +"Elements": "Items", +"В оффисе": "On office", +"ДатаISOZ": "DateISOZ", +"ДанныеДД": "DataBD", +"Основной": "Primary", "ЭтотФайл": "ThisFile", +"ГринФайл": "GreenFile", +"Значения": "Values", +"Закрытие": "Closing", +"ОбъектВК": "VKObject", +"Загрузка": "Upload", +"ШаблонУП": "TemplateES", +"ОткудаID": "FromID", +"ВайберОк": "ViberOk", +"Загружен": "Ready", "Подборка": "Selection", -"ЯМетрика": "YaMetrika", "ВКИстина": "VKTrue", -"ID метки": "Tag ID", -"Прервать": "Break", -"Телефоны": "Phones", -"Смещение": "Offset", -"Картинка": "Image", -"Имя базы": "Database name", -"ВКАльбом": "VKAlbum", -"каталога": "directory", -"IDИконки": "IconID", -"СтрДлина": "StrLen", -"URLФайла": "FileURL", -"собщение": "message", -"двоичные": "binary", "действий": "actions", +"двоичные": "binary", +"собщение": "message", +"URLФайла": "FileURL", +"СтрДлина": "StrLen", +"IDИконки": "IconID", +"ЯМетрика": "YaMetrika", +"каталога": "directory", +"Имя базы": "Database name", +"Картинка": "Image", +"Смещение": "Offset", +"Телефоны": "Phones", +"Прервать": "Break", +"ID метки": "Tag ID", +"ВКАльбом": "VKAlbum", "Подробно": "Detailed", +"ТипФайла": "FileType", +"Вложения": "Attachments", +"Условие1": "Condition1", +"Протокол": "Protocol", +"Хост SSH": "SSH host", +"запросах": "requests", +"оплачено": "paid", +"Стриминг": "Streaming", +"БлокJSON": "JSONBlock", +"Оригинал": "Original", +"Красный_": "Red_", +"Выполнен": "Completed", +"API ключ": "API key", +"IDСтадии": "StageID", +"Участник": "Member", +"компании": "of company", +"МассивИД": "IDArray", +"Добавить": "Add", +"WSКлиент": "WSClient", +"являются": "be", +"ЭтоКанал": "IsChannel", +"контекст": "context", +"Контекст": "Context", +"ИДТовара": "ProductID", +"Прогресс": "Progress", +"размеров": "of size", +"IDСделки": "DealID", +"ID файла": "File ID", +"параметр": "parameter", +"IDГруппы": "GroupID", +"По ключу": "By key", +"IDСессии": "SessionID", +"методами": "methods", +"Упаковка": "Packaging", +"ID акции": "Promo ID", "Основные": "Main", -"Алгоритм": "Algorithm", +"Отложена": "Deferred", "отклчить": "disable", -"IDНабора": "SetID", -"СлакФайл": "SlackFile", -"двоичных": "binary", -"ПоляБазы": "BaseFields", -"имя роли": "role name", -"отправки": "of sending", -"МОНОХРОМ": "MONOCHROME", -"Версия1С": "Version1C", -"В работе": "InProgress", -"Видмость": "Visibility", -"Постфикс": "Postfix", -"Картинки": "Pictures", -"IDЗаписи": "RecordID", -"Параметр": "Parameter", +"закрытия": "of closing", +"ДоменFTP": "FTPDomain", +"Артикулы": "Articles", +"Получить": "Get", +"ЭтоLinux": "IsLinux", +"КонецДня": "EndOfDay", +"Записать": "Write", +"значения": "values", +"Делитель": "Divider", +"ФайлПуть": "FilePath", +"удаления": "of deleting", +"IDЗатрат": "SpendingID", +"Создание": "Creation", +"ПоОдному": "Singly", +"название": "name", +"КонецСтр": "EndStr", +"ID Файла": "File ID", +"Заглушка": "Plug", +"ID поста": "Post ID", +"Алгоритм": "Algorithm", +"ХостПорт": "HostPort", +"ФайлЛога": "LogFile", +"входящих": "incoming", +"ключевой": "primary", +"Строчный": "StringType", +"Сообщить": "Message", +"Вставить": "Insert", +"ГКОбъект": "GCObject", +"Атрибуты": "Attributes", +"ИмяЛиста": "SheetName", +"ЕстьJSON": "FindJSON", +"ТипСхемы": "SchemeType", +"ЦветПоле": "ColorField", +"МедиаГиф": "MediaGif", +"Активный": "Active", +"выгрузка": "dump", "ЕстьКлюч": "KeyExists", +"Параметр": "Parameter", +"IDЗаписи": "RecordID", +"Картинки": "Pictures", +"Постфикс": "Postfix", +"В работе": "InProgress", +"Версия1С": "Version1C", +"МОНОХРОМ": "MONOCHROME", +"отправки": "of sending", +"имя роли": "role name", +"ПоляБазы": "BaseFields", +"двоичных": "binary", +"Двоичные": "Binary", +"СлакФайл": "SlackFile", +"IDНабора": "SetID", "UUIDЛога": "LogUUID", "Условие2": "Condition2", +"Видмость": "Visibility", "Закрытое": "Closed", -"ПризнакН": "AttributeN", -"ID книги": "SpreadsheetID", -"ПутьФайл": "FilePath", -"Внимание": "Attention", -"Отчество": "Patronymic", -"Включать": "Include", +"упрощает": "simplifies", +"штрихкод": "barcode", +"TCP (ОПИ": "TCP (ОПИ", +"защитных": "protective", +"ЕстьДата": "HasDate", +"Повторов": "Repeats", "IDФайла2": "FileID2", "ОтветКод": "ResponseCode", -"Повторов": "Repeats", -"ЕстьДата": "HasDate", -"защитных": "protective", -"TCP (ОПИ": "TCP (ОПИ", -"штрихкод": "barcode", -"упрощает": "simplifies", -"выгрузка": "dump", -"Двоичные": "Binary", -"МедиаГиф": "MediaGif", -"КонецСтр": "EndStr", -"ПоОдному": "Singly", -"Создание": "Creation", -"IDЗатрат": "SpendingID", -"удаления": "of deleting", -"ФайлПуть": "FilePath", -"Делитель": "Divider", -"название": "name", -"значения": "values", -"КонецДня": "EndOfDay", -"ЭтоLinux": "IsLinux", -"Получить": "Get", -"Артикулы": "Articles", -"ДоменFTP": "FTPDomain", -"закрытия": "of closing", -"Записать": "Write", -"Активный": "Active", -"ID Файла": "File ID", -"Строчный": "StringType", -"Заглушка": "Plug", -"ТипСхемы": "SchemeType", -"ЕстьJSON": "FindJSON", -"ИмяЛиста": "SheetName", -"Атрибуты": "Attributes", -"ГКОбъект": "GCObject", -"Вставить": "Insert", -"ЦветПоле": "ColorField", -"Сообщить": "Message", -"ключевой": "primary", -"входящих": "incoming", -"ФайлЛога": "LogFile", -"ХостПорт": "HostPort", -"ID поста": "Post ID", -"ХешСумма": "HashSum", -"компании": "of company", -"IDТовара": "ProductID", -"ВсеТесты": "AllTests", -"С именем": "With name", -"Телеграм": "Telegram", -"Аргумент": "Argument", -"Евгеньев": "Evgeniev", -"СтрВсего": "StrTotal", -"Артибуты": "Attributes", -"Уадление": "Removal", -"Завершен": "Completed", -"Основная": "Main", -"Очистить": "Clear", -"мКоманды": "mCommands", -"значение": "value", -"URL фида": "Feed URL", -"SSH (ОПИ": "SSH (OpenIntegrations", -"АТЗаписи": "ATRecords", -"проектам": "projects", -"РазмерДД": "SizeDD", -"Петрович": "Petrovich", -"Повторно": "Again", -"Действия": "Actions", -"FTP (ОПИ": "FTP (OpenIntegrations", -"Кнопка 3": "Button 3", -"реальной": "real", -"Подборки": "Selections", -"основной": "primary", -"Удаления": "Deletions", -"АТЗапись": "ATRecord", -"12 Тогда": "12 Then", -"Выгрузка": "Unload", -"Варианты": "Variants", -"Проверка": "Check", -"ТекстXML": "XMLText", -"варианты": "variants", -"Приемник": "Receiver", -"ДопОпция": "AddOption", -"Обратный": "Reverse", -"Комплект": "Set", -"Открытие": "Openning", -"например": "for example", -"ДлинаURI": "URILength", -"Получено": "Get it!", -"Удаление": "Deletion", -"подборку": "selection", -"Загрузки": "Downloads", -"IDЗадачи": "TaskID", -"ВКРепост": "VKRepost", -"Проверки": "Checks", -"Кнопка 2": "Button 2", -"доступен": "available", -"Транслит": "Traslit", -"ПотокZip": "ZipStream", -"ТипСвязи": "LinkType", -"Вложение": "Attachment", -"заполнен": "filled", -"ИмеетТип": "HasType", -"Значение": "Value", -"НовоеИмя": "NewName", -"Родитель": "Parent", -"ТипМедиа": "TypeOfMedia", -"ВГраница": "UBound", -"Страница": "Page", -"IDПотока": "StreamID", -"продукты": "products", -"элементы": "elements", -"Кнопка 1": "Button 1", -"МассивID": "IDArray", -"Источник": "Source", -"Название": "Name", -"тип цели": "goal type", -"загрузки": "upload", -"временем": "time", -"Признаки": "Indicators", -"Половина": "Half", -"ИмяМедиа": "MediaName", -"Черновик": "Draft", -"Имя,MIME": "Name,MIME", -"получаем": "get", -"IDРаботы": "JobID", -"Ожидание": "Waiting", -"Беларусь": "Belarus", -"Точность": "Precision", -"картинок": "images", -"подборки": "selections", -"Компания": "Company", -"ДатаСтоп": "EndDate", -"Разметка": "Markup", -"ФайлСлак": "SlackFile", -"Свойство": "Property", -"указания": "instructions", -"пропуска": "skip", -"JSONДата": "JSONDate", -"настроек": "settings", -"НоушнАпи": "NotionAPI", -"Кластеры": "Clusters", -"Описание": "Description", -"ИмяКлюча": "KeyName", -"Числовой": "Numeric", -"Тестовая": "Test", -"IDСклада": "WarehouseID", -"описание": "description", -"запросов": "of requests", -"Элементы": "Items", -"ТестыCLI": "TestsCLI", -"магазина": "store", -"Штрихкод": "Barcode", -"СтрНайти": "StrFind", -"страницу": "page", -"Размер 2": "Size 2", -"повторов": "repeats", -"Вес в гр": "Weight in g", -"ДропБокс": "Dropbox", -"Неоситиз": "Neocities", -"Размер 1": "Size 1", -"ID блока": "Block ID", -"Закрытые": "Closing", -"Порт SSH": "SSH port", -"СтрокаТЗ": "DataString", -"Включено": "Enabled", -"СхемаFBO": "FBOScheme", -"Дочерние": "Child", -"ТекстSQL": "TextSQL", -"ТекстB64": "TextB64", -"ИмяФайла": "FileName", -"ФайлТела": "BodyFile", -"IDКанала": "ChannelID", -"ИДРаботы": "WorkID", -"ДопОпции": "AddOptions", -"Отправка": "Sending", -"Максимум": "Maximum", -"Свойства": "Properties", -"создания": "of create", -"ГуглЛист": "GoogleSheet", -"ТелоJSON": "JSONBody", -"Действие": "Action", -"ВКорзину": "ToCart", -"Документ": "Document", -"контакта": "of contact", -"Свернуть": "Collapse", -"возможно": "maybe", -"Задержка": "Delay", -"ТипЧисло": "TypeNumber", -"Сообщение": "Message", -"частности": "particularly", -"Элементы1": "Elements1", -"ИмяМакета": "TemplateName", -"IDКлиента": "ClientID", -"КомандаБД": "DBCommand", -"Проверять": "Check", -"Одиночная": "Single", -"запустить": "launch", -"должность": "position", -"ТекстТопа": "TopText", -"ЗапросURL": "RequestURL", -"Настройка": "Setting", -"МассивИД_": "ArrayID_", -"ИДОбъекта": "ObjectID", -"ТекШирина": "CurrentWidth", -"URLОтвета": "ResponseURL", -"ID стадии": "Stage ID", -"Истечение": "Expiration", -"СдэкТокен": "CdekToken", -"кириллица": "cyrillic", -"МетодЛога": "LogsMethod", -"Вставлять": "Insert", -"Изменение": "Change", -"Локальный": "Local", -"IDЗапуска": "LaunchID", -"Пояснение": "Explanation", -"Уточнение": "Clarification", -"ПодписьДД": "SignBD", -"ЧЦ=2; ЧВН": "ND=10; NLZ", -"0.8 Тогда": "0.8 Then", -"Сравнение": "Comparison", -"PutСТелом": "PutWithBody", -"Картинка2": "Image2", -"Компонета": "AddIn", -"Последний": "Last", -"ВерсияАпи": "APIVersion", -"структуру": "structure", -"Анонимный": "Anonymous", -"Вариант 1": "Option 1", -"ЭтоМассив": "IsArray", -"ИмяМетода": "MethodName", -"отключить": "disable", -"НовыйТест": "NewTest", -"категории": "category", -"Пассивный": "Passive", -"ОбъектОПИ": "OPIObject", -"Сигнатура": "Signature", -"ДатаСтарт": "StartDate", -"Архивация": "Archiving", -"UUID лога": "Log UUID", -"Одиночное": "Single", -"Батарейки": "Batteries", -"Коллекции": "Collections", -"ОтветJSON": "ResponseJSON", -"НачалоСтр": "StartStr", -"ИмяМодуля": "ModuleName", -"Параметр_": "Parameter_", -"Файл_Стат": "File_Stat", -"ШаблонSQL": "SQLTemplate", -"Имя папки": "Folder name", -"заполнена": "filled", -"коллекции": "of collection", -"ПолноеИмя": "FullName", -"СдэкЗаказ": "CdekOrder", -"ИДАльбома": "AlbumID", -"Доступные": "Available", -"IDПервого": "FirstID", -"ТипДанных": "DataType", -"РазмерCDH": "SizeCDH", -"ТипПрокси": "ProxyType", -"Окончание": "Ending", -"ПутьЛогов": "LogPath", -"Значение1": "Value1", -"URL файла": "File URL", -"Последнее": "Last", -"АудиоПуть": "AudioPath", -"НаКлиенте": "AtClient", -"ЗаписьXML": "XMLWriter", -"Новый чат": "New chat", -"Корректна": "Correct", -"Удаляемый": "Deletable", -"ТекстЛога": "LogText", -"Календари": "Calendars", -"РазмерЛФХ": "SizeLFH", -"заголовки": "headers", -"действиях": "of actions", -"Параметры": "Parameters", -"ПотокJSON": "JSONStream", -"Вложенная": "Nested", -"РазмерЕСД": "SizeESD", -"HTTPОтвет": "HTTPResponse", -"IDСобытия": "EventID", -"ЧастиПути": "PathParts", -"TCPКлиент": "TCPClient", -"ЯДискПуть": "YaDiskPath", -"НачалоДня": "BegOfDay", -"Документы": "Documents", -"AWSЗапрос": "AWSRequest", -"ЗависитОт": "ЗависитОт", -"Вариант 3": "Variant 3", -"Штрихкоды": "Barcodes", -"IDЗапроса": "RequestID", -"ВидеоПуть": "VideoPath", -"Приватный": "Private", -"ЭтоСервер": "IsServer", -"Служебные": "Service", -"Опоздание": "Late", -"Элементы2": "Elements2", -"Разобрать": "Parse", -"ИмяПакета": "PackageName", -"Каталог 2": "Directory 2", -"Код КЛАДР": "CLADR code", -"программы": "program", -"Вложенный": "Embedded", -"ЧтениеZip": "ReadingZip", -"установки": "setting", -"ИмяПолное": "FullName", -"ДниНедели": "DaysOfWeek", -"Сумма НДС": "VAT amount", -"Локалхост": "Localhost", -"name>Тест": "name>Test", -"библиотек": "libraries", -"НовыйЛист": "NewSheet", -"ГуглКнига": "GoogleSpreadsheet", -"IDПроекта": "ProjectID", -"IDАльбома": "AlbumID", -"Велосипед": "Bicycle", -"TC_Клиент": "TC_Client", -"ВКТСписок": "VKTList", -"Свойства_": "Properties_", -"атрибутов": "of attributes", -"Перейдите": "Go", -"Установка": "Setup", -"НачалоBat": "StartBat", -"TCPСервер": "TCPServer", -"Вариант 2": "Option 2", -"КакОбъект": "AsObject", -"публичный": "public", -"ТипНабора": "TypingType", -"ЯМаркетОк": "YaMarketOk", -"Тесты CLI": "CLI Tests", -"ВерсияОПИ": "OPIVersion", -"ЧастиПоля": "FieldParts", -".HasType(": ".ИмеетТип(", -"ПутьКСтат": "PathToStat", -"ОзонПоиск": "OzonSearch", -"Завершена": "Complete", -"Временный": "Temporary", -"окончания": "of end", -"Значение_": "Value_", -"CDEK (ОПИ": "CDEK (OpenIntegrations", -"OllamaКод": "OllamaCode", -"ТипТекста": "TextType", -"ПолныйURL": "FullURL", -"Участники": "Members", -"XMLСтрока": "XMLString", -"Закрывает": "Closes", -"просмотра": "view", -"Подборки_": "Selections_", -"Обработка": "Processor", -"ID канала": "Channel ID", -"B64Строка": "B64String", -"КонецЕсли": "EndIf", -"Картинка1": "Image1", -"несколько": "multiple", -"выгружать": "dump", -"Системная": "System", -"заголовок": "title", -"Сообщения": "Messages", -"Ozon (ОПИ": "Ozon (OpenIntegrations", -"НеНайдено": "NotFound", -"Получение": "Obtaining", -"Категория": "Category", -"сообщений": "messages", -"ИДЖелтого": "YellowID", -"Удаленный": "Remote", -"Вариант 4": "Variant 4", -"Коллекция": "Collection", -"СтрШаблон": "StrTemplate", -"владельца": "of owner", -"СнятьРоли": "RevokeRoles", -"Прочитать": "Read", -"изменения": "change", -"обработки": "processing", -"299 Тогда": "299 Then", -"Структура": "Structure", -"Вычислить": "Eval", -"Выражение": "Expression", -"НаСервере": "AtServer", -"ID склада": "Warehouse ID", -"Состояние": "State", -"последним": "last", -"избранное": "favorite", -"отражения": "reflection", -"Процедура": "Procedure", -"Строковое": "String", -"Вложение1": "Attachment1", -"Нумерация": "Numeration", +"Отчество": "Patronymic", +"Внимание": "Attention", +"ПутьФайл": "FilePath", +"ID книги": "SpreadsheetID", +"ПризнакН": "AttributeN", +"Включать": "Include", +"ВКИстория": "VKStorie", +"Скриншоты": "Screenshots", +"ID задачи": "Task ID", +"ИначеЕсли": "ElsIf", +"ВебКлиент": "WebClient", +"забывайте": "forget", +"Затрачено": "Spend", +"Транспорт": "Transport", "ТекущийИД": "CurrentID", +"через 2 ч": "after 2 hrs.", +"OPI тесты": "OPI tests", +"подробной": "detailed", "Равенство": "Equality", "Настройки": "Settings", -"Транспорт": "Transport", -"подробной": "detailed", -"OPI тесты": "OPI tests", -"через 2 ч": "after 2 hrs.", -"СтрокаBat": "BatString", -"Затрачено": "Spend", -"Скриншоты": "Screenshots", -"забывайте": "forget", -"ВебКлиент": "WebClient", -"ИначеЕсли": "ElsIf", -"ВКИстория": "VKStorie", -"ID задачи": "Task ID", "ЧислоБайт": "Bytes", +"СтрокаBat": "BatString", "RCON (ОПИ": "RCON (OpenIntegrations", -"Заполнено": "Filled", -"IDОбъекта": "ObjectID", -"SFTP (ОПИ": "SFTP (OpenIntegrations", -"позволяет": "allows", -"сообщение": "message", -"требуется": "required", -"ID сделки": "Deal ID", -"Коннектор": "Connector", -"IDНовости": "PostID", -"Заголовок": "Title", -"Запустить": "Start", -"Не сервер": "Not a server", -"ТокенБота": "BotToken", -"Открывает": "Opens", "Поддержка": "Support", -"Конецесли": "EndIf", -"Активация": "Activation", +"IDОбъекта": "ObjectID", "Приоритет": "Priority", +"Нумерация": "Numeration", +"Активация": "Activation", +"Конецесли": "EndIf", +"Открывает": "Opens", +"ТокенБота": "BotToken", +"Не сервер": "Not a server", +"Заполнено": "Filled", +"Запустить": "Start", +"IDНовости": "PostID", +"Коннектор": "Connector", +"ID сделки": "Deal ID", +"требуется": "required", +"сообщение": "message", +"позволяет": "allows", +"SFTP (ОПИ": "SFTP (OpenIntegrations", +"Заголовок": "Title", +"Вложение1": "Attachment1", +"КонецЕсли": "EndIf", +"Процедура": "Procedure", +"сообщений": "messages", +"Категория": "Category", +"Получение": "Obtaining", +"НеНайдено": "NotFound", +"Ozon (ОПИ": "Ozon (OpenIntegrations", +"Сообщения": "Messages", +"заголовок": "title", +"ИДЖелтого": "YellowID", +"Системная": "System", +"несколько": "multiple", +"Картинка1": "Image1", +"B64Строка": "B64String", +"ID канала": "Channel ID", +"Обработка": "Processor", +"Подборки_": "Selections_", "Публичный": "Public", +"выгружать": "dump", +"Строковое": "String", +"Удаленный": "Remote", +"Коллекция": "Collection", +"отражения": "reflection", +"избранное": "favorite", +"последним": "last", +"Состояние": "State", +"ID склада": "Warehouse ID", +"НаСервере": "AtServer", +"Выражение": "Expression", +"Вариант 4": "Variant 4", +"Вычислить": "Eval", +"299 Тогда": "299 Then", +"обработки": "processing", +"изменения": "change", +"Прочитать": "Read", +"СнятьРоли": "RevokeRoles", +"владельца": "of owner", +"СтрШаблон": "StrTemplate", +"Структура": "Structure", "Выполнить": "Execute", -"ID товара": "Product ID", +"Одиночный": "Single", "ВКТИстина": "VKTTrue", -"видимость": "visibility", -"КодУспеха": "SuccessCode", -"Цвет чата": "Chat color", -"ЧтениеXML": "XMLReader", -"ОтветТело": "ResponseBody", -"умолчанию": "default", -"БлокПорта": "PortBlock", -"TC_Сервер": "TC_Server", -"Подробнее": "More", -"одиночное": "single", -"ВКТЗаявки": "VKTPending", -"Цвет (изм": "Color (change", -"доступных": "available", -"Схема FBO": "FBO scheme", -"коллекция": "collection", -"Результат": "Result", -"ВКонтакте": "VKontakte", -"Вариант 7": "Variant 7", -"IDКурсора": "CursorID", -"Вариант 5": "Variant 5", -"Добавляем": "Add", -"добавлено": "added", -"Текстовое": "Text", -"Рекламный": "Advertising", -"Вложение2": "Attachment2", -"загружать": "upload", -"ПотокGRPC": "GRPCStream", -"НовыйПуть": "NewPath", -"В корзину": "To cart", -"СлакКанал": "SlackChannel", -"Кодировка": "Encoding", -"ИмяАвтора": "AuthorName", -"Проверьте": "Check", -"РазмерСДХ": "SizeCDH", -"состояния": "status", -"АТТаблица": "ATTable", -"ЯДискДиск": "YaDiskDrive", -"сообщения": "of message", -"Вариант 6": "Variant 6", -"ПутьКопии": "CopyPath", -"Массив360": "Array360", -"Категории": "Categories", -"приоритет": "priority", -"ПотокТела": "BodyStream", -"измерения": "dimension", -"Нормально": "Ok", -"OPI_Тесты": "OPI_Tests", -"МетодыRSS": "RSSMethods", -"ID токена": "Token ID", -"Заголовки": "Headers", -"Видимость": "Visibility", -"БанРазбан": "BanUnban", -"ТипСтрока": "TypeString", "ОписаниеU": "DescriptionU", +"ТипСтрока": "TypeString", +"БанРазбан": "BanUnban", +"Видимость": "Visibility", +"Заголовки": "Headers", +"ID токена": "Token ID", +"МетодыRSS": "RSSMethods", +"OPI_Тесты": "OPI_Tests", +"Нормально": "Ok", +"ГуглТокен": "GoogleToken", +"измерения": "dimension", +"ПотокТела": "BodyStream", +"приоритет": "priority", +"Категории": "Categories", +"Массив360": "Array360", "ТекстJSON": "TextJSON", "ОписаниеF": "DescriptionF", "Каталог 1": "Directory 1", "СтрокаURI": "URIString", -"Платформа": "Platform", -"IDЗадания": "TaskID", -"Исполнить": "Execute", -"КакСтрока": "AsString", -"Календарь": "Calendar", -"Обработки": "DataProcessors", -"ОзонТовар": "OzonProduct", -"Сохранить": "Save", -"ОписаниеI": "DescriptionI", -"Одиночный": "Single", -"IDТоваров": "ProductsID", -"ГифкаПуть": "GifPath", -"Константы": "Constants", -"имя метки": "lable name", -"Выключить": "Off", +"просмотра": "view", "Значение2": "Value2", -"ГуглТокен": "GoogleToken", -"ПроксиПорт": "ProxyPort", -"ОзонИстина": "OzonTrue", -"IDАтрибута": "AttributeID", -"Сообщение3": "Message3", -"ЗапросыSQL": "SQLQueries", -"Перезапись": "Rewrite", -"АдресВСети": "NetAddress", -"полужирный": "bold", -"Привилегия": "Privilege", -"на сервере": "on the server", -"Статистика": "Statistics", -"ТокенКанал": "ChannelToken", -"ЖиваяЛента": "NewsFeed", -"БезСтатуса": "WithoutStatus", -"тип сделки": "deal type", -"КартинкаДД": "ImageDD", -"ИДКаталога": "CatalogID", -"Привет мир": "Hello world!", -"конкретики": "specifics", -"участникам": "to participants", -"Показатель": "Indicator", -"параметров": "parameters", -"Твит с гиф": "Tweet with gif", -"ПутьКФайлу": "FilePath", -"Вес брутто": "Gross weight", -"Версия API": "API version", -"Проверка 2": "Check 2", -"Файл аудио": "Audio file", -"Аналогичен": "Similar", -"Файл1.docx": "File1.docx", -"TCP Сервер": "TCP Сервер", -"МассивИмен": "ArrayOfNames", -"УдалитьЛид": "DeleteLead", -"Аудио файл": "Audio file", -"ЛогСтрокой": "LogAsString", -"ИДВарианта": "VariantID", -"ЗнакНачала": "FirstSymbol", -"IDДоставки": "ReceiptID", -"ТекущееИмя": "CurrentName", -"IDЗагрузки": "UploadID", -"заголовков": "headers", -"ИмяПроекта": "ProjectName", -"ЭтоВариант": "IsVariant", -"Рекурсивно": "Recursively", -"HttpКлиент": "HttpClient", -"ЭтоОтладка": "IsDebug", -"ИДКартинки": "ImageID", -"ЗапросТело": "RequestBody", -"оставшихся": "remaining", -"Обработано": "Processed", -"Совпадение": "Coincidence", -"приложения": "applications", -"МассивДней": "DaysArray", -"артинкулов": "of articles", -"МассивФото": "PhotoArray", -"Параметры_": "Parameters_", -"имя товара": "product name", -"Сортировка": "Sort", -"Примечание": "Note", -"Информация": "Information", -"Текст тега": "Tag text", -"СоздатьЧат": "CreateChat", -"Содержимое": "Entity", -"Имя модели": "Models name", -"IDКонтакта": "ContactID", -"Имя токена": "Token name", -"Все товары": "All goods", -"ЭтотОбъект": "ThisObject", -"КлючМассив": "KeyArray", -"Разделение": "Separation", -"IDСущности": "EntityID", -"IDАккаунта": "AccountID", -"Завершение": "Completion", -"ЦветТекста": "TextColor", -"Скачивание": "Downloading", -"ЛеваяЧасть": "LeftPart", -"ДатаRFC822": "DateRFC822", -"ФорматДаты": "DateFormat", -"повторного": "repeated", -"Общий диск": "Main drive", -"пожаловать": "welcome", -"ЕстьОшибка": "IsError", -"ЭтоWindows": "IsWindows", -"библиотека": "library", -"Аналогично": "Similar to", -"ВКПодборка": "VKSelection", -"СлакДиалог": "SlackDialog", -"Заголовок2": "Header2", -"ТочкаВхода": "EntryPoint", -"TCP Клиент": "TCP Client", -"инструмент": "tool", -"длина в см": "length, cm", -"PostСТелом": "PostWithBody", -"Добавление": "Adding", -"ИДКрасного": "RedID", -"СтрокаBash": "BashString", -"ИмяФункции": "FunctionName", -"ИмяКоманды": "CommandName", -"1000 Тогда": "1000 Then", -"НачалоBash": "StartBash", -"ДеньНедели": "WeekDay", -"ОзонЛимиты": "OzonLimits", -"сортировки": "of sorting", -"ПотокФайла": "StreamOfFile", -"ВКЭлементы": "VKElement", -"СтрокаJSON": "JSONString", -"Полужирный": "Bold", -"Клавиатура": "Keyboard", -"Дополнение": "Addition", -"Интеграция": "Integrations", -"Пропустить": "Skip", -"мПараметры": "mParams", -"Файл видео": "Video file", -"ИмяКолонки": "ColumnName", -"Внутренний": "Internal", -"УдалитьЛог": "DeleteLog", -"популярный": "popular", -"OpenAIФайл": "OpenAIFile", -"MySQL (ОПИ": "MySQL (OpenIntegrations", -"HTTPКлиент": "HTTPClient", -"НомерЧасти": "PartNumber", -"URLЗапроса": "RequestURL", -"ФайлВывода": "OutputFile", -"Исключение": "Except", -"ФайлОтвета": "ResponseFile", -"ID запуска": "Launch ID", -"возвращает": "returns", -"IDРодителя": "ParentID", -"Символы.ВК": "Chars.CR", -"ТекстБлока": "BlockText", -"справочной": "reference", -"ИДКабинета": "CabinetID", -"СтрокаЧата": "ChatString", -"пл. Победы": "Victory sq.", -"Процессоры": "Processors", -"Обновление": "Updating", -"ПутьКлючей": "KeysPath", -"Защищенное": "Safe", -"Символы.ПС": "Chars.LF", -"Slack (ОПИ": "Slack (OpenIntegrations", -"Viber (ОПИ": "Viber (OpenIntegrations", -"Проверка 5": "Check 5", -"Компоненты": "AddIns", -"КлючДанных": "DataKey", -".Свернуть(": ".GroupBy(", -"ИмеетДлину": "HasLength", -"IDСчетчика": "CounterID", -"АтрибутыAI": "AIAttributes", -"ТекущийТип": "CurrentType", -"Установить": "Set", -"БазаДанных": "Database", -"Имя товара": "Product name", -"Файл гифки": "GIF file", -"IDКаталога": "FolderID", -"тип уценки": "discount type", -"СтрСправка": "StrHelp", -"ИДКампании": "CampaignID", -"ПолеЗаказа": "OrderField", -"участников": "of users", -"имя автора": "author's name", -"ОзонМассив": "OzonArray", -"Отключение": "Shutdown", -"СтрПроцент": "StrPercentage", -"Безусловно": "Force", -"Приложения": "Apps", -"информация": "information", -"ПопыткаB64": "TryB64", -"ОбщийМакет": "CommonTemplate", -"ВКСвойство": "VKProp", -"МаксШирина": "MaxWidth", -"СсылкаФида": "FeedLink", -"полное имя": "full name", -"ПутьНового": "NewPath", -"Заголовок1": "Header1", -"количество": "amount", -"отладочной": "debug", -"Большой ДД": "Big BD", -"ВидЗапроса": "RequestType", +"Выключить": "Off", +"имя метки": "lable name", +"Константы": "Constants", +"ГифкаПуть": "GifPath", +"IDТоваров": "ProductsID", +"ПутьКопии": "CopyPath", +"ОписаниеI": "DescriptionI", +"ОзонТовар": "OzonProduct", +"Обработки": "DataProcessors", +"Календарь": "Calendar", +"КакСтрока": "AsString", +"Исполнить": "Execute", +"IDЗадания": "TaskID", +"Платформа": "Platform", +"Сохранить": "Save", +"Вариант 6": "Variant 6", +"сообщения": "of message", +"ЯДискДиск": "YaDiskDrive", +"Результат": "Result", +"коллекция": "collection", +"Схема FBO": "FBO scheme", +"доступных": "available", +"Цвет (изм": "Color (change", +"ВКТЗаявки": "VKTPending", +"одиночное": "single", +"ВКонтакте": "VKontakte", +"Подробнее": "More", +"БлокПорта": "PortBlock", +"умолчанию": "default", +"ОтветТело": "ResponseBody", +"ЧтениеXML": "XMLReader", +"Цвет чата": "Chat color", +"КодУспеха": "SuccessCode", +"видимость": "visibility", +"TC_Сервер": "TC_Server", +"ID товара": "Product ID", +"Вариант 7": "Variant 7", +"Вариант 5": "Variant 5", +"АТТаблица": "ATTable", +"состояния": "status", +"РазмерСДХ": "SizeCDH", +"Проверьте": "Check", +"ИмяАвтора": "AuthorName", +"Кодировка": "Encoding", +"СлакКанал": "SlackChannel", +"IDКурсора": "CursorID", +"В корзину": "To cart", +"ПотокGRPC": "GRPCStream", +"загружать": "upload", +"Вложение2": "Attachment2", +"Рекламный": "Advertising", +"Текстовое": "Text", +"добавлено": "added", +"Добавляем": "Add", +"НовыйПуть": "NewPath", +"Закрывает": "Closes", +"ЧЦ=2; ЧВН": "ND=10; NLZ", +"Участники": "Members", +"НачалоСтр": "StartStr", +"ОтветJSON": "ResponseJSON", +"Коллекции": "Collections", +"Батарейки": "Batteries", +"Одиночное": "Single", +"UUID лога": "Log UUID", +"Архивация": "Archiving", +"ДатаСтарт": "StartDate", +"Сигнатура": "Signature", +"ОбъектОПИ": "OPIObject", +"Пассивный": "Passive", +"категории": "category", +"НовыйТест": "NewTest", +"отключить": "disable", +"ИмяМетода": "MethodName", +"ИмяМодуля": "ModuleName", +"Параметр_": "Parameter_", +"Файл_Стат": "File_Stat", +"ШаблонSQL": "SQLTemplate", +"Последнее": "Last", +"URL файла": "File URL", +"Значение1": "Value1", +"ПутьЛогов": "LogPath", +"Окончание": "Ending", +"ТипПрокси": "ProxyType", +"РазмерCDH": "SizeCDH", +"ЭтоМассив": "IsArray", +"ТипДанных": "DataType", +"Доступные": "Available", +"ИДАльбома": "AlbumID", +"СдэкЗаказ": "CdekOrder", +"ПолноеИмя": "FullName", +"коллекции": "of collection", +"заполнена": "filled", +"Имя папки": "Folder name", +"IDПервого": "FirstID", +"Вариант 1": "Option 1", +"Анонимный": "Anonymous", +"структуру": "structure", +"ИДОбъекта": "ObjectID", +"МассивИД_": "ArrayID_", +"Настройка": "Setting", +"ЗапросURL": "RequestURL", +"ТекстТопа": "TopText", +"должность": "position", +"запустить": "launch", +"ТекШирина": "CurrentWidth", +"Одиночная": "Single", +"КомандаБД": "DBCommand", +"IDКлиента": "ClientID", +"ИмяМакета": "TemplateName", +"Элементы1": "Elements1", +"частности": "particularly", +"Сообщение": "Message", +"XMLСтрока": "XMLString", +"Проверять": "Check", +"АудиоПуть": "AudioPath", +"URLОтвета": "ResponseURL", +"Истечение": "Expiration", +"Последний": "Last", +"Компонета": "AddIn", +"Картинка2": "Image2", +"PutСТелом": "PutWithBody", +"Сравнение": "Comparison", +"0.8 Тогда": "0.8 Then", +"ПодписьДД": "SignBD", +"ID стадии": "Stage ID", +"Уточнение": "Clarification", +"IDЗапуска": "LaunchID", +"Локальный": "Local", +"Изменение": "Change", +"Вставлять": "Insert", +"МетодЛога": "LogsMethod", +"кириллица": "cyrillic", +"СдэкТокен": "CdekToken", +"Пояснение": "Explanation", +"НаКлиенте": "AtClient", +"ВерсияАпи": "APIVersion", +"Новый чат": "New chat", +"НачалоBat": "StartBat", +"Установка": "Setup", +"Перейдите": "Go", +"атрибутов": "of attributes", +"Свойства_": "Properties_", +"ВКТСписок": "VKTList", +"TC_Клиент": "TC_Client", +"Велосипед": "Bicycle", +"IDАльбома": "AlbumID", +"IDПроекта": "ProjectID", +"ГуглКнига": "GoogleSpreadsheet", +"НовыйЛист": "NewSheet", +"библиотек": "libraries", +"name>Тест": "name>Test", +"Локалхост": "Localhost", +"TCPСервер": "TCPServer", +"КакОбъект": "AsObject", +"публичный": "public", +"ТипНабора": "TypingType", +"ПолныйURL": "FullURL", +"ЗаписьXML": "XMLWriter", +"ТипТекста": "TextType", +"OllamaКод": "OllamaCode", +"CDEK (ОПИ": "CDEK (OpenIntegrations", +"Значение_": "Value_", +"окончания": "of end", +"Сумма НДС": "VAT amount", +"Временный": "Temporary", +"ОзонПоиск": "OzonSearch", +"ПутьКСтат": "PathToStat", +".HasType(": ".ИмеетТип(", +"ЧастиПоля": "FieldParts", +"ВерсияОПИ": "OPIVersion", +"Тесты CLI": "CLI Tests", +"ЯМаркетОк": "YaMarketOk", +"Завершена": "Complete", +"ДниНедели": "DaysOfWeek", +"Вариант 2": "Option 2", +"установки": "setting", +"НачалоДня": "BegOfDay", +"ЯДискПуть": "YaDiskPath", +"TCPКлиент": "TCPClient", +"ЧастиПути": "PathParts", +"IDСобытия": "EventID", +"HTTPОтвет": "HTTPResponse", +"Вложенная": "Nested", +"ПотокJSON": "JSONStream", +"Параметры": "Parameters", +"действиях": "of actions", +"заголовки": "headers", +"РазмерЛФХ": "SizeLFH", +"Календари": "Calendars", +"ТекстЛога": "LogText", +"ИмяПолное": "FullName", +"Удаляемый": "Deletable", +"Корректна": "Correct", +"Документы": "Documents", +"AWSЗапрос": "AWSRequest", +"РазмерЕСД": "SizeESD", +"ЗависитОт": "ЗависитОт", +"ЧтениеZip": "ReadingZip", +"Вложенный": "Embedded", +"программы": "program", +"Код КЛАДР": "CLADR code", +"Каталог 2": "Directory 2", +"Разобрать": "Parse", +"Элементы2": "Elements2", +"Опоздание": "Late", +"ИмяПакета": "PackageName", +"ЭтоСервер": "IsServer", +"Приватный": "Private", +"ВидеоПуть": "VideoPath", +"IDЗапроса": "RequestID", +"Штрихкоды": "Barcodes", +"Вариант 3": "Variant 3", +"Служебные": "Service", +"Проверка 7": "Check 7", +"ИмяОбъекта": "ObjectName", +"ID альбома": "Album ID", +"Проверка 1": "Check 1", +"Объявление": "Ad", +"ФайлДанных": "DataFile", +"Б24_Канбан": "B24_Kanban", +"ЗапросПорт": "RequestPort", +"Обработать": "Process", +"РазбитьURL": "SplitURL", +"ООО Вектор": "LLC Vector", +"IDКартинки": "ImageID", +"ПолныйПуть": "FullPath", +"хранилищем": "repository", +"Получатель": "Recipient", +"Это сервер": "Is server", +"Приложение": "Application", +"Тип данных": "Data type", +"ДанныеДата": "DateData", +"МассивUUID": "UUIDArray", +"сохранения": "saving", +"Сообщение2": "Message2", +"НаборТегов": "TagsSet", +"ВремяЖизни": "Expire", +"НайтиФайлы": "FindFiles", +"Проверка 4": "Check 4", +"ПортПрокси": "ProxyPort", +"Имя метода": "Method name", +"сортировка": "sorting", +"РазмерПула": "PoolSize", +"завершения": "of complete", +"ЗначениеУП": "ValueES", +"МассивПрав": "PermissionsArray", +"Существует": "Exists", +"интеграции": "integration", +"Сохранение": "Save", +"Метаданные": "Metadata", +"ВКТСобытия": "VKTEvents", +"Библиотека": "Library", +"Снять роли": "Revoke roles", +"ID события": "Event ID", "Записывать": "Record", -"IDКабинета": "AccountID", -"МассивСлов": "WordArray", -"ДанныеТела": "BodyData", -"ЗапросGRPC": "GRPCRequest", -"ТипУзлаXML": "XMLNodeType", -"IDЭлемента": "ElementID", -"IDОперации": "OperationID", -"МетодыAtom": "AtomMethods", -"ВыборкаTSV": "TSVSelection", -"Отложенное": "Sheduled", -"UUIDЗаказа": "OrderUUID", +"СтрТекущее": "StrCurrent", "HTTPЗапрос": "HTTPRequest", +"UUIDЗаказа": "OrderUUID", +"Отложенное": "Sheduled", +"ВыборкаTSV": "TSVSelection", +"МетодыAtom": "AtomMethods", +"IDОперации": "OperationID", +"IDЭлемента": "ElementID", +"ТипУзлаXML": "XMLNodeType", +"ЗапросGRPC": "GRPCRequest", +"ДанныеТела": "BodyData", +"МассивСлов": "WordArray", +"IDКабинета": "AccountID", +"ВидЗапроса": "RequestType", +"Большой ДД": "Big BD", +"отладочной": "debug", +"количество": "amount", +"Транзакция": "Transaction", "предыдущей": "previous", "ШаблонOint": "OintTemplate", "IDМагазина": "CampaignID", "Проверка 6": "Check 6", -"Без записи": "No record", -"ПолеДанных": "DataField", -"выполнения": "of completing", -"ЗапросыSSH": "SSHRequests", -"расширение": "extension", -"БитриксЛид": "BitrixLead", -"СтрокаХеша": "HashString", -"Расширения": "Extensions", -"Назначение": "Destination", -"ID проекта": "Project ID", -"Методы RSS": "RSS methods", -"ОбъектЛога": "LogObject", -"СтараяЦена": "OldPrice", -"НаборProto": "ProtoSet", -"ПутьККлючу": "KeyPath", -"ПолучитьQR": "GetQR", -"распродажа": "sale", "компоненты": "components", -"СтрТекущее": "StrCurrent", +"распродажа": "sale", +"ПолучитьQR": "GetQR", +"ПутьККлючу": "KeyPath", +"НаборProto": "ProtoSet", +"СтараяЦена": "OldPrice", +"ОбъектЛога": "LogObject", +"Методы RSS": "RSS methods", "ДанныеПоля": "FieldData", -"ID события": "Event ID", -"НаборТегов": "TagsSet", -"РазбитьURL": "SplitURL", -"Получатель": "Recipient", -"Это сервер": "Is server", -"Обработать": "Process", -"хранилищем": "repository", -"ПолныйПуть": "FullPath", -"IDКартинки": "ImageID", -"ООО Вектор": "LLC Vector", -"Тип данных": "Data type", -"ЗапросПорт": "RequestPort", -"ИмяОбъекта": "ObjectName", -"Б24_Канбан": "B24_Kanban", -"ФайлДанных": "DataFile", -"Объявление": "Ad", -"Проверка 1": "Check 1", -"ID альбома": "Album ID", -"Проверка 7": "Check 7", -"Приложение": "Application", -"ДанныеДата": "DateData", -"РазмерПула": "PoolSize", -"сохранения": "saving", -"Библиотека": "Library", -"ВКТСобытия": "VKTEvents", -"Метаданные": "Metadata", -"Сохранение": "Save", -"интеграции": "integration", -"Существует": "Exists", -"МассивПрав": "PermissionsArray", -"ЗначениеУП": "ValueES", -"Снять роли": "Revoke roles", -"завершения": "of complete", -"сортировка": "sorting", -"Имя метода": "Method name", -"ПортПрокси": "ProxyPort", -"Проверка 4": "Check 4", -"МассивUUID": "UUIDArray", -"НайтиФайлы": "FindFiles", -"ВремяЖизни": "Expire", -"Сообщение2": "Message2", -"Транзакция": "Transaction", +"ID проекта": "Project ID", +"Расширения": "Extensions", +"СтрокаХеша": "HashString", +"БитриксЛид": "BitrixLead", +"расширение": "extension", +"ЗапросыSSH": "SSHRequests", +"выполнения": "of completing", +"ПолеДанных": "DataField", +"Без записи": "No record", +"Назначение": "Destination", "Наш сервер": "Our server", -"Количество": "Count", +"Компонента": "AddIn", "Обновления": "Updates", -"AuthДанные": "AuthData", -"отключения": "disconnection", -"ВККампания": "VCCampaign", -"ID диалога": "Dialog ID", -"Код страны": "Country code", -"соединения": "of connection", -"МассивПути": "PathArray", -"ЭтоКаталог": "IsDirectory", -"библиотеки": "libraries", -"УдалитьТег": "DeleteTag", -"ВыборкаCSV": "CSVSelection", -"ФайлМетода": "MethodFile", -"ЭтоТестCLI": "IsCLITest", -"Совпадения": "Coincidences", -"они разные": "they are different", -"ОзонТовары": "OzonProducts", -"отправляем": "send", -"МассивЧата": "ChatArray", -"ГуглОбъект": "GoogleObject", -"HTTP метод": "HTTP method", -"Коллекция_": "Collection_", -"ЦветКнопок": "ButtonColor", -"ТелоОтвета": "ResponseBody", -"ГринГруппа": "GreenGroup", -"проведения": "of the event", -"МассивПочт": "EmailsArray", -"ВсеКоманды": "AllCommands", -"Токен бота": "Bot token", -"СоздатьЛид": "CreateLead", -"Мегаклиент": "MegaClient", -"Ассистенты": "Assistants", -"Разрешения": "Permissions", -"Результат2": "Result2", -"Фотокамера": "Photos", -"ГринАватар": "GreenAva", -"ФайлОбъект": "FileObject", -"ОтветТокен": "TokenResponse", -"Продолжить": "Continue", -"фактически": "fact", -"ИДПодборки": "SelectionID", -"ЕстьДанные": "IsData", -"отвечающий": "responsible", -"ВнешнийКод": "ExternalID", -"Выполнение": "Execution", -"ЗаписьJSON": "JSONWriter", -"ДокументДД": "DocumentDD", -"последнего": "of last", -"AWS4Данные": "AWS4Data", -"ID новости": "Post ID", -"Символы.ПФ": "Chars.FF", -"ЧтениеJSON": "JSONReader", -"разделения": "spliting", -"ЧастьСхемы": "SchemaPart", -"ID курсора": "Cursor ID", -"ИмяТаблицы": "TableName", -"Бан/Разбан": "Ban/Unban", -"СерверФото": "PhotoServer", -"ДатаНачала": "StartDate", -"КонецЦикла": "EndDo", -"Глобальный": "Global", "результата": "result", +"Глобальный": "Global", +"КонецЦикла": "EndDo", +"ДатаНачала": "StartDate", +"СерверФото": "PhotoServer", +"Бан/Разбан": "Ban/Unban", +"ИмяТаблицы": "TableName", +"ID курсора": "Cursor ID", +"ЧастьСхемы": "SchemaPart", +"разделения": "spliting", +"ЧтениеJSON": "JSONReader", +"Символы.ПФ": "Chars.FF", +"ID новости": "Post ID", +"AWS4Данные": "AWS4Data", +"последнего": "of last", +"ДокументДД": "DocumentDD", +"ЗаписьJSON": "JSONWriter", "РазмерТела": "BodySize", "ТелеграмОк": "TelegramOk", "Параметр%1": "Parameter%1", "Инструкция": "Instruction", -"Соединение": "Connection", -"Расширение": "Extension", -"ИмяЗапуска": "LaunchName", -"публикации": "of publish", -"СерверПорт": "ServerPort", -"информации": "information", -"изменивший": "that change", -"Новый файл": "NewFile", -"КлючТокена": "TokenKey", -"Проверка 3": "Check 3", -"Компонента": "AddIn", -"ОжидаетЧто": "ExpectsThat", -"ХешФункция": "HashFunction", -"код валюты": "Currency code", -"ВывестиЛог": "PrintLog", -"Сообщение1": "Message1", -"ПодписьURL": "URLSign", +"Заголовок1": "Header1", "HTTPМетоды": "HTTPMethods", -"ПутьИндекса": "IndexPath", -"ТипПоставки": "SupplyType", -"Комментарий": "Comment", -"ВЗаголовках": "InHeaders", -"ПутьОбъекта": "ObjectPath", -"Сортировать": "Sort", -"ЗаписьЛогов": "LogRecording", -"ПроксиАдрес": "ProxyAddress", -"Скопировать": "Copy", -"Поставщик А": "Supplier A", -"Исполнители": "Performers", -"НоваяСтрока": "NewLine", -"Обновление1": "Update1", -"Обновление2": "Update2", -"ХешОригинал": "HashOrigianl", -"Удалить лог": "Delete log", -"СоздатьБлок": "CreateBlock", -"OpenAIОтвет": "OpenAIResponse", +"ПодписьURL": "URLSign", +"Сообщение1": "Message1", +"ВывестиЛог": "PrintLog", +"код валюты": "Currency code", +"ХешФункция": "HashFunction", +"ОжидаетЧто": "ExpectsThat", +"Выполнение": "Execution", +"Проверка 3": "Check 3", +"Новый файл": "NewFile", +"изменивший": "that change", +"информации": "information", +"СерверПорт": "ServerPort", +"публикации": "of publish", +"ИмяЗапуска": "LaunchName", +"Расширение": "Extension", +"Соединение": "Connection", +"КлючТокена": "TokenKey", +"ВнешнийКод": "ExternalID", +"отвечающий": "responsible", +"ЕстьДанные": "IsData", +"МассивЧата": "ChatArray", +"отправляем": "send", +"ОзонТовары": "OzonProducts", +"они разные": "they are different", +"Совпадения": "Coincidences", +"ЭтоТестCLI": "IsCLITest", +"ФайлМетода": "MethodFile", +"ВыборкаCSV": "CSVSelection", +"ГуглОбъект": "GoogleObject", +"УдалитьТег": "DeleteTag", +"ЭтоКаталог": "IsDirectory", +"МассивПути": "PathArray", +"соединения": "of connection", +"Код страны": "Country code", +"ID диалога": "Dialog ID", +"ВККампания": "VCCampaign", +"отключения": "disconnection", +"AuthДанные": "AuthData", +"библиотеки": "libraries", +"Количество": "Count", +"HTTP метод": "HTTP method", +"ЦветКнопок": "ButtonColor", +"ИДПодборки": "SelectionID", +"фактически": "fact", +"Продолжить": "Continue", +"ОтветТокен": "TokenResponse", +"ФайлОбъект": "FileObject", +"ГринАватар": "GreenAva", +"Фотокамера": "Photos", +"Результат2": "Result2", +"Коллекция_": "Collection_", +"Разрешения": "Permissions", +"Мегаклиент": "MegaClient", +"СоздатьЛид": "CreateLead", +"Токен бота": "Bot token", +"ВсеКоманды": "AllCommands", +"МассивПочт": "EmailsArray", +"проведения": "of the event", +"ГринГруппа": "GreenGroup", +"ТелоОтвета": "ResponseBody", +"Ассистенты": "Assistants", +"ПутьНового": "NewPath", +"Защищенное": "Safe", +"СсылкаФида": "FeedLink", +"Текст тега": "Tag text", +"Информация": "Information", +"Примечание": "Note", +"Сортировка": "Sort", +"имя товара": "product name", +"Параметры_": "Parameters_", +"МассивФото": "PhotoArray", +"артинкулов": "of articles", +"МассивДней": "DaysArray", +"приложения": "applications", +"Совпадение": "Coincidence", +"Обработано": "Processed", +"оставшихся": "remaining", +"ЗапросТело": "RequestBody", +"ИДКартинки": "ImageID", +"ЭтоОтладка": "IsDebug", +"HttpКлиент": "HttpClient", +"СоздатьЧат": "CreateChat", +"Содержимое": "Entity", +"Имя модели": "Models name", +"IDКонтакта": "ContactID", +"ЭтоWindows": "IsWindows", +"ЕстьОшибка": "IsError", +"пожаловать": "welcome", +"Общий диск": "Main drive", +"повторного": "repeated", +"ФорматДаты": "DateFormat", +"ДатаRFC822": "DateRFC822", +"ЛеваяЧасть": "LeftPart", +"Рекурсивно": "Recursively", +"Скачивание": "Downloading", +"Завершение": "Completion", +"IDАккаунта": "AccountID", +"IDСущности": "EntityID", +"Разделение": "Separation", +"КлючМассив": "KeyArray", +"ЭтотОбъект": "ThisObject", +"Все товары": "All goods", +"Имя токена": "Token name", +"ЦветТекста": "TextColor", +"библиотека": "library", +"ЭтоВариант": "IsVariant", +"заголовков": "headers", +"ИДКаталога": "CatalogID", +"КартинкаДД": "ImageDD", +"тип сделки": "deal type", +"БезСтатуса": "WithoutStatus", +"ЖиваяЛента": "NewsFeed", +"ТокенКанал": "ChannelToken", +"Статистика": "Statistics", +"на сервере": "on the server", +"Привилегия": "Privilege", +"полужирный": "bold", +"АдресВСети": "NetAddress", +"Перезапись": "Rewrite", +"ЗапросыSQL": "SQLQueries", +"Сообщение3": "Message3", +"IDАтрибута": "AttributeID", +"ОзонИстина": "OzonTrue", +"ПроксиПорт": "ProxyPort", +"Привет мир": "Hello world!", +"конкретики": "specifics", +"участникам": "to participants", +"Показатель": "Indicator", +"IDЗагрузки": "UploadID", +"IDДоставки": "ReceiptID", +"ЗнакНачала": "FirstSymbol", +"ИДВарианта": "VariantID", +"ЛогСтрокой": "LogAsString", +"Аудио файл": "Audio file", +"УдалитьЛид": "DeleteLead", +"МассивИмен": "ArrayOfNames", +"ИмяПроекта": "ProjectName", +"TCP Сервер": "TCP Сервер", +"Аналогичен": "Similar", +"Файл аудио": "Audio file", +"Проверка 2": "Check 2", +"Версия API": "API version", +"Вес брутто": "Gross weight", +"ПутьКФайлу": "FilePath", +"Твит с гиф": "Tweet with gif", +"параметров": "parameters", +"Файл1.docx": "File1.docx", +"Аналогично": "Similar to", +"ТекущееИмя": "CurrentName", +"СлакДиалог": "SlackDialog", +"АтрибутыAI": "AIAttributes", +"IDСчетчика": "CounterID", +"ИмеетДлину": "HasLength", +".Свернуть(": ".GroupBy(", +"КлючДанных": "DataKey", +"Компоненты": "AddIns", +"Проверка 5": "Check 5", +"Viber (ОПИ": "Viber (OpenIntegrations", +"Slack (ОПИ": "Slack (OpenIntegrations", +"Символы.ПС": "Chars.LF", +"полное имя": "full name", +"ПутьКлючей": "KeysPath", +"Обновление": "Updating", +"Процессоры": "Processors", +"пл. Победы": "Victory sq.", +"СтрокаЧата": "ChatString", +"ИДКабинета": "CabinetID", +"ТекущийТип": "CurrentType", +"Установить": "Set", +"Имя товара": "Product name", +"Файл гифки": "GIF file", +"ВКПодборка": "VKSelection", +"МаксШирина": "MaxWidth", +"ВКСвойство": "VKProp", +"ОбщийМакет": "CommonTemplate", +"ПопыткаB64": "TryB64", +"информация": "information", +"Приложения": "Apps", +"Безусловно": "Force", +"справочной": "reference", +"СтрПроцент": "StrPercentage", +"ОзонМассив": "OzonArray", +"имя автора": "author's name", +"участников": "of users", +"ПолеЗаказа": "OrderField", +"ИДКампании": "CampaignID", +"СтрСправка": "StrHelp", +"тип уценки": "discount type", +"IDКаталога": "FolderID", +"Отключение": "Shutdown", +"ТекстБлока": "BlockText", +"БазаДанных": "Database", +"IDРодителя": "ParentID", +"ВКЭлементы": "VKElement", +"ПотокФайла": "StreamOfFile", +"сортировки": "of sorting", +"ОзонЛимиты": "OzonLimits", +"ДеньНедели": "WeekDay", +"НачалоBash": "StartBash", +"ИмяКоманды": "CommandName", +"ИмяФункции": "FunctionName", +"СтрокаJSON": "JSONString", +"СтрокаBash": "BashString", +"Добавление": "Adding", +"PostСТелом": "PostWithBody", +"длина в см": "length, cm", +"инструмент": "tool", +"TCP Клиент": "TCP Client", +"ТочкаВхода": "EntryPoint", +"Символы.ВК": "Chars.CR", +"Заголовок2": "Header2", +"ИДКрасного": "RedID", +"Полужирный": "Bold", +"1000 Тогда": "1000 Then", +"НомерЧасти": "PartNumber", +"Клавиатура": "Keyboard", +"ФайлОтвета": "ResponseFile", +"Исключение": "Except", +"ФайлВывода": "OutputFile", +"URLЗапроса": "RequestURL", +"HTTPКлиент": "HTTPClient", +"MySQL (ОПИ": "MySQL (OpenIntegrations", +"ID запуска": "Launch ID", +"популярный": "popular", +"OpenAIФайл": "OpenAIFile", +"УдалитьЛог": "DeleteLog", +"Внутренний": "Internal", +"ИмяКолонки": "ColumnName", +"Файл видео": "Video file", +"мПараметры": "mParams", +"Пропустить": "Skip", +"Интеграция": "Integrations", +"Дополнение": "Addition", +"возвращает": "returns", +"ЗапросАдрес": "RequestAdress", +"ОзонОбъекты": "OzonObjects", +"ЕстьПризнак": "FlagExists", +"Ошибка поля": "Field error", +"ЛогинПрокси": "ProxyLogin", +"Динамически": "Dynamically", +"тип фильтра": "filter type", +"Новое видео": "NewVideo", +"МассивСтрок": "StingsArray", +"СоздатьПоле": "CreateField", +"Обновление5": "Update5", +"УдалитьБазу": "DropBase", +"Новая метка": "New tag", +"УдалениеMFA": "MFADelete", +"IDКалендаря": "CalendarID", +"электроника": "electronics", +"ЧастьТекста": "TextPart", +"МассивФайла": "FileArray", +"ID подборки": "Selection ID", +"ВыборкаJSON": "JSONSelection", +"UUID заявки": "UUID of the invitation", +"СкачатьФайл": "DownloadFile", +"опционально": "optional", +"ТекущийФайл": "CurrentFile", +"КлючПодписи": "SignKey", +"ЭтоУдаление": "ThisIsDeletion", +"РефрешТокен": "RefreshToken", +"МассивЯчеек": "CellsArray", +"ПолучитьЛог": "GetLog", +"КопироватьВ": "CopyTo", +"руководство": "manual", +"ЗапросМетод": "RequestMethod", +"ЯДискСсылка": "YaDiskLink", +"ЦелевойПуть": "TargetPath", +"ЗаменаТочки": "DotReplacement", +"Фон истории": "Story background", +"логирование": "logging", +"Яндекс Диск": "Yandex Disk", +"ПолныйОтвет": "FullResponse", +"ПолеОтметки": "TimestampField", +"ЗаписатьBOM": "WriteBOM", +"ТокенКанала": "ChannelToken", +"ЭтоТестыCLI": "IsCLITests", +"ПотокВывода": "OutputStream", +"Notion (ОПИ": "Notion (OpenIntegrations", +"S3НеНайдено": "S3NotFound", +"Цена товара": "Product price", +"зависимости": "dependencies", +"высота в см": "height, cm", +"КлючКлиента": "ClientKey", +"расширением": "extension", +"Подкаталоги": "Subfolders", +"ТекущаяДата": "CurrentDate", +"Для Asserts": "For Asserts", +"JSONСтрокой": "JSONString", +"XMLЗначение": "XMLValue", +"Номер порта": "Port number", +"Инструменты": "Tools", +"миллиметрах": "millimeters", +"Пример кода": "Code example", +"Бот Виталий": "Vitaly The Bot", +"ФункцияХеша": "HashFunc", +"ТелоСтрокой": "BodyAsString", +"БольшойФайл": "BigFile", +"ЧислоОшибок": "ErrorCount", +"Мессенджеры": "Messengers", +"срок службы": "lifespan", +"ТестовыйAPI": "TestAPI", +"исполнитель": "performer", +"ДобавитьТег": "AddTag", +"Разделитель": "Delimiter", +"КлючРегиона": "RegionKey", +"Обновленный": "Updated", +"Петр Петров": "Petr Petrov", +"Выполняется": "In work", +"ТелеграмБан": "TelegramBan", +"SQLiteУспех": "SQLiteSuccess", +"вероятность": "probability", +"Исполнитель": "Responsible", +"НовыйЗапрос": "NewRequest", +"ОтборСтрока": "FilterString", +"СтрокаФайла": "FileString", +"Репозиторий": "Repository", +"оптимизация": "optimization", +"ПустойВывод": "EmptyOutput", +"Цель канала": "Channel purpose", +"ZipРазмерDD": "ZipSizeDD", +"МассивГифок": "GifsArray", +"ФайлНаДиске": "FileOnDisk", +"ГринПрофиль": "GreenProfile", +"Особенность": "Feature", +"АдресПрокси": "ProxyAddress", +"ДобавитьЛог": "AddLog", +"10000 Тогда": "10000 Then", +"Логирование": "Logging", +"СтрПараметр": "StrParam", +"IDВладельца": "OwnerID", +"ВерсияСреды": "ВерсияСреды", +"Поле1,Поле2": "Field1,Field2", +"МетодПоиска": "SearchMethod", +"color=Белый": "color=White", +"ЧислоЧастей": "PartsAmount", +"Небезопасно": "Insecure", +"ОписаниеИзм": "EditedDescription", +"АдресАвтора": "АдресАвтора", +"ширина в см": "width, cm", +"Повторяемая": "Repeatable", +"ID варианта": "Variant ID", +"ЗаписьВФайл": "WriteToFile", +"НеВыполнять": "NotExecute", +"ДатаISO8601": "DateISO8601", +"МассивЦелей": "GoalsArray", +"PatchСТелом": "PatchWithBody", +"Минимальный": "Minimal", +"ДопПараметр": "AdditionalParameter", +"МассивТэгов": "TagsArray", +"Комментарии": "Comments", +"Суперклиент": "SuperClient", +"подзадачами": "subtask", +"ИмяЭлемента": "ElementName", +"Поставщик В": "Supplier C", +"ТипЗначения": "ValeType", +"МассивСвязи": "LinkArray", +"комментарий": "comment", +"БитриксПоля": "BitrixFields", +"ЗапросДомен": "RequestDomain", +"SQLite (ОПИ": "SQLite (OpenIntegrations", +"Удалить лид": "Delete lead", +"обновленный": "updated", +"МассивИмени": "NameParts", +"ДокументURL": "DocumentURL", +"Поставщик Б": "Supplier B", +"СоздатьБазу": "CreateDatabase", +"ID Родителя": "Parent ID", +"ПервыйТокен": "FirstToken", +"ОбщийРазмер": "TotalSize", +"МассивМедиа": "MediaArray", +"Методы Atom": "Atom methods", +"Новосибирск": "Novosibirsk", +"ЧастьДанных": "DataPart", +"IDХранилища": "StorageID", +"ПутиСтрокой": "PathsString", +"АдресаПочты": "EmailAddresses", +"IDЧерновика": "DraftID", +"Код региона": "Region code", +"КаталогOint": "OintDirectory", +"ПокинутьЧат": "LeaveChat", +"Тест диалог": "Test dialog", +"Ollama (ОПИ": "Ollama (OpenIntegrations", +"OllamaУспех": "OllamaSuccess", +"БазаНаДиске": "LocalBase", +"OllamaОтвет": "OllamaResponse", +"Число копий": "Number of copies", +"МассивВидео": "VideosArray", +"Группировка": "Grouping", +"Длина Тогда": "Length Then", +"ТекущееПоле": "CurrentField", +"Удалить тег": "Delete tag", +"МассивТипов": "TypesArray", +"уведомлений": "notifications", +"Послезавтра": "NextDay", +"ЗапросыHTTP": "HTTPRequests", +"НоушнОбъект": "NotionObject", +"Имя поля БД": "DB field name", +"МассивЧисел": "NumberArray", +"ГуглКаталог": "GoogleCatalog", +"УдалитьЛист": "DeleteSheet", +"специальная": "special", +"НоваяИконка": "NewIcon", +"Отправитель": "Sender", +"определения": "definitions", +"СоздатьПост": "CreatePost", +"МассивРолей": "RoleArray", +"НеЗаполнено": "Empty", +"параметрами": "parameters", +"Постановщик": "Producer", +"комментария": "of comment", +"Для YaxUnit": "For YAxUnit", +"ID свойства": "Property ID", +"Комплексная": "Complex", +"ТекстЛимита": "LimitText", +"СоздатьРоль": "CreateRole", +"обновляемых": "of updated", +"ЗапросТекст": "RequestText", +"IDУчастника": "MemberID", +"ЗаписатьЛог": "WriteLog", +"ЦветныеПоля": "ColoredFields", +"UUID заказа": "Order UUID", +"НомерЗаказа": "OrderNumber", +"ТипВложений": "AttachmentsType", +"Текст поста": "Post text", +"ПутьКлиента": "ClientPath", +"КлючЗапроса": "QueryKey", +"ОбщийДоступ": "PublicAccess", +"БазаВПамяти": "InMemoryBase", +"URL запроса": "Request URL", +"Получить QR": "Get QR", +"ОтветОбъект": "ResponseObject", +"Подключение": "Connection", +"СоздатьЛист": "CreateSheet", +"ЗаписьФайла": "FileWriter", +"Создать лид": "Create lead", +"ИДКатегории": "CategoryID", +"УдалитьПост": "DeletePost", +"ДанныеТекст": "DataText", +"Символы.Таб": "Chars.Tab", +"ЛишниеБайты": "ExtraBytes", +"ИзменитьЛид": "UpdateLead", +"ДатаОбычная": "CommonDate", +"комментарии": "comments", +"УдалитьБлок": "DeleteBlock", +"ИмяКонтакта": "ContactName", +"РазмерБлока": "BlockSize", +"ПоляСтрокой": "FieldsAsString", +"Токен Viber": "Viber Token", +"ИмяИлиТекст": "NameOrText", +"ВККатегории": "VKCategories", +"ВходнойФайл": "InputFile", +"ГринИнстанс": "GreenInstance", +"ID картинки": "Image ID", +"РаботаСBlob": "WorkingWithBlob", +"ОтветСтрока": "ResponseString", +"ТекстОшибки": "ErrorText", +"JSON данные": "JSON data", +"С картинкой": "With picture", +"ПортЗапуска": "LaunchPort", +"ВремяНабора": "TypingTime", +"МассивТегов": "TagsArray", +"ОбщийМодуль": "CommonModule", +"ПараметрURL": "URLParameter", +"НомерГруппы": "GroupNumber", +"IDКаталога2": "FolderID2", +"UUIDЗапуска": "LaunchUUID", +"Иванов Иван": "Ivaniv Ivan", +"Создать чат": "Create chat", +"Зависимости": "Dependencies", +"B64Картинка": "B64Image", +"ДатаRFC3339": "DateRFC3339", +"СписокПолей": "FieldList", +"ТекущееТело": "CurrentBody", "ПолучитьЛид": "GetLead", +"OpenAIОтвет": "OpenAIResponse", +"СоздатьБлок": "CreateBlock", +"Удалить лог": "Delete log", +"ХешОригинал": "HashOrigianl", +"Обновление2": "Update2", +"Обновление1": "Update1", +"НоваяСтрока": "NewLine", +"Исполнители": "Performers", "ОтветМассив": "ResponseArray", +"Поставщик А": "Supplier A", +"ПроксиАдрес": "ProxyAddress", +"ЗаписьЛогов": "LogRecording", +"Сортировать": "Sort", +"ПутьОбъекта": "ObjectPath", +"ВЗаголовках": "InHeaders", +"Комментарий": "Comment", +"ТипПоставки": "SupplyType", +"ПутьИндекса": "IndexPath", +"Стандартные": "Standard", +"Скопировать": "Copy", "старая цена": "old price", "IDПриемника": "DestinationID", "КлючСервиса": "ServiceKey", -"База данных": "Database", -"IDИсточника": "FromID", -"реализованы": "realized", -"исполнителя": "of executor", -"СдэкПаспорт": "CdekPassport", -"НовыйСпособ": "NewMethod", -"перемещения": "of movement", -"ВнешнийПост": "ExternalPost", -"GR_Стриминг": "GR_Streaming", -"ИмяСодержит": "NameContains", -"URL сервера": "Server URL", -"ЦветКонсоли": "ConsoleColor", -"АТСписокБаз": "ATBasesList", -"Тема канала": "Channel topic", -"ШаблонБлока": "BlockTemplate", -"Текст твита": "Tweet text", -"СтрЗаменить": "StrReplace", -"ТелоЗапроса": "RequestBody", -"Новый товар": "New product", -"Остаток. -1": "Balance. -1", "КодВозврата": "ReturnCode", -"ТекущееТело": "CurrentBody", -"СписокПолей": "FieldList", -"РазбитыйURL": "SplitedURL", -"ДатаRFC3339": "DateRFC3339", -"ПоляСтрокой": "FieldsAsString", -"ИмяКонтакта": "ContactName", -"УдалитьБлок": "DeleteBlock", -"комментарии": "comments", -"ДатаОбычная": "CommonDate", -"ИзменитьЛид": "UpdateLead", -"ЛишниеБайты": "ExtraBytes", -"Символы.Таб": "Chars.Tab", -"ДанныеТекст": "DataText", -"УдалитьПост": "DeletePost", -"РазмерБлока": "BlockSize", -"ИДКатегории": "CategoryID", -"ЗаписьФайла": "FileWriter", -"СоздатьЛист": "CreateSheet", -"Подключение": "Connection", -"ОтветОбъект": "ResponseObject", -"Получить QR": "Get QR", -"URL запроса": "Request URL", -"БазаВПамяти": "InMemoryBase", -"ОбщийДоступ": "PublicAccess", -"КлючЗапроса": "QueryKey", -"Создать лид": "Create lead", -"Токен Viber": "Viber Token", -"ПортЗапуска": "LaunchPort", -"ИмяИлиТекст": "NameOrText", -"Зависимости": "Dependencies", -"Создать чат": "Create chat", -"Иванов Иван": "Ivaniv Ivan", -"UUIDЗапуска": "LaunchUUID", -"IDКаталога2": "FolderID2", -"НомерГруппы": "GroupNumber", -"ПараметрURL": "URLParameter", -"ОбщийМодуль": "CommonModule", -"МассивТегов": "TagsArray", -"B64Картинка": "B64Image", -"ВремяНабора": "TypingTime", -"С картинкой": "With picture", -"JSON данные": "JSON data", -"ТекстОшибки": "ErrorText", -"ОтветСтрока": "ResponseString", -"РаботаСBlob": "WorkingWithBlob", -"ID картинки": "Image ID", -"ГринИнстанс": "GreenInstance", -"ВходнойФайл": "InputFile", -"ВККатегории": "VKCategories", +"Остаток. -1": "Balance. -1", +"Новый товар": "New product", +"ТелоЗапроса": "RequestBody", +"СтрЗаменить": "StrReplace", +"Текст твита": "Tweet text", +"ШаблонБлока": "BlockTemplate", +"Тема канала": "Channel topic", +"АТСписокБаз": "ATBasesList", +"ЦветКонсоли": "ConsoleColor", +"URL сервера": "Server URL", +"ИмяСодержит": "NameContains", +"GR_Стриминг": "GR_Streaming", +"ВнешнийПост": "ExternalPost", +"перемещения": "of movement", +"НовыйСпособ": "NewMethod", +"СдэкПаспорт": "CdekPassport", +"исполнителя": "of executor", +"реализованы": "realized", +"IDИсточника": "FromID", +"База данных": "Database", "БитриксФайл": "BitrixFile", "ID страницы": "Page ID", -"ДФ=yyyyMMdd": "DF=yyyyMMdd", +"РазбитыйURL": "SplitedURL", "URLЗагрузки": "UploadURL", -"Хеширование": "Hashing", -"ID кабинета": "Business ID", -"Авторизация": "Authorization", -"КодУдаления": "DeleteCode", -"бесконечный": "endless", -"Особенности": "Features", -"НайтиСтроки": "FindRows", -"ОткрытьФайл": "OpenFile", -"IDВходящего": "RepliedID", -"Неравенство": "Inequality", -"ТекстКнопки": "ButtonText", -"ПолучитьИли": "GetOr", -"ОбновитьВсе": "UpdateAll", -"ID счетчика": "Counter ID", -"электронная": "e", -"Обновление3": "Update3", -"MS SQL (ОПИ": "MS SQL (OpenIntegrations", -"электронной": "of e", -"ТекущийКлюч": "CurrentKey", -"ФайлЗапуска": "LaunchFile", -"НетНастроек": "NoSettings", -"ТекстМакета": "TemplateText", -"Обновление4": "Update4", -"ПолучитьXML": "GetXML", -"РазмерЧасти": "ChunkSize", -"УдалитьФайл": "DeleteFile", -"ИзИсточника": "FromSource", -"Петров Петр": "Petrov Petr", -"МассивБлока": "ArrayBlock", -"Символы.НПП": "Chars.NBSp", -"ВернутьБлок": "ReturnBlock", -"IDКатегории": "CategoryID", -"база данных": "database", -"Маскировать": "Hide", -"ДанныеФайла": "FileData", -"ТипКонтента": "ContentType", -"ЧастейИмени": "NeedParts", -"СигнатураДД": "SignatureBD", -"ДанныеСхемы": "SchemaData", -"Ошибка типа": "Type error", -"Новый заказ": "New order", -"ОбъектВидео": "VideoObject", -"ОбщиеМетоды": "CommonMethods", -"ТипДвоичные": "BinaryType", -"РазмерФайла": "FileSize", -"МассивОпций": "OptionsArray", -"авторизации": "authorization", -"Порт прокси": "Proxy port", -"дата начала": "start date", -"МассивПолей": "FieldArray", -"ID подборок": "Selection IDs", -"ОсновнойURL": "MainURL", -"IDСообщения": "MessageID", -"МассивСтран": "CountriesArray", -"ДанныеБлока": "BlockData", -"Зависимость": "Dependence", -"КлючСтрокой": "KeyString", -"ОпцияПолная": "OptionFull", -"ID атрибута": "Attribute ID", -"Минимальная": "Minimal", -"Имя сервиса": "Service name", -"ПолеКолонки": "ColumnField", -"ОченьВажное": "VeryImportant", -"комплексных": "complex", -"ХешПроверки": "HashCheck", -"Имя проекта": "Project name", -"Имя таблицы": "Table name", "наблюдателя": "of auditor", -"СуммаСборки": "BuildSum", +"Имя таблицы": "Table name", +"Имя проекта": "Project name", +"ХешПроверки": "HashCheck", +"комплексных": "complex", +"ОченьВажное": "VeryImportant", +"ПолеКолонки": "ColumnField", +"Имя сервиса": "Service name", +"Минимальная": "Minimal", "КодДействия": "ActionCode", +"ID атрибута": "Attribute ID", +"КлючСтрокой": "KeyString", +"Зависимость": "Dependence", +"ДанныеБлока": "BlockData", +"МассивСтран": "CountriesArray", +"IDСообщения": "MessageID", +"ОсновнойURL": "MainURL", +"ID подборок": "Selection IDs", +"МассивПолей": "FieldArray", +"дата начала": "start date", +"ОпцияПолная": "OptionFull", +"Порт прокси": "Proxy port", "МедиаГруппа": "MediaGroup", -"Имя колонки": "Column name", "постановщик": "producer", -"Уведомления": "Notifications", -"Предприятия": "Enterprise", -"ID элемента": "Element ID", -"ТипКластера": "ClusterType", -"Ошибка JSON": "JSON Error", -"ПутьКМакету": "TemplatePath", -"IDОригинала": "OriginalID", -"ОпцииЗаписи": "WriteOptions", -"ТекстОтвета": "ReplyText", -"name>Пример": "name>Example", -"ID магазина": "Campaign ID", -"ТекКолекция": "CurrentCollection", -"Медиагруппа": "MediaGroup", -"УдалитьРоль": "DeleteRole", -"файл отчета": "report file", -"СлакОбласти": "SlackWorkspaces", -"МассивПутей": "PathsArray", -"ТекущийПуть": "CurrentPath", "ОтборПоТипу": "FilterByType", -"ПутьКлиента": "ClientPath", -"Стандартные": "Standard", -"ТипВложений": "AttachmentsType", -"ДокументURL": "DocumentURL", -"срок службы": "lifespan", -"Мессенджеры": "Messengers", -"ЧислоОшибок": "ErrorCount", -"БольшойФайл": "BigFile", -"Цена товара": "Product price", -"ТелоСтрокой": "BodyAsString", -"ФункцияХеша": "HashFunc", -"Бот Виталий": "Vitaly The Bot", -"Пример кода": "Code example", -"исполнитель": "performer", -"миллиметрах": "millimeters", -"Номер порта": "Port number", -"Текст поста": "Post text", -"XMLЗначение": "XMLValue", -"JSONСтрокой": "JSONString", -"Для Asserts": "For Asserts", -"ТекущаяДата": "CurrentDate", -"Подкаталоги": "Subfolders", -"расширением": "extension", -"КлючКлиента": "ClientKey", -"высота в см": "height, cm", -"Инструменты": "Tools", -"Разделитель": "Delimiter", -"СтрокаФайла": "FileString", -"КлючРегиона": "RegionKey", -"АдресПрокси": "ProxyAddress", -"Особенность": "Feature", -"ГринПрофиль": "GreenProfile", -"ФайлНаДиске": "FileOnDisk", -"МассивГифок": "GifsArray", -"ZipРазмерDD": "ZipSizeDD", -"Цель канала": "Channel purpose", -"ПустойВывод": "EmptyOutput", -"оптимизация": "optimization", -"ДобавитьЛог": "AddLog", -"Репозиторий": "Repository", -"ОтборСтрока": "FilterString", -"НовыйЗапрос": "NewRequest", -"Исполнитель": "Responsible", -"вероятность": "probability", -"SQLiteУспех": "SQLiteSuccess", -"ТелеграмБан": "TelegramBan", -"Выполняется": "In work", -"Петр Петров": "Petr Petrov", -"Обновленный": "Updated", -"зависимости": "dependencies", -"ДобавитьТег": "AddTag", -"S3НеНайдено": "S3NotFound", -"ЭтоУдаление": "ThisIsDeletion", -"ID подборки": "Selection ID", -"Ошибка поля": "Field error", -"Обновление5": "Update5", -"МассивФайла": "FileArray", -"ЧастьТекста": "TextPart", -"электроника": "electronics", -"IDКалендаря": "CalendarID", -"УдалениеMFA": "MFADelete", -"Новая метка": "New tag", -"УдалитьБазу": "DropBase", -"UUID заявки": "UUID of the invitation", -"СоздатьПоле": "CreateField", -"тип фильтра": "filter type", -"ЕстьПризнак": "FlagExists", -"ЗапросАдрес": "RequestAdress", -"ОзонОбъекты": "OzonObjects", -"МассивСтрок": "StingsArray", -"ЛогинПрокси": "ProxyLogin", -"Динамически": "Dynamically", -"Новое видео": "NewVideo", -"ВыборкаJSON": "JSONSelection", -"СкачатьФайл": "DownloadFile", -"ЦелевойПуть": "TargetPath", -"ТекущийФайл": "CurrentFile", -"ПотокВывода": "OutputStream", -"ЭтоТестыCLI": "IsCLITests", -"ТокенКанала": "ChannelToken", -"ЗаписатьBOM": "WriteBOM", -"ПолеОтметки": "TimestampField", -"ПолныйОтвет": "FullResponse", -"Яндекс Диск": "Yandex Disk", -"логирование": "logging", -"Фон истории": "Story background", -"Notion (ОПИ": "Notion (OpenIntegrations", -"ЗаменаТочки": "DotReplacement", -"ЯДискСсылка": "YaDiskLink", -"ЗапросМетод": "RequestMethod", -"руководство": "manual", -"КопироватьВ": "CopyTo", -"ПолучитьЛог": "GetLog", -"МассивЯчеек": "CellsArray", -"опционально": "optional", -"РефрешТокен": "RefreshToken", -"КлючПодписи": "SignKey", -"ТестовыйAPI": "TestAPI", -"10000 Тогда": "10000 Then", -"ПутиСтрокой": "PathsString", -"СтрПараметр": "StrParam", -"Имя поля БД": "DB field name", -"НоушнОбъект": "NotionObject", -"ЗапросыHTTP": "HTTPRequests", -"Послезавтра": "NextDay", -"уведомлений": "notifications", -"МассивТипов": "TypesArray", -"Удалить тег": "Delete tag", -"ТекущееПоле": "CurrentField", -"Длина Тогда": "Length Then", -"МассивЧисел": "NumberArray", -"Группировка": "Grouping", -"Число копий": "Number of copies", -"OllamaОтвет": "OllamaResponse", -"БазаНаДиске": "LocalBase", -"OllamaУспех": "OllamaSuccess", -"Ollama (ОПИ": "Ollama (OpenIntegrations", -"Тест диалог": "Test dialog", -"ПокинутьЧат": "LeaveChat", -"КаталогOint": "OintDirectory", -"Код региона": "Region code", -"МассивВидео": "VideosArray", -"УдалитьЛист": "DeleteSheet", -"Для YaxUnit": "For YAxUnit", -"специальная": "special", -"UUID заказа": "Order UUID", -"ЦветныеПоля": "ColoredFields", -"ЗаписатьЛог": "WriteLog", -"IDУчастника": "MemberID", -"ЗапросТекст": "RequestText", -"обновляемых": "of updated", -"СоздатьРоль": "CreateRole", -"ТекстЛимита": "LimitText", -"Комплексная": "Complex", -"НомерЗаказа": "OrderNumber", -"ID свойства": "Property ID", -"комментария": "of comment", -"Постановщик": "Producer", -"параметрами": "parameters", -"НеЗаполнено": "Empty", -"МассивРолей": "RoleArray", -"СоздатьПост": "CreatePost", -"определения": "definitions", -"Отправитель": "Sender", -"НоваяИконка": "NewIcon", -"IDЧерновика": "DraftID", -"ГуглКаталог": "GoogleCatalog", -"АдресаПочты": "EmailAddresses", -"Суперклиент": "SuperClient", -"МассивТэгов": "TagsArray", -"ДопПараметр": "AdditionalParameter", -"Минимальный": "Minimal", -"PatchСТелом": "PatchWithBody", -"МассивЦелей": "GoalsArray", -"ДатаISO8601": "DateISO8601", -"НеВыполнять": "NotExecute", -"ЗаписьВФайл": "WriteToFile", -"ID варианта": "Variant ID", -"Комментарии": "Comments", -"Повторяемая": "Repeatable", -"АдресАвтора": "АдресАвтора", -"ОписаниеИзм": "EditedDescription", -"Небезопасно": "Insecure", -"ЧислоЧастей": "PartsAmount", -"color=Белый": "color=White", -"МетодПоиска": "SearchMethod", -"Поле1,Поле2": "Field1,Field2", -"ВерсияСреды": "ВерсияСреды", -"IDВладельца": "OwnerID", -"ширина в см": "width, cm", -"подзадачами": "subtask", -"МассивИмени": "NameParts", -"ИмяЭлемента": "ElementName", -"ЧастьДанных": "DataPart", -"Новосибирск": "Novosibirsk", -"Методы Atom": "Atom methods", -"МассивМедиа": "MediaArray", -"ОбщийРазмер": "TotalSize", -"ПервыйТокен": "FirstToken", -"ID Родителя": "Parent ID", -"СоздатьБазу": "CreateDatabase", -"Поставщик Б": "Supplier B", -"IDХранилища": "StorageID", -"Логирование": "Logging", -"обновленный": "updated", -"Удалить лид": "Delete lead", -"SQLite (ОПИ": "SQLite (OpenIntegrations", -"ЗапросДомен": "RequestDomain", -"БитриксПоля": "BitrixFields", -"комментарий": "comment", -"МассивСвязи": "LinkArray", -"ТипЗначения": "ValeType", -"Поставщик В": "Supplier C", -"Нет, спасибо": "No, thank you", -"ИзменитьПуть": "UpdatePath", -"ИмяПараметра": "ParameterName", -"ПустойСписок": "EmptyList", -"ТипПриемника": "ReceiverType", -"IDКалендаря2": "CalendarID2", -"ДропБоксФайл": "DropboxFile", -"ЗапросСервер": "RequestServer", -"МассивЛистов": "SheetArray", -"СписокОтбора": "FilterList", -"МассивКлючей": "KeyArray", -"ЗапросСекция": "RequestSection", -"Текст кнопки": "Button text", -"Удалить файл": "Delete file", -"ТекущийКлючН": "CurrentKeyN", -"ОсновныеТест": "MainTests", -"Символы.ВТаб": "Chars.VTab", -"БитриксВремя": "BitrixTime", -"СоздатьОпрос": "CreatePoll", -"email автора": "authors email", -"Запись логов": "Log recording", -"Параметры[%1": "Parameters[%1", -"СтрРезультат": "StrResult", -"инструментов": "tools", -"Base64Строка": "Base64String", -"ПубличныйURL": "PublicURL", -"МассивБлоков": "BlockArray", -"ПолучитьФайл": "GetFile", -"ID участника": "Member ID", -"Добавить тег": "Add tag", -"МетодИндекса": "IndexMethod", -"КлючЗначение": "KeyValue", -"Тип вложений": "Attachments type", -"ГринРазлогин": "GreenUnlogin", -"ВызватьМетод": "ExecuteMethod", -"время начала": "start time", -"Новая задача": "New task", -"НеобходимТип": "TypeRequiered", -"ЗаписьВывода": "OutputWriting", -"Документация": "Read the Docs", -"КонечнаяДата": "EndDate", -"OllamaВерсия": "OllamaVersion", -"КартинкаПуть": "ImagePath", -"СтрРазделить": "StrSplit", -"ДокументЛога": "LogDocument", -"IDОбсуждения": "DiscussionID", -"ЭтоOneScript": "IsOneScript", -"SQLiteОшибка": "SQLiteError", -"НовыйПрефикс": "NewPrefix", -"МассивНабора": "SetsArray", -"Соответствие": "Map", -"ПараметрСокр": "ParameterTrim", -"ТекущийТекст": "CurrentText", -"пользователя": "of user", -"КлючевыеПоля": "KeyFields", -"РазмерПакета": "BatchSize", -"ЧтениеДанных": "DataReader", -"ПереносСтрок": "LineBreaks", -"Удалить блок": "Delete block", -"ПотокВНачало": "StreamToStart", -"СтрокаМетода": "MethodLine", -"пользователь": "user", -"GMax_Аккаунт": "GMax_Account", -"Проверка 8_4": "Check 8_4", -"IDПриложения": "AppID", -"ТекущийНабор": "CurrentSet", -"ZipРазмерCDH": "ZipSizeCDH", -"ШаблонМетода": "MethodTemplate", -"Текст ответа": "Answer text", -"OllamaОшибка": "OllamaError", -"ГуглКаталоги": "GoogleCatalogs", -"ДанныеОтвета": "ResponseData", -"Создать пост": "Create post", -"Рефреш токен": "Refresh token", -"элементы CRM": "CRM elements", -"ШаблонОтвета": "ResponseTemplate", -"ДопЗаголовки": "AdditionalHeaders", -"СоздатьСкоуп": "CreateScope", -"документацию": "documentation", -"ИДОбсуждения": "DiscussionID", -"Порт сервера": "Server port", -"IDСоединения": "ConnectionID", -"Использовать": "Use", -"Произвольный": "Arbitrary", -"МассивЧтения": "ArrayReading", -"Пользователь": "User", -"МассивПостов": "ArrayOfPosts", -"ШаблонТекста": "TextTemplate", -"ТекущийМетод": "CurrentMethod", -"ИзменитьПоле": "ModifyField", -"ШаблонСтроки": "StringTemplate", -"МассивКоманд": "CommandArray", -"приглашениям": "invitations", -"Равно(Истина": "Equal(True", -"МассивТаблиц": "TableArray", -"Новая стадия": "New stage", -"ШаблонКлючей": "KeysTemplate", -"МассивВызова": "CallArray", -"ЭтоСтруктура": "IsStructure", -"ОднаПодОдной": "OneByOne", -"СтруктураURL": "URLStructure", -"ТекущийТовар": "CurrentProduct", -"СжатыеДанные": "CompressedData", -"СтрокаВызова": "CallString", -"ТекстФильтра": "FilterText", -"выходные дни": "weekends", -"ЗакрытьПоток": "CloseStream", -"ТвиттерТокен": "TwitterToken", -"УдалитьТовар": "DeleteProduct", -"Дата инвойса": "Invoice date", -"Длительность": "Duration", -"8 Или Часть2": "8 Or Part2", -"Параметр_out": "Parameter_out", -"прикрепления": "of attachments", -"СсылкаКанала": "ChannelLink", -"ВернутьОтвет": "ReturnResponse", -"Дублирования": "duplicates", -"Создать блок": "Create block", -"Сформировать": "Formulate", -"ТипКоллекции": "CollectionType", -"загружаемого": "uploading", -"Вернуть блок": "Return block", -"Путь к файлу": "File path", -"Размер файла": "File size", -"РаботаСАудио": "AudioProcessing", -"КонецПопытки": "EndTry", -"КаталогЛогов": "LogDirectory", -"МассивБулево": "BoolArray", -"КонецОбласти": "EndRegion", -"СоздатьЗаказ": "CreateOrder", -"Покинуть чат": "Leave chat", -"ДокументПуть": "DocumentPath", -"Существующее": "Existing", -"ДобавитьПоле": "AddField", -"OPI_ТестыCLI": "OPI_TestsCLI", -"ТвиттерТекст": "TwitterText", -"IDАссистента": "AssistantID", -"тип счетчика": "counter type", -"СоздатьОтказ": "CreateRefusal", -"ПроксиПароль": "ProxyPassword", -"МассивОшибок": "ErrorsArray", -"родительской": "of parent", -"СоздатьМетку": "CreateTag", -"обязательная": "mandatory", -"ID сообщения": "Message ID", -"ЗначениеПоля": "FieldValue", -"МассивТекста": "TextArray", -"УдалитьБакет": "DeleteBucket", -"color=Желтый": "color=Yellow", -"ТекстЗапроса": "QueryText", -"Получить лог": "Get log", -"URL элемента": "item URL", -"ЗначениеФайл": "ValueFile", -"Telegram_Бан": "Telegram_Ban", -"СписокКоманд": "CommandList", -"ТекстСправки": "HelpText", -"ЗаписьДанных": "DataWriter", -"СтрокаПрокси": "ProxyString", -"Число,Строка": "Number, String", -"ЧислоПопыток": "Attempts", -"МассивФайлов": "ArrayOfFiles", -"СоздатьКнигу": "CreateSpreadsheet", -"ВКОбъявление": "VKAdversting", -"Предпроверка": "Precheck", -"Наименование": "Name", -"МассивЛишних": "ExtraArray", -"ТокенСервера": "ServerToken", -"JSONДвоичные": "JSONBinary", -"Конецфункции": "EndFunction", -"ОзонЧерновик": "OzonDraft", -"ВайберОнлайн": "ViberOnline", -"МестноеВремя": "ToLocalTime", -"НастройкиFTP": "FTPSettings", -"ДлинаОтступа": "OffsetLength", -"ФорматДанных": "DataFormat", -"ФайлКартинки": "PictureFile", -"color=Бирюза": "color=Cyan", -"Dropbox (ОПИ": "Dropbox (OpenIntegrations", -"ДопПараметр3": "AddParam3", -"МетрикаМетки": "MetrikaTags", -"ЗаписьТекста": "TextRecord", -"ДопПараметр1": "AddParam1", -"Создать базу": "Create base", -"подчиненного": "of dependent", -"UUIDЭлемента": "ItemUUID", -"Тестирование": "Testing", -"При отправке": "When sending data is", -"РаботаССетью": "WebMethods", -"OllamaМодели": "OllamaModels", -"МассивДанных": "DataArray", -"Твит с видео": "Tweet with video", -"Прогресс бар": "Progress bat", -"ЦветнойВывод": "ColorOutput", -"ОзонКартинки": "OzonPictures", -"ОтветСтрокой": "ResponseString", -"Новый запрос": "New request", -"ДругойЗапрос": "AnotherRequest", -"Большой файл": "Big file", -"ДопПараметр2": "AddParam2", -"ОбщаяТаблица": "CommonTable", -"способствует": "contributes", -"пустой ответ": "empty response", -"ФайлОтправки": "SendingFile", -"ГраницаТипов": "TypesBound", -"Open AI (ОПИ": "Open AI (OpenIntegrations", -"ПутьПриемник": "DestinationPath", +"ДФ=yyyyMMdd": "DF=yyyyMMdd", +"ТекущийПуть": "CurrentPath", +"МассивПутей": "PathsArray", +"СлакОбласти": "SlackWorkspaces", +"файл отчета": "report file", +"УдалитьРоль": "DeleteRole", +"Медиагруппа": "MediaGroup", +"ТекКолекция": "CurrentCollection", +"Имя колонки": "Column name", +"ID магазина": "Campaign ID", +"ТекстОтвета": "ReplyText", +"ОпцииЗаписи": "WriteOptions", +"IDОригинала": "OriginalID", +"ПутьКМакету": "TemplatePath", +"Ошибка JSON": "JSON Error", +"ТипКластера": "ClusterType", +"ID элемента": "Element ID", +"Предприятия": "Enterprise", +"Уведомления": "Notifications", +"name>Пример": "name>Example", +"авторизации": "authorization", +"СуммаСборки": "BuildSum", +"МассивОпций": "OptionsArray", +"НетНастроек": "NoSettings", +"ФайлЗапуска": "LaunchFile", +"ТекущийКлюч": "CurrentKey", +"электронной": "of e", +"MS SQL (ОПИ": "MS SQL (OpenIntegrations", +"Обновление3": "Update3", +"электронная": "e", +"ОбновитьВсе": "UpdateAll", +"ПолучитьИли": "GetOr", +"ТекстМакета": "TemplateText", +"ТекстКнопки": "ButtonText", +"IDВходящего": "RepliedID", +"ОткрытьФайл": "OpenFile", +"НайтиСтроки": "FindRows", +"Особенности": "Features", +"бесконечный": "endless", +"КодУдаления": "DeleteCode", +"Авторизация": "Authorization", +"ID кабинета": "Business ID", +"Хеширование": "Hashing", +"Неравенство": "Inequality", +"Обновление4": "Update4", +"ID счетчика": "Counter ID", +"СигнатураДД": "SignatureBD", +"ПолучитьXML": "GetXML", +"ОбщиеМетоды": "CommonMethods", +"ОбъектВидео": "VideoObject", +"Новый заказ": "New order", +"Ошибка типа": "Type error", +"ДанныеСхемы": "SchemaData", +"ЧастейИмени": "NeedParts", +"ТипКонтента": "ContentType", +"ДанныеФайла": "FileData", +"ТипДвоичные": "BinaryType", +"Маскировать": "Hide", +"IDКатегории": "CategoryID", +"ВернутьБлок": "ReturnBlock", +"Символы.НПП": "Chars.NBSp", +"МассивБлока": "ArrayBlock", +"Петров Петр": "Petrov Petr", +"ИзИсточника": "FromSource", +"УдалитьФайл": "DeleteFile", +"РазмерЧасти": "ChunkSize", +"база данных": "database", +"РазмерФайла": "FileSize", +"Перемещенная": "Moved", +"ПолнаяЗамена": "FullReplace", +"ВключитьФайл": "ВключитьФайл", +"Неопределено": "Undefined", +"МодульТестов": "TestModule", +"СтрокаКлючей": "KeysString", +"ОтветКлиента": "ClientResponse", +"МетрикаМетка": "MetrikaTag", +"Безвозвратно": "Irrecoverable", +"Существующая": "Existing", +"IDОбъявления": "AdID", +"ОбновитьФайл": "UpdateFile", +"Пользователи": "Users", +"Новая группа": "New group", +"XML фид Atom": "Atom XML feed", +"Существующий": "Existing", +"ПутьИсточник": "SourcePath", +"МассивЧастей": "PartsArray", +"СкачатьПапку": "DownloadFolder", +"ПутьЭлемента": "ElementPath", +"АдресВСетиKI": "NetworkAddressKI", +"ОтветСервера": "ServerResponse", +"ОписаниеBool": "DescriptionBool", +"ДробнаяЧасть": "FractionalPart", +"РаботаСДатой": "DateMethods", +"ВКОбсуждение": "VKDiscussion", +"Конфигурация": "Configuration", +"СтрокаДанных": "DataString", +"тип операции": "action type", +"НастройкиTls": "TLSSettings", +"IDПоследнего": "LastID", +"ID, Значение": "ID, Value", +"ТекущийПоток": "CurrentStream", +"ФайлПримеров": "FileExample", +"КодировкаURL": "URLencoding", +"ДобавитьAWS4": "AddAWS4", +"ТестыРаздела": "SectionTests", +"ПотокВПамяти": "MemoryStream", +"МетрикаУспех": "MetrikaSuccess", +"ТонкийКлиент": "ThinClient", +"Дни рождения": "Hollydays", +"КлючКартинка": "ImageKey", +"КонецУчастка": "ChunkEnd", +"SQLiteСтроки": "SQLiteRows", +"ВКСтатистика": "VKStatistics", +"ТекущаяОпция": "CurrentOption", +"наименование": "name", +"ID чата темы": "Topic chat ID", "СоздатьБакет": "CreateBucket", -"Без рекурсии": "No recursion", -"ЧислоСобытий": "EventCount", -"ТекущийОтвет": "CurrentResponse", -"КлючевоеПоле": "KeyField", -"Данные файла": "File data", -"ТекстВыборки": "SelectionText", -"Скачать файл": "Download file", -"Удалить пост": "Delete post", -"ОписаниеJSON": "JSONDescription", -"РазрешениеIP": "IPResolve", -"ТекстКоманды": "CommandText", -"ДопНастройки": "AdditionalSettings", -"ЦелеваяСтена": "TargetWall", -"ПарольПрокси": "ProxyPassword", -"ТипПлатформы": "PlatformType", -"УдалитьЗаказ": "DeleteOrder", +"Криптография": "Cryptography", "Ошибка имени": "Name error", +"УдалитьЗаказ": "DeleteOrder", +"ТипПлатформы": "PlatformType", +"ПарольПрокси": "ProxyPassword", +"ЦелеваяСтена": "TargetWall", +"ДопНастройки": "AdditionalSettings", +"ТекстКоманды": "CommandText", +"РазрешениеIP": "IPResolve", +"ОписаниеJSON": "JSONDescription", +"Удалить пост": "Delete post", +"Скачать файл": "Download file", +"ТекстВыборки": "SelectionText", +"Данные файла": "File data", +"КлючевоеПоле": "KeyField", +"ТекущийОтвет": "CurrentResponse", +"ЧислоСобытий": "EventCount", +"Без рекурсии": "No recursion", +"ПутьПриемник": "DestinationPath", +"Open AI (ОПИ": "Open AI (OpenIntegrations", +"ГраницаТипов": "TypesBound", +"ДобавитьЛист": "AddSheet", "ЯДискКаталог": "YaDiskFolder", "СоздатьПоток": "CreateStream", "ZipРазмерLFH": "ZipSizeLFH", "ШаблонОшибки": "ErrorPattern", -"UUID запуска": "Launch UUID", -"Архивирована": "Archived", -"ЧислоВСтроку": "NumberToString", -"ЭлементыПути": "PathParts", -"Проверка 8_3": "Check 8_3", -"ДанныеЯчейки": "CellData", -"ДатаПередачи": "TransferDate", -"присутствует": "present", -"ТекущийАдрес": "CurrentAddress", -"ДатаСгорания": "ExpireDate", -"ОписаниеТипа": "TypeDescription", -"Изменить лид": "Update lead", -"ФорматОтвета": "ResponseFormat", -"ИДОбъявления": "AnnouncementID", -"ВнешняяСтена": "ExternalWall", -"ПолучитьРоли": "GetRoles", -"ОзонКластеры": "OzonClusters", -"ЗапросПрокси": "RequestProxy", -"Записать лог": "Write log", -"JSONОригинал": "JSONOriginal", -"СдэкПреалерт": "CdekPrealert", "ТолькоОснова": "OnlyBase", -"Криптография": "Cryptography", +"СдэкПреалерт": "CdekPrealert", +"JSONОригинал": "JSONOriginal", +"Записать лог": "Write log", +"ЗапросПрокси": "RequestProxy", +"ОзонКластеры": "OzonClusters", +"ПолучитьРоли": "GetRoles", +"ВнешняяСтена": "ExternalWall", +"ИДОбъявления": "AnnouncementID", +"ФорматОтвета": "ResponseFormat", "РазмерДанных": "DataSize", -"ID чата темы": "Topic chat ID", -"ВКОбсуждение": "VKDiscussion", -"МодульТестов": "TestModule", -"АдресВСетиKI": "NetworkAddressKI", -"ОбновитьФайл": "UpdateFile", -"СкачатьПапку": "DownloadFolder", -"МассивЧастей": "PartsArray", -"ПутьИсточник": "SourcePath", -"Существующий": "Existing", -"СоздатьКанал": "CreateChannel", -"Новая группа": "New group", -"Пользователи": "Users", -"ОтветСервера": "ServerResponse", -"IDОбъявления": "AdID", -"ОтветКлиента": "ClientResponse", -"ПолнаяЗамена": "FullReplace", -"Перемещенная": "Moved", -"ВключитьФайл": "ВключитьФайл", -"Неопределено": "Undefined", -"Существующая": "Existing", -"СтрокаКлючей": "KeysString", -"МетрикаМетка": "MetrikaTag", -"Безвозвратно": "Irrecoverable", -"ПутьЭлемента": "ElementPath", -"ОписаниеBool": "DescriptionBool", -"наименование": "name", -"РаботаСДатой": "DateMethods", -"ТекущаяОпция": "CurrentOption", -"ВКСтатистика": "VKStatistics", -"SQLiteСтроки": "SQLiteRows", -"КонецУчастка": "ChunkEnd", -"КлючКартинка": "ImageKey", -"Дни рождения": "Hollydays", -"ТонкийКлиент": "ThinClient", -"МетрикаУспех": "MetrikaSuccess", -"ПотокВПамяти": "MemoryStream", -"ТестыРаздела": "SectionTests", -"ДобавитьAWS4": "AddAWS4", -"КодировкаURL": "URLencoding", -"ФайлПримеров": "FileExample", -"ТекущийПоток": "CurrentStream", -"ID, Значение": "ID, Value", -"IDПоследнего": "LastID", -"НастройкиTls": "TLSSettings", -"тип операции": "action type", -"ДробнаяЧасть": "FractionalPart", -"Конфигурация": "Configuration", -"СтрокаДанных": "DataString", -"ДобавитьЛист": "AddSheet", +"Изменить лид": "Update lead", +"ДатаСгорания": "ExpireDate", +"ТекущийАдрес": "CurrentAddress", +"присутствует": "present", +"ДатаПередачи": "TransferDate", +"ДанныеЯчейки": "CellData", +"Проверка 8_3": "Check 8_3", +"ЭлементыПути": "PathParts", +"ЧислоВСтроку": "NumberToString", +"Архивирована": "Archived", +"UUID запуска": "Launch UUID", +"ОписаниеТипа": "TypeDescription", "Twitter (ОПИ": "Twitter (OpenIntegrations", -"данные файла": "file's binary data", +"РекламаЧисло": "AdsNumber", "ПрочитатьZip": "ReadZip", -"ДополнитьURL": "CompleteURL", -"Получить лид": "Get lead", -"Номер заказа": "Order number", -"Имя каталога": "Folder name", -"МетодОбласти": "RegionMethod", -"Проверка 8_2": "Check 8_2", -"Текст правил": "Rules Text", -"ВКТСообщение": "VKTMessage", -"ОсновнойЦвет": "PrimaryColor", -"ЭтоКоннектор": "IsConnector", -"Создать роль": "Create role", -"доп. расходы": "additional costs", -"Видеообложка": "Videocover", -"стабильности": "stability", -"БезВозвратно": "Irrecoverable", -"КонецФункции": "EndFunction", -"КодСостояния": "StatusCode", -"СтрСоединить": "StrConcat", -"Адрес прокси": "Proxy address", -"часовой пояс": "time zone", -"БлокНастроек": "OptionsBlock", -"Создать поле": "Create field", -"ИмяФайлаТела": "BodyFileName", -"ПерваяЗапись": "FirstRecord", -"ПрочитатьВсе": "ReadAll", -"СкоупСтрокой": "ScopeString", -"Общие методы": "Common methods", -"Архив версий": "Version archive", -"ДатаОтправки": "SendingDate", -"IDПредыдущей": "PrevStageID", -"Строка,Число": "String, Number", -"ЭтоКоллекция": "ThisIsCollection", -"Закрытый чат": "Private chat", -"ОсновноеФото": "MainPhoto", -"ПараметрыURL": "URLParameters", -"GMax_Очереди": "GMax_Queues", -"ЕстьЗначение": "ValueExists", -"Путь, Данные": "Path, Data", -"Автор Первый": "First Author", -"DeleteСТелом": "DeleteWithBody", -"УдалитьМетку": "DeleteTag", -"АдресРесурса": "ResourceAddress", -"URL картинки": "Image URL", -"OpenAIСписок": "OpenAIList", -"НазваниеФида": "FeedTitle", -"Проверка 8_1": "Check 8_1", -"ТабРезультат": "TableResult", -"СМетаданными": "WithMetadata", -"Используемый": "Using", -"МассивЗеркал": "MirrorsArray", -"Интроспекция": "Introspection", -"ОткрытьПоток": "OpenStream", -"ЧтениеТекста": "TextReader", -"НастройкиSSH": "SSHSettings", -"НастройкиTLS": "TLSSettings", -"Удалить роль": "Delete role", -"Имя контакта": "Contact name", -"Автор Второй": "Second Author", -"Формирование": "Formation", -"КлючДвоичные": "BinaryKey", -"ДлинаПолоски": "BarLength", -"СоздатьПапку": "CreateFolder", -"Архивировать": "Archive", -"ТаблицаПолей": "FieldsTable", -"ОбъектИконка": "IconObject", -"GAPI_Аккаунт": "GAPI_Account", -"ОтборКоманды": "CommandSelection", -"ИзменитьРоль": "UpdateRole", -"ДанныеМодуля": "ModuleData", -"ОперацияJSON": "OperationsJSON", -"КопийНаЛисте": "CopiesPerSheet", "ТекущаяДлина": "CurrentLength", +"КопийНаЛисте": "CopiesPerSheet", +"ОперацияJSON": "OperationsJSON", +"ДанныеМодуля": "ModuleData", +"ИзменитьРоль": "UpdateRole", +"ОтборКоманды": "CommandSelection", +"GAPI_Аккаунт": "GAPI_Account", +"ОбъектИконка": "IconObject", +"ТаблицаПолей": "FieldsTable", +"Архивировать": "Archive", +"СоздатьПапку": "CreateFolder", +"ДлинаПолоски": "BarLength", +"КлючДвоичные": "BinaryKey", +"Формирование": "Formation", +"Автор Второй": "Second Author", +"Имя контакта": "Contact name", +"Удалить роль": "Delete role", +"НастройкиTLS": "TLSSettings", +"НастройкиSSH": "SSHSettings", +"ЧтениеТекста": "TextReader", +"ОткрытьПоток": "OpenStream", "Удалить лист": "Delete sheet", "IDКалендаря1": "CalendarID1", "РодительБаза": "ParentBase", "БитриксЧисло": "BitrixNumber", -"МассивТестов": "ArrayOfTests", -"ПорядокВвода": "InputOrder", -"УдалитьФайлы": "DeleteFiles", -"ПолучитьДату": "GetDate", -"расширениями": "extensions", -"ТипРезультат": "TypeResult", -"МассивКнопок": "ButtonArray", -"ДропБоксТеги": "DropboxTags", -"Текст ошибки": "Error text", -"ЗапросПароль": "RequestPassword", -"MongoDB (ОПИ": "MongoDB (OpenIntegrations", -"ЗаписатьJSON": "WriteJSON", -"ТелоДвоичные": "BodyBinary", -"ЭтоПолучение": "IsRettrieve", -"ДатаДоставки": "DeliveryDate", -"ДневнойЛимит": "DailyLimit", -"ID календаря": "Calendar ID", -"РекламаЧисло": "AdsNumber", -"ДФ='ЧЧ:мм:сс": "DF='HH:mm:ss", -"ДопПараметры": "AdditionalParameters", -"ДанныеМетода": "MethodData", +"ФайлОтправки": "SendingFile", "крайний срок": "deadline", -"XML фид Atom": "Atom XML feed", -"УдалитьЗапуск": "DeleteLaunch", -"Файл картинки": "Image file", -"Тестовая цель": "TestGoal", -"Экранирование": "Escaping", -"Значение поля": "Field value", -"СоздатьАльбом": "CreateAlbum", -"ОформитьОпцию": "FormOption", -"Вторая запись": "Second record", -"ПрочитатьJSON": "ReadJSON", -"ВСоответствие": "ToMap", -"КлиентMongoDB": "MongoDBClient", -"КомплексныйID": "ComplexID", -"ДанныеСобытия": "callbackData", -"СимволМассива": "ArraySymbol", -"Администратор": "Administrator", -"Текст + Emoji": "Text + Emoji", -"ТвиттерМассив": "TwitterArray", -"маркетинговый": "Marketing", -"ДанныеТаблицы": "TableData", -"ВККомментарий": "VKComment", -"НомерСтраницы": "PageNumber", -"ТекущийИндекс": "CurrentIndex", -"Создать бакет": "Create bucket", -"ПолучитьКанал": "GetChannel", -"Создать книгу": "Create spreadsheet", -"ОткрытьДиалог": "OpenDialog", -"ТекущаяСтрока": "CurrentRow", -"Отрицательная": "Negative", -"Адрес сервера": "Host address", -"СтруктураЛога": "LogStructure", -"РаботаСБазами": "WorkingWithDatabases", -"ID приложения": "App ID", -"Создать заказ": "Create order", -"УдалитьАльбом": "DeleteAlbum", -"тзЦветныеПоля": "tbColoredFields", -"ПолучитьКнигу": "GetSpreadsheet", -"ОтправитьBlob": "PushBlob", -"Настройки SSH": "SSH settings", -"Инициализация": "Initialization", -"ПрочитатьGZip": "ReadGZip", -"ЗапросТаймаут": "RequestTimeout", -"Начало работы": "Getting started", -"СтруктураТега": "TagStructure", -"OPI TCPКлиент": "OPI TCPClient", -"Имя коллекции": "Collection name", -"ЗаполнитьПоля": "FillFields", -"БитриксСписок": "BitrixList", -"Tiny, аккаунт": "Tiny, account", -"Дополнительно": "Additionally", -"ПодСообщением": "UnderMessage", -"VK Teams (ОПИ": "VK Teams (OpenIntegrations", -"ОчищенноеПоле": "ClearField", -"соисполнителя": "co-preformer", -"ПубличныйКлюч": "PublicKey", -"ID обсуждения": "Discussion ID", -"СекретныйКлюч": "SecretKey", -"ЗакрытьСессию": "CloseSession", -"автоматически": "automatically", -"Граница Тогда": "Border Then", -"ВернутьЗапрос": "ReturnRequest", -"ТекущийМассив": "CurrentArray", -"ДанныеПодписи": "SignatureData", -"МетодыОбласти": "RegionMethods", -"СоздатьСделку": "CreateDeal", -"СоздатьПроект": "CreateProject", -"МассивЗаписей": "RecordsArray", -"КлючЗаголовка": "HeaderKey", -"Продажа в RUB": "Sale in RUB", -"Дата создания": "CreationDate", -"ПринятьЗадачу": "ApproveTask", -"Принудительно": "Forced", -"СоединениеSSH": "SSHConnection", -"ТекущиеДанные": "CurrentData", -"ПорядокБайтов": "ByteOrder", -"Новый каталог": "New catalog", -"ЭтоСимвольное": "ThisIsSymbolic", -"ПолеКоллекции": "CollectionField", -"OPI_Настройки": "OPI_Settings", -"КлючИЗначение": "KeyAndValue", -"ГринПрочтение": "GreenReading", -"УстановкаТела": "BodySet", +"ДанныеМетода": "MethodData", +"ДопПараметры": "AdditionalParameters", +"ДФ='ЧЧ:мм:сс": "DF='HH:mm:ss", +"ID календаря": "Calendar ID", +"ДневнойЛимит": "DailyLimit", +"ДатаДоставки": "DeliveryDate", +"ЭтоПолучение": "IsRettrieve", +"ТелоДвоичные": "BodyBinary", +"Интроспекция": "Introspection", +"ЗаписатьJSON": "WriteJSON", +"ЗапросПароль": "RequestPassword", +"Текст ошибки": "Error text", +"ДропБоксТеги": "DropboxTags", +"МассивКнопок": "ButtonArray", +"ТипРезультат": "TypeResult", +"расширениями": "extensions", +"ПолучитьДату": "GetDate", +"УдалитьФайлы": "DeleteFiles", +"ПорядокВвода": "InputOrder", +"МассивТестов": "ArrayOfTests", +"MongoDB (ОПИ": "MongoDB (OpenIntegrations", +"данные файла": "file's binary data", +"МассивЗеркал": "MirrorsArray", +"СМетаданными": "WithMetadata", +"БлокНастроек": "OptionsBlock", +"часовой пояс": "time zone", +"Адрес прокси": "Proxy address", +"СтрСоединить": "StrConcat", +"КодСостояния": "StatusCode", +"КонецФункции": "EndFunction", +"БезВозвратно": "Irrecoverable", +"стабильности": "stability", +"Видеообложка": "Videocover", +"доп. расходы": "additional costs", +"Создать роль": "Create role", +"ЭтоКоннектор": "IsConnector", +"ОсновнойЦвет": "PrimaryColor", +"ВКТСообщение": "VKTMessage", +"Текст правил": "Rules Text", +"Проверка 8_2": "Check 8_2", +"МетодОбласти": "RegionMethod", +"Имя каталога": "Folder name", +"Номер заказа": "Order number", +"Получить лид": "Get lead", +"ДополнитьURL": "CompleteURL", +"Создать поле": "Create field", +"ИмяФайлаТела": "BodyFileName", +"ПерваяЗапись": "FirstRecord", +"ПрочитатьВсе": "ReadAll", +"ТабРезультат": "TableResult", +"Проверка 8_1": "Check 8_1", +"НазваниеФида": "FeedTitle", +"OpenAIСписок": "OpenAIList", +"URL картинки": "Image URL", +"АдресРесурса": "ResourceAddress", +"УдалитьМетку": "DeleteTag", +"DeleteСТелом": "DeleteWithBody", +"Автор Первый": "First Author", +"Путь, Данные": "Path, Data", +"Используемый": "Using", +"ЕстьЗначение": "ValueExists", +"ПараметрыURL": "URLParameters", +"ОсновноеФото": "MainPhoto", +"Закрытый чат": "Private chat", +"ЭтоКоллекция": "ThisIsCollection", +"Строка,Число": "String, Number", +"IDПредыдущей": "PrevStageID", +"ДатаОтправки": "SendingDate", +"Архив версий": "Version archive", +"Общие методы": "Common methods", +"СкоупСтрокой": "ScopeString", +"GMax_Очереди": "GMax_Queues", +"пустой ответ": "empty response", +"СоздатьКанал": "CreateChannel", +"ОбщаяТаблица": "CommonTable", +"ДанныеОтвета": "ResponseData", +"ГуглКаталоги": "GoogleCatalogs", +"OllamaОшибка": "OllamaError", +"Текст ответа": "Answer text", +"ШаблонМетода": "MethodTemplate", +"ZipРазмерCDH": "ZipSizeCDH", +"ТекущийНабор": "CurrentSet", +"IDПриложения": "AppID", +"Проверка 8_4": "Check 8_4", +"GMax_Аккаунт": "GMax_Account", +"пользователь": "user", +"СтрокаМетода": "MethodLine", +"ПотокВНачало": "StreamToStart", +"Удалить блок": "Delete block", +"ПереносСтрок": "LineBreaks", +"ЧтениеДанных": "DataReader", +"РазмерПакета": "BatchSize", +"КлючевыеПоля": "KeyFields", +"пользователя": "of user", +"ТекущийТекст": "CurrentText", +"ПараметрСокр": "ParameterTrim", +"Создать пост": "Create post", +"Соответствие": "Map", +"Рефреш токен": "Refresh token", +"ШаблонОтвета": "ResponseTemplate", +"ШаблонКлючей": "KeysTemplate", +"Новая стадия": "New stage", +"МассивТаблиц": "TableArray", +"Равно(Истина": "Equal(True", +"приглашениям": "invitations", +"МассивКоманд": "CommandArray", +"ШаблонСтроки": "StringTemplate", +"ИзменитьПоле": "ModifyField", +"ТекущийМетод": "CurrentMethod", +"ШаблонТекста": "TextTemplate", +"МассивПостов": "ArrayOfPosts", +"Пользователь": "User", +"МассивЧтения": "ArrayReading", +"Произвольный": "Arbitrary", +"Использовать": "Use", +"IDСоединения": "ConnectionID", +"Порт сервера": "Server port", +"ИДОбсуждения": "DiscussionID", +"документацию": "documentation", +"СоздатьСкоуп": "CreateScope", +"ДопЗаголовки": "AdditionalHeaders", +"элементы CRM": "CRM elements", +"МассивНабора": "SetsArray", +"НовыйПрефикс": "NewPrefix", +"SQLiteОшибка": "SQLiteError", +"email автора": "authors email", +"СоздатьОпрос": "CreatePoll", +"БитриксВремя": "BitrixTime", +"Символы.ВТаб": "Chars.VTab", +"ОсновныеТест": "MainTests", +"ТекущийКлючН": "CurrentKeyN", +"Удалить файл": "Delete file", +"Текст кнопки": "Button text", +"ЗапросСекция": "RequestSection", +"МассивКлючей": "KeyArray", +"СписокОтбора": "FilterList", +"МассивЛистов": "SheetArray", +"ЗапросСервер": "RequestServer", +"ДропБоксФайл": "DropboxFile", +"IDКалендаря2": "CalendarID2", +"ТипПриемника": "ReceiverType", +"ПустойСписок": "EmptyList", +"ИмяПараметра": "ParameterName", +"ИзменитьПуть": "UpdatePath", +"Нет, спасибо": "No, thank you", +"способствует": "contributes", +"Запись логов": "Log recording", +"Параметры[%1": "Parameters[%1", +"СтрРезультат": "StrResult", +"инструментов": "tools", +"ЭтоOneScript": "IsOneScript", +"IDОбсуждения": "DiscussionID", +"ДокументЛога": "LogDocument", +"КартинкаПуть": "ImagePath", +"OllamaВерсия": "OllamaVersion", +"КонечнаяДата": "EndDate", +"Документация": "Read the Docs", +"ЗаписьВывода": "OutputWriting", +"НеобходимТип": "TypeRequiered", +"Новая задача": "New task", +"МассивВызова": "CallArray", +"время начала": "start time", +"ГринРазлогин": "GreenUnlogin", +"Тип вложений": "Attachments type", +"КлючЗначение": "KeyValue", +"МетодИндекса": "IndexMethod", +"Добавить тег": "Add tag", +"ID участника": "Member ID", +"ПолучитьФайл": "GetFile", +"МассивБлоков": "BlockArray", +"ПубличныйURL": "PublicURL", +"Base64Строка": "Base64String", +"ВызватьМетод": "ExecuteMethod", +"ЭтоСтруктура": "IsStructure", +"СтрРазделить": "StrSplit", +"СтруктураURL": "URLStructure", +"НастройкиFTP": "FTPSettings", +"МестноеВремя": "ToLocalTime", +"ВайберОнлайн": "ViberOnline", +"ОзонЧерновик": "OzonDraft", +"Конецфункции": "EndFunction", +"JSONДвоичные": "JSONBinary", +"ТокенСервера": "ServerToken", +"МассивЛишних": "ExtraArray", +"Наименование": "Name", +"Предпроверка": "Precheck", +"ВКОбъявление": "VKAdversting", +"СоздатьКнигу": "CreateSpreadsheet", +"МассивФайлов": "ArrayOfFiles", +"ЧислоПопыток": "Attempts", +"Число,Строка": "Number, String", +"СтрокаПрокси": "ProxyString", +"ЗаписьДанных": "DataWriter", +"ТекстСправки": "HelpText", +"СписокКоманд": "CommandList", +"Telegram_Бан": "Telegram_Ban", +"ЗначениеФайл": "ValueFile", +"ДлинаОтступа": "OffsetLength", +"ФорматДанных": "DataFormat", +"ФайлКартинки": "PictureFile", +"Dropbox (ОПИ": "Dropbox (OpenIntegrations", +"ОднаПодОдной": "OneByOne", +"ДопПараметр2": "AddParam2", +"Большой файл": "Big file", +"ДругойЗапрос": "AnotherRequest", +"Новый запрос": "New request", +"ОтветСтрокой": "ResponseString", +"ОзонКартинки": "OzonPictures", +"ЦветнойВывод": "ColorOutput", +"Прогресс бар": "Progress bat", +"Твит с видео": "Tweet with video", +"URL элемента": "item URL", +"МассивДанных": "DataArray", +"РаботаССетью": "WebMethods", +"При отправке": "When sending data is", +"Тестирование": "Testing", +"UUIDЭлемента": "ItemUUID", +"подчиненного": "of dependent", +"Создать базу": "Create base", +"ДопПараметр1": "AddParam1", +"ЗаписьТекста": "TextRecord", +"МетрикаМетки": "MetrikaTags", +"ДопПараметр3": "AddParam3", +"OllamaМодели": "OllamaModels", +"Получить лог": "Get log", +"color=Бирюза": "color=Cyan", +"color=Желтый": "color=Yellow", +"Путь к файлу": "File path", +"Вернуть блок": "Return block", +"загружаемого": "uploading", +"ТипКоллекции": "CollectionType", +"Сформировать": "Formulate", +"Создать блок": "Create block", +"Дублирования": "duplicates", +"ВернутьОтвет": "ReturnResponse", +"СсылкаКанала": "ChannelLink", +"Параметр_out": "Parameter_out", +"Размер файла": "File size", +"8 Или Часть2": "8 Or Part2", +"Дата инвойса": "Invoice date", +"УдалитьТовар": "DeleteProduct", +"ТвиттерТокен": "TwitterToken", +"ЗакрытьПоток": "CloseStream", +"выходные дни": "weekends", +"ТекстФильтра": "FilterText", +"СтрокаВызова": "CallString", +"ТекстЗапроса": "QueryText", +"СжатыеДанные": "CompressedData", +"ТекущийТовар": "CurrentProduct", +"Длительность": "Duration", +"РаботаСАудио": "AudioProcessing", +"прикрепления": "of attachments", +"родительской": "of parent", +"КонецПопытки": "EndTry", +"УдалитьБакет": "DeleteBucket", +"ID сообщения": "Message ID", +"обязательная": "mandatory", +"СоздатьМетку": "CreateTag", +"МассивОшибок": "ErrorsArray", +"ПроксиПароль": "ProxyPassword", +"СоздатьОтказ": "CreateRefusal", +"ЗначениеПоля": "FieldValue", +"IDАссистента": "AssistantID", +"тип счетчика": "counter type", +"ТвиттерТекст": "TwitterText", +"OPI_ТестыCLI": "OPI_TestsCLI", +"ДобавитьПоле": "AddField", +"Существующее": "Existing", +"ДокументПуть": "DocumentPath", +"Покинуть чат": "Leave chat", +"СоздатьЗаказ": "CreateOrder", +"КонецОбласти": "EndRegion", +"МассивБулево": "BoolArray", +"КаталогЛогов": "LogDirectory", +"МассивТекста": "TextArray", +"ПараАртикулов": "ArticlesPair", +"ДатаОкончания": "EndDate", +"понравившимся": "liked", +"ОбъектСостава": "CompositionObject", +"IDПодкаталога": "SubfolderID", +"СтрокаТаблицы": "TableRow", +"ТипКомпоненты": "ComponentType", +"ЗаписатьТекст": "WriteText", +"СоздатьЗапуск": "CreateLaunch", +"ПолучитьОтвет": "GetResponse", +"ОбновитьТокен": "RefreshToken", +"ВставитьПосле": "InsertAfter", +"ОсновныеЧасти": "MainParts", +"МассивКаналов": "ChannelArray", +"КартинкаПоста": "PostImage", +"СоздатьЗаписи": "CreatePosts", +"ТочкаОтгрузки": "ShippingPoint", +"XMLЗавершения": "FinishXML", +"Срок действия": "Expiration date", +"КодДобавления": "AddCode", +"ТелеграмАудио": "TelegramAudio", +"ОзонТаймслоты": "OzonTimeslots", +"Закрыл задачу": "Close task", +"ОбщийМакет.%1": "CommonTemplate.%1", +"ОбработатьXML": "ProcessXML", +"СтруктураТела": "BodyStructure", +"БитриксБулево": "BitrixBool", +"ФайловыйПоток": "FileStream", +"НовоеОписание": "NewDescription", +"ПрочитаноБайт": "BytesRead", +"использования": "of using", +"УдалитьСделку": "DeleteDeal", +"ДатаИстечения": "ExpirationDate", +"НомерКампании": "CampaignNumber", +"СоздатьЗадачу": "CreateTask", +"Вопрос опроса": "Poll question", +"Изменить путь": "Update path", +"ФорматТаблицы": "TableFormat", +"ЛокальныйФайл": "LocalFile", +"Дата рождения": "Birth date", +"ГринСообщения": "GreenMessages", +"С метаданными": "With metadata", +"БитриксСделка": "BitrixDeal", +"идентификатор": "identifier", +"Telegram (ОПИ": "Telegram (OpenIntegrations", +"ТелеграмЧисло": "TelegramNumber", +"МассивПорогов": "ThresholdsArray", +"МассивТоваров": "ProductsArray", +"IDЦитируемого": "ReplyID", +"Строка, Число": "String, Number", +"МассивСобытий": "ArrayOfEvents", +"С данными TSV": "With TSV data", +"ПолучитьМетод": "GetMethod", +"СоздатьСервер": "CreateServer", +"ОбработатьТег": "ProcessTag", +"БитриксМассив": "BitrixArray", +"Евпаторийский": "Evpatoriysky", +"автоматизации": "automation", +"Наши спонсоры": "Our Sponsors", +"ИсходныйПоток": "SourceStream", +"ШаблонФункции": "FunctionTemplate", +"Создать канал": "Create channel", +"Размер скидки": "Discount amount", +"IDКомментария": "CommentID", +"Картинка1.jpg": "Picture1.jpg", +"IDПодключения": "ConnectionID", +"дата закрытия": "closing date", +"Положительная": "Positive", +"НовоеЗначение": "NewValue", +"ТаблицаТестов": "TestTable", +"ТелеграмВидео": "TelegramVideo", +"НовыйРодитель": "NewParent", +"ТипРезультата": "ResultType", +"СтрокаЗапуска": "LaunchString", +"ОшибкаЗапроса": "RequestError", +"НастройкиSFTP": "SFTPSettings", +"ГринСообщение": "GreenMessage", +"БольшиеДанные": "BigData", +"TCPОбработчик": "TCPHandler", +"ВозможныйФайл": "PossibleFile", +"РазложитьJSON": "ParseJSON", +"ТекущаяДатаЧП": "CurrentDateTZ", +"ПереслатьФайл": "ResendFile", +"СтруктураПоля": "FieldStructure", +"РаботаСЛидами": "LeadsManagement", +"ЭлементДанных": "DataElement", +"Первый запуск": "First start", +"ТелеграмОпрос": "TelegramPoll", +"OPI_TCPКлиент": "OPI_TCPClient", +"до 500 рублей": "up to 500 roubles", +"Файл размером": "File with size", +"НомерТелефона": "PhoneNumber", +"ЛокальныйПуть": "LocalPath", +"ТелеграмГифка": "TelegramGif", +"Число, Строка": "Number, String", +"Изменить роль": "Update role", +"Соответствие_": "Map_", +"МетодыСервера": "ServerMethods", +"ОбъектИндекса": "IndexObject", +"МедиаКартинка": "MediaPicture", +"ФинальныйКлюч": "FinalKey", +"Полный запрос": "Full request", +"ФайлПараметра": "ParamFile", +"Новая таблица": "NewTable", +"Блок с файлом": "FileBlock", +"МетодыКлиента": "ClientMethods", +"удовлетворены": "resolved", +"ПодписьBase64": "SignatureBase64", +"УдалитьОбъект": "DeleteObject", +"СоздатьГруппу": "CreateGroup", +"БакетПриемник": "SourceBucket", +"МассивПозиций": "ItemsArray", +"ПолучитьТекст": "GetText", +"ТекущаяЗапись": "CurrentRecord", +"ОткрытьСессию": "OpenSession", +"ПутьЗаготовок": "BlanksPath", +"Тестовый твит": "TestTweet", +"АдресРесурса2": "ResourceAddress2", +"ОписаниеТипов": "TypeDescription", +"Текст, Ошибка": "Text, Error", +"Адрес локации": "Location address", +"АдресРесурса5": "ResourceAddress5", +"АдресРесурса1": "ResourceAddress1", +"Первая запись": "First record", +"Множественный": "Multiple", +"Изменить поле": "Modify field", +"Таймаут (в мс": "Timeout (in ms", +"РаботаСТегами": "TagsManagement", +"ПолучитьЧисло": "GetNumber", +"Адрес объекта": "Object address", +"ИзменитьЗаказ": "UpdateOrder", +"Переустановка": "Reinstall", +"БитриксИстина": "BitrixTrue", +"статус задачи": "task status", +"Название фида": "Feed title", +"RSS_МетодыRSS": "RSS_RSSMethods", +"СессияВставка": "SessionInsert", +"color=Зеленый": "color=Green", +"СтруктураЧата": "ChatStructure", +"ОзонБезОшибок": "OzonNoErrors", +"ОтправитьФайл": "SendFile", +"УстановитьURL": "SetURL", +"ФайлЛокальный": "LocalFile", +"СтруктураПрав": "PermissionsStructure", +"ТекущееЧтение": "CurrentReading", +"Вызвать метод": "Invoke method", +"ЗаписьВПамять": "WriteToMemory", +"УдалитьЗаписи": "DeleteRecords", +"Название роли": "Role name", +"ОтветЗагрузки": "UploadResponse", +"Сопоставление": "Collation", +"GetDataIndexа": "GetIndexData", +"Код материала": "Material code", +"ЗначениеИначе": "DefaultValue", +"ОтветПроверки": "CheckResponse", +"СохранитьФайл": "SaveFile", +"ШиринаКонсоли": "ConsoleWidth", +"тип информера": "informer type", +"СКодированием": "WithEncoding", +"ОформитьОтвет": "FormResponse", +"Токен доступа": "Access token", +"СлакЭфемерное": "SlackEphemeral", +"Версия: 2.4.8": "Version: 2.4.8", +"СклеитьДанные": "MergeData", +"РаботаСЧатами": "ChatManagement", +"СделатьРепост": "MakeRepost", +"Получить роли": "Get roles", +"Массив файлов": "Files array", +"дата создания": "date of creation", +"ПараметрыJSON": "JSONParameters", +"ДанныеКоманды": "CommandData", +"Удалить метку": "Delete tag", +"ГринИмяГруппы": "GreenGroupName", +"Это новый чат": "This is a new chat", +"Создать папку": "Create folder", +"Добавить лист": "Add sheet", +"ГуглКалендарь": "GoogleCalendar", +"ИзменитьМетку": "UpdateTag", +"РазмерУчастка": "ChunkSize", +"СоздатьМодель": "CreateModel", +"Текст запроса": "Request text", +"Множественная": "Multiple", +"ДобавитьМесяц": "AddMonth", +"ТекущийМаркер": "CurrentMarker", +"КлючНастройки": "SettingKey", +"БакетИсточник": "DestinationBucket", +"ПорядокОбмена": "ExchangeOrder", +"ЗагрузитьФайл": "UploadFile", +"Твиттер_Твиты": "TwitterAPI_Tweets", +"Тестовая тема": "TestTopic", +"Создано из 1С": "Created by 1C", +"МассивЯрлыков": "LabelsArray", +"ТипыКоллекции": "CollectionsTypes", +"СтруктураДаты": "DateStructure", +"ТекущийРаздел": "CurrentSection", +"Новое событие": "New event", +"УдалитьЗадачу": "DeleteTask", +"ТекущийСостав": "CurrentComposition", +"БезРазделения": "NoSeparation", +"КонечныйОтвет": "FinalResponse", +"ДатаПолучения": "ReceivingDate", +"ЕдиницаДанных": "DataUnit", +"Другая сделка": "Another deal", +"Удалить товар": "Delete product", +"Refresh токен": "Refresh token", +"ОшибкаСервера": "ServerError", +"ПолучитьМетку": "GetTag", +"ПокинутьКанал": "LeaveChannel", +"ВыборЗначения": "ValueSelection", +"ПутьОригинала": "OriginalPath", +"Создать метку": "Create tag", +"ВывестиСтроку": "WriteLine", +"ИмяКоннектора": "ConnectorName", +"СтрокаОбласти": "RegionLine", +"Одноклассники": "Classmates", +"НазначитьРоли": "GrantRoles", +"Текст команды": "Command text", +"ЭтоОтложенное": "IsDelayed", +"ВставкаДанных": "DataInsert", +"КаталогМетода": "MethodCatalog", +"БитриксСтрока": "BitrixString", +"UnixИстечение": "UnixExpiration", +"ИмяКомпоненты": "AddInName", +"Переадресация": "Redirection", +"РаботаСПолями": "WorkingWithFields", +"ПервыйЭлемент": "FirestElement", +"РАЗЛОЖИТЬJSON": "PARSEJSON", +"НачалоУчастка": "ChunkStart", +"ТаймаутЗаписи": "WriteTimeout", "Заполненность": "Filling", +"УстановкаТела": "BodySet", +"ГринПрочтение": "GreenReading", +"КлючИЗначение": "KeyAndValue", +"OPI_Настройки": "OPI_Settings", +"ПолеКоллекции": "CollectionField", +"ЭтоСимвольное": "ThisIsSymbolic", +"Новый каталог": "New catalog", +"ПорядокБайтов": "ByteOrder", +"ТекущиеДанные": "CurrentData", +"СоединениеSSH": "SSHConnection", "IDУведомления": "NotificationID", +"Принудительно": "Forced", +"Дата создания": "CreationDate", +"Продажа в RUB": "Sale in RUB", +"КлючЗаголовка": "HeaderKey", +"МассивЗаписей": "RecordsArray", +"СоздатьПроект": "CreateProject", +"СоздатьСделку": "CreateDeal", +"МетодыОбласти": "RegionMethods", +"ДанныеПодписи": "SignatureData", +"ТекущийМассив": "CurrentArray", +"ВернутьЗапрос": "ReturnRequest", +"Граница Тогда": "Border Then", +"ПринятьЗадачу": "ApproveTask", "Это коннектор": "Is connector", "Текст новости": "Text of post", "СледующееПоле": "NextField", -"ПроверитьBlob": "CheckBlob", -"необяз. по ум": "optional, def. val.", -"Картинка2.jpg": "Picture2.jpg", -"ТаймаутЧтения": "ReadTimeout", -"тип сравнения": "comparison type", -"АдресРесурса4": "ResourceAddress4", -"ЧислоОтправок": "SendCount", -"ЗакрытьДиалог": "CloseDialog", -"ID ассистента": "Assistant ID", -"Обновить файл": "Update file", -"ДвойныеКавчки": "DoubleQuotes", -"РазделениеPhp": "SeparationPhp", -"Файл с Base64": "Base64 File", -"ДобавитьТовар": "AddProduct", -"С параметрами": "With paramether", -"Идентификатор": "Identifier", -"СлакСообщения": "SlackMessages", -"пустая строка": "empty string", -"ВладелецВидео": "VideoOwner", -"Удалить заказ": "Delete order", -"МассивОтветов": "AnswersArray", -"СтрокаЗаписей": "RecordString", -"Заимстованные": "Borrowed", -"ЛокальныеПути": "LocalPaths", "УчетныеДанные": "SecretData", +"ЛокальныеПути": "LocalPaths", +"Заимстованные": "Borrowed", +"СтрокаЗаписей": "RecordString", +"МассивОтветов": "AnswersArray", +"Удалить заказ": "Delete order", +"ВладелецВидео": "VideoOwner", +"пустая строка": "empty string", +"СлакСообщения": "SlackMessages", +"Идентификатор": "Identifier", +"С параметрами": "With paramether", +"ДобавитьТовар": "AddProduct", +"Файл с Base64": "Base64 File", +"РазделениеPhp": "SeparationPhp", +"ДвойныеКавчки": "DoubleQuotes", +"Обновить файл": "Update file", +"ID ассистента": "Assistant ID", +"ЗакрытьДиалог": "CloseDialog", +"ЧислоОтправок": "SendCount", +"АдресРесурса4": "ResourceAddress4", +"тип сравнения": "comparison type", +"ТаймаутЧтения": "ReadTimeout", +"Картинка2.jpg": "Picture2.jpg", +"необяз. по ум": "optional, def. val.", +"ПроверитьBlob": "CheckBlob", +"автоматически": "automatically", +"ЗакрытьСессию": "CloseSession", +"СекретныйКлюч": "SecretKey", +"ID обсуждения": "Discussion ID", +"Создать книгу": "Create spreadsheet", +"ПолучитьКанал": "GetChannel", +"Создать бакет": "Create bucket", +"ТекущийИндекс": "CurrentIndex", +"НомерСтраницы": "PageNumber", +"ВККомментарий": "VKComment", +"ДанныеТаблицы": "TableData", +"маркетинговый": "Marketing", +"ТвиттерМассив": "TwitterArray", +"Текст + Emoji": "Text + Emoji", +"Администратор": "Administrator", +"СимволМассива": "ArraySymbol", +"ДанныеСобытия": "callbackData", +"КомплексныйID": "ComplexID", +"КлиентMongoDB": "MongoDBClient", +"ВСоответствие": "ToMap", +"ПрочитатьJSON": "ReadJSON", +"Вторая запись": "Second record", +"ОформитьОпцию": "FormOption", +"СоздатьАльбом": "CreateAlbum", +"ЗагрузкаВидео": "VideoUpload", +"Экранирование": "Escaping", +"Тестовая цель": "TestGoal", +"Файл картинки": "Image file", +"УдалитьЗапуск": "DeleteLaunch", +"ОткрытьДиалог": "OpenDialog", "ВременныйФайл": "TempFile", +"ТекущаяСтрока": "CurrentRow", +"Адрес сервера": "Host address", +"ПубличныйКлюч": "PublicKey", +"соисполнителя": "co-preformer", +"ОчищенноеПоле": "ClearField", +"VK Teams (ОПИ": "VK Teams (OpenIntegrations", +"ПодСообщением": "UnderMessage", +"Дополнительно": "Additionally", +"Tiny, аккаунт": "Tiny, account", +"БитриксСписок": "BitrixList", +"ЗаполнитьПоля": "FillFields", +"Имя коллекции": "Collection name", +"OPI TCPКлиент": "OPI TCPClient", +"СтруктураТега": "TagStructure", +"Начало работы": "Getting started", +"ЗапросТаймаут": "RequestTimeout", +"ПрочитатьGZip": "ReadGZip", +"Инициализация": "Initialization", +"Настройки SSH": "SSH settings", +"ОтправитьBlob": "PushBlob", +"ПолучитьКнигу": "GetSpreadsheet", +"тзЦветныеПоля": "tbColoredFields", +"УдалитьАльбом": "DeleteAlbum", +"Создать заказ": "Create order", +"ID приложения": "App ID", +"РаботаСБазами": "WorkingWithDatabases", +"СтруктураЛога": "LogStructure", +"Отрицательная": "Negative", "СоздатьФидRSS": "CreateFeedRSS", -"КонецЭлемента": "EndElement", +"Значение поля": "Field value", "ЗапросыСТелом": "RequestsWithBody", -"МассивНомеров": "PhonesArray", -"Создать опрос": "Create poll", -"не ограничено": "unlimited", -"АдресРесурса7": "ResourceAddress7", -"ПолучитьЗаказ": "GetOrder", -"ТекстОписания": "DescriptionText", -"Работа с BLOB": "Working with Blob", -"Тестовая база": "TestDatabase", -"СписокТоваров": "ProductList", -"ШаблонДоступа": "AccessTemplate", -"Тестовый лист": "TestSheet", -"СдэкКвитанция": "CdekReceipt", -"Строка адреса": "Address string", -"РезультатЛожь": "ResultFalse", -"ПолучитьТокен": "GetToken", -"КодироватьURL": "EncodeURL", -"РезультатJSON": "ResultJSON", -"ИзменитьТовар": "EditProduct", -"Массив кнопок": "Array of buttons", -"Ссылка канала": "Channel link", -"ВозможныеПути": "PossiblePaths", -"БитриксОбъект": "BitrixObject", -"ОбъектЗапуска": "LaunchObject", -"В чат, по URL": "In chat, by URL", +"АдресРесурса6": "ResourceAddress6", +"ZipРазмерEOCD": "ZipSizeEOCD", +"СтрокаНомеров": "NumbersString", +"ОсновнаяЧасть": "MainPart", +"АТКомментарии": "ATComments", +"Создать отказ": "Create refusal", +"ПоставитьЛайк": "LikePost", +"ПозицияНачала": "StartPosition", +"ДобавитьОтбор": "AddFilter", +"УдалитьПроект": "DeleteProject", +"IDСправочника": "CatalogID", +"ТекущийОбъект": "CurrentObject", +"УстановитьTls": "SetTls", +"СлакСообщение": "SlackMessage", +"АдресЗагрузки": "UploadURL", +"СоздатьЗапрос": "CreateRequest", +"Наименование2": "Filename2", +"БитриксДиалог": "BitrixDialog", +"Метод,Область": "Method,Region", +"МассивКолонок": "ColumnsArray", +"УдаленныйФайл": "RemoteFile", +"РазмерТекущих": "CurrentSize", +"КодУстройства": "DeviceCode", +"ТокенСтраницы": "PageToken", +"Описание чата": "Chat description", +"НайденныйТест": "FoundTest", +"Удалить бакет": "Delete bucket", +"СтрокаПодписи": "SignatureString", +"КонецЭлемента": "EndElement", +"ТекущийСтатус": "CurrentStatus", +"дополнительно": "additionally", +"ВызовПроверки": "CheckCall", +"Скачать папку": "Download folder", +"КлючевоеСлово": "KeyWord", +"Bitrix24 (ОПИ": "Bitrix24 (OpenIntegrations", +"ДатаУстановки": "SetupDate", +"ВыйтиИзГруппы": "LeaveGroup", +"JSONРезультат": "JSONResult", +"Airtable (ОПИ": "Airtable (OpenIntegrations", +"ШаблонОбласти": "RegionTemplate", +"Блок картинки": "Image block", +"OAuthАлгоритм": "OAuthAlgorithm", +"СкрытьИсторию": "HideHistory", +"ТекстФильтров": "FiltersText", +"ПоляИсточники": "SourceFields", +"СтрокаТоваров": "ProductsString", +"НужнаПроверка": "NeedCheck", +"ПриватныйКлюч": "PrivateKey", +"ШаблонКолонки": "ColoumTemplate", +"Наименование1": "Filename1", +"себестоимость": "cost price", +"подразделения": "department", +"РазмерОбъекта": "ObjectSize", +"ID объявления": "Ad ID", +"ОбъектКлиента": "ClientObject", +"новый каталог": "new catalog", +"АдресРесурса3": "ResourceAddress3", "ПроксиСтрокой": "ProxtString", +"В чат, по URL": "In chat, by URL", +"ОбъектЗапуска": "LaunchObject", +"БитриксОбъект": "BitrixObject", +"ВозможныеПути": "PossiblePaths", +"Ссылка канала": "Channel link", +"Массив кнопок": "Array of buttons", +"ИзменитьТовар": "EditProduct", +"РезультатJSON": "ResultJSON", +"КодироватьURL": "EncodeURL", +"ПолучитьТокен": "GetToken", "ПолучитьДомен": "GetDomain", +"РезультатЛожь": "ResultFalse", +"СдэкКвитанция": "CdekReceipt", +"Тестовый лист": "TestSheet", +"ШаблонДоступа": "AccessTemplate", +"СписокТоваров": "ProductList", +"Тестовая база": "TestDatabase", +"Работа с BLOB": "Working with Blob", +"ТекстОписания": "DescriptionText", +"ПолучитьЗаказ": "GetOrder", +"АдресРесурса7": "ResourceAddress7", +"Создать опрос": "Create poll", +"ТокенДвоичные": "TokenBinary", +"Строка адреса": "Address string", "ЛишниеСимволы": "ExtraCharacters", -"Другие версии": "Other versions", +"не ограничено": "unlimited", "ШаблонЗапроса": "RequestTemplate", -"МестоДоставки": "DeliveryLocation", +"срок годности": "expiry date", +"Другие версии": "Other versions", +"Домен сервера": "Server domain", +"ИДКомментария": "CommentID", +"ВозможныйПуть": "PossiblePath", +"СтруктураЦели": "GoalStructure", +"ШаблонПовтора": "RepeatTemplate", +"РаботаСДиском": "WorkingWithDrive", +"ОбъектСервера": "ServerObject", +"Описание поля": "Field description", +"МассивЗаказов": "ArrayOfOrders", +"УдалитьМодель": "DeleteModel", +"СкачатьМодель": "PullModel", +"МассивНомеров": "PhonesArray", +"ОбъектОбложка": "CoverObject", +"СвойстваЛиста": "SheetProperties", "YandexID (ОПИ": "YandexID (OpenIntegrations", "Прочитать все": "Read all", "ЭтоКомпонента": "IsAddIn", "С расширением": "With extension", -"криптографией": "сryptography", +"МестоДоставки": "DeliveryLocation", "Данные ответа": "Response data", "color=Желтый)": "color=Yellow)", "ДФ=yyyy-MM-dd": "DF=yyyy-MM-dd", -"БитриксЗадача": "BitrixTask", "ЧислоСимволов": "SymbolCount", -"ОбъектОбложка": "CoverObject", -"СвойстваЛиста": "SheetProperties", -"СкачатьМодель": "PullModel", -"УдалитьМодель": "DeleteModel", -"МассивЗаказов": "ArrayOfOrders", -"Описание поля": "Field description", -"ОбъектСервера": "ServerObject", -"РаботаСДиском": "WorkingWithDrive", -"ШаблонПовтора": "RepeatTemplate", -"СтруктураЦели": "GoalStructure", -"ВозможныйПуть": "PossiblePath", -"ИДКомментария": "CommentID", -"Домен сервера": "Server domain", -"срок годности": "expiry date", -"АдресРесурса3": "ResourceAddress3", -"ТокенДвоичные": "TokenBinary", -"ОбъектКлиента": "ClientObject", -"ID объявления": "Ad ID", -"ТокенСтраницы": "PageToken", -"КодУстройства": "DeviceCode", -"РазмерТекущих": "CurrentSize", -"УдаленныйФайл": "RemoteFile", -"МассивКолонок": "ColumnsArray", -"Метод,Область": "Method,Region", -"БитриксДиалог": "BitrixDialog", -"Наименование2": "Filename2", -"СоздатьЗапрос": "CreateRequest", -"АдресЗагрузки": "UploadURL", -"СлакСообщение": "SlackMessage", -"Описание чата": "Chat description", -"УстановитьTls": "SetTls", -"IDСправочника": "CatalogID", -"УдалитьПроект": "DeleteProject", -"ДобавитьОтбор": "AddFilter", -"ПозицияНачала": "StartPosition", -"ПоставитьЛайк": "LikePost", -"Создать отказ": "Create refusal", -"АТКомментарии": "ATComments", -"ОсновнаяЧасть": "MainPart", -"СтрокаНомеров": "NumbersString", -"ZipРазмерEOCD": "ZipSizeEOCD", -"АдресРесурса6": "ResourceAddress6", -"ТекущийОбъект": "CurrentObject", -"НайденныйТест": "FoundTest", -"Удалить бакет": "Delete bucket", -"СтрокаПодписи": "SignatureString", -"РазмерОбъекта": "ObjectSize", -"подразделения": "department", -"себестоимость": "cost price", -"Наименование1": "Filename1", -"ШаблонКолонки": "ColoumTemplate", -"ПриватныйКлюч": "PrivateKey", -"НужнаПроверка": "NeedCheck", -"СтрокаТоваров": "ProductsString", -"ПоляИсточники": "SourceFields", -"ТекстФильтров": "FiltersText", -"СкрытьИсторию": "HideHistory", -"OAuthАлгоритм": "OAuthAlgorithm", -"Блок картинки": "Image block", -"ШаблонОбласти": "RegionTemplate", -"Airtable (ОПИ": "Airtable (OpenIntegrations", -"JSONРезультат": "JSONResult", -"ВыйтиИзГруппы": "LeaveGroup", -"ДатаУстановки": "SetupDate", -"Bitrix24 (ОПИ": "Bitrix24 (OpenIntegrations", -"КлючевоеСлово": "KeyWord", -"Скачать папку": "Download folder", -"ВызовПроверки": "CheckCall", -"новый каталог": "new catalog", -"дополнительно": "additionally", -"ТекущийСтатус": "CurrentStatus", -"ТаймаутЗаписи": "WriteTimeout", -"ЗагрузкаВидео": "VideoUpload", -"РАЗЛОЖИТЬJSON": "PARSEJSON", -"СохранитьФайл": "SaveFile", -"ВозможныйФайл": "PossibleFile", -"TCPОбработчик": "TCPHandler", -"БольшиеДанные": "BigData", -"ГринСообщение": "GreenMessage", -"НастройкиSFTP": "SFTPSettings", -"НачалоУчастка": "ChunkStart", -"БитриксМассив": "BitrixArray", -"ОшибкаЗапроса": "RequestError", -"СтрокаЗапуска": "LaunchString", -"ТипРезультата": "ResultType", -"НовыйРодитель": "NewParent", -"ТелеграмВидео": "TelegramVideo", -"ТекущаяДатаЧП": "CurrentDateTZ", -"ТаблицаТестов": "TestTable", -"Положительная": "Positive", -"дата закрытия": "closing date", -"IDПодключения": "ConnectionID", -"Картинка1.jpg": "Picture1.jpg", -"IDКомментария": "CommentID", -"Размер скидки": "Discount amount", -"Создать канал": "Create channel", -"ШаблонФункции": "FunctionTemplate", -"ИсходныйПоток": "SourceStream", -"Наши спонсоры": "Our Sponsors", -"автоматизации": "automation", -"НовоеЗначение": "NewValue", -"ПереслатьФайл": "ResendFile", -"СтруктураПоля": "FieldStructure", -"РаботаСЛидами": "LeadsManagement", -"СоздатьГруппу": "CreateGroup", -"УдалитьОбъект": "DeleteObject", -"ПодписьBase64": "SignatureBase64", -"удовлетворены": "resolved", -"МетодыКлиента": "ClientMethods", -"Блок с файлом": "FileBlock", -"Новая таблица": "NewTable", -"ФайлПараметра": "ParamFile", -"Полный запрос": "Full request", -"ФинальныйКлюч": "FinalKey", -"МедиаКартинка": "MediaPicture", -"ОбъектИндекса": "IndexObject", -"МетодыСервера": "ServerMethods", -"Соответствие_": "Map_", -"Изменить роль": "Update role", -"Число, Строка": "Number, String", -"ТелеграмГифка": "TelegramGif", -"ЛокальныйПуть": "LocalPath", -"НомерТелефона": "PhoneNumber", -"Файл размером": "File with size", -"до 500 рублей": "up to 500 roubles", -"OPI_TCPКлиент": "OPI_TCPClient", -"ТелеграмОпрос": "TelegramPoll", -"Первый запуск": "First start", -"ЭлементДанных": "DataElement", -"Евпаторийский": "Evpatoriysky", -"БакетПриемник": "SourceBucket", -"ОбработатьТег": "ProcessTag", -"ПрочитаноБайт": "BytesRead", -"Закрыл задачу": "Close task", -"IDПодкаталога": "SubfolderID", -"ОзонТаймслоты": "OzonTimeslots", -"ТелеграмАудио": "TelegramAudio", -"ОсновныеЧасти": "MainParts", -"КодДобавления": "AddCode", -"Срок действия": "Expiration date", -"XMLЗавершения": "FinishXML", -"ТочкаОтгрузки": "ShippingPoint", -"СоздатьЗаписи": "CreatePosts", -"КартинкаПоста": "PostImage", -"МассивКаналов": "ChannelArray", -"ОбработатьXML": "ProcessXML", -"ВставитьПосле": "InsertAfter", -"СоздатьЗапуск": "CreateLaunch", -"ОбъектСостава": "CompositionObject", -"ПараАртикулов": "ArticlesPair", -"ДатаОкончания": "EndDate", -"понравившимся": "liked", -"ОбновитьТокен": "RefreshToken", -"СтрокаТаблицы": "TableRow", -"ТипКомпоненты": "ComponentType", -"ЗаписатьТекст": "WriteText", -"ПолучитьОтвет": "GetResponse", -"ОбщийМакет.%1": "CommonTemplate.%1", -"СтруктураТела": "BodyStructure", -"СоздатьСервер": "CreateServer", -"ФайловыйПоток": "FileStream", -"ПолучитьМетод": "GetMethod", -"С данными TSV": "With TSV data", -"МассивСобытий": "ArrayOfEvents", -"Строка, Число": "String, Number", -"IDЦитируемого": "ReplyID", -"МассивТоваров": "ProductsArray", -"МассивПорогов": "ThresholdsArray", -"ТелеграмЧисло": "TelegramNumber", -"Telegram (ОПИ": "Telegram (OpenIntegrations", -"идентификатор": "identifier", -"БитриксСделка": "BitrixDeal", -"С метаданными": "With metadata", -"ГринСообщения": "GreenMessages", -"Дата рождения": "Birth date", -"ЛокальныйФайл": "LocalFile", -"ФорматТаблицы": "TableFormat", -"Изменить путь": "Update path", -"Вопрос опроса": "Poll question", -"СоздатьЗадачу": "CreateTask", -"НомерКампании": "CampaignNumber", -"БитриксБулево": "BitrixBool", -"ДатаИстечения": "ExpirationDate", -"УдалитьСделку": "DeleteDeal", -"использования": "of using", -"НовоеОписание": "NewDescription", -"РазложитьJSON": "ParseJSON", -"МассивПозиций": "ItemsArray", -"ТекущийСостав": "CurrentComposition", -"ТекущаяЗапись": "CurrentRecord", -"Новое событие": "New event", -"ТекущийРаздел": "CurrentSection", -"СтруктураДаты": "DateStructure", -"ТипыКоллекции": "CollectionsTypes", -"МассивЯрлыков": "LabelsArray", -"Создано из 1С": "Created by 1C", -"Тестовая тема": "TestTopic", -"Твиттер_Твиты": "TwitterAPI_Tweets", -"ЗагрузитьФайл": "UploadFile", -"ПорядокОбмена": "ExchangeOrder", -"БакетИсточник": "DestinationBucket", -"КлючНастройки": "SettingKey", -"ТекущийМаркер": "CurrentMarker", -"ДобавитьМесяц": "AddMonth", -"Множественная": "Multiple", -"Текст запроса": "Request text", -"СоздатьМодель": "CreateModel", -"РазмерУчастка": "ChunkSize", -"ИзменитьМетку": "UpdateTag", -"ГуглКалендарь": "GoogleCalendar", -"Добавить лист": "Add sheet", -"Создать папку": "Create folder", -"Это новый чат": "This is a new chat", -"ГринИмяГруппы": "GreenGroupName", -"Удалить метку": "Delete tag", -"УдалитьЗадачу": "DeleteTask", -"БезРазделения": "NoSeparation", -"ПервыйЭлемент": "FirestElement", -"КонечныйОтвет": "FinalResponse", -"РаботаСПолями": "WorkingWithFields", -"Переадресация": "Redirection", -"ИмяКомпоненты": "AddInName", -"UnixИстечение": "UnixExpiration", -"БитриксСтрока": "BitrixString", -"КаталогМетода": "MethodCatalog", -"ВставкаДанных": "DataInsert", -"ЭтоОтложенное": "IsDelayed", -"Текст команды": "Command text", -"НазначитьРоли": "GrantRoles", -"Одноклассники": "Classmates", -"СтрокаОбласти": "RegionLine", -"ИмяКоннектора": "ConnectorName", -"ВывестиСтроку": "WriteLine", -"Создать метку": "Create tag", -"ПутьОригинала": "OriginalPath", -"ВыборЗначения": "ValueSelection", -"ПокинутьКанал": "LeaveChannel", -"ПолучитьМетку": "GetTag", -"ОшибкаСервера": "ServerError", -"Refresh токен": "Refresh token", -"Удалить товар": "Delete product", -"Другая сделка": "Another deal", -"ЕдиницаДанных": "DataUnit", -"ДатаПолучения": "ReceivingDate", -"ДанныеКоманды": "CommandData", -"ПараметрыJSON": "JSONParameters", -"дата создания": "date of creation", -"Массив файлов": "Files array", -"color=Зеленый": "color=Green", -"СессияВставка": "SessionInsert", -"RSS_МетодыRSS": "RSS_RSSMethods", -"Название фида": "Feed title", -"статус задачи": "task status", -"БитриксИстина": "BitrixTrue", -"Переустановка": "Reinstall", -"ИзменитьЗаказ": "UpdateOrder", -"Адрес объекта": "Object address", -"ПолучитьЧисло": "GetNumber", -"РаботаСТегами": "TagsManagement", -"СтруктураЧата": "ChatStructure", -"Таймаут (в мс": "Timeout (in ms", -"Множественный": "Multiple", -"Первая запись": "First record", -"АдресРесурса1": "ResourceAddress1", -"АдресРесурса5": "ResourceAddress5", -"Адрес локации": "Location address", -"Текст, Ошибка": "Text, Error", -"ОписаниеТипов": "TypeDescription", -"АдресРесурса2": "ResourceAddress2", -"Тестовый твит": "TestTweet", -"ПутьЗаготовок": "BlanksPath", -"ОткрытьСессию": "OpenSession", -"Изменить поле": "Modify field", -"ОзонБезОшибок": "OzonNoErrors", -"ОтправитьФайл": "SendFile", -"УстановитьURL": "SetURL", -"Получить роли": "Get roles", -"СделатьРепост": "MakeRepost", -"РаботаСЧатами": "ChatManagement", -"СклеитьДанные": "MergeData", -"Версия: 2.4.8": "Version: 2.4.8", -"СлакЭфемерное": "SlackEphemeral", -"Токен доступа": "Access token", -"ОформитьОтвет": "FormResponse", -"СКодированием": "WithEncoding", -"тип информера": "informer type", -"ШиринаКонсоли": "ConsoleWidth", -"ПолучитьТекст": "GetText", -"ОтветПроверки": "CheckResponse", -"ЗначениеИначе": "DefaultValue", -"Код материала": "Material code", -"GetDataIndexа": "GetIndexData", -"Сопоставление": "Collation", -"ОтветЗагрузки": "UploadResponse", -"Название роли": "Role name", -"УдалитьЗаписи": "DeleteRecords", -"ЗаписьВПамять": "WriteToMemory", -"Вызвать метод": "Invoke method", -"ТекущееЧтение": "CurrentReading", -"СтруктураПрав": "PermissionsStructure", -"ФайлЛокальный": "LocalFile", -"УдалитьСобытие": "DeleteEvent", -"./docs/ru/cli/": "./docs/en/cli/", -"JSONВСтруктуру": "JSONToStructure", -"ПолучитьДанные": "ReceiveData", -"OPI_HTTPКлиент": "OPI_HTTPClient", -"ОтправитьВидео": "SendVideo", -"СлакТемаКанала": "SlackChannelTopic", -"ТелеграмМассив": "TelegramArray", -"Характеристика": "DescField", -"МетрикаСчетчик": "MetrikaCounter", -"ЗаменяемыйКлюч": "ReplacedKey", -"ЯМаркетКабинет": "YaMarketBusiness", -"ЯДискПроцедура": "YaDiskProc", -"Отправить файл": "Send file", -"ДанныеОбластей": "RegionsData", -"Заголовок поля": "Field title", -"Имя поля формы": "Form field name", -"ГТ_Авторизация": "GT_Authorization", -"ПолноеИмяМедиа": "FullMediaName", -"Покинуть канал": "Leave channel", -"Файл документа": "Document file", -"АТ_СоздатьБазу": "AT_CreateDatabase", -"OpenAIКартинка": "OpenAIImage", -"МассивИДПостов": "PostIDsArray", -"ПараметрМетода": "MethodParameter", -"ТекущаяТаблица": "CurrentTable", -"ТипДанныхФайла": "FileDataType", -"Твит с опросом": "Tweet with poll", -"Удалить задачу": "Delete task", -"Исключение: %1": "Exception: %1", -"МассивВложений": "AttachmentsArray", -"Создать проект": "Create project", -"ОтправкаДанных": "DataSending", -"Скачать модель": "Pull model", -"ОписаниеТовара": "ProductDescription", -"Удалить проект": "Delete project", -"Номер страницы": "Page number", -"ОписаниеМетода": "MethodDescription", -"базовой задачи": "of base task", -"Обновить токен": "Refresh token", -"ДвойныеКавычки": "DoubleQuotes", -"Получить метку": "Get tag", -"ГК_Авторизация": "GC_Authorization", -"ОписаниеЗаявки": "InvitationDescription", -"СтруктураПапки": "FolderStructure", -"ГлавныйВГруппе": "MainInGroup", -"ЗаписанныйФайл": "RecordedFile", -"Текстовый твит": "Text tweet", -"цена до скидки": "pre-discount price", -"РаботаСКнигами": "SpreadsheetsManagement", -"Получить заказ": "Get order", -"ОтветЗаголовки": "ResponseHeaders", -"OPI_Интеграция": "OPI_Integrations", -"приветственное": "welcoming", -"XML фид канала": "Channel XML feed", -"Таймаут чтения": "Read timeout", -"НажатиеКнопки1": "ButtonEvent1", -"OllamaПривязки": "OllamaEmbeddings", -"Удалить модель": "Delete model", -"статус фильтра": "filter status", -"Имя модуля ОПИ": "OpenIntegrations module name", -"IDРуководителя": "HeadID", -"ИзменитьЗапуск": "UpdateLaunch", -"Без выполнения": "No execution", -"IDПользователя": "UserID", -"Тестовая папка": "TestFolder", -"Работа с аудио": "Audio processing", -"Отправить BLOB": "Push BLOB", -"ПутьУдаленного": "PathOfRemote", -"РаботаСГруппой": "CommunityManagement", -"ТекущийАртикул": "CurrentArticle", -"СтруктураФайла": "FileStructure", -"Некоторое поле": "Nekotoroe pole", -"РаботаСТокеном": "TokenManagement", -"РаботаСБлоками": "BlocksManagement", -"ПозицияВПотоке": "PositionInStream", -"Base64Значение": "Base64Value", -"КоличествоБайт": "ByteCount", -"Номер паспорта": "Passport number", -"Заголовок чата": "Chat title", -"КлючПриложения": "AppKey", -"Изменить товар": "Edit product", -"МассивДействий": "ActionsArray", -"ТипПодключения": "ConnectionType", -"СоздатьКаталог": "CreateDirectory", -"ОтправитьЧасть": "SendPart", -"ТекущийЯзыкОПИ": "CurrentOPILanguage", -"Создать запуск": "Create launch", -"РаботаСАкциями": "PromotionsManagement", -"OPI_ЗапросыSSH": "OPI_SSHRequests", -"Это новый файл": "This is a new file", -"УдалитьКаталог": "DeleteFolder", -"БулевоКакЧисло": "BoolAsNumber", -"ПолучитьКурсор": "GetCursor", -"ТекущаяПозиция": "CurrentPosition", -"ОтправкаОтвета": "ResponseSending", -"СписокОбъектов": "ObjectList", -"СтруктураЗамен": "ReplaceStructure", -"ТекущаяКолонка": "CurrentColumn", -"Тип клавиатуры": "KeyboardType", -"ЗапросДвочиные": "RequestBinary", -"ПолучитьБулево": "GetBoolean", -"СуммаПоследний": "LastSum", -"VK_УдалитьПост": "VK_DeletePost", -"ЧатыИСообщения": "ChatsAndMessages", -"МассивМедиаГиф": "MediaGifArray", -"СоздатьНовость": "CreatePost", -"ПараметрыТеста": "TestParameters", -"характеристика": "feature", -"Создать группу": "Create group", -"СтрокаВложений": "AttachmentsString", -"СоздатьЭлемент": "CreateItem", -"ВыполнитьСразу": "Start", -"ПроблемныйЭтап": "ProblemStep", -"УдалитьЭлемент": "DeleteItem", -"БезКодирования": "NoEncoding", -"color=Белый) v": "color=White) v", -"ДропБоксСтатус": "DropboxStatus", -"ЯМаркетМагазин": "YaMarketCampaign", -"МассивУпаковок": "PackagesArray", -"Удалить записи": "Delete records", -"ОтправитьАудио": "SendAudio", -"ФоновоеКлиента": "ClientBackground", -"ПолучитьЗапрос": "GetRequest", -"Новая стадия 2": "New stage 2", -"СтрокаПодборок": "SelectionsString", -"Поставить лайк": "Like", -"VK_СоздатьПост": "VK_CreatePost", -"Удалить сделку": "Delete deal", -"дата изменения": "date of change", -"ТаблицаСправка": "HelpTable", -"Neocities (ОПИ": "Neocities (OpenIntegrations", -"Путь,Временный": "Path,Temporary", -"ГринПерезапуск": "GreenReboot", -"СтрокаПроверки": "CheckString", -"Серия паспорта": "Passport series", -"ВидАвторизации": "AuthorizationType", -"СтруктураЯчеек": "CellStructure", -"Получить токен": "Get token", -"PayloadСтрокой": "PayloadAsString", -"Несуществующий": "Nonexistent", -"КодАвторизации": "AuthCode", -"ПолучитьЗаписи": "GetRecords", -"ЗагрузитьВидео": "UploadVideo", -"Закрыть диалог": "Close dialog", -"Изменить метку": "Update tag", -"Заимствованные": "Borrowed", -"Green API (ОПИ": "Green API (OpenIntegrations", -"ОписаниеЗаказа": "OrderDescription", -"Отбор по имени": "Filter by name", -"МассивКартинок": "ImageArray", -"УдалитьСчетчик": "DeleteCounter", -"Ключ заголовка": "Header key", -"ДвоичныеДанные": "BinaryData", -"ID комментария": "CommentID", -"Строка, Массив": "String, Array", -"ОбновитьЗаписи": "UpdateRecords", -"ОзонПодписчики": "OzonSubscribers", -"КопироватьФайл": "FileCopy", -"УдалитьWebhook": "DeleteWebhook", -"СоздатьПодпись": "CreateSignature", -"ДобавитьЗаписи": "AddRecords", -"Текущая версия": "Current version", -"ОчиститьЯчейки": "ClearCells", -"НомерКатегории": "CategoryNumber", -"ОтправитьОпрос": "SendPoll", -"КаталогМодулей": "ModuleDirectory", -"СоздатьСобытие": "CreateEvent", -"НазваниеКанала": "ChannelTitle", -"Переслать файл": "Resend file", -"Перезаписывать": "Overwrite", -"УдалятьТекущую": "DeleteCurrent", -"РаботаСЛистами": "WorkingWithSheets", -"АТСписокТаблиц": "ATTablesList", -"Таймаут записи": "Write timeout", -"ТекущаяКоманда": "CurrentCommand", -"Без параметров": "No parameters", -"ОтправитьОтвет": "SendResponse", -"ДобавитьЗапись": "AddRow", -"ПолучитьПревью": "GetPreview", -"ПолучитьВерсию": "GetVersion", -"Принять задачу": "Approve task", -"ЗначениеОтвета": "ResponseValue", -"DevOps инженер": "DevOps engineer", -"ОписаниеКанала": "ChannelDescription", -"ПолучитьСтроку": "GetLine", -"Установка тела": "Body set", -"МаксимумПостов": "MaximumPosts", -"Объект запроса": "Request object", -"ЗагрузитьФайлы": "UploadFiles", -"ОсновныеМетоды": "CommonMethods", -"ШаблонАтрибута": "AttributeTemplate", -"СтрНачинаетсяС": "StrStartsWith", -"КолонкаСтрокой": "ColumnAsString", -"Нажмите Enable": "Click Enable", -"ИзменитьЗадачу": "UpdateTask", -"ДропБоксРабота": "DropboxWork", -"ОтправкаВКанал": "SendingToChannel", -"КаталогСкрипта": "ScriptDirectory", -"Регион сервиса": "Service region", -"Создать задачу": "Create task", -"МассивКонтента": "ContentArray", -"Получить канал": "Get channel", -"НачалоЭлемента": "StartElement", -"СтруктураЧасти": "PartStructure", -"предоставление": "providing", -"СлакОтложенные": "SlackSheduled", -"ТолькоПросмотр": "ViewOnly", -"ФоновыеЗадания": "BackgroundJobs", -"ОписаниеЗаписи": "RecordDescription", -"Деловые услуги": "Business", -"Описание груза": "Goods description", -"Новая кнопка 1": "New button 3", -"ЭтоФайлНаДиске": "IsFileOnDisk", -"МассивОписания": "DescriptionArray", -"Загрузить файл": "Upload file", -"МассивПодборок": "SelectionArray", -"РазмерСтраницы": "PageSize", -"СтруктураОпций": "OptionsStructure", -"Проверить BLOB": "Check BLOB", -"Проверка_Пусто": "Check_Empty", -"ВыполнятьСразу": "ExecuteNow", -"Получить книгу": "Get spreadsheet", -"Описание файла": "File description", -"ОтложитьЗадачу": "DeferTask", -"Файл, Значение": "File, Value", -"ПолучитьСостав": "GetComposition", -"Дополнительный": "Additional", -"Без транзакции": "No transaction", -"ОтправитьТекст": "SendText", -"Данные запроса": "Request data", -"ID базы данных": "Database ID", -"OPI_Компоненты": "OPI_AddIns", -"Получить ответ": "Get response", -"ОписаниеString": "DescriptionString", -"ДатаОбновления": "UpdateDate", -"КартинкаЗамены": "ReplacementImage", -"ОписаниеОшибки": "ErrorDescription", -"Второй элемент": "Second element", -"ТекущийАбсПуть": "CurrentAbsPath", +"БитриксЗадача": "BitrixTask", +"криптографией": "сryptography", +"ПолучитьЗапуск": "GetLaunch", +"Удалить альбом": "Delete album", +"ТекущийЭлемент": "CurrentElement", +"OPI_ЗапросыSQL": "OPI_SQLQueries", +"осуществляется": "performed", +"ИмяСокращенное": "ShortName", +"Новый файл.jpg": "New file.jpg", +"ПроверитьТокен": "CheckToken", +"КолонкаТаблицы": "TableColumn", +"ПолучитьЗадачу": "GetTask", +"ВступитьВКанал": "JoinChannel", +"Номер телефона": "Phone number", +"СтруктураПолей": "FieldsStructure", +"ПутьСохранения": "SavePath", +"СтрочныйМассив": "StringArray", +"МассивЗапросов": "ArrayOfRequests", +"ГуглИмяТаблицы": "GoogleSheetTitle", +"ТаблицаСостава": "CompositionTable", +"ГД_Авторизация": "GD_Authorization", +"ГВ_Авторизация": "GW_Auth", +"МассивТоваров_": "ArrayOfProducts_", +"Описание видео": "Video description", +"КолонкиТаблицы": "TableColumns", +"ПроверяемыйТип": "CheckedType", +"КаталогПакетов": "PackagesDirectory", +"ПолучитьЗапись": "GetRecord", +"ПолучатьПароль": "GetPassword", +"Удалить объект": "Delete object", +"ПолучитьСделку": "GetDeal", +"Новая кнопка 3": "New button 1", +"ЗакрытиеПотока": "StreamClosing", +"ОтправитьГифку": "SendGif", +"ТекстСообщения": "MessageText", +"Основные тесты": "Main tests", +"ТелеграмИстина": "TelegramTrue", +"<путь к файлу>": "", +"форматирование": "formatting", +"ВариантыОтвета": "AnswerOptions", +"ДатаЗавершения": "EndDate", +"МассивАльбомов": "ArrayOfAlbums", +"ИнтернетПрокси": "InternetProxy", +"ПривестиБулево": "MakeBoolean", +"цвет календаря": "calendar color", +"СоздатьСчетчик": "CreateCounter", +"Заголовок темы": "Topic title", +"РабочийКаталог": "WorkingDirectory", +"ЗначениеЗамены": "ReplaceValue", +"СтрокаОписания": "DescriptionString", +"АТ_СоздатьПоле": "AT_CreateField", +"ЭлементМассива": "ArrayElement", +"СтруктураМедиа": "MediaStructure", +"УдалитьТаблицу": "DeleteTable", +"ИДПользователя": "UserID", +"ОбъектКаталога": "DirectoryObject", "УдаленныеФайлы": "RemoteFiles", +"ТекущийАбсПуть": "CurrentAbsPath", +"Второй элемент": "Second element", +"ОписаниеОшибки": "ErrorDescription", +"КартинкаЗамены": "ReplacementImage", +"ДатаОбновления": "UpdateDate", +"ОписаниеString": "DescriptionString", +"Получить ответ": "Get response", +"OPI_Компоненты": "OPI_AddIns", +"ID базы данных": "Database ID", +"Данные запроса": "Request data", +"ОтправитьТекст": "SendText", +"Без транзакции": "No transaction", +"Дополнительный": "Additional", +"ПолучитьСостав": "GetComposition", +"Файл, Значение": "File, Value", +"ОтложитьЗадачу": "DeferTask", +"Описание файла": "File description", +"Получить книгу": "Get spreadsheet", +"ВыполнятьСразу": "ExecuteNow", +"Проверка_Пусто": "Check_Empty", +"Проверить BLOB": "Check BLOB", +"УдалитьНовость": "DeletePost", "ДанныеАккаунта": "AccountData", "МассивСекретов": "SecretsArray", "OAI_Ассистенты": "OAI_Assistants", "МассивОбъектов": "ArrayOfObjects", -"ИДПользователя": "UserID", -"ИтоговыйМассив": "ResultingArray", -"ПоследнийНабор": "LastSet", -"НеИзолированно": "NoIsolated", -"ВнешняяТаблица": "ExternalTable", -"СоздатьИсторию": "CreateStory", -"ПолучитьМассив": "GetArray", -"ДатаБезВремени": "DateWithoutTime", -"ОбъединитьПути": "CombinePath", -"Вставка данных": "Data insertion", -"НастройкиВJson": "SettingAsJson", -"дополнительных": "additional", -"ЗаданиеКлиента": "ClientTask", -"ЧислоСообщений": "MessageCount", -"ОсновныеДанные": "BasicData", -"Тестовый канал": "Test channel", -"РазмерПроверки": "CheckSize", -"СтруктураТегов": "TagStructure", -"ЗаписатьСтроку": "WriteLine", -"HTTP_Настройки": "HTTP_Settings", -"Номер упаковки": "Package number", -"ПокинутьГруппу": "LeaveGroup", -"1С:Предприятия": "1C:Enterprise", -"ТекущийОтнПуть": "CurrentRelPath", "Получить метод": "Get method", -"ОбъектКаталога": "DirectoryObject", +"ТекущийОтнПуть": "CurrentRelPath", +"1С:Предприятия": "1C:Enterprise", +"ПокинутьГруппу": "LeaveGroup", +"Номер упаковки": "Package number", +"HTTP_Настройки": "HTTP_Settings", +"ЗаписатьСтроку": "WriteLine", +"СтруктураТегов": "TagStructure", +"РазмерПроверки": "CheckSize", +"Тестовый канал": "Test channel", +"ОсновныеДанные": "BasicData", "Назначить роли": "Grant roles", -"Удалить объект": "Delete object", -"Описание видео": "Video description", -"МассивТоваров_": "ArrayOfProducts_", -"ГВ_Авторизация": "GW_Auth", -"ГД_Авторизация": "GD_Authorization", -"ТаблицаСостава": "CompositionTable", -"ГуглИмяТаблицы": "GoogleSheetTitle", -"МассивЗапросов": "ArrayOfRequests", -"СтрочныйМассив": "StringArray", -"ПроверяемыйТип": "CheckedType", -"СтруктураПолей": "FieldsStructure", -"Номер телефона": "Phone number", -"ВступитьВКанал": "JoinChannel", -"КолонкиТаблицы": "TableColumns", -"ПолучитьЗадачу": "GetTask", -"КолонкаТаблицы": "TableColumn", -"ПроверитьТокен": "CheckToken", -"Новый файл.jpg": "New file.jpg", -"ИмяСокращенное": "ShortName", -"осуществляется": "performed", -"OPI_ЗапросыSQL": "OPI_SQLQueries", -"ТекущийЭлемент": "CurrentElement", -"Удалить альбом": "Delete album", -"ПолучитьЗапуск": "GetLaunch", -"ПутьСохранения": "SavePath", -"ВариантыОтвета": "AnswerOptions", -"ПолучитьЗапись": "GetRecord", -"ЭлементМассива": "ArrayElement", -"АТ_СоздатьПоле": "AT_CreateField", -"СтрокаОписания": "DescriptionString", -"КаталогПакетов": "PackagesDirectory", -"ЗначениеЗамены": "ReplaceValue", -"РабочийКаталог": "WorkingDirectory", -"Заголовок темы": "Topic title", -"СоздатьСчетчик": "CreateCounter", -"цвет календаря": "calendar color", -"ПривестиБулево": "MakeBoolean", -"ИнтернетПрокси": "InternetProxy", -"УдалитьТаблицу": "DeleteTable", -"МассивАльбомов": "ArrayOfAlbums", -"СтруктураМедиа": "MediaStructure", -"ДатаЗавершения": "EndDate", -"форматирование": "formatting", -"<путь к файлу>": "", -"ТелеграмИстина": "TelegramTrue", -"Основные тесты": "Main tests", -"ТекстСообщения": "MessageText", -"ОтправитьГифку": "SendGif", -"ЗакрытиеПотока": "StreamClosing", -"Новая кнопка 3": "New button 1", -"ПолучитьСделку": "GetDeal", -"ПолучатьПароль": "GetPassword", -"УдалитьНовость": "DeletePost", +"ЧислоСообщений": "MessageCount", +"дополнительных": "additional", +"НастройкиВJson": "SettingAsJson", +"Вставка данных": "Data insertion", +"ОбъединитьПути": "CombinePath", +"ДатаБезВремени": "DateWithoutTime", +"ПолучитьМассив": "GetArray", +"СоздатьИсторию": "CreateStory", +"ВнешняяТаблица": "ExternalTable", +"НеИзолированно": "NoIsolated", +"ПоследнийНабор": "LastSet", +"ИтоговыйМассив": "ResultingArray", +"ЗаданиеКлиента": "ClientTask", "СтрокаНастроек": "SettingsString", -"МассивНастроек": "SettingArray", -"Создать модель": "Create model", -"Новое название": "New name", -"ЧтениеZipФайла": "ZipFileReader", -"ПараметрМассив": "ArrayParam", -"МассивЗначений": "ValuesArray", -"РаботаСДанными": "DataManagement", -"ЗаписатьЛогCLI": "WriteLogCLI", -"АтомарныеТесты": "AtomicTests", -"ПолноеОписание": "FullDescription", -"Текст описания": "Description text", -"РаботаСЗаказми": "OrdersManagement", -"ЗакрытиеКанала": "ChannelClosing", -"КонецПроцедуры": "EndProcedure", -"ПрочитанноБайт": "BytesRead", -"Создать записи": "Create records", -"СоздатьТаблицу": "CreateTable", -"МассивОписаний": "ArrayOfDescriptions", -"Имя ассистента": "Assistant name", -"Без разделения": "No separation", -"Лог выполнения": "Execution log", -"Создать альбом": "Create album", -"РаботаСФайлами": "FileManagement", -"Сохранить файл": "Save file", -"РазделительBat": "BatSeparator", -"ПоследняяЧасть": "LastPart", -"БезАвторизации": "NoAuthorization", -"ДопустимыйЗнак": "AllowedSign", -"OAuthВерсияAPI": "OAuthAPIVersion", -"СессияСоздание": "SessionCreation", -"ТекущаяОбласть": "CurrentRegion", -"ВременнаяМетка": "Timestamp", -"СерверноеВремя": "ServerTime", -"КопироватьЛист": "CopySheet", -"МассивФильтров": "FiltersArray", -"ШаблонЭлемента": "ItemTemplate", -"ИзменитьСделку": "UpdateDeal", -"СписокЗначений": "ValueList", -"Открыть диалог": "Open dialog", -"Тестовый товар": "TestProduct", -"ОбработатьBlob": "ProcessBlob", -"ФорматДатыJSON": "JSONDateFormat", -"НачалоЗагрузки": "UploadStart", -"предполагаемая": "expected", -"МассивОтправок": "SendingArray", -"ПолеРезультата": "ResultField", -"ОтправкаСервер": "SendingServer", -"HTTPСоединение": "HTTPConnection", -"Принять работу": "Approve task", -"Awaiting.What(": "Ожидаем.Что(", -"ПоляТелаВOAuth": "BodyFieldsAtOAuth", -"Изменить заказ": "Update order", -"ШаблонПроверки": "CheckTemplate", -"МассивОпераций": "ActionsArray", -"С кодированием": "With encoding", -"ПолучитьОбъект": "GetObject", "ШаблонЗагрузки": "LoadingTemplate", -"Изменяет имя и": "Changes the name and", -"ПолучитьДиалог": "GetDialog", -"СтрОбщийРазмер": "StrTotalSize", -"RSS_МетодыAtom": "RSS_AtomMethods", -"Сделать репост": "Make repost", -"ПолучитьПроект": "GetProject", -"СтруктураСбора": "CollectionStructure", -"Путь к объекту": "Path to the object", -"Первый элемент": "First element", -"Удалить запуск": "Delete launch", -"ДропБоксМассив": "DropboxArray", -"Новое описание": "New description", -"Создать сделку": "Create deal", -"ТекущеВложение": "CurrentAttachment", -"Новая кампания": "New campaign", -"ТекущийКонтент": "CurrentContent", -"ответственного": "responsible", -"ЗапросФайлТела": "RequestBodyFile", -"ТестовыйМассив": "TestArray", -"ФайлРезультата": "ResultFile", -"СледующийТокен": "NextToken", -"ТекущийКаталог": "CurrentDirectory", -"ЗначениеДанных": "DataValue", +"Создать модель": "Create model", "СтруктураТипов": "TypesStructure", +"ЗначениеДанных": "DataValue", +"ТекущийКаталог": "CurrentDirectory", +"СледующийТокен": "NextToken", +"ФайлРезультата": "ResultFile", +"ТестовыйМассив": "TestArray", +"ЗапросФайлТела": "RequestBodyFile", +"ответственного": "responsible", +"ТекущийКонтент": "CurrentContent", +"Новая кампания": "New campaign", +"ТекущеВложение": "CurrentAttachment", +"Создать сделку": "Create deal", +"Новое описание": "New description", +"ДропБоксМассив": "DropboxArray", +"Удалить запуск": "Delete launch", +"Первый элемент": "First element", +"Путь к объекту": "Path to the object", +"СтруктураСбора": "CollectionStructure", +"ПолучитьПроект": "GetProject", +"Сделать репост": "Make repost", +"RSS_МетодыAtom": "RSS_AtomMethods", +"СтрОбщийРазмер": "StrTotalSize", +"ПолучитьДиалог": "GetDialog", "Новая кнопка 2": "New button 2", "СоздатьФидAtom": "CreateFeedAtom", "JWTАвторизация": "JWTAuthorization", "Без соединения": "No connection", -"конфигурациями": "configurations", -"ДокументСНулем": "DocumentWithZero", -"Договоренность": "Appointment", -"МассивОтправки": "SendArray", -"Параметризация": "Parameterization", -"ОбщийРезультат": "CommonResult", -"ЗапросыБезТела": "RequestsWithoutBody", -"СтрокаВозврата": "ReturnString", -"ЛокальныеФайлы": "LocalFiles", -"МассивСтруктур": "StructuresArray", -"ВнешниеТаблицы": "ExternalTables", -"ПустаяСхемаSQL": "NewSQLScheme", -"для XML-сайтов": "for XML-sites", -"ФайлСтатистики": "StatisticsFile", -"Несуществующая": "Non-existent", -"ОтправкаКлиент": "SendingClient", -"ЗначениеТокена": "TokenValue", -"JsonВСтруктуру": "JsonToStructure", -"UUID преалерта": "Prealert UUID", -"Добавить товар": "Add product", -"фильтр по типу": "filter by type", -"Комплексный ID": "Complex attribute ID", +"СтруктураОпций": "OptionsStructure", "Структура фида": "Feed structure", -"ИгнорироватьКэш": "IgnoreCache", -"ЗапросПотокТела": "RequestBodyStream", -"ЭтоПараметрФлаг": "IsFlagParam", -"Данные аккаунта": "Account data", -"Инициализирован": "Initialized", -"СтруктураЗаказа": "OrderStructure", -"DO + Транзакция": "DO + Transaction", -"МаксимумСобытий": "MaxEvents", -"OPI_Инструменты": "OPI_Tools", -"ЭтоСоответствие": "IsMap", -"Название канала": "Channel title", -"ИзменитьСчетчик": "UpdateCounter", -"Массив картинок": "Array of images", -"ЗначениеВМассив": "ValueToArray", -"ДопустимаяДлина": "AvailableLength", -"ТипСоответствие": "TypeMap", -"КаталогПримеров": "CatalogExample", -"Новый каталог 2": "New folder 2", -"Получить записи": "Get records", -"ПолучитьСчетчик": "GetCounter", -"Подпись к файлу": "File caption", -"ОбработатьОтвет": "ProcessResponse", -"ИспользоватьTls": "UseTls", -"ПараметрСтрокой": "ParameterString", -"СоздатьСтраницу": "CreatePage", -"УдалитьКартинку": "DeleteImage", -"ЗаголовкиСтркой": "HeadersAsString", -"ОтправитьСтроку": "SendLine", -"Правила Маркета": "Market rules", -"Создать историю": "Create story", -"СтруктураФайлов": "FileStructure", -"РасширениеФайла": "FileExtension", -"OpenAIАссистент": "OpenAIAssistant", -"СписокЭлементов": "ElementList", -"ГринНоваяГруппа": "GreenNewGroup", -"Пункт чек-листа": "Checklist element", -"ЗаписатьСимволы": "WriteChars", -"дата публикации": "publication date", -"Проверка_ВКПост": "Check_VKPost", -"установлен свой": "set your", -"OPI_ЗапросыHTTP": "OPI_HTTPRequests", -"ФайлРепозитория": "RepositoryFile", -"Массив ID медиа": "Media ID array", -"ПолучениеДанных": "DataRetrieving", -"Не спланированы": "Not planned", -"Работа с диском": "Working with drive", -"Проверка, новый": "Check, new", -"СоздатьПреалерт": "CreatePrealert", -"СформироватьURL": "FormURL", -"JSON клавиатуры": "Keyboard JSON", -"НайтиПоЗначению": "FindByValue", -"ПустаяСхемаDrop": "EmptySchemeDrop", -"МестоПроведения": "Venue", -"ГринАвторизован": "GreenAuth", -"РезультатИстина": "ResultTrue", -"ТекстСортировки": "SortingText", -"ВыполнитьЗапрос": "ExecuteRequest", -"ЗначениеСтрокой": "ValueAsString", -"ПараметрыЗаписи": "WriterSettings", -"Изменить задачу": "Update task", -"Работа с лидами": "Leads management", -"СтруктураДанных": "DataStructure", -"КодировкаТекста": "TextEncoding", -"ИсполняемыйФайл": "ExecFile", -"Изменить запуск": "Update launch", -"РезультатПустой": "EmptyResult", -"ЯМаркетМагазины": "YaMarketMarkets", -"Ключ приложения": "Application key", -"автоматического": "automatically", -"поле фильтрации": "filter field", -"ПоместитьДанные": "PutData", -"логин владельца": "owners login", -"IDИнициализации": "InitializationID", -"Удалить элемент": "Delete item", -"КоличествоСтрок": "RowsAmount", -"ПолучитьАккаунт": "GetAccount", -"СтруктураТовара": "ItemStructure", -"ТокенВЗаголовки": "TokenInHeaders", -"IDПодразделения": "DepartmentID", -"СтруктураУслуги": "ServiceStructure", -"ОписаниеТаблицы": "TableDescription", -"фильтр по метке": "filter by tag", -"Проверка, Новый": "Check, New", -"Выйти из группы": "Leave group", -"Доуступные типы": "Available types", -"СтрСуществующий": "StrExists", -"СтруктураЗаписи": "RecordStructure", -"Структура полей": "Fields structure", -"Удалить счетчик": "Delete counter", -"ТекущаяДатаUNIX": "CurrentUNIXDate", -"ЗаписатьАтрибут": "WriteAttribute", -"ул. Блюхера, 33": "st. Bluchera, 33", -"ЧислоАргументов": "ArgsCount", -"РаботаСКаналами": "ChannelManagement", -"МассивЗаготовок": "BlanksArray", -"Новое сообщение": "New message", -"ОписаниеСобытия": "EventDescription", -"РаботаСГруппами": "GroupManagement", -"Дата с временем": "Date with time", -"ШаблонЗаголовка": "HeaderTemplate", -"РаботаСТоварами": "ProductManagement", -"СтруктураМакета": "TemplateStructure", -"ЗаголовкиBase64": "HeadersBase64", -"Неотрицательный": "Nonnegative", -"ФайлТелаВозврат": "BodyFileReturn", -"ИзменитьНовость": "UpdatePost", -"РазобратьСтроку": "ParseString", -"ПолучитьТаблицу": "GetTable", -"ОбластиДействия": "Scope", -"Получить сделку": "Get deal", -"ОтправитьЗапрос": "SendRequest", -"Закрытие потока": "Stream closing", -"Проверка_ВКЛайк": "Check_VKLike", -"Создать новость": "Create post", -"МассивУдаленных": "DeletedArray", -"ПолучениеОтвета": "ResponseReceiving", -"Получение новых": "Getting new", -"ВКТ_ОбщиеМетоды": "VKT_CommonMethods", -"ВКГруппаТоваров": "VKProductsGroup", -"МетрикаСчетчики": "MetrikaCounters", -"РезультатСписка": "ListResult", -"Покинуть группу": "Leave group", -"Серверное время": "Server time", -"ПрочитатьСтроку": "ReadLine", -"СчетчикУспешных": "SuccessCount", -"Проверка_Строка": "Check_String", -"СтруктураКнопки": "ButtonStructure", -"Без авторизации": "No authorization", -"Описание товара": "Product description", -"ОтправитьМодель": "PushModel", -"Описание канала": "Channel description", -"СлучайныйМассив": "RandomArray", -"Новый цвет чата": "New chat color", -"ТекущееОписание": "CurrentDescription", -"ИзменитьЭлемент": "UpdateItem", -"ТаблицаЗначений": "ValueTable", -"НССинхронизация": "NCSync", -"СкопироватьФайл": "MakeFileCopy", -"ЭтоТипКоллекция": "IsCollectionType", -"ИзменитьТаблицу": "ModifyTable", -"ГринВходнойФайл": "GreenInputFile", -"СтруктураФлагов": "FlagsStructure", -"ПолучитьПроекты": "GetProjects", -"СтруктураАдреса": "AddressStructure", -"ID пользователя": "User ID", -"Обновить записи": "Update records", -"ОбновитьТокен()": "RefreshToken()", -"Добавить записи": "Add rows", -"ПараметрыСеанса": "SessionParameters", -"СтруктураТекста": "TextStructure", -"время окончания": "end time", -"ЗаписьИзФункции": "WriteFromFunction", -"ДвоичныеДанные2": "BinaryData2", -"ЗаписатьЦелое16": "WriteInt16", -"МассивУдаляемых": "ArrayOfDeletions", -"Отправить видео": "Send video", -"ИмяФайла), Файл": "FileName), File", -"Отправить гифку": "Send GIF", -"Санкт-Петербург": "St. Petersburg", -"4).Равно(Истина": "4).Equal(True", -"ГринВыходГруппы": "GreenLeaveGroup", -"ПолучитьЭлемент": "GetItem", -"ссылка на видео": "video URL", -"ИскомыйПараметр": "DesiredParameter", -"Запрос (простой": "Request (simple", -"НастройкиСессии": "SessionSettings", -"Загрузить файлы": "Upload files", -"ПолучитьМагазин": "GetMarket", -"РазделительBash": "BashSeparator", -"НайтиСовпадения": "Matches", -"МассивРодителей": "ArrayOfParents", -"Номер,Строковое": "Number,String", -"СтруктураЗаявки": "InvitationStructure", -"РезультатСтрока": "ResultString", -"ВКТПользователь": "VKTUser", -"УстановкаПрокси": "ProxySetup", -"РезультатЧтения": "ReadingResult", -"ТекстКоличества": "CountText", -"Получить курсор": "Get cursor", -"ОзонНовыеТовары": "OzonNewProducts", -"создайте проект": "create a project", -"ДропбоксАккаунт": "DropboxAccount", -"Получить запуск": "Get launch", -"Я бот, а ты нет": "I am bot, but you - not", -"МассивСчетчиков": "CountersArray", -"Копировать лист": "Copy sheet", -"СтруктураОтчета": "ReportStructure", -"РаботаСБакетами": "BucketsManagement", -"Telegram_Разбан": "Telegram_Unban", -"Название города": "City name", -"АТБазаСТаблицей": "ATBaseWithTable", -"ВнутреннийНомер": "IMNumber", -"ПервоеСообщение": "FirstMessage", -"Ответ на запрос": "Response", -"Измененное поле": "Izmenennoe pole", -"AWS_ОбщиеМетоды": "AWS_CommonMethods", -"ТекущееЗначение": "CurrentValue", -"Получить запись": "Get record", -"ПутьИсполнителя": "ExecutorPath", -"Получить проект": "Get project", -"Вопросы строкой": "Questions as string", -"200 И Результат": "200 And Result", -"Создать таблицу": "Create table", -"Компоненты (ОПИ": "AddIns (OpenIntegrations", -"Создание твитов": "Tweets creation", -"ПолучитьНовости": "GetPosts", -"Получить данные": "Receive data", -"0 Или Результат": "0 Or Result", -"Новое имя метки": "New tag title", -"ТекущаяОперация": "CurrentOperation", -"МассивСообщений": "MessagesArray", -"ДобавитьКоманду": "AddCommand", -"ПолучитьКоманду": "GetCommand", -"КакСоответствие": "AsMap", -"СоздатьЛид (хук": "CreateLead (wh", -"OAuthХешФункция": "OAuthHashFunction", -"ШаблонИсточника": "SourceTemplate", -"ОписанияКолонок": "ColoumnsDescription", -"УстановитьЛимит": "SetLimit", -"Проверка_Массив": "Check_Array", -"ПерваяКоллекция": "FirstCollection", -"СтруктураЗадачи": "TaskData", -"MultipartВOAuth": "MultipartAtOAuth", -"Создать событие": "Create event", -"РаботаСЗаписями": "RecordManagement", -"УдалитьЛид (хук": "DeleteLead (wh", -"ТелеграмКонтакт": "TelegramContact", -"ОчиститьТаблицу": "ClearTable", -"СтруктураЯрлыка": "LabelStructure", -"Настройка OAuth": "OAuth settings", -"OllamaСообщение": "OllamaMessage", -"НастройкиПрокси": "ProxySettings", -"ПоследнийИндекс": "LastIndex", -"Удалить Webhook": "Delete webhook", -"Проверить токен": "Check token", -"ДобавитьКолонку": "AddColoumn", -"ОтправитьДанные": "SendData", -"ДанныеСообщения": "MessageData", -"Текст сообщения": "Message text", -"ОбъектСравнения": "ComparisonObject", -"ПолучитьКаталог": "GetFolder", -"Стать спонсором": "Become a sponsor", -"ПолучитьСобытия": "GetEvents", -"СтатусОбработки": "ProcessingStatus", -"уровень доступа": "Access level", -"Новый заголовок": "New title", -"МобильныйКлиент": "MobileClient", -"PostgreSQL (ОПИ": "PostgreSQL (OpenIntegrations", -"ПовторитьСтроку": "RepeatString", -"Удалить таблицу": "Delete table", -"Разархивировать": "Unzip", -"ВтораяКоллекция": "SecondCollection", -"Поле для текста": "Text field", -"Группа картинок": "Pictures group", -"ИмяПользователя": "UserName", -"ПеременнаяСреды": "EnvironmentVariable", -"дата завершения": "completion date", -"СтруктураВыбора": "ChoiceStructure", -"ЗаписатьЦелое32": "WriteInt32", -"Пустое значение": "Empty value", -"ИспользуемоеИмя": "DisplayedName", +"Комплексный ID": "Complex attribute ID", +"фильтр по типу": "filter by type", +"Добавить товар": "Add product", +"UUID преалерта": "Prealert UUID", +"JsonВСтруктуру": "JsonToStructure", +"ЗначениеТокена": "TokenValue", +"ОтправкаКлиент": "SendingClient", +"Несуществующая": "Non-existent", +"ФайлСтатистики": "StatisticsFile", +"Изменяет имя и": "Changes the name and", +"для XML-сайтов": "for XML-sites", +"ВнешниеТаблицы": "ExternalTables", +"МассивСтруктур": "StructuresArray", +"ЛокальныеФайлы": "LocalFiles", +"СтрокаВозврата": "ReturnString", +"ЗапросыБезТела": "RequestsWithoutBody", +"ОбщийРезультат": "CommonResult", +"Параметризация": "Parameterization", +"МассивОтправки": "SendArray", +"Договоренность": "Appointment", +"ДокументСНулем": "DocumentWithZero", +"конфигурациями": "configurations", +"ПустаяСхемаSQL": "NewSQLScheme", +"МассивНастроек": "SettingArray", +"ПолучитьОбъект": "GetObject", +"МассивОпераций": "ActionsArray", +"РазделительBat": "BatSeparator", +"Сохранить файл": "Save file", +"РаботаСФайлами": "FileManagement", +"Создать альбом": "Create album", +"Лог выполнения": "Execution log", +"Без разделения": "No separation", +"Имя ассистента": "Assistant name", +"МассивОписаний": "ArrayOfDescriptions", +"СоздатьТаблицу": "CreateTable", +"Создать записи": "Create records", +"ПрочитанноБайт": "BytesRead", +"КонецПроцедуры": "EndProcedure", +"ЗакрытиеКанала": "ChannelClosing", +"РаботаСЗаказми": "OrdersManagement", +"Текст описания": "Description text", +"ПолноеОписание": "FullDescription", +"АтомарныеТесты": "AtomicTests", +"ЗаписатьЛогCLI": "WriteLogCLI", +"РаботаСДанными": "DataManagement", +"МассивЗначений": "ValuesArray", +"ПараметрМассив": "ArrayParam", +"ЧтениеZipФайла": "ZipFileReader", +"Новое название": "New name", +"ПоследняяЧасть": "LastPart", +"БезАвторизации": "NoAuthorization", +"ДопустимыйЗнак": "AllowedSign", +"OAuthВерсияAPI": "OAuthAPIVersion", +"ШаблонПроверки": "CheckTemplate", +"Изменить заказ": "Update order", +"ПоляТелаВOAuth": "BodyFieldsAtOAuth", +"Awaiting.What(": "Ожидаем.Что(", +"Принять работу": "Approve task", +"HTTPСоединение": "HTTPConnection", +"ОтправкаСервер": "SendingServer", +"ПолеРезультата": "ResultField", +"МассивОтправок": "SendingArray", +"предполагаемая": "expected", +"НачалоЗагрузки": "UploadStart", +"С кодированием": "With encoding", +"ФорматДатыJSON": "JSONDateFormat", +"Тестовый товар": "TestProduct", +"Открыть диалог": "Open dialog", +"СписокЗначений": "ValueList", +"ИзменитьСделку": "UpdateDeal", +"ШаблонЭлемента": "ItemTemplate", +"МассивФильтров": "FiltersArray", +"КопироватьЛист": "CopySheet", +"СерверноеВремя": "ServerTime", +"ВременнаяМетка": "Timestamp", +"ТекущаяОбласть": "CurrentRegion", +"СессияСоздание": "SessionCreation", +"ОбработатьBlob": "ProcessBlob", +"РазмерСтраницы": "PageSize", +"СтруктураФайла": "FileStructure", +"Загрузить файл": "Upload file", +"Номер паспорта": "Passport number", +"КоличествоБайт": "ByteCount", +"Base64Значение": "Base64Value", +"ПозицияВПотоке": "PositionInStream", +"РаботаСБлоками": "BlocksManagement", +"РаботаСТокеном": "TokenManagement", +"Некоторое поле": "Nekotoroe pole", +"МассивПодборок": "SelectionArray", +"ТекущийАртикул": "CurrentArticle", +"РаботаСГруппой": "CommunityManagement", +"ПутьУдаленного": "PathOfRemote", +"Отправить BLOB": "Push BLOB", +"Работа с аудио": "Audio processing", +"Тестовая папка": "TestFolder", +"IDПользователя": "UserID", +"Без выполнения": "No execution", +"ИзменитьЗапуск": "UpdateLaunch", +"IDРуководителя": "HeadID", +"Имя модуля ОПИ": "OpenIntegrations module name", +"статус фильтра": "filter status", +"Удалить модель": "Delete model", +"OllamaПривязки": "OllamaEmbeddings", +"НажатиеКнопки1": "ButtonEvent1", +"Заголовок чата": "Chat title", +"Таймаут чтения": "Read timeout", +"КлючПриложения": "AppKey", +"МассивДействий": "ActionsArray", +"МассивМедиаГиф": "MediaGifArray", +"ЧатыИСообщения": "ChatsAndMessages", +"VK_УдалитьПост": "VK_DeletePost", +"СуммаПоследний": "LastSum", +"ПолучитьБулево": "GetBoolean", +"ЗапросДвочиные": "RequestBinary", +"Тип клавиатуры": "KeyboardType", +"ТекущаяКолонка": "CurrentColumn", +"СтруктураЗамен": "ReplaceStructure", +"СписокОбъектов": "ObjectList", +"ОтправкаОтвета": "ResponseSending", +"ТекущаяПозиция": "CurrentPosition", +"ПолучитьКурсор": "GetCursor", +"БулевоКакЧисло": "BoolAsNumber", +"УдалитьКаталог": "DeleteFolder", +"Это новый файл": "This is a new file", +"OPI_ЗапросыSSH": "OPI_SSHRequests", +"РаботаСАкциями": "PromotionsManagement", +"Создать запуск": "Create launch", +"ТекущийЯзыкОПИ": "CurrentOPILanguage", +"ОтправитьЧасть": "SendPart", +"СоздатьКаталог": "CreateDirectory", +"ТипПодключения": "ConnectionType", +"Изменить товар": "Edit product", +"XML фид канала": "Channel XML feed", +"приветственное": "welcoming", +"OPI_Интеграция": "OPI_Integrations", +"МассивИДПостов": "PostIDsArray", +"OpenAIКартинка": "OpenAIImage", +"АТ_СоздатьБазу": "AT_CreateDatabase", +"Файл документа": "Document file", +"Покинуть канал": "Leave channel", +"ПолноеИмяМедиа": "FullMediaName", +"ГТ_Авторизация": "GT_Authorization", +"Имя поля формы": "Form field name", +"Заголовок поля": "Field title", +"ДанныеОбластей": "RegionsData", +"Отправить файл": "Send file", +"ЯДискПроцедура": "YaDiskProc", +"ЯМаркетКабинет": "YaMarketBusiness", +"ЗаменяемыйКлюч": "ReplacedKey", +"МетрикаСчетчик": "MetrikaCounter", +"Характеристика": "DescField", +"ТелеграмМассив": "TelegramArray", +"СлакТемаКанала": "SlackChannelTopic", +"ОтправитьВидео": "SendVideo", +"ПолучитьДанные": "ReceiveData", +"JSONВСтруктуру": "JSONToStructure", +"./docs/ru/cli/": "./docs/en/cli/", +"УдалитьСобытие": "DeleteEvent", +"ПараметрМетода": "MethodParameter", +"ТекущаяТаблица": "CurrentTable", +"ТипДанныхФайла": "FileDataType", +"Твит с опросом": "Tweet with poll", +"ОтветЗаголовки": "ResponseHeaders", +"Получить заказ": "Get order", +"РаботаСКнигами": "SpreadsheetsManagement", +"цена до скидки": "pre-discount price", +"Текстовый твит": "Text tweet", +"ЗаписанныйФайл": "RecordedFile", +"ГлавныйВГруппе": "MainInGroup", +"СтруктураПапки": "FolderStructure", +"ОписаниеЗаявки": "InvitationDescription", +"ГК_Авторизация": "GC_Authorization", +"Получить метку": "Get tag", +"СоздатьНовость": "CreatePost", +"ДвойныеКавычки": "DoubleQuotes", +"базовой задачи": "of base task", +"ОписаниеМетода": "MethodDescription", +"Номер страницы": "Page number", +"Удалить проект": "Delete project", +"ОписаниеТовара": "ProductDescription", +"Скачать модель": "Pull model", +"ОтправкаДанных": "DataSending", +"Создать проект": "Create project", +"МассивВложений": "AttachmentsArray", +"Исключение: %1": "Exception: %1", +"Удалить задачу": "Delete task", +"Обновить токен": "Refresh token", +"ПараметрыТеста": "TestParameters", +"OPI_HTTPКлиент": "OPI_HTTPClient", +"Создать группу": "Create group", +"МаксимумПостов": "MaximumPosts", +"Установка тела": "Body set", +"ПолучитьСтроку": "GetLine", +"ОписаниеКанала": "ChannelDescription", +"DevOps инженер": "DevOps engineer", +"ЗначениеОтвета": "ResponseValue", +"Принять задачу": "Approve task", +"ПолучитьВерсию": "GetVersion", +"ПолучитьПревью": "GetPreview", +"ДобавитьЗапись": "AddRow", +"ОтправитьОтвет": "SendResponse", +"Без параметров": "No parameters", +"ТекущаяКоманда": "CurrentCommand", +"Таймаут записи": "Write timeout", +"АТСписокТаблиц": "ATTablesList", +"РаботаСЛистами": "WorkingWithSheets", +"УдалятьТекущую": "DeleteCurrent", +"Перезаписывать": "Overwrite", +"Переслать файл": "Resend file", +"НазваниеКанала": "ChannelTitle", +"СоздатьСобытие": "CreateEvent", +"КаталогМодулей": "ModuleDirectory", +"ОтправитьОпрос": "SendPoll", +"Объект запроса": "Request object", +"НомерКатегории": "CategoryNumber", +"ЗагрузитьФайлы": "UploadFiles", +"ШаблонАтрибута": "AttributeTemplate", +"характеристика": "feature", +"МассивОписания": "DescriptionArray", +"ЭтоФайлНаДиске": "IsFileOnDisk", +"Описание груза": "Goods description", +"Деловые услуги": "Business", +"ОписаниеЗаписи": "RecordDescription", +"ФоновыеЗадания": "BackgroundJobs", +"ТолькоПросмотр": "ViewOnly", +"СлакОтложенные": "SlackSheduled", +"предоставление": "providing", +"СтруктураЧасти": "PartStructure", +"НачалоЭлемента": "StartElement", +"Получить канал": "Get channel", +"МассивКонтента": "ContentArray", +"Создать задачу": "Create task", +"Регион сервиса": "Service region", +"КаталогСкрипта": "ScriptDirectory", +"ОтправкаВКанал": "SendingToChannel", +"ДропБоксРабота": "DropboxWork", +"ИзменитьЗадачу": "UpdateTask", +"Нажмите Enable": "Click Enable", +"КолонкаСтрокой": "ColumnAsString", +"СтрНачинаетсяС": "StrStartsWith", +"ОсновныеМетоды": "CommonMethods", +"ОчиститьЯчейки": "ClearCells", +"Новая кнопка 1": "New button 3", +"ДобавитьЗаписи": "AddRecords", +"ГринПерезапуск": "GreenReboot", +"Путь,Временный": "Path,Temporary", +"Neocities (ОПИ": "Neocities (OpenIntegrations", +"ТаблицаСправка": "HelpTable", +"дата изменения": "date of change", +"Удалить сделку": "Delete deal", +"VK_СоздатьПост": "VK_CreatePost", +"Поставить лайк": "Like", +"СтрокаПодборок": "SelectionsString", +"Новая стадия 2": "New stage 2", +"ПолучитьЗапрос": "GetRequest", +"ФоновоеКлиента": "ClientBackground", +"ОтправитьАудио": "SendAudio", +"Удалить записи": "Delete records", +"МассивУпаковок": "PackagesArray", +"ЯМаркетМагазин": "YaMarketCampaign", +"ДропБоксСтатус": "DropboxStatus", +"color=Белый) v": "color=White) v", +"БезКодирования": "NoEncoding", +"УдалитьЭлемент": "DeleteItem", +"ПроблемныйЭтап": "ProblemStep", +"СоздатьЭлемент": "CreateItem", +"Текущая версия": "Current version", +"СтрокаПроверки": "CheckString", +"Серия паспорта": "Passport series", +"ВыполнитьСразу": "Start", +"СтруктураЯчеек": "CellStructure", +"СоздатьПодпись": "CreateSignature", +"ВидАвторизации": "AuthorizationType", +"УдалитьWebhook": "DeleteWebhook", +"КопироватьФайл": "FileCopy", +"ОзонПодписчики": "OzonSubscribers", +"ОбновитьЗаписи": "UpdateRecords", +"Строка, Массив": "String, Array", +"ID комментария": "CommentID", +"ДвоичныеДанные": "BinaryData", +"Ключ заголовка": "Header key", +"УдалитьСчетчик": "DeleteCounter", +"МассивКартинок": "ImageArray", +"СтрокаВложений": "AttachmentsString", +"ОписаниеЗаказа": "OrderDescription", +"Отбор по имени": "Filter by name", +"PayloadСтрокой": "PayloadAsString", +"Несуществующий": "Nonexistent", +"КодАвторизации": "AuthCode", +"ПолучитьЗаписи": "GetRecords", +"Получить токен": "Get token", +"Закрыть диалог": "Close dialog", +"Изменить метку": "Update tag", +"Green API (ОПИ": "Green API (OpenIntegrations", +"Заимствованные": "Borrowed", +"ЗагрузитьВидео": "UploadVideo", "БитриксВложение": "BitrixAttachment", -"Build hash (ОПИ": "Build hash (OpenIntegrations", -"СтруктураДомена": "DomainStructure", -"ТекущийСценарий": "CurrentScript", -"КоллекцияТаблиц": "TableCollection", -"ПараметрЗапроса": "QueryParameter", -"МетрикаОперации": "MetrikaActions", -"АрхивироватьЧат": "ArchiveChat", -"Создать элемент": "Create item", -"СтрокаСигнатуры": "SignatureString", -"Почтовый индекс": "Postal code", -"VK_УдалитьТовар": "VK_DeleteProduct", -"ТекущаяОтправка": "CurrentSend", -"СтрокаЗаголовка": "HeaderString", -"ТретьДопустимой": "ThirdPartOfAvailble", -"НастройкаПрокси": "ProxySettings", -"ПорядковыйНомер": "OrderNumber", -"НастройкиВызова": "CallSettings", -"Получить превью": "Get preview", -"СоздатьЧат (хук": "CreateChat (wh", -"TODO: Доописать": "TODO: Finish", "ИДЖелтогоТовара": "YellowItemID", +"TODO: Доописать": "TODO: Finish", +"СоздатьЧат (хук": "CreateChat (wh", +"Получить превью": "Get preview", +"НастройкиВызова": "CallSettings", +"ПорядковыйНомер": "OrderNumber", +"НастройкаПрокси": "ProxySettings", +"ТретьДопустимой": "ThirdPartOfAvailble", +"СтрокаЗаголовка": "HeaderString", +"VK_УдалитьТовар": "VK_DeleteProduct", +"Почтовый индекс": "Postal code", +"СтрокаСигнатуры": "SignatureString", "СвоиИзображения": "OwnImages", -"Строка: \"1:7788": "String: \"1:7788", -"ОтклонитьЗадачу": "DisapproveTask", -"Создать каталог": "Create folder", -"IDЧатаИсточника": "FromChatID", -"Отладка 1Script": "1Script Debugging", +"АрхивироватьЧат": "ArchiveChat", +"МетрикаОперации": "MetrikaActions", +"ПараметрЗапроса": "QueryParameter", +"КоллекцияТаблиц": "TableCollection", +"ТекущийСценарий": "CurrentScript", +"СтруктураДомена": "DomainStructure", +"Build hash (ОПИ": "Build hash (OpenIntegrations", +"ТекущаяОтправка": "CurrentSend", +"Создать элемент": "Create item", "IDПользователей": "UserIDs", -"ул. Блюхера, 32": "st. Bluchera, 32", -"Код города ФИАС": "FIAS city code", -"ЗапуститьСервер": "StartServer", -"СодержимоеФайла": "FileContent", -"ОтключитьСервер": "StopServer", -"Получить версию": "Get version", -"Перенаправление": "Redirection", -"РаботаСЗаказами": "OrderManagement", -"ЗапросИзменения": "ChangeRequest", -"Основные методы": "Common methods", -"СоздатьТвитСГиф": "CreateTweetWithGif", -"НужнаРаспаковка": "NeedsUnpacking", -"ВайберСообщение": "ViberMessage", -"ВводныйПараметр": "IntroductoryParameter", -"СозданиеТаблицы": "TableCreation", -"Таймаут запроса": "Request timeout", -"ОписаниеКоманды": "CommandDescription", -"ВыполнитьСкрипт": "ExecuteScript", -"Загрузить видео": "Upload video", +"ОтклонитьЗадачу": "DisapproveTask", "HTTPСервисОтвет": "HTTPServiceResponse", +"Загрузить видео": "Upload video", +"ИспользуемоеИмя": "DisplayedName", +"ВыполнитьСкрипт": "ExecuteScript", +"ОписаниеКоманды": "CommandDescription", +"Таймаут запроса": "Request timeout", +"СозданиеТаблицы": "TableCreation", +"ВводныйПараметр": "IntroductoryParameter", +"ВайберСообщение": "ViberMessage", +"НужнаРаспаковка": "NeedsUnpacking", +"СоздатьТвитСГиф": "CreateTweetWithGif", +"Основные методы": "Common methods", +"ЗапросИзменения": "ChangeRequest", +"РаботаСЗаказами": "OrderManagement", +"Получить версию": "Get version", +"ОтключитьСервер": "StopServer", +"СодержимоеФайла": "FileContent", +"ЗапуститьСервер": "StartServer", +"Код города ФИАС": "FIAS city code", +"ул. Блюхера, 32": "st. Bluchera, 32", +"Отладка 1Script": "1Script Debugging", +"IDЧатаИсточника": "FromChatID", +"Создать каталог": "Create folder", +"Строка: \"1:7788": "String: \"1:7788", +"Перенаправление": "Redirection", +"ДобавитьКолонку": "AddColoumn", +"ЗаписатьЦелое32": "WriteInt32", +"OllamaСообщение": "OllamaMessage", +"Настройка OAuth": "OAuth settings", +"СтруктураЯрлыка": "LabelStructure", +"ОчиститьТаблицу": "ClearTable", +"ТелеграмКонтакт": "TelegramContact", +"УдалитьЛид (хук": "DeleteLead (wh", +"РаботаСЗаписями": "RecordManagement", +"Создать событие": "Create event", +"MultipartВOAuth": "MultipartAtOAuth", +"СтруктураЗадачи": "TaskData", +"НастройкиПрокси": "ProxySettings", +"ПерваяКоллекция": "FirstCollection", +"УстановитьЛимит": "SetLimit", +"ОписанияКолонок": "ColoumnsDescription", +"ШаблонИсточника": "SourceTemplate", +"OAuthХешФункция": "OAuthHashFunction", +"СоздатьЛид (хук": "CreateLead (wh", +"КакСоответствие": "AsMap", +"ПолучитьКоманду": "GetCommand", +"ДобавитьКоманду": "AddCommand", "УстановитьТекст": "SetText", +"МассивСообщений": "MessagesArray", +"Проверка_Массив": "Check_Array", +"Пустое значение": "Empty value", +"ПоследнийИндекс": "LastIndex", +"Проверить токен": "Check token", +"СтруктураВыбора": "ChoiceStructure", +"дата завершения": "completion date", +"ПеременнаяСреды": "EnvironmentVariable", +"ИмяПользователя": "UserName", +"Группа картинок": "Pictures group", +"Поле для текста": "Text field", +"ВтораяКоллекция": "SecondCollection", +"Разархивировать": "Unzip", +"Удалить таблицу": "Delete table", +"ПовторитьСтроку": "RepeatString", +"Удалить Webhook": "Delete webhook", +"PostgreSQL (ОПИ": "PostgreSQL (OpenIntegrations", +"Новый заголовок": "New title", +"уровень доступа": "Access level", +"СтатусОбработки": "ProcessingStatus", +"ПолучитьСобытия": "GetEvents", +"Стать спонсором": "Become a sponsor", +"ПолучитьКаталог": "GetFolder", +"ОбъектСравнения": "ComparisonObject", +"Текст сообщения": "Message text", +"ДанныеСообщения": "MessageData", +"ОтправитьДанные": "SendData", +"МобильныйКлиент": "MobileClient", "ЗапросЗаголовки": "RequestHeaders", -"ПараметрыМетода": "MethodParameters", +"Социальные сети": "Social networks", "СократитьСтроку": "TruncateString", -"ЗагруженныйФайл": "UploadedFile", -"ШаблонКонтекста": "ContextTemplate", -"XMLКонфигурация": "XmlConfig", -"Картинка опроса": "Poll image", -"ИзменитьСобытие": "EditEvent", -"РаботаСЗадачами": "TasksManagement", -"УдалитьПодборку": "DeleteSelection", -"СтруктураОплаты": "PaymentStructure", -"ЗначенияСвойств": "PropertyValues", -"ЗавершитьЗапуск": "FinishLaunch", -"ID целевой базы": "Target database ID", -"ЗапросТипДанных": "RequestDataType", -"Проверка_СлакОк": "Check_SlackOk", -"СократитьСсылку": "ShortenLink", -"Отправить опрос": "Send poll", -"ОтправитьСсылку": "SendLink", -"ФайлСодержимого": "ContentFile", -"ОписаниеСтроки2": "RowDescription2", -"Путь к элементу": "Path to the element", -"Создать счетчик": "Create counter", -"ИсключаемыеПоля": "ExcludedFields", +"МассивТелефонов": "PhonesArray", +"ЗавершитьРаботу": "Exit", +"ID базовой темы": "ID of base topic", +"ГринУведомление": "GreenNotification", +"перенаправления": "redirection", +"Ждет завершения": "Waiting for completion", +"PayloadДвоичные": "PayloadBinary", +"МассивЭлементов": "ItemsArray", +"РазобратьФидRSS": "ParseFeedRSS", +"НСФайлыКаталога": "NCFolderFiles", +"ОдиночнаяЗапись": "SingleRecord", +"3).Равно(Истина": "3).Equal(True", +"Новый календарь": "new calendar", +"ЗавершитьЗадачу": "CompleteTask", +"ОшибкаКоллекции": "CollectionError", +"КлючиЗаголовков": "HeadersKeys", +"ИмяФункцииТеста": "TestFunctionName", +"Плановое начало": "Planned start", +"МассивПризнаков": "IndicatorsArray", +"УстановитьProto": "SetProto", +"ОписаниеСтроки1": "RowDescription1", +"Получить диалог": "Get dialog", +"Отправить аудио": "Send audio", +"Список, обратно": "List, back", +"ПреобразоватьИД": "ConvertID", +"ПолучитьАтрибут": "GetAttribute", +"ТекущаяОперация": "CurrentOperation", +"статус операции": "action status", +"ПроверятьСессию": "CheckSession", +"ОписаниеOldchar": "DescriptionOldchar", +"Получить объект": "Get object", +"дата обновления": "update date", +"Сокращенный URL": "Shortened URL", +"Удалить новость": "Delete post", +"СтруктураВызова": "CallStructure", +"текст сообщения": "message text", +"Удалить каталог": "Delete folder", +"Отправить ответ": "Send response", +"ИнтернетМагазин": "OnlineStore", +"GR_Интроспекция": "GR_Introspection", +"2).Равно(Истина": "2).Equal(True", +"Очистить ячейки": "Clear cells", +"ОтправкаЗапроса": "SendingRequest", +"Изменить сделку": "Update deal", +"ТекущийПараметр": "CurrentParameter", +"МассивВариантов": "OptionArray", +"Без кодирования": "No encoding", +"Код авторизации": "Authorization code", +"ДвоичныеДанные1": "BinaryData1", +"Работа с чатами": "Chats works", +"Текст заголовка": "Title text", +"ЗагрузитьОбъект": "PutObject", "УправлениеЧатом": "ChatManagement", +"ИсключаемыеПоля": "ExcludedFields", +"Создать счетчик": "Create counter", +"Путь к элементу": "Path to the element", +"ОписаниеСтроки2": "RowDescription2", +"ФайлСодержимого": "ContentFile", +"ОтправитьСсылку": "SendLink", +"Отправить опрос": "Send poll", +"СократитьСсылку": "ShortenLink", +"Проверка_СлакОк": "Check_SlackOk", "СтатусСообщения": "MessageStatus", +"ЗапросТипДанных": "RequestDataType", +"ЗавершитьЗапуск": "FinishLaunch", +"ЗначенияСвойств": "PropertyValues", +"СтруктураОплаты": "PaymentStructure", +"УдалитьПодборку": "DeleteSelection", +"РаботаСЗадачами": "TasksManagement", +"ИзменитьСобытие": "EditEvent", +"Картинка опроса": "Poll image", +"XMLКонфигурация": "XmlConfig", +"ШаблонКонтекста": "ContextTemplate", +"ЗагруженныйФайл": "UploadedFile", +"ID целевой базы": "Target database ID", "Удалить событие": "Delete event", "ТекстВыполнения": "ExecutionText", "МаксимумПопыток": "MaxAttempts", -"ВК_СоздатьОпрос": "VKAPI_CreatePoll", -"Предварительный": "Preliminary", -"VK_СоздатьОпрос": "VK_CreatePoll", -"УправлениеЛидом": "ManageLead", -"ЗаголовокПотока": "StreamHeader", -"РаботаСМоделями": "ModelsManagement", -"ПолучитьСобытие": "GetEvent", -"ПолучениеТокена": "TokenRetrieval", -"фмльтр по метке": "filter by label", -"Работа с базами": "Database management", -"СлакВнешнийФайл": "SlackExternalFile", -"ГуглКомментарий": "GoogleComment", -"СтруктураПорога": "ThresholdStructure", -"Получить задачу": "Get task", -"OPI инструменты": "OPI tools", -"Массив Из Число": "Array Of Number", -"ЗависимостиГугл": "GoogleDependencies", -"ЗаголовокОтвета": "ResponseHeader", -"0).Равно(Истина": "0).Equal(True", -"Отложить задачу": "Defer task", -"Вспомогательные": "Auxiliary", -"СтруктураЧастей": "PartsStructure", "СообщениеОшибки": "ErrorText", -"ЗагрузитьОбъект": "PutObject", -"Текст заголовка": "Title text", -"Социальные сети": "Social networks", -"Работа с чатами": "Chats works", -"Список, обратно": "List, back", -"Получить диалог": "Get dialog", -"ОписаниеСтроки1": "RowDescription1", -"УстановитьProto": "SetProto", -"МассивПризнаков": "IndicatorsArray", -"Плановое начало": "Planned start", -"ИмяФункцииТеста": "TestFunctionName", -"КлючиЗаголовков": "HeadersKeys", -"ОшибкаКоллекции": "CollectionError", -"ЗавершитьЗадачу": "CompleteTask", -"Новый календарь": "new calendar", -"Отправить аудио": "Send audio", -"3).Равно(Истина": "3).Equal(True", -"НСФайлыКаталога": "NCFolderFiles", -"РазобратьФидRSS": "ParseFeedRSS", -"МассивЭлементов": "ItemsArray", -"PayloadДвоичные": "PayloadBinary", -"Ждет завершения": "Waiting for completion", -"перенаправления": "redirection", -"ГринУведомление": "GreenNotification", -"ID базовой темы": "ID of base topic", -"ЗавершитьРаботу": "Exit", -"МассивТелефонов": "PhonesArray", -"ОдиночнаяЗапись": "SingleRecord", -"ПреобразоватьИД": "ConvertID", -"Удалить каталог": "Delete folder", -"ПолучитьАтрибут": "GetAttribute", -"Код авторизации": "Authorization code", -"Без кодирования": "No encoding", -"МассивВариантов": "OptionArray", -"ТекущийПараметр": "CurrentParameter", -"Изменить сделку": "Update deal", -"ОтправкаЗапроса": "SendingRequest", -"Очистить ячейки": "Clear cells", -"2).Равно(Истина": "2).Equal(True", -"GR_Интроспекция": "GR_Introspection", -"ИнтернетМагазин": "OnlineStore", -"ДвоичныеДанные1": "BinaryData1", -"Отправить ответ": "Send response", -"текст сообщения": "message text", -"СтруктураВызова": "CallStructure", -"Удалить новость": "Delete post", -"Сокращенный URL": "Shortened URL", -"дата обновления": "update date", -"Получить объект": "Get object", -"ОписаниеOldchar": "DescriptionOldchar", -"ПроверятьСессию": "CheckSession", -"статус операции": "action status", -"РезультатВыборки": "SelectionResult", -"ИспользоватьФайл": "UseFile", -"СписокПараметров": "ParamsList", -"СледующаяПозиция": "NextPosition", -"РаботаССобытиями": "EventManagement", -"ЗаписатьJSONФайл": "WriteJSONFile", -"МассивОписания[Н": "DescriptionArray[N", -"ТочкаОтправления": "ShippingPoint", -"GMax_Уведомления": "GMax_Notifications", -"ТелеграмДокумент": "TelegramDocument", -"ЗапросыMultipart": "MultipartRequests", -"СоздатьТвитВидео": "CreateVideoTweet", -"Очистить таблицу": "Clear table", -"ИзменитьЛид (хук": "UpdateLead (wh", -"owner_id, но без": "owner_id, but without", -"СоздатьБакет (DB": "CreateBucket (DB", -"РазделительСтрок": "LineSeparator", -"ТекстОшибкиПолей": "FieldsErrorText", -"ЭлементКоллекции": "CollectionItem", -"Сделаю на неделе": "For this week", -"ВариантСвойства2": "PropVariant2", -"AWS4Использовать": "AWS4Using", -"Сократить ссылку": "Shorten link", -"МассивКлавиатуры": "KeyboardArray", -"ОбщийРазмер Цикл": "TotalSize Do", -"УправлениеЧатами": "ChatManagement", -"Картинка и видео": "Picture and video", -"СтрокаЗаголовков": "HeadersString", -"МассивКалендарей": "ArrayOfCalendars", -"ПользовательЧата": "ChatMember", -"ГВ_ПолучитьТокен": "GV_GetToken", -"Получить элемент": "Get item", -"VK_ДобавитьТовар": "VK_AddProduct", -"Блок с картинкой": "PictureBlock", -"Проверка_ВКТовар": "Check_VKProduct", -"телефон заполнен": "phone number is filled in", -"SQLiteНетЗаписей": "SQLiteNoRows", -"Завершить задачу": "Complete task", -"АдресПодключения": "ConnectionAddress", -"МассивРазрешений": "PermissionsArray", -"ПутьКСертификату": "CertFilepath", -"Описания методов": "Methods documentation", -"УправлениеФайлом": "FileManagement", -"ПараметрыТаблицы": "TableParameters", -"ДоступныйОстаток": "AvailableBalance", -"Описание события": "Event description", -"Настройки прокси": "Proxy settings", -"ЗначениеОсновной": "MainValue", -"СекретПриложения": "AppSecret", -"ОпцияСокращенная": "SplittedOption", -"OPI_Криптография": "OPI_Cryptography", -"КаталогКомпонент": "AddInsFolder", -"СтрокаПараметров": "ParameterString", -"VK_СделатьРепост": "VK_MakeRepost", -"Архивировать чат": "Archive chat", -"Телефон контакта": "Contact phone number", -"РаботаСДиалогами": "DialogManagement", -"ЗаписатьФайлЛога": "WriteLogFile", -"ВерсияПриложения": "AppVersion", -"Название региона": "Region name", -"МетодыОбсуждений": "DiscussionManagement", -"OLLM_РаботаСBlob": "OLLM_WorkingWithBlob", -"ДобавитьИмяЛиста": "AddSheetName", -"УдалитьДокументы": "DeleteDocuments", -"УдаленныйКаталог": "RemoteFolder", -"ТокенАвторизации": "AuthToken", -"МБ был записан в": "MB was recorded in", -"СтруктураВстречи": "MeetingStructure", -"НовоеЧислоОшибок": "NewErrorCount", -"превью документа": "document preview", -"Ответ = %1.%2(%3": "Response = %1.%2(%3", -"ЭтоОбъектКлиента": "IsClientObject", +"СтруктураЧастей": "PartsStructure", +"Вспомогательные": "Auxiliary", +"Отложить задачу": "Defer task", +"0).Равно(Истина": "0).Equal(True", +"ЗаголовокОтвета": "ResponseHeader", +"ЗависимостиГугл": "GoogleDependencies", +"Массив Из Число": "Array Of Number", +"OPI инструменты": "OPI tools", +"Получить задачу": "Get task", +"СтруктураПорога": "ThresholdStructure", +"ГуглКомментарий": "GoogleComment", +"СлакВнешнийФайл": "SlackExternalFile", +"Работа с базами": "Database management", +"фмльтр по метке": "filter by label", +"ПолучениеТокена": "TokenRetrieval", +"ПолучитьСобытие": "GetEvent", +"РаботаСМоделями": "ModelsManagement", +"ЗаголовокПотока": "StreamHeader", +"УправлениеЛидом": "ManageLead", +"VK_СоздатьОпрос": "VK_CreatePoll", +"Предварительный": "Preliminary", +"ВК_СоздатьОпрос": "VKAPI_CreatePoll", +"ПараметрыМетода": "MethodParameters", +"Новое имя метки": "New tag title", +"200 И Результат": "200 And Result", +"Получить данные": "Receive data", +"КоличествоСтрок": "RowsAmount", +"Удалить элемент": "Delete item", +"IDИнициализации": "InitializationID", +"логин владельца": "owners login", +"ПоместитьДанные": "PutData", +"поле фильтрации": "filter field", +"автоматического": "automatically", +"Ключ приложения": "Application key", +"ЯМаркетМагазины": "YaMarketMarkets", +"РезультатПустой": "EmptyResult", +"ПолучитьАккаунт": "GetAccount", +"Изменить запуск": "Update launch", +"КодировкаТекста": "TextEncoding", +"СтруктураДанных": "DataStructure", +"Работа с лидами": "Leads management", +"Изменить задачу": "Update task", +"ПараметрыЗаписи": "WriterSettings", +"ЗначениеСтрокой": "ValueAsString", +"ВыполнитьЗапрос": "ExecuteRequest", +"ТекстСортировки": "SortingText", +"РезультатИстина": "ResultTrue", +"ГринАвторизован": "GreenAuth", +"ИсполняемыйФайл": "ExecFile", +"МестоПроведения": "Venue", +"СтруктураТовара": "ItemStructure", +"IDПодразделения": "DepartmentID", +"РаботаСТоварами": "ProductManagement", +"ШаблонЗаголовка": "HeaderTemplate", +"Дата с временем": "Date with time", +"РаботаСГруппами": "GroupManagement", +"ОписаниеСобытия": "EventDescription", +"Новое сообщение": "New message", +"МассивЗаготовок": "BlanksArray", +"РаботаСКаналами": "ChannelManagement", +"ЧислоАргументов": "ArgsCount", +"ул. Блюхера, 33": "st. Bluchera, 33", +"ТокенВЗаголовки": "TokenInHeaders", +"ЗаписатьАтрибут": "WriteAttribute", +"Удалить счетчик": "Delete counter", +"Структура полей": "Fields structure", +"СтруктураЗаписи": "RecordStructure", +"СтрСуществующий": "StrExists", +"Доуступные типы": "Available types", +"Выйти из группы": "Leave group", +"Проверка, Новый": "Check, New", +"фильтр по метке": "filter by tag", +"ОписаниеТаблицы": "TableDescription", +"СтруктураУслуги": "ServiceStructure", +"ТекущаяДатаUNIX": "CurrentUNIXDate", +"ПустаяСхемаDrop": "EmptySchemeDrop", +"НайтиПоЗначению": "FindByValue", +"JSON клавиатуры": "Keyboard JSON", +"ОбработатьОтвет": "ProcessResponse", +"Подпись к файлу": "File caption", +"ПолучитьСчетчик": "GetCounter", +"Получить записи": "Get records", +"Новый каталог 2": "New folder 2", +"КаталогПримеров": "CatalogExample", +"ТипСоответствие": "TypeMap", +"ДопустимаяДлина": "AvailableLength", +"ЗначениеВМассив": "ValueToArray", +"Массив картинок": "Array of images", +"ИспользоватьTls": "UseTls", +"ИзменитьСчетчик": "UpdateCounter", +"ЭтоСоответствие": "IsMap", +"OPI_Инструменты": "OPI_Tools", +"МаксимумСобытий": "MaxEvents", +"DO + Транзакция": "DO + Transaction", +"СтруктураЗаказа": "OrderStructure", +"Инициализирован": "Initialized", +"Данные аккаунта": "Account data", +"ЭтоПараметрФлаг": "IsFlagParam", +"0 Или Результат": "0 Or Result", +"ИгнорироватьКэш": "IgnoreCache", +"Название канала": "Channel title", +"ПараметрСтрокой": "ParameterString", +"СоздатьСтраницу": "CreatePage", +"УдалитьКартинку": "DeleteImage", +"СформироватьURL": "FormURL", +"СоздатьПреалерт": "CreatePrealert", +"Проверка, новый": "Check, new", +"Работа с диском": "Working with drive", +"Не спланированы": "Not planned", +"ПолучениеДанных": "DataRetrieving", +"Массив ID медиа": "Media ID array", +"ФайлРепозитория": "RepositoryFile", +"OPI_ЗапросыHTTP": "OPI_HTTPRequests", +"установлен свой": "set your", +"Проверка_ВКПост": "Check_VKPost", +"дата публикации": "publication date", +"ЗаписатьСимволы": "WriteChars", +"Пункт чек-листа": "Checklist element", +"ГринНоваяГруппа": "GreenNewGroup", +"СписокЭлементов": "ElementList", +"OpenAIАссистент": "OpenAIAssistant", +"РасширениеФайла": "FileExtension", +"СтруктураФайлов": "FileStructure", +"Создать историю": "Create story", +"Правила Маркета": "Market rules", +"ОтправитьСтроку": "SendLine", +"ЗаголовкиСтркой": "HeadersAsString", +"СтруктураМакета": "TemplateStructure", +"ЗаголовкиBase64": "HeadersBase64", +"ЗапросПотокТела": "RequestBodyStream", +"ФайлТелаВозврат": "BodyFileReturn", +"Получить курсор": "Get cursor", +"ТекстКоличества": "CountText", +"РезультатЧтения": "ReadingResult", +"УстановкаПрокси": "ProxySetup", +"ВКТПользователь": "VKTUser", +"РезультатСтрока": "ResultString", +"СтруктураЗаявки": "InvitationStructure", +"Номер,Строковое": "Number,String", +"МассивРодителей": "ArrayOfParents", +"НайтиСовпадения": "Matches", +"ОзонНовыеТовары": "OzonNewProducts", +"РазделительBash": "BashSeparator", +"Загрузить файлы": "Upload files", +"НастройкиСессии": "SessionSettings", +"Запрос (простой": "Request (simple", +"ИскомыйПараметр": "DesiredParameter", +"ссылка на видео": "video URL", +"ПолучитьЭлемент": "GetItem", +"ГринВыходГруппы": "GreenLeaveGroup", +"4).Равно(Истина": "4).Equal(True", +"Санкт-Петербург": "St. Petersburg", +"Отправить гифку": "Send GIF", +"ПолучитьМагазин": "GetMarket", +"ИмяФайла), Файл": "FileName), File", +"создайте проект": "create a project", +"Получить запуск": "Get launch", +"Неотрицательный": "Nonnegative", +"Создание твитов": "Tweets creation", +"Компоненты (ОПИ": "AddIns (OpenIntegrations", +"Создать таблицу": "Create table", +"Вопросы строкой": "Questions as string", +"Получить проект": "Get project", +"ПутьИсполнителя": "ExecutorPath", +"Получить запись": "Get record", +"ТекущееЗначение": "CurrentValue", +"AWS_ОбщиеМетоды": "AWS_CommonMethods", +"ДропбоксАккаунт": "DropboxAccount", +"Измененное поле": "Izmenennoe pole", +"ПервоеСообщение": "FirstMessage", +"ВнутреннийНомер": "IMNumber", +"АТБазаСТаблицей": "ATBaseWithTable", +"Название города": "City name", +"Telegram_Разбан": "Telegram_Unban", +"РаботаСБакетами": "BucketsManagement", +"СтруктураОтчета": "ReportStructure", +"Копировать лист": "Copy sheet", +"МассивСчетчиков": "CountersArray", +"Я бот, а ты нет": "I am bot, but you - not", +"Ответ на запрос": "Response", +"Отправить видео": "Send video", +"ПолучитьНовости": "GetPosts", +"ЗаписатьЦелое16": "WriteInt16", +"СтруктураКнопки": "ButtonStructure", +"Проверка_Строка": "Check_String", +"СчетчикУспешных": "SuccessCount", +"ПрочитатьСтроку": "ReadLine", +"Серверное время": "Server time", +"Покинуть группу": "Leave group", +"РезультатСписка": "ListResult", +"МетрикаСчетчики": "MetrikaCounters", +"ВКГруппаТоваров": "VKProductsGroup", +"Получение новых": "Getting new", +"Без авторизации": "No authorization", +"ПолучениеОтвета": "ResponseReceiving", +"Создать новость": "Create post", +"Проверка_ВКЛайк": "Check_VKLike", +"Закрытие потока": "Stream closing", +"ОтправитьЗапрос": "SendRequest", +"Получить сделку": "Get deal", +"ОбластиДействия": "Scope", +"ПолучитьТаблицу": "GetTable", +"РазобратьСтроку": "ParseString", +"ИзменитьНовость": "UpdatePost", +"МассивУдаляемых": "ArrayOfDeletions", +"МассивУдаленных": "DeletedArray", +"Описание товара": "Product description", +"ВКТ_ОбщиеМетоды": "VKT_CommonMethods", +"Описание канала": "Channel description", +"ДвоичныеДанные2": "BinaryData2", +"ОтправитьМодель": "PushModel", +"время окончания": "end time", +"СтруктураТекста": "TextStructure", +"ПараметрыСеанса": "SessionParameters", +"Добавить записи": "Add rows", +"ОбновитьТокен()": "RefreshToken()", +"Обновить записи": "Update records", +"ID пользователя": "User ID", +"СтруктураАдреса": "AddressStructure", +"ПолучитьПроекты": "GetProjects", +"ЗаписьИзФункции": "WriteFromFunction", +"ГринВходнойФайл": "GreenInputFile", +"СтруктураФлагов": "FlagsStructure", +"ТекущееОписание": "CurrentDescription", +"ИзменитьЭлемент": "UpdateItem", +"ТаблицаЗначений": "ValueTable", +"Новый цвет чата": "New chat color", +"СкопироватьФайл": "MakeFileCopy", +"ЭтоТипКоллекция": "IsCollectionType", +"ИзменитьТаблицу": "ModifyTable", +"СлучайныйМассив": "RandomArray", +"НССинхронизация": "NCSync", +"УдалитьПолностью": "DeleteCompletely", +"VK_ПоставитьЛайк": "VK_LikePost", +"ВариантСвойства1": "PropVariant1", +"ИмяФайлаОтправки": "SendingFileName", +"МассивИнформации": "ArrayOfInformation", +"пСтатусСообщения": "pMessageStatus", +"ПолучитьКартинки": "GetImages", +"МассивПараметров": "ParameterArray", +"Проверка_ВКВидео": "Check_VKVideo", +"КвадратныеСкобки": "SquareBrackets", +"Yandex.Disk (ОПИ": "Yandex.Disk (OpenIntegrations", +"ЗапятаяВКавычках": "CommaInQuotes", +"СоставБиблиотеки": "LibraryComposition", +"СлакСписокФайлов": "SlackFilesList", +"ID подразделения": "Department ID", +"СмещениеОтНачала": "OffsetFromStart", +"СоздатьТвитГифки": "CreateGifTweet", +"Фамилия контакта": "Contact last name", +"Проверка вставки": "Insertion check", +"ОбязательныеПоля": "RequiredFields", +"УправлениеРолями": "RoleManagement", +"ОжидатьСледующее": "WaitNext", +"Работа с токеном": "Token management", +"ТекущиеНастройки": "CurrentSettings", +"ПолучитьШтрихкод": "GetBarcode", +"Тестовая таблица": "TestTable", +"URL с фрагментом": "URL with a snippet", +"РезультатЗапроса": "RequestResult", +"Получить событие": "Get event", +"ЗаполнитьФильтры": "FillFilters", +"Имя новой модели": "The name of the new model", +"ВложенныеОбъекты": "NeedParts", +"Отправить строку": "Send line", +"ЗаписатьВызовCLI": "WriteCLICall", +"Скопировать файл": "Copy file", +"Создать фид (RSS": "Create feed (RSS", +"МассивСортировки": "SortArray", +"УдалитьСообщение": "DeleteMessage", +"ПолучитьПараметр": "GetParameter", +"МассивИменЛистов": "ArrayOfSheetNames", +"СоответствиеMIME": "MIMETypeMapping", +"Порт подключения": "Connection port", +"НеобходимоЧастей": "PartsRequired", +"СтруктураЗеркала": "MirrorStructure", +"Описание альбома": "Album description", +"МассивЗаголовков": "HeadersArray", +"РаботаСоСделками": "DealsManagement", +"ПолучитьПолеДаты": "GetDateField", +"ОзонАПИ_СхемаFBO": "OzonAPI_FBOScheme", +"Получить события": "Get events", +"Материалы встреч": "Meeting materials", +"Артикулы товаров": "Products articles", +"СтрокаДляПодписи": "StringToSign", +"ЗапускаемыеТесты": "RunnableTests", +"Каталог, обратно": "Directory, back", +"ЗавершитьЭлемент": "FinishItem", +"ИсходноеЗначение": "InitialValue", +"Тестовая реклама": "Test ads", +"ИсторияСообщений": "MessageHistory", +"Кодировка строки": "String encoding", +"ОстановитьРаботу": "StopExecution", +"0 И Лев(Токен, 2": "0 And Left(Token, 2", +"РазмерРезультата": "ResultSize", +"Варианты ответов": "Answer options", +"Проверка, старый": "Check, old", +"Изменить счетчик": "Update counter", +"ПустаяСхемаMerge": "EmptySchemeMerge", +"Получить таблицу": "Get table", +"РаспаковатьОтвет": "UnpackResponse", +"ПолучитьФайлПути": "GetFilePath", +"БитриксХранилища": "BitrixStorage", +"ПолучитьДвоичные": "GetBinary", +"ПолучитьСписокВФ": "GetExternalFileList", +"КоличествоЧастей": "NumberOfParts", +"Проверка_ВКЧисло": "Check_VKNumber", +"СоздатьКоллекцию": "CreateCollection", +"ЗаголовокУчастка": "ChunkHeader", +"Новый подкаталог": "New subfolder", +"размер информера": "informer size", +"Получить новости": "Get posts", +"СоздатьТвитОпрос": "CreatePollTweet", +"СтруктураКолонок": "ColoumnsStruct", +"ШаблонПеременной": "VariableTemplate", +"КодИгнорирования": "IgnoreCode", +"РолиПользователя": "UserRoles", +"Добро пожаловать": "Welcome", +"ПозицияОкончания": "EndPosition", +"ОстановитьСервер": "StopServer", +"ВызватьHTTPМетод": "CallHTTPMethod", +"синхронизировать": "synchronize", +"Прочитать строку": "Read line", +"ОбработкаЗапроса": "RequestProcessing", +"ЗаписатьЛогТеста": "WriteTestLog", +"Работа с файлами": "Files management", +"УдалитьБакет (DB": "DeleteBucket (DB", +"Отправить модель": "Push model", +"Получить счетчик": "Get counter", +"Затраченое время": "Time spend", +"ЗаданиеОбработки": "ProcessingTask", +"Имя пользователя": "Users name", +"Загрузить объект": "Put object", +"РаботаСоСкладами": "WarehousesManagement", +"ФоновоеОбработки": "BackgroundProcessing", +"IDSИнициализации": "InitializationIDS", +"РазобратьФидAtom": "ParseFeedAtom", +"название события": "event name", +"Получение данных": "Data retrieving", +"МассивРезультата": "ResultArray", +"ПараметрыДоступа": "AccessParameters", +"БитриксРезультат": "BitrixResult", +"ПрочитатьФидAtom": "ReadFeedAtom", +"МассивРуководств": "ManualsArray", +"ПараметрыКлиента": "ClientParams", +"ИДКрасногоТовара": "RedItemID", +"ОчередьСообщений": "MessageQueue", +"ДобавитьПараметр": "AddParameter", +"ЭтоПереадресация": "ThisIsRedirection", +"ПутьКФайлуДанных": "DataFilePath", +"УдалитьКоллекцию": "DeleteCollection", +"Поля для выборки": "Fields for selection", +"ОбработатьОбъект": "ProcessObject", +"ОсвободитьОбъект": "FreeObject", +"СтрокаФотографий": "PhotoString", +"ИмяПоля,ИмяФайла": "FieldName,FileName", +"МаксимумВЗапросе": "MaxInRequest", +"Запустить сервер": "Start server", +"Картинка альпаки": "Alpaca picture", +"РаботаСДоступами": "AccessManagement", +"Загружаемый файл": "File to be uploaded", +"Основной вариант": "Primary variant", +"УдалитьФайл (хук": "DeleteFile (wh", +"ID целевого чата": "Target chat ID", +"ПараметрыСтрокой": "ParametersString", +"ДропбоксУчастник": "DropboxUser", +"ПараметрыЗапроса": "RequestParameters", +"VK_УдалитьАльбом": "VK_DeleteAlbum", +"РаботаСНовостями": "PostsManagement", +"Объект HTTPОтвет": "HTTPResponse object", +"ВыполнитьКоманду": "ExecuteCommand", +"Другой календарь": "Another calendar", +"Массив из Строка": "Array of String", +"краткое описание": "short description", +"ПереносСтрокJSON": "JSONLineBreak", +"Структура канала": "Channel structure", +"НеобходимТипПоVM": "TypeRequieredByVM", +"РаботаСТаблицами": "TableManagement", +"ИнформацияМетода": "MethodInfo", +"Элемент.Значение": "Element.Value", +"ЛокальныйКаталог": "LocalFolder", +"Аргумент команды": "Command argument", +"Картинка профиля": "Profile picture", +"10).Равно(Истина": "10).Equal(True", +"Ошибка в позиции": "Error in position", +"Работа с акциями": "Promotions management", +"ПолучитьЛид (хук": "GetLead (wh", +"УстановитьСтроку": "SetString", +"Твит с картинкой": "Tweet with image", +"ТестовыеДвоичные": "TestBinary", +"Выполнить запрос": "Execute request", +"OAI_РаботаСАудио": "OAI_AudioProcessing", +"ТекущееПолучение": "CurrentReceive", +"МассивОбновлений": "UpdateArray", +"Массив ID постов": "Array of post IDs", +"НачальнаяПозиция": "StartPosition", +"РезультатРазбора": "ParseResult", +"BasicАвторизация": "BasicAuthorization", +"ВыгрузитьКолонку": "UnloadColumn", +"Удалить подборку": "Delete selection", +"ОбработатьЗаписи": "ProcessRecords", +"Postgre SQL (ОПИ": "Postgre SQL (OpenIntegrations", +"СтруктураСтатуса": "StatusStructure", +"КонецКодовУспеха": "EndOfSuccessCodes", +"Создать преалерт": "Create prealert", +"МассивДокументов": "DocsArray", +"ДанныеИНастройка": "DataAndSettings", +"СтруктураФормата": "FormatStructure", +"МассивПривилегий": "PrivilegesArray", +"НачалоПараметров": "ParamsStart", +"ЮнитТестирование": "UnitTesting", +"СтруктураСтроки1": "RowStructure2", +"HTTPСервисЗапрос": "HTTPServiceRequest", +"Простое, в канал": "Simple, to channel", +"KeyИнициализации": "InitializationKey", +"Вступить в канал": "Join channel", +"РазобратьКоманду": "ParseCommand", +"Инициализировать": "Initialize", +"НовоеПодключение": "NewConnection", +"ЗагрузкаКартинки": "ImageUpload", +"ОбъектПроцессора": "ProcessorObject", +"ОписаниеДвижений": "MovesDescription", +"HTTP клиент (ОПИ": "HTTP client (OpenIntegrations", +"БитриксСообщения": "BitrixMessages", +"Изменить событие": "Edit event", +"ВладелецКартинки": "ImageOwner", +"ПрочитатьЦелое32": "ReadInt32", +"ПокинутьЧат (хук": "LeaveChat (wh", +"Ошибка,Результат": "Error,Result", +"Создание проекта": "Project creation", +"КопироватьОбъект": "CopyObject", +"ШаблонЗавершения": "CompletionTemplate", +"ОткрытьПотокGRPC": "OpenGRPCStream", +"Размер файла, ДД": "File size, BD", +"место проведения": "venue", +"ВыполнениеКоманд": "CommandsExecution", +"СтруктураСтроки3": "StringStructure3", +"ПутьИнструментов": "ToolsPath", "ОписаниеКартинки": "ImageDescription", +"ЭтоОбъектКлиента": "IsClientObject", +"Ответ = %1.%2(%3": "Response = %1.%2(%3", +"превью документа": "document preview", +"НовоеЧислоОшибок": "NewErrorCount", +"СтруктураВстречи": "MeetingStructure", +"МБ был записан в": "MB was recorded in", +"ТокенАвторизации": "AuthToken", +"УдаленныйКаталог": "RemoteFolder", +"УдалитьДокументы": "DeleteDocuments", +"ДобавитьИмяЛиста": "AddSheetName", +"OLLM_РаботаСBlob": "OLLM_WorkingWithBlob", +"МетодыОбсуждений": "DiscussionManagement", +"Название региона": "Region name", +"ВерсияПриложения": "AppVersion", +"ЗаписатьФайлЛога": "WriteLogFile", +"РаботаСДиалогами": "DialogManagement", +"Телефон контакта": "Contact phone number", +"Архивировать чат": "Archive chat", +"VK_СделатьРепост": "VK_MakeRepost", +"СтрокаПараметров": "ParameterString", "Отправить ссылку": "Send link", "Неактивный : red": "Inactive : red", "ТекущееСообщение": "CurrentMessage", "МаксШирина Тогда": "MaxWidth Then", -"КаталогПрограммы": "BinDir", -"КодироватьСтроку": "EncodeString", -"Проверка, Старый": "Check, Old", -"КакАдминистратор": "AsAdmin", -"IDХарактеристики": "AttributeID", -"Lib: HTTP-клиент": "Lib: HTTP-client", -"Создать страницу": "Create page", -"РаботаСОбъектами": "ObjectsManagement", -"Объект обработки": "Processor object", -"■|#color=Желтый)": "■|#color=Yellow)", -"СдэкДанныеЗаказа": "CdekOrderNumber", -"Описание локации": "Location description", -"ЗаписатьПараметр": "WriteParameter", -"Получить каталог": "Get folder information", -"Получить магазин": "Get market", -"МаркерПараметров": "ParameterMarker", -"ЖурналыСообщений": "MessageLogs", -"РазбитьURL: Порт": "SplitURL: Port", -"ВыполненныеТесты": "ExecutedTests", -"Новое имя группы": "New group name", -"СписокСоединений": "ConnectionList", "ГуглОчисткаЯчеек": "GoogleCellCleanning", +"СписокСоединений": "ConnectionList", +"Новое имя группы": "New group name", +"ВыполненныеТесты": "ExecutedTests", +"РазбитьURL: Порт": "SplitURL: Port", +"ЖурналыСообщений": "MessageLogs", +"МаркерПараметров": "ParameterMarker", +"Получить магазин": "Get market", +"Получить каталог": "Get folder information", +"ЗаписатьПараметр": "WriteParameter", +"КаталогКомпонент": "AddInsFolder", +"Описание локации": "Location description", +"■|#color=Желтый)": "■|#color=Yellow)", +"Объект обработки": "Processor object", +"РаботаСОбъектами": "ObjectsManagement", +"Создать страницу": "Create page", +"Lib: HTTP-клиент": "Lib: HTTP-client", +"IDХарактеристики": "AttributeID", +"КакАдминистратор": "AsAdmin", +"Проверка, Старый": "Check, Old", +"КодироватьСтроку": "EncodeString", +"КаталогПрограммы": "BinDir", +"СдэкДанныеЗаказа": "CdekOrderNumber", +"OPI_Криптография": "OPI_Cryptography", +"ОпцияСокращенная": "SplittedOption", +"СекретПриложения": "AppSecret", +"AWS4Использовать": "AWS4Using", +"ВариантСвойства2": "PropVariant2", +"Сделаю на неделе": "For this week", +"ЭлементКоллекции": "CollectionItem", +"ТекстОшибкиПолей": "FieldsErrorText", +"РазделительСтрок": "LineSeparator", +"СоздатьБакет (DB": "CreateBucket (DB", +"owner_id, но без": "owner_id, but without", +"ИзменитьЛид (хук": "UpdateLead (wh", +"Очистить таблицу": "Clear table", +"Сократить ссылку": "Shorten link", +"СоздатьТвитВидео": "CreateVideoTweet", +"ТелеграмДокумент": "TelegramDocument", +"GMax_Уведомления": "GMax_Notifications", +"ТочкаОтправления": "ShippingPoint", +"МассивОписания[Н": "DescriptionArray[N", +"РаботаССобытиями": "EventManagement", +"СледующаяПозиция": "NextPosition", +"СписокПараметров": "ParamsList", +"ИспользоватьФайл": "UseFile", +"РезультатВыборки": "SelectionResult", +"СтрокаИсточников": "SourcesString", +"ЗапросыMultipart": "MultipartRequests", "ЗаголовкиСтрокой": "HeadersAsString", +"МассивКлавиатуры": "KeyboardArray", +"УправлениеЧатами": "ChatManagement", +"ЗначениеОсновной": "MainValue", +"Настройки прокси": "Proxy settings", +"Описание события": "Event description", +"ДоступныйОстаток": "AvailableBalance", +"ПараметрыТаблицы": "TableParameters", +"УправлениеФайлом": "FileManagement", +"Описания методов": "Methods documentation", +"ПутьКСертификату": "CertFilepath", +"МассивРазрешений": "PermissionsArray", +"АдресПодключения": "ConnectionAddress", +"ОбщийРазмер Цикл": "TotalSize Do", +"Завершить задачу": "Complete task", +"телефон заполнен": "phone number is filled in", +"Проверка_ВКТовар": "Check_VKProduct", +"Блок с картинкой": "PictureBlock", +"VK_ДобавитьТовар": "VK_AddProduct", +"Получить элемент": "Get item", +"ГВ_ПолучитьТокен": "GV_GetToken", +"ПользовательЧата": "ChatMember", +"МассивКалендарей": "ArrayOfCalendars", +"СтрокаЗаголовков": "HeadersString", +"Картинка и видео": "Picture and video", +"SQLiteНетЗаписей": "SQLiteNoRows", "Переместить файл": "Move file", -"Через SSH-агента": "Via SSH agent", +"ЗаписатьJSONФайл": "WriteJSONFile", "ТелеграмКартинка": "TelegramImage", -"СтруктураСтроки2": "RowStructure1", -"Изменить таблицу": "Modify table", -"КодОшибкиЗапроса": "RequestErrorCode", -"ПолученныйОбъект": "ReceivedObject", -"НастройкаТаймаут": "TimeoutSettings", -"РодительскоеПоле": "ParrentField", -"СсылкаПодЗаписью": "LinkUnderPost", -"СлакПользователи": "SlackUsers", -"АутентификацияОС": "OSAuthentication", -"НачалоТранзакции": "TransactionStart", -"СтруктураПериода": "PeriodStructure", -"БитриксСообщение": "BitrixMessage", -"СоздатьШтрихкоды": "CreateBarcodes", -"ЭтоОбъектСервера": "IsServerObject", -"РасширенныйВызов": "AdvancedCall", -"Кириллица в пути": "Cyrillic at path", -"массив артикулов": "articles array", -"описание запуска": "launch description", -"МассивПолученных": "ReceivedArray", -"ЭлементПараметра": "ParamElement", -"КопироватьМодель": "CopyModel", +"ЗапросЗащищенное": "RequestProtected", +"СтруктураПроекта": "ProjectStructure", +"Завершить запуск": "Finish launch", +"УстановитьПрокси": "SetProxy", +"ОригинальныйПуть": "OriginalPath", +"ВозможныеКоманды": "AvailableCommands", +"Изменить новость": "Update post", +"ПривестиЗначение": "AdjustValue", +"ОтправитьЛокацию": "SendLocation", +"название запуска": "launch name", +"РезультатСтрокой": "ResultAsString", +"ВыполнитьТестCLI": "ExecuteTestCLI", +"Получение Токена": "Token retrieval", +"СтруктураСобытия": "EventStucture", +"ПолучитьПреалерт": "GetPrealert", +"Полужирный текст": "Bold text", +"СписокИсключений": "ExceptionsList", +"ГВ_ОбновитьТокен": "GV_UpdateToken", +"Начните диалог с": "Start a dialog with", +"ОтправитьКонтакт": "SendContact", +"ИзменитьЦветЧата": "ChangeChatColor", +"Расширение файла": "File extension", +"ВосстановитьФайл": "RestoreFile", +"Code из браузера": "Code from browser", +"Отдел маркетинга": "Marketing department", +"Через SSH-агента": "Via SSH agent", +"Ожидает контроля": "On controll", +"URLВКодировкеURL": "URLInURLEncoding", +"ГуглЭлементКниги": "GoogleSpreadsheetElement", +"МетодХеширования": "HashingMethod", +"Инструменты (ОПИ": "Tools (OpenIntegrations", +"ПолучитьСтраницу": "GetPage", +"Грузоотправитель": "Shipper", +"ОбработатьЗапись": "ProcessRecord", +"Название локации": "Location name", +"СтруктураПозиции": "ItemStructure", +"НеобходимаяДлина": "RequiredLength", +"СоздатьКалендарь": "CreateCalendar", +"ВернутьНастройки": "ReturnSettings", +"ЭтоОшибкаСервера": "ThisIsServerError", +"Удалить картинку": "Delete image", +"Массив Из Строка": "Array Of String", +"СтруктураЗапуска": "LaunchStructure", +"МассивСтатистики": "StatisticsArray", +"РезультатКоманды": "CommandResult", +"HTTP_Авторизация": "HTTP_Authorization", +"ПроверитьАккаунт": "CheckAccount", +"ОбработатьЗапрос": "ProcessRequest", +"РасширенныйОтвет": "AdvancedResponse", +"МассивУчастников": "MembersArray", +"МассивШтрихкодов": "BarcodesArray", "КодОшибкиСервера": "ServerErrorCode", +"КопироватьМодель": "CopyModel", +"ЭлементПараметра": "ParamElement", +"МассивПолученных": "ReceivedArray", +"описание запуска": "launch description", +"массив артикулов": "articles array", +"Кириллица в пути": "Cyrillic at path", +"РасширенныйВызов": "AdvancedCall", +"ЭтоОбъектСервера": "IsServerObject", +"СоздатьШтрихкоды": "CreateBarcodes", +"БитриксСообщение": "BitrixMessage", +"СтруктураПериода": "PeriodStructure", +"НачалоТранзакции": "TransactionStart", +"АутентификацияОС": "OSAuthentication", +"СлакПользователи": "SlackUsers", +"СсылкаПодЗаписью": "LinkUnderPost", +"РодительскоеПоле": "ParrentField", +"ПолученныйОбъект": "ReceivedObject", +"КодОшибкиЗапроса": "RequestErrorCode", +"Изменить таблицу": "Modify table", +"СправкаПоКоманде": "CommandHelp", "КлючПользователя": "UsersKey", "УдалитьНастройки": "DeleteSettings", +"НастройкаТаймаут": "TimeoutSettings", +"СтруктураСтроки2": "RowStructure1", "описание события": "event description", -"ПараметрыФункции": "FunctionParameters", +"ПространствоИмен": "TargetNamespace", +"Изменить элемент": "Update item", +"СтруктураФильтра": "FilterStructure", +"Отклонить задачу": "Disapprove task", +"Получить проекты": "Get projects", +"Тестовый товар 2": "TestProduct2", +"HTTP-клиент (ОПИ": "HTTP Client (OpenIntegrations", +"СтруктураТаблицы": "TableStructure", +"ЗакрытьПотокGRPC": "CloseGRPCStream", +"Получение ответа": "Response receiving", +"Коллекция файлов": "File collection", +"Плановая продажа": "Planned sale", +"VK_ИзменитьТовар": "VK_EditProduct", "VK_СоздатьАльбом": "VK_CreateAlbum", "ИмяПараметраСокр": "ParameterNameTrim", -"Канал для отбора": "Channel for selection", +"ПараметрыФункции": "FunctionParameters", "УдалитьКалендарь": "DeleteCalendar", +"Канал для отбора": "Channel for selection", "УдаляемыйЭлемент": "DeletedElement", "СписокЗаголовков": "HeadersList", "Описание таблицы": "Table description", "версия вебвизора": "webvisor version", "гарантийный срок": "warranty period", -"Плановая продажа": "Planned sale", -"VK_ИзменитьТовар": "VK_EditProduct", -"Получение ответа": "Response receiving", -"ЗакрытьПотокGRPC": "CloseGRPCStream", -"СтруктураТаблицы": "TableStructure", -"HTTP-клиент (ОПИ": "HTTP Client (OpenIntegrations", -"Тестовый товар 2": "TestProduct2", -"Получить проекты": "Get projects", -"Отклонить задачу": "Disapprove task", -"СтруктураФильтра": "FilterStructure", -"Изменить элемент": "Update item", -"ПространствоИмен": "TargetNamespace", -"Коллекция файлов": "File collection", -"МассивШтрихкодов": "BarcodesArray", -"СправкаПоКоманде": "CommandHelp", -"РасширенныйОтвет": "AdvancedResponse", -"СтруктураПозиции": "ItemStructure", -"ИзменитьЦветЧата": "ChangeChatColor", -"ОтправитьКонтакт": "SendContact", -"Начните диалог с": "Start a dialog with", -"ГВ_ОбновитьТокен": "GV_UpdateToken", -"СписокИсключений": "ExceptionsList", -"Полужирный текст": "Bold text", -"ПолучитьПреалерт": "GetPrealert", -"СтруктураСобытия": "EventStucture", -"Получение Токена": "Token retrieval", -"ВыполнитьТестCLI": "ExecuteTestCLI", -"РезультатСтрокой": "ResultAsString", -"название запуска": "launch name", -"ОтправитьЛокацию": "SendLocation", -"ПривестиЗначение": "AdjustValue", -"Изменить новость": "Update post", -"ВозможныеКоманды": "AvailableCommands", -"ОригинальныйПуть": "OriginalPath", -"УстановитьПрокси": "SetProxy", -"Завершить запуск": "Finish launch", -"СтруктураПроекта": "ProjectStructure", -"ЗапросЗащищенное": "RequestProtected", -"Расширение файла": "File extension", -"ВосстановитьФайл": "RestoreFile", -"СтруктураСтроки3": "StringStructure3", -"Code из браузера": "Code from browser", -"Отдел маркетинга": "Marketing department", -"ПроверитьАккаунт": "CheckAccount", -"HTTP_Авторизация": "HTTP_Authorization", -"РезультатКоманды": "CommandResult", -"МассивСтатистики": "StatisticsArray", -"СтруктураЗапуска": "LaunchStructure", -"Массив Из Строка": "Array Of String", -"Удалить картинку": "Delete image", -"ЭтоОшибкаСервера": "ThisIsServerError", -"ВернутьНастройки": "ReturnSettings", -"СоздатьКалендарь": "CreateCalendar", -"ОбработатьЗапрос": "ProcessRequest", -"НеобходимаяДлина": "RequiredLength", -"Название локации": "Location name", -"ОбработатьЗапись": "ProcessRecord", -"Грузоотправитель": "Shipper", -"ПолучитьСтраницу": "GetPage", -"Инструменты (ОПИ": "Tools (OpenIntegrations", -"МассивУчастников": "MembersArray", -"МетодХеширования": "HashingMethod", -"ГуглЭлементКниги": "GoogleSpreadsheetElement", -"URLВКодировкеURL": "URLInURLEncoding", -"Ожидает контроля": "On controll", -"ПутьИнструментов": "ToolsPath", -"СтрокаИсточников": "SourcesString", -"ВыполнениеКоманд": "CommandsExecution", -"Загружаемый файл": "File to be uploaded", -"ПолучитьСписокВФ": "GetExternalFileList", -"БитриксХранилища": "BitrixStorage", -"ПолучитьФайлПути": "GetFilePath", -"РаспаковатьОтвет": "UnpackResponse", -"Получить таблицу": "Get table", -"ПустаяСхемаMerge": "EmptySchemeMerge", -"Изменить счетчик": "Update counter", -"Проверка, старый": "Check, old", -"Варианты ответов": "Answer options", -"КоличествоЧастей": "NumberOfParts", -"РазмерРезультата": "ResultSize", -"ОстановитьРаботу": "StopExecution", -"Кодировка строки": "String encoding", -"ИсторияСообщений": "MessageHistory", -"Тестовая реклама": "Test ads", -"ИсходноеЗначение": "InitialValue", -"ЗавершитьЭлемент": "FinishItem", -"Каталог, обратно": "Directory, back", -"ЗапускаемыеТесты": "RunnableTests", -"СтрокаДляПодписи": "StringToSign", -"Артикулы товаров": "Products articles", -"0 И Лев(Токен, 2": "0 And Left(Token, 2", -"СоздатьКоллекцию": "CreateCollection", -"ОстановитьСервер": "StopServer", -"ЗаголовокУчастка": "ChunkHeader", -"ЗаданиеОбработки": "ProcessingTask", -"Получить события": "Get events", -"Затраченое время": "Time spend", -"Получить счетчик": "Get counter", -"Отправить модель": "Push model", -"УдалитьБакет (DB": "DeleteBucket (DB", -"Работа с файлами": "Files management", -"ЗаписатьЛогТеста": "WriteTestLog", -"ОбработкаЗапроса": "RequestProcessing", -"Прочитать строку": "Read line", -"синхронизировать": "synchronize", -"Имя пользователя": "Users name", -"ВызватьHTTPМетод": "CallHTTPMethod", -"ПозицияОкончания": "EndPosition", -"Добро пожаловать": "Welcome", -"РолиПользователя": "UserRoles", -"КодИгнорирования": "IgnoreCode", -"ШаблонПеременной": "VariableTemplate", -"СтруктураКолонок": "ColoumnsStruct", -"СоздатьТвитОпрос": "CreatePollTweet", -"Получить новости": "Get posts", -"размер информера": "informer size", -"Новый подкаталог": "New subfolder", -"Материалы встреч": "Meeting materials", -"Проверка_ВКЧисло": "Check_VKNumber", -"ОзонАПИ_СхемаFBO": "OzonAPI_FBOScheme", -"ОбязательныеПоля": "RequiredFields", -"Проверка вставки": "Insertion check", -"Фамилия контакта": "Contact last name", -"СоздатьТвитГифки": "CreateGifTweet", -"СмещениеОтНачала": "OffsetFromStart", -"ID подразделения": "Department ID", -"Yandex.Disk (ОПИ": "Yandex.Disk (OpenIntegrations", -"СлакСписокФайлов": "SlackFilesList", -"СоставБиблиотеки": "LibraryComposition", -"ЗапятаяВКавычках": "CommaInQuotes", -"ОжидатьСледующее": "WaitNext", -"КвадратныеСкобки": "SquareBrackets", -"VK_ПоставитьЛайк": "VK_LikePost", -"Проверка_ВКВидео": "Check_VKVideo", -"МассивПараметров": "ParameterArray", -"ПолучитьКартинки": "GetImages", -"пСтатусСообщения": "pMessageStatus", -"МассивИнформации": "ArrayOfInformation", -"ИмяФайлаОтправки": "SendingFileName", -"ВариантСвойства1": "PropVariant1", -"УдалитьПолностью": "DeleteCompletely", -"УправлениеРолями": "RoleManagement", -"Работа с токеном": "Token management", -"Создать фид (RSS": "Create feed (RSS", -"ПолучитьШтрихкод": "GetBarcode", -"РаботаСоСделками": "DealsManagement", -"МассивЗаголовков": "HeadersArray", -"Описание альбома": "Album description", -"СтруктураЗеркала": "MirrorStructure", -"НеобходимоЧастей": "PartsRequired", -"Порт подключения": "Connection port", -"СоответствиеMIME": "MIMETypeMapping", -"МассивИменЛистов": "ArrayOfSheetNames", -"ПолучитьПараметр": "GetParameter", -"УдалитьСообщение": "DeleteMessage", -"ПолучитьПолеДаты": "GetDateField", -"МассивСортировки": "SortArray", -"Скопировать файл": "Copy file", -"ЗаписатьВызовCLI": "WriteCLICall", -"Отправить строку": "Send line", -"ВложенныеОбъекты": "NeedParts", -"Имя новой модели": "The name of the new model", -"ЗаполнитьФильтры": "FillFilters", -"Получить событие": "Get event", -"РезультатЗапроса": "RequestResult", -"URL с фрагментом": "URL with a snippet", -"ТекущиеНастройки": "CurrentSettings", -"Тестовая таблица": "TestTable", -"ПолучитьДвоичные": "GetBinary", -"Загрузить объект": "Put object", -"НачалоПараметров": "ParamsStart", -"ФоновоеОбработки": "BackgroundProcessing", -"СтруктураФормата": "FormatStructure", -"ДанныеИНастройка": "DataAndSettings", -"МассивДокументов": "DocsArray", -"Создать преалерт": "Create prealert", -"КонецКодовУспеха": "EndOfSuccessCodes", -"СтруктураСтатуса": "StatusStructure", -"Postgre SQL (ОПИ": "Postgre SQL (OpenIntegrations", -"ОбработатьЗаписи": "ProcessRecords", -"Удалить подборку": "Delete selection", -"ВыгрузитьКолонку": "UnloadColumn", -"МассивПривилегий": "PrivilegesArray", -"BasicАвторизация": "BasicAuthorization", -"НачальнаяПозиция": "StartPosition", -"Массив ID постов": "Array of post IDs", -"МассивОбновлений": "UpdateArray", -"ТекущееПолучение": "CurrentReceive", -"OAI_РаботаСАудио": "OAI_AudioProcessing", -"Выполнить запрос": "Execute request", -"ТестовыеДвоичные": "TestBinary", -"Твит с картинкой": "Tweet with image", -"УстановитьСтроку": "SetString", -"ПолучитьЛид (хук": "GetLead (wh", -"РезультатРазбора": "ParseResult", -"ЮнитТестирование": "UnitTesting", -"HTTP клиент (ОПИ": "HTTP client (OpenIntegrations", -"СтруктураСтроки1": "RowStructure2", -"Размер файла, ДД": "File size, BD", -"ОткрытьПотокGRPC": "OpenGRPCStream", -"ШаблонЗавершения": "CompletionTemplate", -"КопироватьОбъект": "CopyObject", -"Создание проекта": "Project creation", -"Ошибка,Результат": "Error,Result", -"ПокинутьЧат (хук": "LeaveChat (wh", -"ПрочитатьЦелое32": "ReadInt32", -"ВладелецКартинки": "ImageOwner", -"Изменить событие": "Edit event", -"место проведения": "venue", -"БитриксСообщения": "BitrixMessages", -"ОписаниеДвижений": "MovesDescription", -"ОбъектПроцессора": "ProcessorObject", -"ЗагрузкаКартинки": "ImageUpload", -"НовоеПодключение": "NewConnection", -"Инициализировать": "Initialize", -"РазобратьКоманду": "ParseCommand", -"Вступить в канал": "Join channel", -"KeyИнициализации": "InitializationKey", -"Простое, в канал": "Simple, to channel", -"HTTPСервисЗапрос": "HTTPServiceRequest", -"РаботаСоСкладами": "WarehousesManagement", -"Работа с акциями": "Promotions management", -"Ошибка в позиции": "Error in position", -"10).Равно(Истина": "10).Equal(True", -"ВыполнитьКоманду": "ExecuteCommand", -"ИмяПоля,ИмяФайла": "FieldName,FileName", -"СтрокаФотографий": "PhotoString", -"ОсвободитьОбъект": "FreeObject", -"ОбработатьОбъект": "ProcessObject", -"Поля для выборки": "Fields for selection", -"УдалитьКоллекцию": "DeleteCollection", -"ПутьКФайлуДанных": "DataFilePath", -"ЭтоПереадресация": "ThisIsRedirection", -"ДобавитьПараметр": "AddParameter", -"ОчередьСообщений": "MessageQueue", -"ИДКрасногоТовара": "RedItemID", -"ПараметрыКлиента": "ClientParams", -"МассивРуководств": "ManualsArray", -"ПрочитатьФидAtom": "ReadFeedAtom", -"БитриксРезультат": "BitrixResult", -"ПараметрыДоступа": "AccessParameters", -"МассивРезультата": "ResultArray", -"Получение данных": "Data retrieving", -"название события": "event name", -"РазобратьФидAtom": "ParseFeedAtom", -"IDSИнициализации": "InitializationIDS", -"МаксимумВЗапросе": "MaxInRequest", -"Запустить сервер": "Start server", -"Картинка альпаки": "Alpaca picture", -"РаботаСДоступами": "AccessManagement", -"Аргумент команды": "Command argument", -"ЛокальныйКаталог": "LocalFolder", -"Элемент.Значение": "Element.Value", -"ИнформацияМетода": "MethodInfo", -"РаботаСТаблицами": "TableManagement", -"НеобходимТипПоVM": "TypeRequieredByVM", -"Структура канала": "Channel structure", -"ПереносСтрокJSON": "JSONLineBreak", -"краткое описание": "short description", -"Массив из Строка": "Array of String", -"Картинка профиля": "Profile picture", -"Другой календарь": "Another calendar", -"Объект HTTPОтвет": "HTTPResponse object", -"РаботаСНовостями": "PostsManagement", -"VK_УдалитьАльбом": "VK_DeleteAlbum", -"ПараметрыЗапроса": "RequestParameters", -"ДропбоксУчастник": "DropboxUser", -"ПараметрыСтрокой": "ParametersString", -"ID целевого чата": "Target chat ID", -"УдалитьФайл (хук": "DeleteFile (wh", -"Основной вариант": "Primary variant", -"СообщитьРезультат": "ReportResult", -"Проверить аккаунт": "Check account", -"ПолучитьLocalhost": "GetLocalhost", -"ИнформацияИндекса": "IndexInformation", -"ПолучитьКоллекцию": "GetCollection", -"ЗагруженныеДанные": "UploadedData", -"СоответствиеФайла": "FileMapping", -"ID целевой группы": "Group ID", -"Обработать запрос": "Process request", -"УдалитьАссистента": "DeleteAssistant", -"ОткрытьйПотокGRPC": "OpenGRPCStream", -"ВозобновитьЗадачу": "RenewTask", -"УправлениеСделкой": "ManageDeal", -"НС_РаботаСФайлами": "NC_FilesManagement", -"CH_ОсновныеМетоды": "CH_CommonMethods", -"СлакСписокКаналов": "SlackChannelsList", -"ОбернутоеЗначение": "CoveredValue", -"СтруктураНастроек": "SettingsStructure", -"Описание контакта": "Contact description", -"СтруктураПродавца": "SellerStructure", -"НачалоКодовУспеха": "StartOfSuccessCodes", -"Команда.Пояснение": "Command.Explanation", -"СтрокаПодключения": "ConnectionString", -"Дата : date": "Date : date", -"Заголовок новости": "Post title", -"истории изменений": "changes history", -"НаправлениеПоиска": "SearchDirection", -"ВернутьСоединение": "ReturnConnection", -"ПолучитьБлокФайла": "GetFileBlock", -"Проверка_ВКРепост": "Check_VKRepost", -"Почтовые вложения": "Mail attachments", -"СтруктураВозраста": "AgeStructure", -"СкопироватьОбъект": "CopyObject", -"Файл для загрузки": "File for upload", -"описание элемента": "element description", -"Строка, Структура": "String, Structure", -"ПустаяСхемаUpdate": "EmptySchemeUpdate", -"Это сервер !NOCLI": "Is server !NOCLI", -"Маркировка товара": "Product marking", -"Контекст.Вставить": "Context.Insert", -"История сообщений": "Message history", -"Файл для отправки": "File for sending", -"СохранятьЛокально": "SaveLocally", -"ЗагрузитьФайл (дд": "UploadFile (bd", -"СтандартныйСпособ": "StandardMethod", -"ПодходящийТипУзла": "RelevantNodeType", -"Удалить документы": "Delete documents", -"Локализация офиса": "Localization of the office", -"УправлениеТоваром": "ProductManagement", -"ДлинаПолоски Цикл": "BarLength Do", -"СтруктураРазмеров": "SizesStructure", -"Проверка_ВКИстина": "Check_VKTrue", -"СписокИсключаемых": "ExcludedList", -"ПреобразоватьДату": "ConvertDate", -"МассивНедостающих": "MissingArray", -"СоздатьАссистента": "CreateAssistant", -"Картинка автотест": "AutoTestImage", -"Вернуть настройки": "Return settings", -"ПереименоватьФайл": "RenameFile", -"СтруктураУдаления": "DeletionStructure", -"Управление ролями": "Role management", -"ТаблицаПараметров": "ParametersTable", -"ПолучитьЧекЗаказа": "GetCashboxCheck", -"Номер заказа СДЭК": "CDEK order number", -"Восстановить файл": "Restore file", -"ЭтоПримитивныйТип": "IsPrimitiveType", -"ПереместитьОбъект": "MoveObject", -"Структура запроса": "Request structure", -"Проверка, обратно": "Check, back", -"Б24_РаботаСЛидами": "B24_LeadsManagement", -"ВложенныеЭлементы": "NestedElements", -"Тестовая подборка": "TestCollection", -"Массив ID товаров": "Array of product IDs", -"календарь для CRM": "calendar for CRM", -"НеВосстанавливать": "DontRestore", -"Получить страницу": "Get page", -"ЭлементСтатистики": "StatisticsItem", -"ВременнаяМеткаISO": "ISOTimestamp", -"МаркетинговыйЦвет": "MarketingColor", -"FT_РаботаСФайлами": "FT_FileOperations", -"ОжидаютсяДвоичные": "ExpectedBinary", -"Работа с товарами": "Products management", -"УстановитьТаймаут": "SetTimeout", -"Создать штрихкоды": "Create barcodes", -"ОтправитьКартинку": "SendImage", -"ПользователиИРоли": "UsersAndRoles", -"КабинетыИМагазины": "CampaignsAndBusiness", -"ОбъектКомментарий": "CommentObject", -"ЗакрытьТемуФорума": "CloseForumTopic", -"ЛокальныеКаталоги": "LocalFolders", -"ВыходнаяКоллекция": "OutputCollection", -"Файловые хостинги": "File-hosting services", -"УправлениеЗадачей": "ManageTask", -"МассивРезультатов": "ResultArray", -"Структура модулей": "Structure of modules", -"Тестовое описание": "TestDescription", -"АтрибутКатегории2": "CategoryAttribute2", -"СоздатьПодкаталог": "CreateSubfolder", -"Работа с группами": "Group management", -"ЗначениеПараметра": "ParameterValue", -"Обработка событий": "Event handling", -"СтруктураУпаковки": "PackageStructure", -"РазбитьURL: Домен": "SplitURL: Domain", -"ID блока родителя": "Parent block ID", -"ТекущаяДатаСеанса": "CurrentSessionDate", -"СтруктураОстатков": "StocksStructure", -"ПодготовитьСтроку": "PrepareString", -"УправлениеТестами": "TestManagement", -"СтруктураФильтра1": "FilterStructure1", -"МаксимальнаяДлина": "MaximumLength", -"МинимальныйРазмер": "MinimumSize", -"Работа с заказами": "Orders management", -"ТекущаяДатаСтрока": "CurrentDateString", -"КаталогИсходников": "SourceDirectory", -"Ресурс привилегии": "Privilege resource", -"ЗаголовокАккаунта": "AccountHeader", -"ОзонАПИ_Штрихкоды": "OzonAPI_Barcodes", -"ТекущийТипСтрокой": "CurrentTypeString", -"Скрытый календарь": "Hidden calendar", -"ЗакрытьОбсуждение": "CloseDiscussion", -"ОтправитьДокумент": "SendDocument", -"СоответствиеТипов": "TypesMap", -"ВККартинкаАльбома": "VKAlbumPicture", -"Отчество контакта": "Contacts patronymic or middle name", -"особый тип товара": "specific product type", -"СтруктураЭкспорта": "ExportStructure", -"ОткрытьТемуФорума": "OpenForumTopic", -"СоздатьТемуФорума": "CreateForumTopic", -"Значение свойства": "Property value", -"Пакет oint (.ospx": "oint package (.ospx)", -"ВК_СоздатьИсторию": "VKAPI_CreateStory", -"вес в кг. (брутто": "weight, kg (gross", -"Работа с бакетами": "Buckets management", -"Текст комментария": "Comment text", -"УправлениеМетками": "TagsManagement", -"Выполнить команду": "Execute command", -"Б24_РаботаСДиском": "B24_WorkingWithDrive", -"АрхивироватьКанал": "ArchiveChannel", -"Это данные ячейки": "These are cell data of", -"Проверка_ВайберОк": "Check_ViberOk", -"СлакИсторияКанала": "SlackChannelHistory", -"ПараметрЛокальный": "LocalParameter", -"100).Равно(Истина": "100).Equal(True", -"ОбработкаЗапросов": "RequestsProcessing", -"название элемента": "element name", -"HTTP_ОсновныеТест": "HTTP_MainTests", -"ВКВариантСвойства": "VKPropVariant", -"Новый комментарий": "NewComment", -"СтруктураЭлемента": "ElementStructure", -"ВнешнееСоединение": "ExternalConnection", -"ПрочитатьВсе (хук": "ReadAll (wh", -"Имя файла в Slack": "File name in Slack", -"УстановитьИмяБазы": "SetBaseName", -"Структура фильтра": "Filter structure", -"УправлениеБакетом": "BucketManagement", -"ПустаяСхемаSelect": "EmptySchemeSelect", -"АтрибутКатегории1": "CategoryAttribute1", -"Игровые приставки": "Consoles", -"СоответствиеПолей": "FieldMapping", -"СтруктураФильтра2": "FilterStructure2", -"СтруктураСчетчика": "CounterStructure", -"ХешированиеДанных": "DataHashing", -"СтруктураКартинки": "PictureStructure", -"ПолучитьКвитанцию": "GetReceipt", -"РаботаСКаталогами": "CatalogsManagement", -"Копировать объект": "Copy object", -"Файлы Мессенджера": "Messenger files", -"описание дефектов": "defect description", -"Получить преалерт": "Get prealert", -"ЗапросАдресПолный": "RequestAdressFull", -"Отправить контакт": "Send contact", -"Создать коллекцию": "Create collection", -"Текст уведомления": "Notification text", -"ОтсутствующиеПоля": "MissingFields", -"По умолчанию: `0`": "By default: `0`", -"ОпубликоватьПапку": "PublishFolder", -"SF_ОсновныеМетоды": "SF_CommonMethods", -"В канал, на диске": "To channel, on disk", -"ЗапросТелоТекущий": "RequestBodyCurrent", -"ЗначениеЛокальный": "LocalValue", -"ТоварСоСвойством1": "ProductWithProp1", -"Расширенный вызов": "Advanced call", -"ОтправкаСообщений": "MessageSending", -"SF_РаботаСФайлами": "SF_FileManagement", -"Проверка_ГКОбъект": "Check_GKObject", -"FT_ОсновныеМетоды": "FT_CommonMethods", -"ПродолжатьВыборку": "ContinueGetting", -"КаталогБиблиотеки": "LibraryDirectory", -"ТелеграмСообщение": "TelegramMessage", -"ВставитьДокументы": "InsertDocuments", -"МассивНапоминаний": "RemindersArray", -"Задание выполнено": "Job Completed", -"ЛокацияНазначения": "DestLocation", -"Б24_РаботаСЧатами": "B24_ChatManagement", -"Очень важный файл": "Very important file", -"СтруктураВозврата": "ReturnStructure", -"Описание картинки": "Image description", -"ReportPortal (ОПИ": "ReportPortal (OpenIntegrations", -"КоличествоПопыток": "RetryCount", -"Удалить календарь": "Delete calendar", -"ПрочитатьКаналRSS": "ReadChannelRSS", -"Заголовок,Позиция": "Title,Item", -"РазбитьURL: Адрес": "SplitURL: Address", -"Секрет приложения": "Application secret", -"Запрос (с данными": "Request (with data", -"СписокПодключений": "ConnectionsList", -"НоушнСтраницаБазы": "NotionBasePage", -"Использовать oint": "Use oint", -"ПрочитатьJSONФайл": "ReadJSONFile", -"УдалитьТегиБакета": "DeleteBucketTagging", -"Работа с моделями": "Models management", -"Наименование поля": "Field name", -"Загрузка картинки": "Image upload", -"СтруктураЗначений": "ValueStructure", +"Получить картинки": "Get images", +"НачальнаяФигурная": "InitialCurly", +"Работа с задачами": "Tasks management", +"Удаляет лид по ID": "Deletes a lead by ID", +"УдалитьДиректорию": "DeleteDirectory", +"СоздатьОбсуждение": "CreateDiscussion", +"Объект HTTPЗапрос": "HTTPRequest object", +"ОсновноеИзмерение": "MajorDimension", +"Очередь сообщений": "Message queue", +"ТоварСоСвойством2": "ProductWithProp2", +"ЗаголовкиДвоичные": "HeadersBinary", +"СтруктураАтрибута": "AttributeStructure", +"Поле1,Поле2,Поле3": "Field1,Field2,Field3", +"ПустаяСхемаCreate": "EmptySchemeCreate", +"СообщениеУдаления": "DeletingMessage", +"ПолучитьСтрокуURI": "GetURIString", +"Пост из автотеста": "Post from autotest", +"ПолучитьПолеПочты": "GetEmailField", +"Данные для записи": "Data to be written", +"ФорматПоУмолчанию": "DefaultFormat", +"GreenAPI Max (ОПИ": "GreenAPI Max (OpenIntegrations", +"Название свойства": "Property name", +"МассивИзображений": "ImagesArray", +"Криптография (ОПИ": "Cryptography (OpenIntegrations", +"oint|#color=Белый": "oint|#color=White", +"VK_СоздатьИсторию": "VK_CreateStory", +"Обработка запроса": "Request processing", +"ТелеграмПереслать": "TelegramReply", +"ЯДиск_Авторизация": "YDisk_Authorization", +"ДобавитьЗаголовок": "AddHeader", +"ПоследняяФигурная": "LastCurly", +"СтруктураТелефона": "PhoneStructure", +"АтрибутКатегории4": "CategoryAttribute4", +"Данные для API v2": "Data for API v2", +"Наш первый клиент": "OurFirstClient", +"Токен авторизации": "Auth token", +"ОтветКодСостояния": "ResponseStatusCode", +"ЗаполняемыеДанные": "FillableData", +"УстановкаНастроек": "SetSettings", +"ТестоваяСтруктура": "TestStructure", +"АтрибутКатегории5": "CategoryAttribute5", +"Перейти на GitHub": "To GitHub", +"ЗагрузитьЗначения": "LoadValues", +"Возможные команды": "Available commands", +"КалендарьПриемник": "TargetCalendar", +"ЛайкРепостКоммент": "LikeRepostComment", +"Новое имя объекта": "New object name", +"ПустаяСхемаInsert": "EmptySchemeInsert", "ШаблонПодключения": "ConnectionTemplate", +"СтруктураЗначений": "ValueStructure", +"Загрузка картинки": "Image upload", +"Наименование поля": "Field name", +"Работа с моделями": "Models management", +"УдалитьТегиБакета": "DeleteBucketTagging", +"ПрочитатьJSONФайл": "ReadJSONFile", +"Использовать oint": "Use oint", +"НоушнСтраницаБазы": "NotionBasePage", "Отправить локацию": "Send location", +"СписокПодключений": "ConnectionsList", +"Секрет приложения": "Application secret", +"РазбитьURL: Адрес": "SplitURL: Address", +"Заголовок,Позиция": "Title,Item", +"ПрочитатьКаналRSS": "ReadChannelRSS", +"Удалить календарь": "Delete calendar", +"КоличествоПопыток": "RetryCount", +"ВыгрузитьЗначения": "UnloadValues", +"ReportPortal (ОПИ": "ReportPortal (OpenIntegrations", +"Описание картинки": "Image description", +"Запрос (с данными": "Request (with data", "ОтступНовойСтроки": "NewLineTab", "Список метаданных": "Metadata list", "ID целевого поста": "ID of the target post", -"Новое имя объекта": "New object name", -"Путь или ID файла": "Path or ID of the file", -"ПолучитьСообщение": "GetMessage", -"УстановитьWebhook": "SetWebhook", -"единица измерения": "unit", -"УдалитьОбработчик": "RemoveHandler", -"массив ID товаров": "Products IDs array", -"СоздатьБазуДанных": "CreateDatabase", -"Выполнение команд": "Commands execution", -"СтруктураКампании": "CampaignStructure", -"При отправке URL": "When sending URL", -"МассивРазделенный": "SplitsArray", -"ВызватьИсключение": "Raise", -"ЗавершитьОтправку": "CompleteSend", -"МетаданныеСтрокой": "MetadataAsString", -"ИнформацияОбъекта": "ObjectInfo", -"Полученные данные": "Received data", -"ЭтоПредупреждение": "AsAlert", -"код товара ТН ВЭД": "commodity code TN VED", -"Криптография (OPI": "Cryptography (OpenIntegrations", -"СоздатьТвитСВидео": "CreateTweetWithVideo", "ПолучитьСписокБаз": "GetListOfBases", -"ПустаяСхемаInsert": "EmptySchemeInsert", +"СоздатьТвитСВидео": "CreateTweetWithVideo", +"Криптография (OPI": "Cryptography (OpenIntegrations", +"код товара ТН ВЭД": "commodity code TN VED", +"ЭтоПредупреждение": "AsAlert", +"Полученные данные": "Received data", +"ИнформацияОбъекта": "ObjectInfo", +"МетаданныеСтрокой": "MetadataAsString", +"ЗавершитьОтправку": "CompleteSend", +"ВызватьИсключение": "Raise", +"МассивРазделенный": "SplitsArray", +"При отправке URL": "When sending URL", +"СтруктураКампании": "CampaignStructure", +"Выполнение команд": "Commands execution", +"СоздатьБазуДанных": "CreateDatabase", +"массив ID товаров": "Products IDs array", +"УдалитьОбработчик": "RemoveHandler", +"единица измерения": "unit", +"УстановитьWebhook": "SetWebhook", +"ПолучитьСообщение": "GetMessage", +"Путь или ID файла": "Path or ID of the file", "МассивПодключений": "ConnectionsArray", -"VK_СоздатьИсторию": "VK_CreateStory", -"Данные для записи": "Data to be written", -"ПолучитьПолеПочты": "GetEmailField", -"GreenAPI Max (ОПИ": "GreenAPI Max (OpenIntegrations", -"ПолучитьСтрокуURI": "GetURIString", -"СообщениеУдаления": "DeletingMessage", -"ПустаяСхемаCreate": "EmptySchemeCreate", -"ТоварСоСвойством2": "ProductWithProp2", -"Поле1,Поле2,Поле3": "Field1,Field2,Field3", -"СтруктураАтрибута": "AttributeStructure", -"ЗаголовкиДвоичные": "HeadersBinary", -"ФорматПоУмолчанию": "DefaultFormat", -"Очередь сообщений": "Message queue", -"Объект HTTPЗапрос": "HTTPRequest object", -"СоздатьОбсуждение": "CreateDiscussion", -"УдалитьДиректорию": "DeleteDirectory", -"Удаляет лид по ID": "Deletes a lead by ID", -"Работа с задачами": "Tasks management", -"НачальнаяФигурная": "InitialCurly", -"Получить картинки": "Get images", -"ОсновноеИзмерение": "MajorDimension", -"Пост из автотеста": "Post from autotest", -"КалендарьПриемник": "TargetCalendar", -"МассивИзображений": "ImagesArray", -"Возможные команды": "Available commands", -"ЗагрузитьЗначения": "LoadValues", -"Перейти на GitHub": "To GitHub", -"АтрибутКатегории5": "CategoryAttribute5", -"ТестоваяСтруктура": "TestStructure", -"УстановкаНастроек": "SetSettings", -"ЗаполняемыеДанные": "FillableData", -"ОтветКодСостояния": "ResponseStatusCode", -"Токен авторизации": "Auth token", -"Название свойства": "Property name", -"Наш первый клиент": "OurFirstClient", -"Данные для API v2": "Data for API v2", -"АтрибутКатегории4": "CategoryAttribute4", -"СтруктураТелефона": "PhoneStructure", -"ПоследняяФигурная": "LastCurly", -"ДобавитьЗаголовок": "AddHeader", -"ЯДиск_Авторизация": "YDisk_Authorization", -"ТелеграмПереслать": "TelegramReply", -"Обработка запроса": "Request processing", -"oint|#color=Белый": "oint|#color=White", -"Криптография (ОПИ": "Cryptography (OpenIntegrations", -"ЛайкРепостКоммент": "LikeRepostComment", -"ВыгрузитьЗначения": "UnloadValues", "Фильтр документов": "Document filter", -"Администрирование": "Administration", -"ПолучитьНастройку": "GetSetting", -"наименование цели": "goal name", -"ОтносительныеПути": "RelativePaths", -"ГД_СоздатьКаталог": "GD_CreateCatalog", -"СортироватьПоДате": "SortByDate", -"СтруктураРодителя": "ParentStructure", -"400).Равно(Истина": "400).Equal(True", -"ГуглЗначенияЯчеек": "GoogleCellValues", -"По умолчанию: `5`": "By default: `5`", -"Тестовая кампания": "TestCampaign", -"С TLS настройками": "With TLS settings", -"СгенерироватьРечь": "GenerateSpeech", -"Создать календарь": "Create calendar", -"УстановитьКоманду": "SetCommand", -"АТ_СоздатьТаблицу": "AT_CreateTable", -"КонецКодовПадений": "EndOfFailureCodes", -"./docs/ru/results": "./docs/en/results", -"ЯДискСписокФайлов": "YaDiskFilesList", -"или описание базы": "or description of the base", -"Название подборки": "Selection name", -"ОбщийРазмер Тогда": "TotalSize Then", -"ИзменитьСообщение": "EditMessage", -"ПустаяСхемаDelete": "EmptySchemeDelete", -"ЗапросРазмерЧасти": "RequestPartSize", -"ОписаниеПараметра": "ParamDescription", -"Получить штрихкод": "Get barcode", -"ОпросСоответствие": "PollMap", -"СтруктураРасходов": "ExpenseStructure", -"ШаблонОшибкиПолей": "FieldsErrorPattern", -"СоздатьУдалитьТег": "CreateDeleteTag", -"Ничего особенного": "Nothing special", -"КодироватьURLВURL": "EncodeURLInURL", -"Определение полей": "Definition of fields", -"Удалить коллекцию": "Delete collection", -"фильтр по статусу": "filter by status", -"НачатьУчетВремени": "StartTimekeeping", -"ЗначениеЗаголовка": "HeaderValue", -"КалендарьИсточник": "SourceCalendar", -"СоздатьПодписьURL": "CreateURLSignature", -"ЗначениеКоллекции": "CollectionValue", -"СтруктураВарианта": "OptionStructure", -"НеобходимыйРазмер": "RequiredSize", -"Google Drive (ОПИ": "Google Drive (OpenIntegrations", -"ФайлТелаВременный": "BodyTemporaryFile", -"Перейти по адресу": "Go to the", -"ЗакрытьСоединение": "CloseConnection", -"GR_ОсновныеМетоды": "GR_CommonMethods", -"ID важной новости": "Id of important post", "РезультатЗагрузки": "UploadResult", -"Проверка_ВКАльбом": "Check_VKAlbum", -"РезультатПроверки": "CheckResult", -"УдалитьБазуДанных": "DeleteDatabase", -"КопироватьКаталог": "CopyFolder", -"ТекстовыйДокумент": "TextDocument", -"Удалить сообщение": "Delete message", -"ИзменитьКалендарь": "UpdateCalendar", -"СоздатьДиректорию": "CreateDirectory", -"полное содержимое": "full content", -"Название компании": "Company name", -"ГТ_СоздатьТаблицу": "GT_CreateTable", -"ВК_ЗагрузитьВидео": "VKAPI_UploadVideo", -"Содержимое ссылки": "Link data", -"ГуглЦветКалендаря": "GoogleCalendarColors", -"Управление чатами": "Chat management", -"ОткрытьОбсуждение": "OpenDiscussion", -"ОсновнаяСтруктура": "MainStructure", -"НовоеРасположение": "NewLocation", -"Создать фид (Atom": "Create feed (Atom", -"ОбновитьДокументы": "UpdateDocuments", -"НаписатьСообщение": "WriteMessage", -"СтруктураОперации": "OperationStructure", +"ПолучитьНастройку": "GetSetting", "ОтветСоответствие": "ResponseMap", +"СтруктураОперации": "OperationStructure", +"НаписатьСообщение": "WriteMessage", +"ОбновитьДокументы": "UpdateDocuments", +"Создать фид (Atom": "Create feed (Atom", +"НовоеРасположение": "NewLocation", +"ОсновнаяСтруктура": "MainStructure", +"ОткрытьОбсуждение": "OpenDiscussion", +"Управление чатами": "Chat management", "СтрЧислоВхождений": "StrOccurrenceCount", +"ГуглЦветКалендаря": "GoogleCalendarColors", +"ВК_ЗагрузитьВидео": "VKAPI_UploadVideo", +"ГТ_СоздатьТаблицу": "GT_CreateTable", +"Название компании": "Company name", +"полное содержимое": "full content", +"СоздатьДиректорию": "CreateDirectory", +"ИзменитьКалендарь": "UpdateCalendar", +"Удалить сообщение": "Delete message", +"ТекстовыйДокумент": "TextDocument", +"КопироватьКаталог": "CopyFolder", +"Содержимое ссылки": "Link data", "Журналы сообщений": "Message logs", "ОткрытьСоединение": "CreateConnection", "РазмерБлока Тогда": "BlockSize Then", -"РезультатОткрытия": "OpeningResult", -"ОтправкаВЗакрытое": "SendingToClosed", -"УдалитьТемуФорума": "DeleteForumTopic", -"Тестовый Atom фид": "Test Atom feed", -"ЗагрузитьСценарий": "LoadScript", -"Включение сервиса": "Enable service - ", -"СоздатьСоединение": "CreateConnection", -"ПолучитьХранилище": "GetStorage", -"Поддержать проект": "Support us", -"Завершить элемент": "Finish item", -"Копировать модель": "Copy model", -"ПодготовитьЗапись": "PrepareRecord", -"Объект соединения": "Connection object", -"НачалоКодовОшибок": "StartOfErrorCodes", -"300).Равно(Истина": "300).Equal(True", -"ЗначениеЗаполнено": "ValueIsFilled", -"ПолучитьДокументы": "GetDocuments", -"Не установлен URL": "URL is not set", -"ИзменитьИмяГруппы": "UpdateGroupName", "АтрибутКатегории3": "CategoryAttribute3", -"ПолучитьАссистента": "RetrieveAssistant", -"Новое имя варианта": "New variant name", -"Отправить документ": "Send document", -"Проверка_ЯДискДиск": "Check_YaDiskDrive", -"Таймаут соединения": "Connection timeout", -"ВыполнитьЗапросSQL": "ExecuteSQLQuery", -"ОсновнойОбработчик": "MainHandler", -"РаботаСоСтраницами": "PageManagement", -"СтандартнаяЕдиница": "StandardUnit", -"ТекущаяДлина Тогда": "CurrentLength Then", -"Статус отправления": "Shipment status", -"ЗапросПользователь": "RequestUser", -"СекретПользователя": "UsersSecret", -"РаботаСКоллекциями": "CollectionManagement", -"ДлительностьОпроса": "PollDuration", -"ПолучитьОбновления": "GetUpdates", -"Архивировать канал": "Archive channel", -"Отправка сообщений": "Messages sending", -"СуществующаяГруппа": "ExistingGroup", -"Поток тела запроса": "Request body stream", -"ПолучитьЧекиНаДату": "GetCashboxChecksByDate", -"ИспользоватьПрокси": "UseProxy", -"ЗакрепитьСообщение": "PinMessage", -"Маркетинговый цвет": "Marketing color", -"СтруктураКалендаря": "CalendarsStructure", -"РазобратьАргументы": "ParseArgs", -"УдалитьКомментарий": "DeleteComment", -"ЛокацияОтправления": "SendLocation", -"Dropbox_УдалитьТег": "Dropbox_DeleteTag", -"Написать сообщение": "Write a message", -"ВключитьЗвукЗадачи": "UnmuteTask", -"ДополнительныйЦвет": "SecondaryColor", -"Google Sheets (ОПИ": "Google Sheets (OpenIntegrations", -"ПереданныйПараметр": "PassedParameter", -"БитриксАвторизация": "BitrixAuth", -"УдалитьТегиОбъекта": "DeleteObjectTagging", -"Создать твит гифки": "Create gif tweet", -"ПринятьЗадачу (хук": "ApproveTask (wh", -"Значение заголовка": "Header value", -"ПравильныйВариант5": "CorrectVariant5", -"Удаляет файл по ID": "Delete file by ID", -"Создать ассистента": "Create assistant", -"Новая таблица (изм": "New table (change", -"УстановитьJsonТело": "SetJsonBody", -"Получем на сервере": "Recieve on server", -"ПривязатьШтрихкоды": "BindBarcodes", -"ВайберПользователь": "ViberUser", -"ИгнорироватьПустой": "IgnoreEmpty", -"Получить хранилище": "Get storage", -"Тестовый заголовок": "TestTitle", -"ПоследнийКодУспеха": "LastSuccessCode", -"Новое наименование": "New name", -"СкачатьМодель (bay": "PullModel (bay", -"ЧЦ=10; ЧДЦ=0; ЧГ=0": "ND=10; NFD=0; NG=0", -"УдалитьУведомление": "DeleteNotification", -"Переместить объект": "Move object", -"ПолучитьДанныеЧата": "GetChatData", -"Логин пользователя": "Users login", -"Удаляет пост по id": "Deletes a post by ID", -"ДополнитьЗаголовки": "CompleteHeaders", -"ОтправитьФайл (хук": "SendFile", -"ПроцессорГенерации": "GenerationProcessor", -"Анонимность опроса": "Poll anonymity", -"ОтправитьВидео (ДД": "SendVideo (DD", -"Обновить документы": "Update documents", -"НазначитьСнятьРоль": "GrantRevokeRole", -"ID книги источника": "Source spreadsheet ID", -"ЭтоСтроковыйФормат": "IsStringFormat", -"СуществующийЗапуск": "ExistingLaunch", -"S3НеПоддерживается": "S3NotImplemented", -"УдалитьОбъект (URL": "DeleteObject (URL", -"Команда отсуствует": "The command is not available", -"ДанныеПользователя": "UserData", -"СтруктураШтрихкода": "BarcodeStructure", -"УстановитьFormТело": "SetFormBody", -"ЯДиск_СоздатьПапку": "YDisk_CreateFolder", -"ОзонМассивОбъектов": "OzonObjectsArray", -"ИнформацияОбОшибке": "ErrorInfo", -"Команда FTP: `CWD`": "FTP Command: `CWD`", -"Ширина товара в мм": "Product width in mm", -"Новый подкаталог 2": "New subfolder 2", -"ИзменитьТемуФорума": "EditForumTopic", -"Получает лид по ID": "Gets a lead by ID", -"ЗапросПараметрыURL": "RequestURLParams", -"Проверка_ВКИстория": "Check_VKStory", -"СуществующиеНаборы": "ExistingSets", -"Удалить ассистента": "Delete assistant", -"Высота товара в мм": "Product height in mm", -"ПолучитьПолеСсылки": "GetLinkField", -"СтруктураАналитики": "AnalyticsStructure", -"Объект TCP сервера": "TCP server object", -"ПереместитьКаталог": "MoveFolder", -"СоздатьЗадачу (хук": "CreateTask (wh", -"Создать подкаталог": "Create new subfolder", -"Количество попыток": "Retry count", -"ВнутреннийАдресFTP": "FTPInternalAddress", -"ОтветИнициализации": "InitializationResponse", -"ПреобразоватьСвязь": "ConvertLink", -"Команда CLI: tools": "CLI Command: tools", -"Работа с объектами": "Objects management", -"ОжидатьПодключения": "AwaitConnections", -"ОтправитьСообщение": "SendMessage", -"ИмяТекущегоОбъекта": "CurrentObjectName", -"Работа со сделками": "Deals management", -"ОтправитьФайлПоURL": "SendFileByURL", -"Проверка_Структура": "Check_Structure", -"ОбработанныеДанные": "ProcessedData", -"URL источник файла": "URL source of the file", -"УдалитьВнешнийФайл": "DeleteExternalFile", -"заголовок элемента": "item title", -"Имя : title": "Name : title", -"Копировать каталог": "Copy folder", -"УправлениеГруппами": "GroupManagement", -"Проверка кодировки": "Encoding check", -"Управление тестами": "Test management", -"Получить поле (url": "Get field (url", -"ПреобразоватьТекст": "ConvertText", -"РаботаСДокументами": "DocumentsManagement", -"ЗавершитьПолучение": "FinishReceiving", -"ФинальноеСообщение": "FinalMessage", -"СоответствиеТаблиц": "TableMapping", -"ТекущаяВложенность": "CurrentNesting", -"РазбитьURL: Сервер": "SplitURL: Host", -"Создать твит видео": "Create video tweet", -"ТекущийСписокОпций": "CurrentOptionList", -"МассивОбязательных": "RequiredArray", -"ИдентификаторФайла": "FileID", -"название календаря": "calendars name", -"ПолучитьURLСервиса": "GetServiceURL", -"СоответствиеОтвета": "ResponseMapping", -"Активный : green": "Active : green", -"Строка подключения": "Connection string", -"СтруктураСообщения": "MessageStructure", -"Тестовое сообщение": "TestMessage", -"Подключаем клиента": "Connect client", -"СледующаяКоллекция": "NextCollection", -"МножественныйВыбор": "MultipleSelect", -"РаботаСХранилищами": "StoragesManagement", -"ЗаписатьЭлементXML": "WriteXMLItem", -"РаботаССообщениями": "MessageManagement", -"ПреобразоватьПочту": "ConvertEmail", -"Получить квитанцию": "Get receipt", -"Название кодировки": "Encoding name", -"КаноническийЗапрос": "CanonicalRequest", -"УдалитьЗадачу (хук": "DeleteTask (wh", -"СоздатьКомментарий": "CreateComment", -"ЗапросЧтениеДанных": "RequestDataReader", -"Б24_СерверноеВремя": "B24_ServerTime", -"АрхивироватьТовары": "ArchiveProducts", -"Команда FTP: `PWD`": "FTP Command: `PWD`", -"Дата, Неопределено": "Date, Undefined", -"СохранениеНастроек": "SettingsSaving", -"ПолучитьИнформацию": "GetData", -"СоответствиеФайлов": "FileMapping", -"Наименование метки": "Tag title", -"Создать директорию": "Create directory", -"Получить документы": "Get documents", -"VK_УдалитьКартинку": "VK_DeleteImage", -"ИзменитьАватарЧата": "ChangeChatPicture", -"Открыть соединение": "Create connection", -"ПравильныйВариант6": "CorrectVariant6", -"ОчередноеСообщение": "NextMessage", -"ПарольПользователя": "UserPassword", -"VK_УдалитьПодборку": "VK_DeleteSelection", -"URL сервера OpenAI": "OpenAI server URL", -"МассивКлючЗначение": "KeyValueArray", -"ДобавитьСортировку": "AddSorting", -"УдалитьСделку (хук": "DeleteDeal (wh", -"НайтиПользователей": "FindUsers", -"ПравильныйВариант7": "CorrectVariant7", -"!OInt КБайт = 1024": "!OInt KB = 1024", -"ТолькоУОтправителя": "ForSenderOnly", -"внешний вид товара": "product appearance", -"ИмяПараметраФормат": "FormatParameterName", -"По логину и паролю": "By login and password", -"HTTP_УстановкаТела": "HTTP_BodySet", -"СформироватьЗапрос": "FormRequest", -"Текст новых правил": "Text of the new rules", -"ПолучитьАватарЧата": "GetChatAvatar", -"СтруктураДокумента": "DocumentStructure", -"Лёгкость внедрения": "Easy to use", -"Создает новую роль": "Creates a new role", -"Работа с доступами": "Access management", -"ЛимитПользователей": "UserLimit", -"Создать твит опрос": "Create poll tweet", -"ЗначенияПараметров": "ParameterValues", -"СоздатьУдалитьБлок": "CreateDeleteBlock", -"РазархивироватьЧат": "UnarchiveChat", -"HTTP метод запроса": "Request HTTP method", -"ЗагрузитьУдалитьВФ": "UploadDeleteExternalFile", -"ПроксиПользователь": "ProxtUser", -"Токен пользователя": "User token", -"СоздатьПодключение": "CreateConnection", -"ПравильныйВариант2": "CorrectVariant2", -"Идентификатор базы": "Base identifier", -"УправлениеДиалогом": "DialogManagement", -"ОзонУдалениеТовара": "OzonProductsDeleting", -"РазмерСжатыхДанных": "CompressedDataSize", -"ID группового чата": "Group chat ID", -"Б24_РаботаСТокеном": "B24_TokenManagement", -"Команда FTP: `RMD`": "FTP Command: `RMD`", -"ИнформацияОТаблице": "TableInformation", -"Удаляет блок по ID": "Deletes block by ID", -"HTTP_Инициализация": "HTTP_Initialization", -"Report portal (ОПИ": "Report portal (OpenIntegrations", -"МассивСтрокТоваров": "ItemsStringsArray", -"Открыть обсуждение": "Open discussion", -"MSS_ОсновныеМетоды": "MSS_CommonMethods", -"Создать обсуждение": "Create discussion", -"РазмерПрефиксаGZip": "GZipPrefixSize", -"ПараметрВКоллекцию": "ParameterToCollection", -"Закрыть обсуждение": "Close discussion", -"ЗапросВыходнойФайл": "RequestOutputFile", -"ЧислоПереадресаций": "RedirectCount", -"Соответствие полей": "Fields map", -"ЗаполнятьИсточники": "FillSources", -"полный домен сайта": "full site domain", -"Во-вторых, стильно": "Description", -"КодированныеДанные": "EncodingString", -"Фильтр по родителю": "Filter by parent ID", -"ДобавитьОбработчик": "AddHandler", -"ОткрепитьСообщение": "UnpinMessage", -"Сгенерировать речь": "Generate speech", -"ДополнительныеФото": "AdditionalPhotos", -"ФормированиеБлоков": "BlockFormation", -"ПолучитьОбщийМакет": "GetCommonTemplate", -"СтруктураОбработки": "ProcessedStructure", -"Обработка запросов": "Requests processing", -"РаботаСЖивойЛентой": "FeedPostsManagement", -"СоздатьСделку (хук": "CreateDeal (wh", -"СкопироватьКаталог": "MakeFolderCopy", -"КаталогКомпонентOS": "AddInsFolderOS", -"СтруктураВариантов": "VariantStructure", -"ПолучитьТоварыПоИД": "GetProductsByID", -"ПравильныйВариант4": "CorrectVariant4", -"Непонятная колонка": "An obscure column", -"КвалификаторыЧисла": "NumberQualifiers", -"БитриксУчетВремени": "BitrixTimekeeping", -"ОбработанныйЗапрос": "ProcessedRequest", -"ПолучитьКомпоненту": "GetAddIn", -"Тип данных колонки": "Column data type", -"фильтрация роботов": "robots filtration", -"С JWT авторизацией": "With JWT authorization", -"ОтправитьГифку (ДД": "SendGif (DD", -"МассивСертификатов": "CertificatesArray", -"ПолеИдентификатора": "IdentifierField", -"ЗакрытьПодключение": "CloseConnection", -"Клиентский возврат": "Customer refund", -"МассивСтрокиКнопок": "ButtonsLineArray", -"Идентификатор чата": "Chat identifier", -"ОчиститьДиректорию": "ClearDirectory", -"НС_ПолучениеДанных": "NC_DataRetrieving", -"ТотЖеДокумент.docx": "SameDoc.docx", +"СтруктураВозврата": "ReturnStructure", +"ИзменитьИмяГруппы": "UpdateGroupName", +"Не установлен URL": "URL is not set", +"ПолучитьДокументы": "GetDocuments", +"ЗначениеЗаполнено": "ValueIsFilled", +"300).Равно(Истина": "300).Equal(True", +"НачалоКодовОшибок": "StartOfErrorCodes", +"Объект соединения": "Connection object", +"ПодготовитьЗапись": "PrepareRecord", +"Копировать модель": "Copy model", +"Завершить элемент": "Finish item", +"Поддержать проект": "Support us", +"ПолучитьХранилище": "GetStorage", +"СоздатьСоединение": "CreateConnection", +"Включение сервиса": "Enable service - ", +"ЗагрузитьСценарий": "LoadScript", +"Тестовый Atom фид": "Test Atom feed", +"УдалитьТемуФорума": "DeleteForumTopic", +"ОтправкаВЗакрытое": "SendingToClosed", +"РезультатОткрытия": "OpeningResult", +"УдалитьБазуДанных": "DeleteDatabase", +"РезультатПроверки": "CheckResult", +"Проверка_ВКАльбом": "Check_VKAlbum", +"ID важной новости": "Id of important post", +"ИзменитьСообщение": "EditMessage", +"ОбщийРазмер Тогда": "TotalSize Then", +"Название подборки": "Selection name", +"или описание базы": "or description of the base", +"ЯДискСписокФайлов": "YaDiskFilesList", +"./docs/ru/results": "./docs/en/results", +"КонецКодовПадений": "EndOfFailureCodes", +"АТ_СоздатьТаблицу": "AT_CreateTable", +"УстановитьКоманду": "SetCommand", +"Создать календарь": "Create calendar", +"СгенерироватьРечь": "GenerateSpeech", +"С TLS настройками": "With TLS settings", +"Тестовая кампания": "TestCampaign", +"По умолчанию: `5`": "By default: `5`", +"ГуглЗначенияЯчеек": "GoogleCellValues", +"400).Равно(Истина": "400).Equal(True", +"СтруктураРодителя": "ParentStructure", +"СортироватьПоДате": "SortByDate", +"ГД_СоздатьКаталог": "GD_CreateCatalog", +"ОтносительныеПути": "RelativePaths", +"наименование цели": "goal name", +"ПустаяСхемаDelete": "EmptySchemeDelete", +"Администрирование": "Administration", +"ЗапросРазмерЧасти": "RequestPartSize", +"Получить штрихкод": "Get barcode", +"GR_ОсновныеМетоды": "GR_CommonMethods", +"ЗакрытьСоединение": "CloseConnection", +"Перейти по адресу": "Go to the", +"ФайлТелаВременный": "BodyTemporaryFile", +"Google Drive (ОПИ": "Google Drive (OpenIntegrations", +"НеобходимыйРазмер": "RequiredSize", +"СтруктураВарианта": "OptionStructure", +"ЗначениеКоллекции": "CollectionValue", +"СоздатьПодписьURL": "CreateURLSignature", +"КалендарьИсточник": "SourceCalendar", +"ЗначениеЗаголовка": "HeaderValue", +"НачатьУчетВремени": "StartTimekeeping", +"фильтр по статусу": "filter by status", +"Удалить коллекцию": "Delete collection", +"Определение полей": "Definition of fields", +"КодироватьURLВURL": "EncodeURLInURL", +"Ничего особенного": "Nothing special", +"СоздатьУдалитьТег": "CreateDeleteTag", +"ШаблонОшибкиПолей": "FieldsErrorPattern", +"СтруктураРасходов": "ExpenseStructure", +"ОпросСоответствие": "PollMap", +"ОписаниеПараметра": "ParamDescription", +"Очень важный файл": "Very important file", +"КаталогБиблиотеки": "LibraryDirectory", +"ЛокацияНазначения": "DestLocation", +"Проверка, обратно": "Check, back", +"Структура запроса": "Request structure", +"ПереместитьОбъект": "MoveObject", +"ЭтоПримитивныйТип": "IsPrimitiveType", +"Восстановить файл": "Restore file", +"Номер заказа СДЭК": "CDEK order number", +"ПолучитьЧекЗаказа": "GetCashboxCheck", +"ТаблицаПараметров": "ParametersTable", +"Управление ролями": "Role management", +"Б24_РаботаСЛидами": "B24_LeadsManagement", +"СтруктураУдаления": "DeletionStructure", +"Вернуть настройки": "Return settings", +"Картинка автотест": "AutoTestImage", +"СоздатьАссистента": "CreateAssistant", +"МассивНедостающих": "MissingArray", +"ПреобразоватьДату": "ConvertDate", +"СписокИсключаемых": "ExcludedList", +"Проверка_ВКИстина": "Check_VKTrue", +"СтруктураРазмеров": "SizesStructure", +"ДлинаПолоски Цикл": "BarLength Do", +"ПереименоватьФайл": "RenameFile", +"УправлениеТоваром": "ProductManagement", +"ВложенныеЭлементы": "NestedElements", +"Массив ID товаров": "Array of product IDs", +"УправлениеЗадачей": "ManageTask", +"Файловые хостинги": "File-hosting services", +"ВыходнаяКоллекция": "OutputCollection", +"ЛокальныеКаталоги": "LocalFolders", +"ЗакрытьТемуФорума": "CloseForumTopic", +"ОбъектКомментарий": "CommentObject", +"КабинетыИМагазины": "CampaignsAndBusiness", +"ПользователиИРоли": "UsersAndRoles", +"ОтправитьКартинку": "SendImage", +"Тестовая подборка": "TestCollection", +"Создать штрихкоды": "Create barcodes", +"Работа с товарами": "Products management", +"ОжидаютсяДвоичные": "ExpectedBinary", +"FT_РаботаСФайлами": "FT_FileOperations", +"МаркетинговыйЦвет": "MarketingColor", +"ВременнаяМеткаISO": "ISOTimestamp", +"ЭлементСтатистики": "StatisticsItem", +"Получить страницу": "Get page", +"НеВосстанавливать": "DontRestore", +"календарь для CRM": "calendar for CRM", +"УстановитьТаймаут": "SetTimeout", +"Локализация офиса": "Localization of the office", +"Удалить документы": "Delete documents", +"ПодходящийТипУзла": "RelevantNodeType", +"СтруктураПродавца": "SellerStructure", +"Описание контакта": "Contact description", +"СтруктураНастроек": "SettingsStructure", +"ОбернутоеЗначение": "CoveredValue", +"СлакСписокКаналов": "SlackChannelsList", +"CH_ОсновныеМетоды": "CH_CommonMethods", +"НС_РаботаСФайлами": "NC_FilesManagement", +"УправлениеСделкой": "ManageDeal", +"ВозобновитьЗадачу": "RenewTask", +"НачалоКодовУспеха": "StartOfSuccessCodes", +"ОткрытьйПотокGRPC": "OpenGRPCStream", +"Обработать запрос": "Process request", +"ID целевой группы": "Group ID", +"СоответствиеФайла": "FileMapping", +"ЗагруженныеДанные": "UploadedData", +"ПолучитьКоллекцию": "GetCollection", +"ИнформацияИндекса": "IndexInformation", +"ПолучитьLocalhost": "GetLocalhost", +"Проверить аккаунт": "Check account", +"Б24_РаботаСЧатами": "B24_ChatManagement", +"УдалитьАссистента": "DeleteAssistant", +"Команда.Пояснение": "Command.Explanation", +"СтрокаПодключения": "ConnectionString", +"Дата : date": "Date : date", +"СтандартныйСпособ": "StandardMethod", +"ЗагрузитьФайл (дд": "UploadFile (bd", +"СохранятьЛокально": "SaveLocally", +"Файл для отправки": "File for sending", +"История сообщений": "Message history", +"Контекст.Вставить": "Context.Insert", +"Маркировка товара": "Product marking", +"Это сервер !NOCLI": "Is server !NOCLI", +"ПустаяСхемаUpdate": "EmptySchemeUpdate", +"Строка, Структура": "String, Structure", +"описание элемента": "element description", +"Файл для загрузки": "File for upload", +"СкопироватьОбъект": "CopyObject", +"СтруктураВозраста": "AgeStructure", +"Почтовые вложения": "Mail attachments", +"Проверка_ВКРепост": "Check_VKRepost", +"ПолучитьБлокФайла": "GetFileBlock", +"ВернутьСоединение": "ReturnConnection", +"НаправлениеПоиска": "SearchDirection", +"истории изменений": "changes history", +"Заголовок новости": "Post title", +"МассивРезультатов": "ResultArray", +"Структура модулей": "Structure of modules", +"СообщитьРезультат": "ReportResult", +"АтрибутКатегории2": "CategoryAttribute2", +"Копировать объект": "Copy object", +"РаботаСКаталогами": "CatalogsManagement", +"ПолучитьКвитанцию": "GetReceipt", +"СтруктураКартинки": "PictureStructure", +"ХешированиеДанных": "DataHashing", +"СтруктураСчетчика": "CounterStructure", +"СтруктураФильтра2": "FilterStructure2", +"СоответствиеПолей": "FieldMapping", +"Игровые приставки": "Consoles", +"Файлы Мессенджера": "Messenger files", +"АтрибутКатегории1": "CategoryAttribute1", +"УправлениеБакетом": "BucketManagement", +"Структура фильтра": "Filter structure", +"УстановитьИмяБазы": "SetBaseName", +"Имя файла в Slack": "File name in Slack", +"ПрочитатьВсе (хук": "ReadAll (wh", +"ВнешнееСоединение": "ExternalConnection", +"СтруктураЭлемента": "ElementStructure", +"Новый комментарий": "NewComment", +"ВКВариантСвойства": "VKPropVariant", +"ПустаяСхемаSelect": "EmptySchemeSelect", +"описание дефектов": "defect description", +"Получить преалерт": "Get prealert", +"ЗапросАдресПолный": "RequestAdressFull", +"Тестовое описание": "TestDescription", +"МассивНапоминаний": "RemindersArray", +"ВставитьДокументы": "InsertDocuments", +"ТелеграмСообщение": "TelegramMessage", +"ПродолжатьВыборку": "ContinueGetting", +"FT_ОсновныеМетоды": "FT_CommonMethods", +"Проверка_ГКОбъект": "Check_GKObject", +"SF_РаботаСФайлами": "SF_FileManagement", +"ОтправкаСообщений": "MessageSending", +"Расширенный вызов": "Advanced call", +"ТоварСоСвойством1": "ProductWithProp1", +"ЗначениеЛокальный": "LocalValue", +"ЗапросТелоТекущий": "RequestBodyCurrent", +"В канал, на диске": "To channel, on disk", +"SF_ОсновныеМетоды": "SF_CommonMethods", +"ОпубликоватьПапку": "PublishFolder", +"По умолчанию: `0`": "By default: `0`", +"ОтсутствующиеПоля": "MissingFields", +"Текст уведомления": "Notification text", +"Создать коллекцию": "Create collection", +"Отправить контакт": "Send contact", +"HTTP_ОсновныеТест": "HTTP_MainTests", +"название элемента": "element name", +"Задание выполнено": "Job Completed", +"100).Равно(Истина": "100).Equal(True", +"ОзонАПИ_Штрихкоды": "OzonAPI_Barcodes", +"ЗаголовокАккаунта": "AccountHeader", +"Ресурс привилегии": "Privilege resource", +"КаталогИсходников": "SourceDirectory", +"ТекущаяДатаСтрока": "CurrentDateString", +"Работа с заказами": "Orders management", +"МинимальныйРазмер": "MinimumSize", +"СтруктураФильтра1": "FilterStructure1", +"УправлениеТестами": "TestManagement", +"ТекущийТипСтрокой": "CurrentTypeString", +"ПодготовитьСтроку": "PrepareString", +"ТекущаяДатаСеанса": "CurrentSessionDate", +"ID блока родителя": "Parent block ID", +"РазбитьURL: Домен": "SplitURL: Domain", +"СтруктураУпаковки": "PackageStructure", +"Обработка событий": "Event handling", +"ЗначениеПараметра": "ParameterValue", +"Работа с группами": "Group management", +"СоздатьПодкаталог": "CreateSubfolder", +"ОбработкаЗапросов": "RequestsProcessing", +"СтруктураОстатков": "StocksStructure", +"Скрытый календарь": "Hidden calendar", +"МаксимальнаяДлина": "MaximumLength", +"ОтправитьДокумент": "SendDocument", +"ПараметрЛокальный": "LocalParameter", +"ЗакрытьОбсуждение": "CloseDiscussion", +"Проверка_ВайберОк": "Check_ViberOk", +"Это данные ячейки": "These are cell data of", +"АрхивироватьКанал": "ArchiveChannel", +"Б24_РаботаСДиском": "B24_WorkingWithDrive", +"Выполнить команду": "Execute command", +"УправлениеМетками": "TagsManagement", +"Текст комментария": "Comment text", +"Работа с бакетами": "Buckets management", +"вес в кг. (брутто": "weight, kg (gross", +"СлакИсторияКанала": "SlackChannelHistory", +"Пакет oint (.ospx": "oint package (.ospx)", +"СоответствиеТипов": "TypesMap", +"Значение свойства": "Property value", +"СоздатьТемуФорума": "CreateForumTopic", +"ОткрытьТемуФорума": "OpenForumTopic", +"СтруктураЭкспорта": "ExportStructure", +"особый тип товара": "specific product type", +"Отчество контакта": "Contacts patronymic or middle name", +"ВККартинкаАльбома": "VKAlbumPicture", +"ВК_СоздатьИсторию": "VKAPI_CreateStory", "ОтправитьФайл (URL": "SendFile (URL", "МассивКлючевыхСлов": "KeyWordArray", "Работа со складами": "Warehouses management", -"СтруктураИнформера": "InformerStructure", +"ОбработатьПараметр": "ProcessParameter", "ПереслатьСообщения": "ForwardMessages", "ГринКартинкаГруппы": "GreenGroupPicture", -"ОбработатьПараметр": "ProcessParameter", +"ТотЖеДокумент.docx": "SameDoc.docx", +"СтруктураИнформера": "InformerStructure", +"НС_ПолучениеДанных": "NC_DataRetrieving", +"Клиентский возврат": "Customer refund", +"Идентификатор чата": "Chat identifier", +"МассивСтрокиКнопок": "ButtonsLineArray", +"ЗакрытьПодключение": "CloseConnection", +"ПолеИдентификатора": "IdentifierField", +"МассивСертификатов": "CertificatesArray", +"ОтправитьГифку (ДД": "SendGif (DD", +"С JWT авторизацией": "With JWT authorization", +"фильтрация роботов": "robots filtration", "ПереслатьСообщение": "ForwardMessage", +"ОчиститьДиректорию": "ClearDirectory", "РаботаСПолямиЗадач": "CustomTasksFieldsManagement", -"Заголовок страницы": "Page title", -"РазбитьURL: Секция": "SplitURL: Section", -"НачальнаяТабуляция": "InitialTab", -"РазлогинитьИнстанс": "LogoutInstance", -"Работа с новостями": "Posts management", -"ЗагрузитьМедиафайл": "UploadMediaFile", -"ГТ_ПолучитьТаблицу": "GT_GetTable", -"ПолучитьИДКартинки": "GetImageID", -"РезультатОбработки": "ProcessingResult", -"Закрыть соединение": "Close connection", -"РаботаСКалендарями": "CalendarsManagement", -"ПолучитьПолеФлажка": "GetCheckboxField", -"Команда FTP: `MKD`": "FTP Command: `MKD`", -"ОтправитьАудио (ДД": "SendAudio (DD", -"Опубликовать папку": "Publish folder", -"ОпубликоватьОбъект": "PublishObject", -"ГринОчисткаОчереди": "GreenQueueClearing", -"Изменить сообщение": "Edit message", -"OPI_ЗапросыHTTP.os": "OPI_HTTPRequests.os", -"ул. Пушкина, д. 10": "Pushkin st., b. 10", -"Получить сообщение": "Get message", -"ЗагрузитьФайл (URL": "UploadFile (URL", "БитриксКомментарий": "BitrixComment", +"РазбитьURL: Секция": "SplitURL: Section", +"ЗагрузитьФайл (URL": "UploadFile (URL", +"Получить сообщение": "Get message", +"ул. Пушкина, д. 10": "Pushkin st., b. 10", +"OPI_ЗапросыHTTP.os": "OPI_HTTPRequests.os", +"Изменить сообщение": "Edit message", +"ГринОчисткаОчереди": "GreenQueueClearing", +"ОпубликоватьОбъект": "PublishObject", +"Опубликовать папку": "Publish folder", +"ОтправитьАудио (ДД": "SendAudio (DD", +"Заголовок страницы": "Page title", +"Команда FTP: `MKD`": "FTP Command: `MKD`", +"РаботаСКалендарями": "CalendarsManagement", +"Закрыть соединение": "Close connection", +"РезультатОбработки": "ProcessingResult", +"ПолучитьИДКартинки": "GetImageID", +"ГТ_ПолучитьТаблицу": "GT_GetTable", +"ЗагрузитьМедиафайл": "UploadMediaFile", +"Работа с новостями": "Posts management", +"РазлогинитьИнстанс": "LogoutInstance", +"НачальнаяТабуляция": "InitialTab", +"ПолучитьПолеФлажка": "GetCheckboxField", +"Тип данных колонки": "Column data type", +"Во-вторых, стильно": "Description", +"ОбработанныйЗапрос": "ProcessedRequest", +"Закрыть обсуждение": "Close discussion", +"ПараметрВКоллекцию": "ParameterToCollection", +"РазмерПрефиксаGZip": "GZipPrefixSize", +"Создать обсуждение": "Create discussion", +"MSS_ОсновныеМетоды": "MSS_CommonMethods", +"Открыть обсуждение": "Open discussion", +"МассивСтрокТоваров": "ItemsStringsArray", +"Report portal (ОПИ": "Report portal (OpenIntegrations", +"HTTP_Инициализация": "HTTP_Initialization", +"ЗапросВыходнойФайл": "RequestOutputFile", +"Удаляет блок по ID": "Deletes block by ID", +"Команда FTP: `RMD`": "FTP Command: `RMD`", +"Б24_РаботаСТокеном": "B24_TokenManagement", +"ID группового чата": "Group chat ID", +"РазмерСжатыхДанных": "CompressedDataSize", +"ОзонУдалениеТовара": "OzonProductsDeleting", +"УправлениеДиалогом": "DialogManagement", +"Идентификатор базы": "Base identifier", +"ПравильныйВариант2": "CorrectVariant2", "OAI_РаботаСФайлами": "OAI_FileManagement", +"ИнформацияОТаблице": "TableInformation", +"ЧислоПереадресаций": "RedirectCount", +"Соответствие полей": "Fields map", +"ЗаполнятьИсточники": "FillSources", +"БитриксУчетВремени": "BitrixTimekeeping", +"КвалификаторыЧисла": "NumberQualifiers", +"Непонятная колонка": "An obscure column", +"ПравильныйВариант4": "CorrectVariant4", +"ПолучитьТоварыПоИД": "GetProductsByID", +"СтруктураВариантов": "VariantStructure", +"КаталогКомпонентOS": "AddInsFolderOS", +"СкопироватьКаталог": "MakeFolderCopy", +"СоздатьСделку (хук": "CreateDeal (wh", +"РаботаСЖивойЛентой": "FeedPostsManagement", +"Обработка запросов": "Requests processing", +"СтруктураОбработки": "ProcessedStructure", +"ПолучитьОбщийМакет": "GetCommonTemplate", +"ФормированиеБлоков": "BlockFormation", +"ДополнительныеФото": "AdditionalPhotos", +"Сгенерировать речь": "Generate speech", +"ОткрепитьСообщение": "UnpinMessage", +"ДобавитьОбработчик": "AddHandler", +"Фильтр по родителю": "Filter by parent ID", +"КодированныеДанные": "EncodingString", +"полный домен сайта": "full site domain", +"ПолучитьКомпоненту": "GetAddIn", "Ссылка на хост API": "API host link", -"ПолучитьHttpКлиент": "GetHttpClient", +"СоответствиеИконки": "IconMap", "ПолучитьТелоОтвета": "GetResponseBody", -"СоответствиеОшибки": "ErrorMap", -"ПриСозданииОбъекта": "OnObjectCreate", -"СоответствиеСтроки": "RowMap", -"ОжидатьПодключение": "AwaitingConnection", -"РазобратьКлючФайла": "SplitFileKey", -"НачалоОбработкиXML": "XMLInitialProcessing", -"ОписаниеПеременных": "Variables", -"СтрЗаканчиваетсяНа": "StrEndsWith", -"ПолучитьТегиБакета": "GetBucketTagging", -"ДропБоксМетаданные": "DropboxMetadata", -"СоздатьУдалитьПост": "CreateDeletePost", -"НеобходимаяКолонка": "RequiredColumn", -"Минимальный запрос": "Minimal request", -"ПравильныйВариант1": "CorrectVariant1", -"Отправить картинку": "Send image", -"НормализоватьФайлы": "NormalizeFiles", -"Данные тела ответа": "Response body data", -"ПолучатьПривилегии": "GetPrivileges", +"HttpКлиентЗагрузки": "HttpUploadClient", +"Время начала обеда": "Lunch start time", +"логин пользователя": "user login", +"Удалить директорию": "Delete directory", +"Тестовый RSS канал": "Test RSS channel", +"HttpКлиентПроверки": "HttpCheckClient", +"Праздники Беларуси": "Holidays in Belarus", +"СтрокаМетода.Метод": "MethodLine.Method", +"MYS_ОсновныеМетоды": "MYS_CommonMethods", +"Установить Webhook": "Set Webhook", +"Тестовая таблица 2": "TestTable2", +"URL сервера Ollama": "Ollama server URL", +"URL для сокращения": "URL for shortening", +"Телеграм_БанРазбан": "TelegramAPI_BanUnban", +"МаксимальныйРазмер": "MaxSize", +"ID книги приемника": "Destination spreadsheet ID", +"ЗагрузитьФайлПоURL": "UploadFileByURL", +"СоздатьФайлЗапуска": "CreateLaunchFile", +"Структура настроек": "Settings structure", +"Получить календарь": "Get calendar", +"УправлениеСобытием": "EventManagement", +"ЗаголовокИсточника": "SourceHeader", +"ПереместитьСобытие": "MoveEvent", +"АктивныеСоединения": "ActiveConnections", +"СоздатьПодключение": "CreateConnection", +"ТолькоОбязательные": "RequiredOnly", +"идентификатор лида": "lead identifier", +"ФинальнаяСтруктура": "FinalStructure", +"Разобрать фид (RSS": "Parse feed (RSS", +"описание календаря": "calendar description", +"ОтключитьВалидацию": "DisableValidation", +"СлучайнаяСтруктура": "CasualStructure", +"ПреобразоватьЧисло": "ConvertNumber", +"ПолучитьСтатистику": "GetStatistics", +"Изменить цвет чата": "Change chat color", +"Вставить документы": "Insert documents", +"Сортировка выборки": "Selection sorting", +"Изменить календарь": "Edit calendar", +"Возобновить задачу": "Renew task", +"УдалитьЗаписи (TLS": "DeleteRecords (TLS", +"ПереименоватьКанал": "RenameChannel", +"ПреобразоватьФайлы": "ConvertFiles", +"ПолучитьПолеНомера": "GetNumberField", +"ЗагрузитьМалыйФайл": "UploadSmallFile", +"Yandex Market (ОПИ": "Yandex Market (OpenIntegrations", +"Измененное событие": "Modified event", +"СтруктураВебвизора": "WebvisorStructure", +"ПравильныйВариант3": "CorrectVariant3", "Управление метками": "Tags management", +"ПолучатьПривилегии": "GetPrivileges", +"Данные тела ответа": "Response body data", +"НормализоватьФайлы": "NormalizeFiles", +"Отправить картинку": "Send image", +"ПравильныйВариант1": "CorrectVariant1", +"Минимальный запрос": "Minimal request", +"НеобходимаяКолонка": "RequiredColumn", +"СоздатьУдалитьПост": "CreateDeletePost", "ОкончаниеПротокола": "ProtocolEnd", +"ДропБоксМетаданные": "DropboxMetadata", +"СтрЗаканчиваетсяНа": "StrEndsWith", +"ОписаниеПеременных": "Variables", +"НачалоОбработкиXML": "XMLInitialProcessing", +"РазобратьКлючФайла": "SplitFileKey", +"ОжидатьПодключение": "AwaitingConnection", +"ДвоичныеВКоллекцию": "BinaryToCollection", +"СоответствиеСтроки": "RowMap", +"ПриСозданииОбъекта": "OnObjectCreate", +"СоответствиеОшибки": "ErrorMap", +"ПолучитьТегиБакета": "GetBucketTagging", "РежимОткрытияФайла": "FileOpenMode", "Без разделения: %1": "No separation: %1", "Идентификатор поля": "Field identifier", -"Наименование видео": "Video name", -"СтруктураСостояния": "StateStructure", -"Постановщик с ID 1": "Producer with ID 1", -"Пример команды CLI": "CLI command example", -"ГраницаТипов Тогда": "TypesBound Then", -"Ошибка подключения": "Connection error", -"ДелегироватьЗадачу": "DelegateTask", -"СтруктураПараметра": "ParameterStructure", -"Переименовать файл": "Rename file", -"ПолучитьБазуДанных": "GetDatabase", -"Скопировать объект": "Copy object", -"ПодключитьСценарий": "AttachScript", -"Тестовый календарь": "TestCalendar", -"ЗапросЗаписьДанных": "RequestDataWriter", -"БитриксСписокЗадач": "BitrixTasksList", -"КнигаИлиКоличество": "BookOrAmount", -"Email как RFC 2822": "Email as RFC 2822", -"ЕстьЧислоСообщений": "MessageCountDefined", -"Создано из шаблона": "Created from template", -"ВКСтатистикаПостов": "VKPostsStatistic", "ВыборкаJSONCompact": "JSONCompactSelection", -"СоответствиеИконки": "IconMap", -"ПравильныйВариант3": "CorrectVariant3", -"СтруктураВебвизора": "WebvisorStructure", -"Измененное событие": "Modified event", -"ЗаголовокИсточника": "SourceHeader", -"Получить календарь": "Get calendar", -"Структура настроек": "Settings structure", -"СоздатьФайлЗапуска": "CreateLaunchFile", -"ЗагрузитьФайлПоURL": "UploadFileByURL", -"ID книги приемника": "Destination spreadsheet ID", -"МаксимальныйРазмер": "MaxSize", -"Телеграм_БанРазбан": "TelegramAPI_BanUnban", -"URL для сокращения": "URL for shortening", -"URL сервера Ollama": "Ollama server URL", -"УправлениеСобытием": "EventManagement", -"Тестовая таблица 2": "TestTable2", -"MYS_ОсновныеМетоды": "MYS_CommonMethods", -"СтрокаМетода.Метод": "MethodLine.Method", -"Праздники Беларуси": "Holidays in Belarus", -"HttpКлиентПроверки": "HttpCheckClient", -"Тестовый RSS канал": "Test RSS channel", -"Удалить директорию": "Delete directory", -"логин пользователя": "user login", -"Время начала обеда": "Lunch start time", -"HttpКлиентЗагрузки": "HttpUploadClient", -"Установить Webhook": "Set Webhook", -"ПереместитьСобытие": "MoveEvent", -"ПолучитьСтатистику": "GetStatistics", -"АктивныеСоединения": "ActiveConnections", -"ЗагрузитьМалыйФайл": "UploadSmallFile", -"ПолучитьПолеНомера": "GetNumberField", -"ПреобразоватьФайлы": "ConvertFiles", -"ПереименоватьКанал": "RenameChannel", -"УдалитьЗаписи (TLS": "DeleteRecords (TLS", -"Возобновить задачу": "Renew task", -"Изменить календарь": "Edit calendar", -"Сортировка выборки": "Selection sorting", -"Вставить документы": "Insert documents", -"Yandex Market (ОПИ": "Yandex Market (OpenIntegrations", -"Изменить цвет чата": "Change chat color", -"ПреобразоватьЧисло": "ConvertNumber", -"СлучайнаяСтруктура": "CasualStructure", -"ОтключитьВалидацию": "DisableValidation", -"описание календаря": "calendar description", -"Разобрать фид (RSS": "Parse feed (RSS", -"ФинальнаяСтруктура": "FinalStructure", -"идентификатор лида": "lead identifier", -"ТолькоОбязательные": "RequiredOnly", -"ДвоичныеВКоллекцию": "BinaryToCollection", -"УдалитьКаталог (хук": "DeleteFolder (wh", -"Архивировать товары": "Archive products", -"ДополнитьКэшСостава": "CompleteCompositionCache", -"SSH (служебный, ОПИ": "SSH (Utility, OpenIntegrations", -"ШаблонИнициализации": "InitializationTemplate", -"ID категории товара": "Product category ID", -"УниверсальныйСервер": "GenericServer", -"ЗапросТелоКоллекция": "RequestBodyCollection", -"Архив : yellow": "Archive : yellow", -"Команда FTP: `LIST`": "FTP Command: `LIST`", -"Дополнить c атрибут": "Complete complex attribute", -"ПолучитьСписокТегов": "GetTagList", -"РазмерПостфиксаGZip": "GZipPostfixSize", -"ЗаписатьФайлЗапуска": "WriteLaunchFile", -"Неизвестная команда": "Unknown command", -"Кол-во комментариев": "Comments count", -"ЗначениеПоУмолчанию": "DefaultValue", -"Создать базу данных": "Create database", -"Товар без категории": "Item without category", -"ПолучениеИнформации": "DataRetrieval", -"опцияN|#color=Серый": "optionN|#color=Gray", -"Фото- и видеоуслуги": "Photo and video service", -"Идентификатор файла": "File identifier", -"массовое_обновление": "mass_update", -"СправкаПоПараметрам": "ParamsHelp", -"Удаляет метку по ID": "Deletes a tag by ID", -"Мой новый календарь": "My new calendar", -"Получает список баз": "Gets a list of bases", -"Команда FTP: `FEAT`": "FTP Command: `FEAT`", -"СоздатьСсылкуТокена": "CreateTokenLink", -"СоздатьНовость (хук": "CreatePost (wh", -"0 Или СтрНайти(Путь": "0 Or StrFind(Path", -"ОперационнаяСистема": "OperatingSystem", -"Канцелярские товары": "Stationery", -"Команда FTP: `NOOP`": "FTP Command: `NOOP`", -"Завершение отправки": "Sending completion", -"ПолучитьКомментарий": "GetComment", -"СтруктураОбновления": "UpdatesStructure", -"Опубликовать объект": "Publish object", -"ПолучитьФайлНаДиске": "GetFileOnDisk", -"Комплексные решения": "Complete solutions", -"Путь из URL запроса": "Path from the request URL", -"Получить информацию": "Get data", -"НастройкиСоединения": "ConnectionSettings", -"Массив файлов гифок": "Gif files array", -"Переслать сообщение": "Forward message", -"ПолучитьСписокЧатов": "GetChatList", -"признак перезапуска": "rerun flag", -"Б24_РаботаСЗадачами": "B24_TaskManagement", -"МассивМедиаКартинок": "MediaPictureArray", -"СтруктураРезультата": "ResultStructure", -"СоздатьТвитСОпросом": "CreateTweetWithPoll", -"Новое описание базы": "New database description", -"СоздатьЗапросСТелом": "CreateRequestWithBody", -"АТЗаписьНомерСтрока": "ATRecordNumberAndString", -"Значение для поиска": "Search value", -"ОбновитьЦеныТоваров": "UpdateProductsPrices", -"МассивОтсутствующих": "AbsenteesArray", -"ПриостановитьЗадачу": "PauseTask", -"ГлобальныеПараметры": "GlobalParams", -"НумерацияПараметров": "ParameterNumeration", -"RPortal_ЗаписьЛогов": "RPortal_LogRecording", -"АльтернативныйТекст": "AlternateText", -"ИзменитьЗадачу (хук": "UpdateTask (wh", -"Массив файлов видео": "Video files array", -"СброситьПоляОбъекта": "ResetObjectFields", -"ПолучитьСписокЛидов": "GetLeadsList", -"Отправить сообщение": "Send message", -"Простота и гибкость": "Simplicity and flexibility", -"Mongo_РаботаСБазами": "Mong_DatabaseManagement", -"ПолучитьДиалог (хук": "GetDialog (wh", -"Переместить каталог": "Move folder", -"Команда FTP: `SITE`": "FTP Command: `SITE`", -"Нажмите Publish App": "Click on Publish App", -"ДействиеСВложениями": "ActionWithAttachment", -"УдалитьТоварыБезSKU": "DeleteProductsWithoutSKU", -"Пользователи и роли": "Users and roles", -"OpenAIПредставления": "OpenAIEmbeddings", -"пароль пользователя": "user password", -"ДобавитьВидеоТовара": "AddProductVideo", -"ПараметрыЗаписиJSON": "JSONWriterSettings", -"КопироватьКоллекцию": "CopyCollection", -"Dropbox_ДобавитьТег": "Dropbox_AddTag", -"ПолучитьСделку (хук": "GetDeal (wh", -"УстановкаЗаголовков": "HeadersSetting", -"ОтложитьЗадачу (хук": "DeferTask (wh", -"Отбор по типу файла": "Filter by file type", -"Переименовать канал": "Rename channel", -"ВосстановитьКаталог": "RestoreFolder", -"ВК_МетодыОбсуждений": "VKAPI_DiscussionMethods", -"ЭтоВнутренняяОшибка": "IsInternalError", -"СтруктураПривилегии": "PrivilegeStructure", -"OAI_РаботаСМоделями": "OAI_ModelsManagement", -"УстановитьНастройки": "SetSettings", -"Получить лог !NOCLI": "Get log !NOCLI", -"Наименование товара": "Product name", -"ПараметрыСоединения": "ConnectionParams", -"МассивСтрокОписания": "DescriptionLinesArray", -"ИзменитьКомментарий": "EditComment", -"один из типов медиа": "media type", -"ЗаполнитьURLОбъекта": "FillObjectURL", -"Удаляет тему форума": "Deletes a forum topic", -"ДобавитьФайлВЗадачу": "AttachFileToTopic", -"ЗаполнитьСортировку": "FillSorting", -"ПолучитьОсобенности": "GetFeatures", -"ДлительностьПопытки": "AttemptDuration", -"ПреобразоватьБулево": "ConvertBoolean", -"Получить статистику": "Get statistics", -"КлавиатураСообщения": "MessageKeyboard", -"Команда FTP: `STOR`": "FTP Command: `STOR`", -"Создание приложения": "Creating an application", -"Новый текст новости": "New post text", -"ЗаписатьЭлементФида": "WriteFeedItem", -"Переслать сообщения": "Forward messages", -"Глубина товара в мм": "Product depth in mm", -"УправлениеДоставкой": "DeliveryManagement", -"Закрыть тему форума": "Close forum topic", -"SQLL_ОсновныеМетоды": "SQLL_CommonMethods", -"12000).Равно(Истина": "1200).Equal(True", -"ЦеныИОстаткиТоваров": "PricesAndStocks", -"ГуглОбновлениеЯчеек": "GoogleCellUpdating", -"ПолучитьЗадачу (хук": "GetTask (wh", -"Пароль пользователя": "Users password", -"Закрепить сообщение": "Pin message", -"Проверка_ВКПодборка": "Check_VKCollection", -"ДобавитьЗаписи (TLS": "AddRecords (TLS", -"Изменить имя группы": "Update group name", -"УправлениеПроектами": "ProjectManagement", -"СоответствиеОтветов": "ResponseMap", -"ПолучитьТаблицыБазы": "GetDatabaseTables", -"УстановитьТипДанных": "SetDataType", -"Получить блок файла": "Get file block", -"ОбработатьЗаголовки": "HeadersProcessing", -"ОбработатьРезультат": "ProcessResult", -"ОбновитьЗаписи (TLS": "UpdateRecords (TLS", -"Кабинеты и магазины": "Campaigns and business", -"Имя новой коллекции": "Collection name", -"Управление группами": "Group management", -"ВосстановитьСчетчик": "RestoreCounter", -"ПолучитьСписокАкций": "GetPromotionsList", -"ВызватьСНастройками": "CallWithSettings", -"Создать/Удалить тег": "Create/Delete tag", -"Фильтр по списку ID": "filter by IDs list", -"СоздатьИзменитьБазу": "CreateUpdateDatabase", -"ПолучитьТокенПоКоду": "GetTokenByCode", -"СгруппироватьТовары": "GroupProducts", -"ДобавитьПараметрURL": "AddURLParameter", -"Количество : number": "Count : number", -"Создает новую книгу": "Creates a new spreadsheet", -"Длительность опроса": "Poll duration", -"СоответствиеКолонок": "ColoumnsMap", -"Удалить комментарий": "Delete comment", -"ИзменитьСделку (хук": "UpdateDeal (wh", -"ПереименоватьОбъект": "RenameObject", -"Удалить тему форума": "Delete forum topic", -"ПолучитьВнешнийФайл": "GetExternalFile", -"ВернутьИмяФайлаТела": "ReturnBodyFilename", -"ДобавитьВнешнийФайл": "AddExternalFile", -"РезультатВыполнения": "ExecutionResult", -"Открыть тему форума": "Open forum topic", -"ЗапуститьПриложение": "RunApp", -"ТелеграмМедиагруппа": "TelegramMediagroup", -"ОзонСписокКатегорий": "OzonCategoryList", -"ПолучитьСписокМеток": "GetTagsList", -"БитриксНеопределено": "BitrixUndefined", -"НеобходимыйПараметр": "RequiredParameter", -"ОбработатьОтветGRPC": "ProcessGRPCResponse", -"СтруктураКлавиатуры": "KeyboardStructure", -"Ошибка отправки: %1": "Sending error: %1", -"ОбработкаПараметров": "ParamsProcessing", -"Альбом из автотеста": "AlbumFromAutoTest", -"Эфимерное сообщение": "Ephemeral message", -"Наименование бакета": "Bucket name", -"ПолучитьТелоЗапроса": "GetRequestBody", -"Комментарий курьеру": "Comment to courier", -"ЗагрузитьОбъект (DB": "PutObject (DB", -"Ставит лайк на пост": "Likes a post", -"ОбработатьПараметры": "ProcessParameters", -"ЗаменитьСпецсимволы": "ReplaceSpecialCharacters", -"Удалить теги бакета": "Delete bucket tagging", -"Данные для отправки": "Sending data", -"СтруктураЗавершения": "FinishStructure", -"РабочееПространство": "Workspace", -"ИсключениеПриОшибке": "ExceptionOnError", -"СоздатьТранскрипцию": "CreateTranscription", -"БуферДвоичныхДанных": "BinaryDataBuffer", -"ДобавитьКомментарий": "CrateComment", -"Получить поле (дата": "Get field (date", -"СлакСсылкаСообщения": "SlackMessageLink", -"ТекущийПользователь": "CurrentUser", -"Переместить событие": "Move event", -"Измененная подборка": "EditedCollection", -"ПолучитьИсториюЧата": "GetChatHistory", -"РегулярноеВыражение": "Regex", -"ПолучитьСвойАккаунт": "GetOwnAccount", -"Получить обновления": "Get updates", -"ВнутреннееХранилище": "InternalStorage", -"В качестве чат-бота": "Like a chat-bot", -"СтруктураИнформации": "DataStructure", -"СдэкАПИ_ОбщиеМетоды": "CdekAPI_CommonMethods", -"СоздатьКопиюОбъекта": "CreateObjectCopy", -"Очистить директорию": "Clear directory", -"МассивВнешнихТаблиц": "ExternalTablesArray", -"СтруктураПараметров": "ParametersStructure", -"НормализоватьОснову": "NormalizeMain", -"ОзонДобавлениеКодов": "OzonNewCodes", -"Компонента FTP (ОПИ": "FTP Component (OpenIntegrations", -"СерверноеВремя (хук": "ServerTime (wh", -"КопироватьЛист (доп": "CopySheet (new", -"Данные тела запроса": "Request body data", -"Скачивание началось": "Download started", -"ПолучитьЦеныТоваров": "GetProductsPrices", -"ПустаяСхемаTruncate": "EmptySchemeTruncate", -"ПреобразоватьСсылку": "ConvertURL", -"УстанавливатьПустое": "SetIfEmpty", -"НаписатьВОбсуждение": "WriteInDiscussion", -"Дата начала периода": "Start date of the period", -"TODO: Вернуть позже": "TODO: Comeback later", -"ПолучитьКомментарии": "GetComments", -"ЗакрытиеПодключения": "ConnectionShutdown", -"СписокПользователей": "UserList", -"Команда FTP: `RETR`": "FTP Command: `RETR`", -"опция1|#color=Серый": "option1|#color=Gray", -"Наименование группы": "Group name", -"Открытие соединения": "Connection creation", -"ВажныйДокумент.docx": "ImportantDocument.docx", -"ЗакрыватьСоединение": "CloseConnection", -"Получить чек заказа": "Get cashbox check", -"SQLiteЗначенияПолей": "SQLiteFieldsValues", -"СтруктураВыполнения": "ExecutionStructure", -"КэшированиеИндексов": "IndexCache", -"СтруктураЗаголовков": "HeadersStructure", -"Наличие примерочной": "Availability of fitting room", -"РаботаСТемамиФорума": "ForumTopicManagement", -"Открепить сообщение": "Unpin message", -"Отправляемая ссылка": "SentLink", -"AWS_РаботаСБакетами": "AWS_BucketsManagement", -"СформироватьКоманду": "FormCommand", -"СоответствиеМетодов": "MethodMap", -"Текстовые сообщения": "Text messages", -"УдалитьМодель (tiny": "DeleteModel (tiny", -"Новое имя календаря": "New calendar name", -"УчетРабочегоВремени": "Timekeeping", -"SQL запрос из файла": "SQL query from file", -"УстановитьНастройку": "SetSetting", -"1|#color=Желтый) %2": "1|#color=Yellow) %2", -"имя поля для отбора": "filtering field name", +"ВКСтатистикаПостов": "VKPostsStatistic", +"Создано из шаблона": "Created from template", +"ЕстьЧислоСообщений": "MessageCountDefined", +"Email как RFC 2822": "Email as RFC 2822", +"КнигаИлиКоличество": "BookOrAmount", +"БитриксСписокЗадач": "BitrixTasksList", +"ЗапросЗаписьДанных": "RequestDataWriter", +"Тестовый календарь": "TestCalendar", +"ПодключитьСценарий": "AttachScript", +"Скопировать объект": "Copy object", +"ПолучитьБазуДанных": "GetDatabase", +"Переименовать файл": "Rename file", +"СтруктураПараметра": "ParameterStructure", +"ДелегироватьЗадачу": "DelegateTask", +"Ошибка подключения": "Connection error", +"ГраницаТипов Тогда": "TypesBound Then", +"Пример команды CLI": "CLI command example", +"Постановщик с ID 1": "Producer with ID 1", +"СтруктураСостояния": "StateStructure", +"Наименование видео": "Video name", +"ПолучитьHttpКлиент": "GetHttpClient", +"Токен пользователя": "User token", +"СтруктураАналитики": "AnalyticsStructure", +"ЗагрузитьУдалитьВФ": "UploadDeleteExternalFile", +"ЭтоСтроковыйФормат": "IsStringFormat", +"ID книги источника": "Source spreadsheet ID", +"НазначитьСнятьРоль": "GrantRevokeRole", +"Обновить документы": "Update documents", +"ОтправитьВидео (ДД": "SendVideo (DD", +"Анонимность опроса": "Poll anonymity", +"ПроцессорГенерации": "GenerationProcessor", +"ОтправитьФайл (хук": "SendFile", +"ДополнитьЗаголовки": "CompleteHeaders", +"СуществующийЗапуск": "ExistingLaunch", +"Удаляет пост по id": "Deletes a post by ID", +"ПолучитьДанныеЧата": "GetChatData", +"Переместить объект": "Move object", +"УдалитьУведомление": "DeleteNotification", +"ЧЦ=10; ЧДЦ=0; ЧГ=0": "ND=10; NFD=0; NG=0", +"СкачатьМодель (bay": "PullModel (bay", +"Новое наименование": "New name", +"ПоследнийКодУспеха": "LastSuccessCode", +"Тестовый заголовок": "TestTitle", +"Получить хранилище": "Get storage", +"Логин пользователя": "Users login", +"ИгнорироватьПустой": "IgnoreEmpty", +"S3НеПоддерживается": "S3NotImplemented", +"Команда отсуствует": "The command is not available", +"СоздатьЗадачу (хук": "CreateTask (wh", +"ПереместитьКаталог": "MoveFolder", +"Объект TCP сервера": "TCP server object", +"ПолучитьПолеСсылки": "GetLinkField", +"Высота товара в мм": "Product height in mm", +"Удалить ассистента": "Delete assistant", +"СуществующиеНаборы": "ExistingSets", +"Проверка_ВКИстория": "Check_VKStory", +"ЗапросПараметрыURL": "RequestURLParams", +"УдалитьОбъект (URL": "DeleteObject (URL", +"Получает лид по ID": "Gets a lead by ID", +"Новый подкаталог 2": "New subfolder 2", +"Ширина товара в мм": "Product width in mm", +"Команда FTP: `CWD`": "FTP Command: `CWD`", +"ИнформацияОбОшибке": "ErrorInfo", +"ОзонМассивОбъектов": "OzonObjectsArray", +"ЯДиск_СоздатьПапку": "YDisk_CreateFolder", +"УстановитьFormТело": "SetFormBody", +"СтруктураШтрихкода": "BarcodeStructure", +"ДанныеПользователя": "UserData", +"ИзменитьТемуФорума": "EditForumTopic", +"Создать подкаталог": "Create new subfolder", +"ВайберПользователь": "ViberUser", +"Получем на сервере": "Recieve on server", +"Поток тела запроса": "Request body stream", +"СуществующаяГруппа": "ExistingGroup", +"Отправка сообщений": "Messages sending", +"Архивировать канал": "Archive channel", +"ПолучитьОбновления": "GetUpdates", +"ДлительностьОпроса": "PollDuration", +"РаботаСКоллекциями": "CollectionManagement", +"СекретПользователя": "UsersSecret", +"ЗапросПользователь": "RequestUser", +"ПолучитьЧекиНаДату": "GetCashboxChecksByDate", +"Статус отправления": "Shipment status", +"СтандартнаяЕдиница": "StandardUnit", +"РаботаСоСтраницами": "PageManagement", +"ОсновнойОбработчик": "MainHandler", +"ВыполнитьЗапросSQL": "ExecuteSQLQuery", +"Таймаут соединения": "Connection timeout", +"Проверка_ЯДискДиск": "Check_YaDiskDrive", +"Отправить документ": "Send document", +"Новое имя варианта": "New variant name", +"ПроксиПользователь": "ProxtUser", +"ТекущаяДлина Тогда": "CurrentLength Then", +"ПривязатьШтрихкоды": "BindBarcodes", +"ИспользоватьПрокси": "UseProxy", +"Маркетинговый цвет": "Marketing color", +"УстановитьJsonТело": "SetJsonBody", +"Новая таблица (изм": "New table (change", +"Создать ассистента": "Create assistant", +"Удаляет файл по ID": "Delete file by ID", +"ПравильныйВариант5": "CorrectVariant5", +"Значение заголовка": "Header value", +"ПринятьЗадачу (хук": "ApproveTask (wh", +"Создать твит гифки": "Create gif tweet", +"УдалитьТегиОбъекта": "DeleteObjectTagging", +"ЗакрепитьСообщение": "PinMessage", +"БитриксАвторизация": "BitrixAuth", +"Google Sheets (ОПИ": "Google Sheets (OpenIntegrations", +"ДополнительныйЦвет": "SecondaryColor", +"ВключитьЗвукЗадачи": "UnmuteTask", +"Написать сообщение": "Write a message", +"Dropbox_УдалитьТег": "Dropbox_DeleteTag", +"ЛокацияОтправления": "SendLocation", +"УдалитьКомментарий": "DeleteComment", +"РазобратьАргументы": "ParseArgs", +"СтруктураКалендаря": "CalendarsStructure", +"ПереданныйПараметр": "PassedParameter", +"Количество попыток": "Retry count", +"ПолучитьАссистента": "RetrieveAssistant", +"ОтветИнициализации": "InitializationResponse", +"ВнутреннийАдресFTP": "FTPInternalAddress", +"VK_УдалитьПодборку": "VK_DeleteSelection", +"ПарольПользователя": "UserPassword", +"ОчередноеСообщение": "NextMessage", +"ПравильныйВариант6": "CorrectVariant6", +"Открыть соединение": "Create connection", +"ИзменитьАватарЧата": "ChangeChatPicture", +"VK_УдалитьКартинку": "VK_DeleteImage", +"Получить документы": "Get documents", +"МассивКлючЗначение": "KeyValueArray", +"Создать директорию": "Create directory", +"СоответствиеФайлов": "FileMapping", +"ПолучитьИнформацию": "GetData", +"СохранениеНастроек": "SettingsSaving", +"Дата, Неопределено": "Date, Undefined", +"Команда FTP: `PWD`": "FTP Command: `PWD`", +"АрхивироватьТовары": "ArchiveProducts", +"Б24_СерверноеВремя": "B24_ServerTime", +"ЗапросЧтениеДанных": "RequestDataReader", +"СоздатьКомментарий": "CreateComment", +"Наименование метки": "Tag title", +"УдалитьЗадачу (хук": "DeleteTask (wh", +"ДобавитьСортировку": "AddSorting", +"НайтиПользователей": "FindUsers", +"HTTP метод запроса": "Request HTTP method", +"РазархивироватьЧат": "UnarchiveChat", +"СоздатьУдалитьБлок": "CreateDeleteBlock", +"ЗначенияПараметров": "ParameterValues", +"Создать твит опрос": "Create poll tweet", +"ЛимитПользователей": "UserLimit", +"Работа с доступами": "Access management", +"Создает новую роль": "Creates a new role", +"Лёгкость внедрения": "Easy to use", +"УдалитьСделку (хук": "DeleteDeal (wh", +"СтруктураДокумента": "DocumentStructure", +"Текст новых правил": "Text of the new rules", +"СформироватьЗапрос": "FormRequest", +"HTTP_УстановкаТела": "HTTP_BodySet", +"По логину и паролю": "By login and password", +"ИмяПараметраФормат": "FormatParameterName", +"внешний вид товара": "product appearance", +"ТолькоУОтправителя": "ForSenderOnly", +"!OInt КБайт = 1024": "!OInt KB = 1024", +"ПравильныйВариант7": "CorrectVariant7", +"ПолучитьАватарЧата": "GetChatAvatar", +"КаноническийЗапрос": "CanonicalRequest", +"URL сервера OpenAI": "OpenAI server URL", +"Получить квитанцию": "Get receipt", +"ПреобразоватьТекст": "ConvertText", +"Получить поле (url": "Get field (url", +"Управление тестами": "Test management", +"Проверка кодировки": "Encoding check", +"УправлениеГруппами": "GroupManagement", +"Копировать каталог": "Copy folder", +"Имя : title": "Name : title", +"заголовок элемента": "item title", +"URL источник файла": "URL source of the file", +"РаботаСДокументами": "DocumentsManagement", +"ОбработанныеДанные": "ProcessedData", +"ОтправитьФайлПоURL": "SendFileByURL", +"Работа со сделками": "Deals management", +"ИмяТекущегоОбъекта": "CurrentObjectName", +"ОтправитьСообщение": "SendMessage", +"ОжидатьПодключения": "AwaitConnections", +"Работа с объектами": "Objects management", +"Команда CLI: tools": "CLI Command: tools", +"Название кодировки": "Encoding name", +"ПреобразоватьСвязь": "ConvertLink", +"Проверка_Структура": "Check_Structure", +"ЗавершитьПолучение": "FinishReceiving", +"УдалитьВнешнийФайл": "DeleteExternalFile", +"СоответствиеТаблиц": "TableMapping", +"ФинальноеСообщение": "FinalMessage", +"РаботаССообщениями": "MessageManagement", +"ЗаписатьЭлементXML": "WriteXMLItem", +"РаботаСХранилищами": "StoragesManagement", +"МножественныйВыбор": "MultipleSelect", +"СледующаяКоллекция": "NextCollection", +"Подключаем клиента": "Connect client", +"Тестовое сообщение": "TestMessage", +"СтруктураСообщения": "MessageStructure", +"Строка подключения": "Connection string", +"ПреобразоватьПочту": "ConvertEmail", +"СоответствиеОтвета": "ResponseMapping", +"Активный : green": "Active : green", +"РазбитьURL: Сервер": "SplitURL: Host", +"Создать твит видео": "Create video tweet", +"ТекущийСписокОпций": "CurrentOptionList", +"ТекущаяВложенность": "CurrentNesting", +"ИдентификаторФайла": "FileID", +"название календаря": "calendars name", +"ПолучитьURLСервиса": "GetServiceURL", +"МассивОбязательных": "RequiredArray", "Тело не установлено": "Body not set", -"Новое имя файла.jpg": "New file name.jpg", -"СтруктураПолучателя": "RecipientStructure", -"Привязать штрихкоды": "Bind barcodes", -"ПолучитьДанныеФайла": "GetFileData", -"Простое подключение": "Simple connection", "Делегировать задачу": "Delegate task", +"Простое подключение": "Simple connection", +"ПолучитьДанныеФайла": "GetFileData", +"Привязать штрихкоды": "Bind barcodes", +"СтруктураПолучателя": "RecipientStructure", "Создает новый канал": "Creates a new channel", +"Новое имя файла.jpg": "New file name.jpg", +"имя поля для отбора": "filtering field name", +"Новое имя календаря": "New calendar name", +"УстановитьНастройку": "SetSetting", +"SQL запрос из файла": "SQL query from file", +"УчетРабочегоВремени": "Timekeeping", +"УдалитьМодель (tiny": "DeleteModel (tiny", +"Текстовые сообщения": "Text messages", +"СоответствиеМетодов": "MethodMap", +"СформироватьКоманду": "FormCommand", +"AWS_РаботаСБакетами": "AWS_BucketsManagement", "ОзонГотовыйЧерновик": "OzonReadyDraft", +"1|#color=Желтый) %2": "1|#color=Yellow) %2", "Удалить уведомление": "Delete notification", -"Портативная техника": "Portable gadgets", -"ПреобразоватьСтатус": "ConvertStatus", -"Проверка_ВККампания": "Check_VKCampaign", -"МассивХарактеристик": "AttributesArray", -"Разлогинить инстанс": "Logout instance", -"ОтправитьФайл (Путь": "SendFile (Path", -"ПолучитьМассивТегов": "GetTagArray", -"Массив Из Структура": "Array of Structure", -"РаскодироватьСтроку": "DecodeString", -"ОтправитьДанныеGRPC": "SendGRPCData", -"UUID договоренности": "Appointment UUID", -"СтрокаИнициализации": "InitializationString", -"СоздатьПользователя": "CreateUser", -"УдалитьТаблицу (TLS": "DeleteTable (TLS", -"ОтключитьЗвукЗадачи": "MuteTask", -"Module.ExpectsThat(": "Module.ОжидаетЧто(", -"СоответствиеКолонки": "ColoumnMap", -"Данные для API v1.1": "Data for API v1.1", -"Наименование канала": "Channel name", -"УправлениеПодборкой": "SelectionManagement", -"ПолучитьТекущуюДату": "GetCurrentDate", "ОзонЗаданиеЗагрузки": "OzonUploadTask", +"ПреобразоватьСтатус": "ConvertStatus", +"ПолучитьТекущуюДату": "GetCurrentDate", +"УправлениеПодборкой": "SelectionManagement", +"Наименование канала": "Channel name", +"Данные для API v1.1": "Data for API v1.1", +"СоответствиеКолонки": "ColoumnMap", +"Module.ExpectsThat(": "Module.ОжидаетЧто(", +"ОтключитьЗвукЗадачи": "MuteTask", +"УдалитьТаблицу (TLS": "DeleteTable (TLS", +"СоздатьПользователя": "CreateUser", +"СтрокаИнициализации": "InitializationString", +"UUID договоренности": "Appointment UUID", +"ОтправитьДанныеGRPC": "SendGRPCData", +"РаскодироватьСтроку": "DecodeString", +"Массив Из Структура": "Array of Structure", +"ПолучитьМассивТегов": "GetTagArray", +"ОтправитьФайл (Путь": "SendFile (Path", +"Разлогинить инстанс": "Logout instance", +"МассивХарактеристик": "AttributesArray", +"Проверка_ВККампания": "Check_VKCampaign", +"Портативная техника": "Portable gadgets", +"Отправляемая ссылка": "SentLink", +"ТекущийПользователь": "CurrentUser", +"РаботаСТемамиФорума": "ForumTopicManagement", +"КопироватьЛист (доп": "CopySheet (new", +"СерверноеВремя (хук": "ServerTime (wh", +"Компонента FTP (ОПИ": "FTP Component (OpenIntegrations", +"ОзонДобавлениеКодов": "OzonNewCodes", +"НормализоватьОснову": "NormalizeMain", +"СтруктураПараметров": "ParametersStructure", +"МассивВнешнихТаблиц": "ExternalTablesArray", +"Очистить директорию": "Clear directory", +"СоздатьКопиюОбъекта": "CreateObjectCopy", +"Данные тела запроса": "Request body data", +"СдэкАПИ_ОбщиеМетоды": "CdekAPI_CommonMethods", +"В качестве чат-бота": "Like a chat-bot", +"ВнутреннееХранилище": "InternalStorage", +"Получить обновления": "Get updates", +"ПолучитьСвойАккаунт": "GetOwnAccount", +"РегулярноеВыражение": "Regex", +"ПолучитьИсториюЧата": "GetChatHistory", +"Измененная подборка": "EditedCollection", +"Переместить событие": "Move event", "Разархивировать чат": "Unarchive chat", +"СтруктураИнформации": "DataStructure", +"Открепить сообщение": "Unpin message", +"Скачивание началось": "Download started", +"ПустаяСхемаTruncate": "EmptySchemeTruncate", +"Наличие примерочной": "Availability of fitting room", +"СтруктураЗаголовков": "HeadersStructure", +"КэшированиеИндексов": "IndexCache", +"СтруктураВыполнения": "ExecutionStructure", +"SQLiteЗначенияПолей": "SQLiteFieldsValues", +"Получить чек заказа": "Get cashbox check", +"ЗакрыватьСоединение": "CloseConnection", +"ВажныйДокумент.docx": "ImportantDocument.docx", +"Открытие соединения": "Connection creation", +"ПолучитьЦеныТоваров": "GetProductsPrices", +"Наименование группы": "Group name", +"Команда FTP: `RETR`": "FTP Command: `RETR`", +"СписокПользователей": "UserList", +"ЗакрытиеПодключения": "ConnectionShutdown", +"ПолучитьКомментарии": "GetComments", +"TODO: Вернуть позже": "TODO: Comeback later", +"Дата начала периода": "Start date of the period", +"НаписатьВОбсуждение": "WriteInDiscussion", +"УстанавливатьПустое": "SetIfEmpty", +"ПреобразоватьСсылку": "ConvertURL", +"опция1|#color=Серый": "option1|#color=Gray", "ПолучитьУведомление": "GetNotification", -"ПолучитьТегиОбъекта": "GetObjectTagging", -"СоответствиеСобытия": "EventMap", -"Команда FTP: `DELE`": "FTP Command: `DELE`", -"Создать тему форума": "Create forum topic", -"ПолучитьЗаписи (TLS": "GetRecords (TLS", -"ПоддерживаемыйОтвет": "SupportedResponse", -"Результат обработки": "Processing result", -"Массив из Структура": "Array of Structure", -"Команда FTP: `SIZE`": "FTP Command: `SIZE`", -"СтрокаПользователей": "MembersQuery", -"Скопировать каталог": "Copy folder", -"Создает базу данных": "Creates a database", -"ПолучитьНастройкиKI": "GetSettingsKI", -"СоздатьТвитКартинки": "CreateImageTweet", -"СоединениеОбработки": "ProcessingConnection", -"Проверка обновления": "Updating check", -"Структура Из Строка": "Structure Of String", -"Получить ассистента": "Retrieve assistant", -"СоответствиеСвойств": "PropertyMap", -"Получить поле (файл": "Get field (file", -"УдалитьОбъект (Путь": "DeleteObject (Path", -"АккаунтИАвторизация": "AccountAndAuthorization", -"СтрокаКлючевыхПолей": "KeyFieldsString", -"ОзонМассивРейтингов": "OzonRatingArray", -"Yandex Metrika (ОПИ": "Yandex Metrika (OpenIntegrations", -"Перейдите по ссылке": "Go to the link", -"МассивПользователей": "ArrayOfUsers", -"СоздатьТаблицу (TLS": "CreateTable (TLS", -"Найти пользователей": "Find users", -"Плановое завершение": "Planned end", -"СоздатьНаборЗапуска": "CreateLaunchSet", -"Удалить базу данных": "Drop database", -"ПолучитьПараметрыВК": "GetVKParameters", -"ПродолжатьПолучение": "ContinueReceiving", -"УдалитьФайлВПопытке": "RemoveFileWithTry", -"УдалитьНовость (хук": "DeletePost (wh", -"Новое имя хранилища": "New storage name", -"Язык: rus, eng, zho": "Language: rus, eng, zho", -"НаписатьКомментарий": "WriteComment", -"УдалитьЗаписи (одна": "DeleteRecords (one", -"УдалитьПользователя": "DeleteUser", -"РаботаСДиректориями": "DirectoryManagement", -"ПутьЛоговБиблиотеки": "LibraryLogPath", -"RC_ВыполнениеКоманд": "RC_CommandsExecution", -"ЗаменитьСпецСимволы": "ReplaceSpecialCharacters", -"Удаляет базу данных": "Deletes the database", "СистемнаяИнформация": "SystemInfo", -"СоздатьЗаписи (одна": "CreateRecords (one", -"РаботаСБазамиДанных": "DatabaseManagement", -"Dropbox_СкачатьФайл": "Dropbox_DownloadFile", -"ПолучитьОбщийМодуль": "GetCommonModule", -"страна производства": "country of manufacture", -"ГарантироватьЗаписи": "EnsureRecords", -"ОбработатьДанныеTMA": "ProcessTMAData", -"ОформитьОпциюМассив": "FormOptionArray", -"Путь внутри объекта": "Path inside the object", -"КэшированиеСоставов": "CompositionCache", -"РаботаСОбсуждениями": "DiscussionManagement", -"ОбработатьВыводJSON": "ProcessJSONOutput", -"ПреобразованиеТипов": "TypeConversion", -"СоответствиеОбложки": "CoverMap", -"ТелеграмПриглашение": "TelegramInvitation", -"Разобрать фид (Atom": "Parse feed (Atom", -"SQL (служебный, ОПИ": "SQL (Utility, OpenIntegrations", -"Идентификатор книги": "Spreadsheet identifier", -"Есть прием наличных": "There is cash intake", -"RPortal_Авторизация": "RPortal_Authorization", -"ПолучитьКлючПодписи": "GetSignatureKey", -"ОбработатьСекретыVK": "ProcessSecretsVK", +"СоответствиеСобытия": "EventMap", "Получить список баз": "Get list of bases", +"ОбработатьСекретыVK": "ProcessSecretsVK", +"ПолучитьКлючПодписи": "GetSignatureKey", +"RPortal_Авторизация": "RPortal_Authorization", +"Есть прием наличных": "There is cash intake", +"Идентификатор книги": "Spreadsheet identifier", +"SQL (служебный, ОПИ": "SQL (Utility, OpenIntegrations", +"Разобрать фид (Atom": "Parse feed (Atom", +"ТелеграмПриглашение": "TelegramInvitation", +"СоответствиеОбложки": "CoverMap", +"ПреобразованиеТипов": "TypeConversion", +"ОбработатьВыводJSON": "ProcessJSONOutput", +"РаботаСОбсуждениями": "DiscussionManagement", +"КэшированиеСоставов": "CompositionCache", +"Путь внутри объекта": "Path inside the object", +"ОформитьОпциюМассив": "FormOptionArray", +"ОбработатьДанныеTMA": "ProcessTMAData", +"ГарантироватьЗаписи": "EnsureRecords", +"страна производства": "country of manufacture", "Начать учет времени": "Start timekeeping", "необяз. по ум. - %1": "optional, def. val. - %1", "РаботаСППолямиЗадач": "TasksFieldsManagement", "значение для замены": "replacement value", -"ПрочитатьЭлементRSS": "ReadItemRSS", -"Картинка задачи.jpg": "Topic picture.jpg", -"Получает файл по ID": "Gets file by ID", -"ПереданныеПараметры": "PassedParameters", -"ОзонМассивОбновлено": "OzonUpdatedArray", -"проект по умолчанию": "default project", -"ОбработанныеПозиции": "ProcessedPositions", -"OpenAIУдалениеФайла": "OpenAIFileDeletion", -"УстановитьЗаголовки": "SetHeaders", -"БитриксСоответствие": "BitrixMap", -"ИсполняемыеСценарии": "RunningScenarios", -"Создать комментарий": "Create comment", -"Новое подразделение": "New department", -"Структура из Строка": "Structure Of String", -"ПрочитатьАвтораAtom": "ReadAuthorAtom", -"СоздатьИзменитьРоль": "CreateOrUpdateRole", -"Проверка_ВКСвойство": "Check_VKProp", -"ПолучитьСписокЗадач": "GetTasksList", +"СлакСсылкаСообщения": "SlackMessageLink", "идентификатор сайта": "site identifier", -"УдалитьСтадиюКанбана": "DeleteKanbanStage", -"НастройкиЛогирования": "LoggingSettings", -"КоличествоПараметров": "NumberOfParameters", -"HTTP (служебный, ОПИ": "HTTP (service, OpenIntegrations", -"УправлениеОперациями": "ActionsManagement", -"ПолучитьТаймслотыFBO": "GetFBOTimeslots", -"Комментарий к заказу": "Order comment", -"Это коннектор !NOCLI": "Is connector !NOCLI", -"СуществующееЗначение": "ExistingValue", -"СтруктураПараметров3": "ParameterStructure3", -"Получение информации": "Data retrieval", -"Параметры соединения": "Connection parameters", -"Имя пользователя SSH": "SSH username", -"Соответствие свойств": "Properties map", -"Идентификатор потока": "Stream Identifier", -"СтруктураНапоминаний": "RemindersStructure", -"ИзменитьКартинкуЧата": "ChangeChatPicture", -"ПолучитьСписокСделок": "GetDealsList", -"ВКИНформацияОТоварах": "VKProductData", -"ПереименоватьКаталог": "RenameFolder", -"УстановитьРежимТеста": "SetTestMode", -"Тестовое сообщение 1": "TestMessage1", -"СоздатьСтрокуПодписи": "CreateSignatureString", -"Обновленный файл.jpg": "UpdatedFile.jpg", -"ПолучитьЛогиЭлемента": "GetItemLogs", -"ДобавитьКлючЗначение": "AddKeyValue", -"ПолучитьНастройкиTls": "GetTlsSettings", -"Удалить пользователя": "Delete user", -"МассивДвоичныхДанных": "BinaryDataArray", -"СравнитьДвеКоллекции": "CompareTwoCollections", -"ПереданКоннекторGrpc": "ConnectorGrpcPassed", -"СтруктураЦеныЗакупки": "PurchasePriceStructure", -"СкачатьФайлСообщения": "DownloadMessageFile", -"ПолучитьДанныеОСайте": "GetSiteData", -"Имя бакета приемника": "Destination bucket name", -"СледующаяВложенность": "NextNesting", -"Создать/Удалить блок": "Create/Delete block", -"УстановитьСессиюHTTP": "SetHTTPSession", -"УстановитьФайлОтвета": "SetResponseFile", -"INSERT с параметрами": "INSERT with parameters", -"Сервер вернул статус": "The server returned the status", -"ПараметрыАвторизации": "AuthParameters", -"Dropbox_СкачатьПапку": "Dropbox_DownloadFolder", -"Если Не Клиент Тогда": "If Not Client Then", -"РазмерФайлаЛокальный": "FileSizeLocal", -"ВременныйФайлБольшой": "BigTempFile", -"ID поля для удаления": "Field ID for deletion", -"Проверка_БитриксФайл": "Check_BitrixFile", -"ID страницы родителя": "Parent page ID", -"Структура полей лида": "Structure of lead fields", -"СоответствиеВозврата": "ReturnMapping", -"ОбработанныйАргумент": "ProcessedArgument", -"ДокументБезКатегории": "DocumentWithoutCategory", -"ЗагрузитьБольшойФайл": "UploadLargeFile", -"VK_СоздатьОбсуждение": "VK_CreateDiscussion", -"ИменованныеПараметры": "NamedParams", -"УправлениеСчетчиками": "CountersManagement", -"ЦветнойВыводРазрешен": "ColoredOutputAvailable", -"ОтправитьГифку (Путь": "SendGif (Path", -"ID родительской базы": "Parent database ID", -"Удаляет задачу по ID": "Delete task by ID", -"ПодчиненнаяСтруктура": "SubordinateStructure", -"Клавиатура коллекция": "Keyboard collection", -"ПолучитьКаталог (хук": "GetFolder (wh", -"ПолучитьСписокТестов": "GetTestList", -"Новый путь к объекту": "New path to object", -"ПолучитьСписокОфисов": "GetOfficeList", -"Работа с коллекциями": "Collections management", -"СкопироватьФайл (хук": "MakeFileCopy (wh", -"Очищает таблицу базы": "Clears the database table", -"СтруктураРуководства": "ManualStructure", -"ПараметрыПодключения": "ConnectionParams", -"СменитьВладельцаЧата": "ChangeChatOwner", -"Вайбер_ОтправитьФайл": "Viber_SendFile", -"НастройкиИИнформация": "SettingsAndInformation", -"НастройкаНапоминания": "ReminderSetting", -"Тестовый комментарий": "TestComment", -"признак шаблона (Y|N": "is pattern (Y|N", -"МассивПараметровСокр": "ParameterArrayTrim", -"УстановитьТемуКанала": "SetChannelTopic", -"ПолучитьТелоКакПоток": "GetBodyAsStream", -"ПолучитьНовости (хук": "GetPosts (wh", -"Удаляет сделку по ID": "Deletes deal by ID", -"и OpenSSL версии 3.x": "and OpenSSL version 3.x", -"VK_ЗакрытьОбсуждение": "VK_CloseDiscussion", -"Идентификатор товара": "Product identifier", -"СтруктураНапоминания": "ReminderStructure", -"ПреобразоватьТелефон": "ConvertPhone", -"УправлениеЗвукомЧата": "ChatNotificationsSwitch", -"время начала запуска": "launch start time", -"Имя функции в модуле": "Function name in module", -"БитриксФайлСообщение": "BitrixFileMessage", -"GMax_РаботаСГруппами": "GMax_GroupManagement", -"СделатьФайлПриватным": "MakeFilePrivate", -"Гарантировать записи": "Ensure records", -"МетаданныеСоединения": "ConnectionMetadata", -"ВКИнформацияОТоварах": "VKProductData", -"ПараметрыТестаПрокси": "TestProxyParameters", -"Структура привилегии": "Privilege structure", -"ЗавершитьУчетВремени": "StopTimekeeping", -"Настройки соединения": "Connection settings", -"ОчиститьТаблицу (TLS": "ClearTable (TLS", -"ОбработанноеЗначение": "ProcessedValue", -"ВК_ЛайкРепостКоммент": "VKAPI_LikeRepostComment", -"Наименование альбома": "Album name", -"СформироватьТекстSQL": "FormSQLText", -"ТелеграмСозданиеТемы": "TelegramCreateTopic", -"идентификатор сделки": "Deal identifier", -"ПерезапуститьИнстанс": "RebootInstance", -"НеобходимТипПоВерсии": "TypeRequieredByVersion", -"Получить базу данных": "Get database", -"ЧатыИЛичныеСообщения": "ChatsAndMessages", -"Вернуть ответ !NOCLI": "Return response !NOCLI", -"СоответствиеСимволов": "CharacterMapping", -"Переименовать объект": "Rename object", -"Спец. символы в пути": "Special characters at path", -"ИзменитьНовость (хук": "UpdatePost (wh", -"СтруктураБазовойЦены": "BasePriceStructure", -"СформироватьШтрихкод": "CreateBarcode", -"Выполнить запрос SQL": "Execute SQL query", -"ЛокальныеПодкаталоги": "LocalSubfolders", -"Управление проектами": "Project management", -"ТранспортПоУмолчанию": "DefaultTransport", -"Универсальный сервер": "Generic server", -"идентификатор валюты": "currency identifier", -"ЗащищенноеСоединение": "SecureConnection", -"URL к внешнему файлу": "URL to external file", -"ОтправитьВидео (Путь": "SendVideo (Path", -"ГарантироватьТаблицу": "EnsureTable", -"OLLM_РаботаСМоделями": "OLLM_ModelsManagement", -"СоздатьСтраницуВБазу": "CreatePageInDatabase", -"Использовать asserts": "Use asserts", -"ВывестиДопИнформацию": "DisplayAdditionalInformation", -"ОткрытьЗакрытьДиалог": "OpenCloseDialog", -"РаботаСКомментариями": "CommentManagement", -"РезультатПодкаталога": "ResultSubdirectory", -"идентификатор стадии": "stage identifier", -"ДобавитьРодителяБазы": "AddDatabaseParent", -"Удаляет проект по ID": "Deletes a project by ID", -"Получить аватар чата": "Get chat avatar", -"Создать транскрипцию": "Create transcription", -"Аудио и видеотехника": "Audio and video", -"Проверка_ВКСообщение": "Check_VKMessage", -"Сгруппировать товары": "Group products", -"ПолучитьНастройкиTLS": "GetTLSSettings", -"Работа с календарями": "Calendars management", -"Пустой макет события": "Empty event template", -"Приостановить задачу": "Pause task", -"СтруктураСертификата": "CertStructure", -"ОтправитьМеидагруппу": "SendMediaGroup", -"РазмерФайлаУдаленный": "FileSizeRemote", -"Компонента RCON (ОПИ": "RCON Component (OpenIntegrations", -"Результат = %1.%2(%3": "Result = %1.%2(%3", -"ОтправитьАудио (Путь": "SendAudio (Path", -"ИзменитьПуть (список": "UpdatePath (list", -"СтруктураАвторизации": "AuthStructure", -"MIME тип аудио файла": "MIME type of audio file", -"Отложенное сообщение": "Sheduled message", -"Б24_РаботаСНовостями": "B24_PostsManagement", -"ДропбоксПространство": "DropboxSpace", -"РаботаСУведомлениями": "NotificationsManagement", -"1|#color=Желтый) -%2": "1|#color=Yellow) -%2", -"СоздатьИсторию (путь": "CreateStory (path", -"СтруктураПараметров5": "ParameterStructure5", -"ИзменитьПользователя": "UpdateUser", -"VK_НаписатьСообщение": "VK_WriteMessage", -"ПолучитьПользователя": "GetUser", -"Проверка_НоушнОбъект": "Check_NotionObject", -"Удалить внешний файл": "Delete external file", -"задача в отчете (Y|N": "task in the report (Y|N)", -"ПолучитьВремяЗапуска": "GetLaunchTime", -"СтруктураПараметров7": "ParameterStructure7", -"Домен из URL запроса": "Domain from the request URL", -"Восстановить каталог": "Restore folder", -"Офис группы компаний": "Group office", -"Получить поле (email": "Get field (email", -"ПрочитатьФайлЗапуска": "ReadLaunchFile", -"ПолучитьПолныйСостав": "GetFullComposition", -"УстановитьСессиюGRPC": "SetGRPCSession", -"ЗагрузитьУдалитьФайл": "UploadDeleteFile", -"Аннотация к картинке": "Image annotation", -"Создать пользователя": "Create user", -"ID копируемого листа": "CopiedSheetID", -"Bitrix24_УдалитьФайл": "Bitrix24_DeleteFile", -"HTTP_ПолучениеОтвета": "HTTP_ResponseReceiving", -"Новый заголовок базы": "New database title", -"ЗаголовокАвторизации": "AuthorizationHeader", -"Изменить аватар чата": "Change chat picture", -"НормализованныеФайлы": "NormalizedFiles", -"ОтправитьФайл (канал": "SendFile (channel", -"ПолучитьБлокКартинки": "GetPictureBlock", -"ПолучитьОбъект (файл": "GetObject (file", -"ФорсироватьРезультат": "ForceResult", -"OPI_РасширенныйВызов": "OPI_AdvancedCall", -"ДобавитьОписаниеБазы": "AddDatabaseDescription", -"ДобавитьСвойстваБазы": "AddDatabaseProperties", -"Получает метку по ID": "Gets the tag by ID", -"137516).Равно(Истина": "137516).Equal(True", -"показатель информера": "informer index", -"Закрыть поток !NOCLI": "Close stream !NOCLI", -"УстановитьТегиБакета": "PutBucketTagging", -"метод>|#color=Бирюза": "метод>|#color=Cyan", -"СформироватьМедиаURL": "FormMediaURL", -"Начало синхронизации": "Start synchronization", -"Добавить комментарий": "Create comment", -"Проверка_ТелеграмБан": "Check_TelegramBan", -"Хеширование.Добавить": "Hashing.Append", -"ПодключитьРасширение": "ConnectExtension", -"Важный документ.docx": "Imortant doc.docx", -"С basic авторизацией": "With basic authorization", -"Включить звук задачи": "Unmute task", -"Наименование объекта": "Object name", -"ОтладочнаяИнформация": "DebugInfo", -"Общий вес (в граммах": "Total weight (grams", -"ДобавитьПараметрФлаг": "AddFlagParam", -"Создать/Удалить пост": "Create/Delete post", -"ПолучитьСписокФайлов": "GetFilesList", -"ПолучитьПолеТелефона": "GetPhoneField", -"НормализоватьТаблицу": "NormalizeTable", -"С клавиатурой, в чат": "With keyboard, in chat", -"ВернутьДочерниеБлоки": "ReturnChildBlocks", -"Делает репост записи": "Reposts the record", -"1: Значения не равны": "1: Values ​​are not equal", -"Тип (язык) квитанции": "Receipt type (language)", -"ID события календаря": "Calednar event ID", +"ПолучитьСписокЗадач": "GetTasksList", +"Проверка_ВКСвойство": "Check_VKProp", +"СоздатьИзменитьРоль": "CreateOrUpdateRole", +"ПрочитатьАвтораAtom": "ReadAuthorAtom", +"Структура из Строка": "Structure Of String", +"Новое подразделение": "New department", +"Создать комментарий": "Create comment", +"ПолучитьОбщийМодуль": "GetCommonModule", +"ИсполняемыеСценарии": "RunningScenarios", +"УстановитьЗаголовки": "SetHeaders", +"OpenAIУдалениеФайла": "OpenAIFileDeletion", +"ОбработанныеПозиции": "ProcessedPositions", +"проект по умолчанию": "default project", +"ОзонМассивОбновлено": "OzonUpdatedArray", +"ПереданныеПараметры": "PassedParameters", +"Получает файл по ID": "Gets file by ID", +"Картинка задачи.jpg": "Topic picture.jpg", +"ПрочитатьЭлементRSS": "ReadItemRSS", +"БитриксСоответствие": "BitrixMap", +"Dropbox_СкачатьФайл": "Dropbox_DownloadFile", +"РаботаСБазамиДанных": "DatabaseManagement", +"СоздатьЗаписи (одна": "CreateRecords (one", +"АккаунтИАвторизация": "AccountAndAuthorization", +"УдалитьОбъект (Путь": "DeleteObject (Path", +"Получить поле (файл": "Get field (file", +"СоответствиеСвойств": "PropertyMap", +"Получить ассистента": "Retrieve assistant", +"Структура Из Строка": "Structure Of String", +"Проверка обновления": "Updating check", +"СоединениеОбработки": "ProcessingConnection", +"СоздатьТвитКартинки": "CreateImageTweet", +"СтрокаКлючевыхПолей": "KeyFieldsString", +"ПолучитьНастройкиKI": "GetSettingsKI", +"Скопировать каталог": "Copy folder", +"СтрокаПользователей": "MembersQuery", +"Команда FTP: `SIZE`": "FTP Command: `SIZE`", +"Массив из Структура": "Array of Structure", +"Результат обработки": "Processing result", +"ПоддерживаемыйОтвет": "SupportedResponse", +"ПолучитьЗаписи (TLS": "GetRecords (TLS", +"Создать тему форума": "Create forum topic", +"Команда FTP: `DELE`": "FTP Command: `DELE`", +"Создает базу данных": "Creates a database", +"ПолучитьТегиОбъекта": "GetObjectTagging", +"ОзонМассивРейтингов": "OzonRatingArray", +"Перейдите по ссылке": "Go to the link", +"Удаляет базу данных": "Deletes the database", +"ЗаменитьСпецСимволы": "ReplaceSpecialCharacters", +"RC_ВыполнениеКоманд": "RC_CommandsExecution", +"ПутьЛоговБиблиотеки": "LibraryLogPath", +"РаботаСДиректориями": "DirectoryManagement", +"УдалитьПользователя": "DeleteUser", +"УдалитьЗаписи (одна": "DeleteRecords (one", +"НаписатьКомментарий": "WriteComment", +"Язык: rus, eng, zho": "Language: rus, eng, zho", +"Yandex Metrika (ОПИ": "Yandex Metrika (OpenIntegrations", +"Новое имя хранилища": "New storage name", +"УдалитьФайлВПопытке": "RemoveFileWithTry", +"ПродолжатьПолучение": "ContinueReceiving", +"ПолучитьПараметрыВК": "GetVKParameters", +"Удалить базу данных": "Drop database", +"СоздатьНаборЗапуска": "CreateLaunchSet", +"Плановое завершение": "Planned end", +"Найти пользователей": "Find users", +"СоздатьТаблицу (TLS": "CreateTable (TLS", +"МассивПользователей": "ArrayOfUsers", +"УдалитьНовость (хук": "DeletePost (wh", +"Получить поле (дата": "Get field (date", +"ЗагрузитьОбъект (DB": "PutObject (DB", +"БуферДвоичныхДанных": "BinaryDataBuffer", +"СброситьПоляОбъекта": "ResetObjectFields", +"Массив файлов видео": "Video files array", +"ИзменитьЗадачу (хук": "UpdateTask (wh", +"АльтернативныйТекст": "AlternateText", +"RPortal_ЗаписьЛогов": "RPortal_LogRecording", +"НумерацияПараметров": "ParameterNumeration", +"ГлобальныеПараметры": "GlobalParams", +"ПриостановитьЗадачу": "PauseTask", +"МассивОтсутствующих": "AbsenteesArray", +"ОбновитьЦеныТоваров": "UpdateProductsPrices", +"Значение для поиска": "Search value", +"АТЗаписьНомерСтрока": "ATRecordNumberAndString", +"СоздатьЗапросСТелом": "CreateRequestWithBody", +"Новое описание базы": "New database description", +"СоздатьТвитСОпросом": "CreateTweetWithPoll", +"СтруктураРезультата": "ResultStructure", +"МассивМедиаКартинок": "MediaPictureArray", +"Б24_РаботаСЗадачами": "B24_TaskManagement", +"признак перезапуска": "rerun flag", +"ПолучитьСписокЛидов": "GetLeadsList", +"Отправить сообщение": "Send message", +"Простота и гибкость": "Simplicity and flexibility", +"Mongo_РаботаСБазами": "Mong_DatabaseManagement", +"ВК_МетодыОбсуждений": "VKAPI_DiscussionMethods", +"ВосстановитьКаталог": "RestoreFolder", +"Переименовать канал": "Rename channel", +"Отбор по типу файла": "Filter by file type", +"ОтложитьЗадачу (хук": "DeferTask (wh", +"УстановкаЗаголовков": "HeadersSetting", +"ПолучитьСделку (хук": "GetDeal (wh", +"Dropbox_ДобавитьТег": "Dropbox_AddTag", +"КопироватьКоллекцию": "CopyCollection", +"ПолучитьСписокЧатов": "GetChatList", +"ПараметрыЗаписиJSON": "JSONWriterSettings", +"пароль пользователя": "user password", +"OpenAIПредставления": "OpenAIEmbeddings", +"Пользователи и роли": "Users and roles", +"УдалитьТоварыБезSKU": "DeleteProductsWithoutSKU", +"ДействиеСВложениями": "ActionWithAttachment", +"Нажмите Publish App": "Click on Publish App", +"Команда FTP: `SITE`": "FTP Command: `SITE`", +"Переместить каталог": "Move folder", +"ПолучитьДиалог (хук": "GetDialog (wh", +"ДобавитьВидеоТовара": "AddProductVideo", +"ЭтоВнутренняяОшибка": "IsInternalError", +"Переслать сообщение": "Forward message", +"НастройкиСоединения": "ConnectionSettings", +"Товар без категории": "Item without category", +"Создать базу данных": "Create database", +"ЗначениеПоУмолчанию": "DefaultValue", +"Кол-во комментариев": "Comments count", +"Неизвестная команда": "Unknown command", +"ЗаписатьФайлЗапуска": "WriteLaunchFile", +"РазмерПостфиксаGZip": "GZipPostfixSize", +"ПолучитьСписокТегов": "GetTagList", +"Дополнить c атрибут": "Complete complex attribute", +"ДобавитьКомментарий": "CrateComment", +"Архив : yellow": "Archive : yellow", +"ЗапросТелоКоллекция": "RequestBodyCollection", +"УниверсальныйСервер": "GenericServer", +"ID категории товара": "Product category ID", +"ШаблонИнициализации": "InitializationTemplate", +"SSH (служебный, ОПИ": "SSH (Utility, OpenIntegrations", +"ДополнитьКэшСостава": "CompleteCompositionCache", +"Архивировать товары": "Archive products", +"УдалитьКаталог (хук": "DeleteFolder (wh", +"ПолучениеИнформации": "DataRetrieval", +"опцияN|#color=Серый": "optionN|#color=Gray", +"Фото- и видеоуслуги": "Photo and video service", +"Идентификатор файла": "File identifier", +"Получить информацию": "Get data", +"Путь из URL запроса": "Path from the request URL", +"Комплексные решения": "Complete solutions", +"ПолучитьФайлНаДиске": "GetFileOnDisk", +"Опубликовать объект": "Publish object", +"СтруктураОбновления": "UpdatesStructure", +"ПолучитьКомментарий": "GetComment", +"Завершение отправки": "Sending completion", +"Команда FTP: `NOOP`": "FTP Command: `NOOP`", +"Массив файлов гифок": "Gif files array", +"Канцелярские товары": "Stationery", +"0 Или СтрНайти(Путь": "0 Or StrFind(Path", +"СоздатьНовость (хук": "CreatePost (wh", +"СоздатьСсылкуТокена": "CreateTokenLink", +"Команда FTP: `FEAT`": "FTP Command: `FEAT`", +"Получает список баз": "Gets a list of bases", +"Мой новый календарь": "My new calendar", +"Удаляет метку по ID": "Deletes a tag by ID", +"СправкаПоПараметрам": "ParamsHelp", +"массовое_обновление": "mass_update", +"ОперационнаяСистема": "OperatingSystem", +"СтруктураПривилегии": "PrivilegeStructure", +"Команда FTP: `LIST`": "FTP Command: `LIST`", +"УстановитьНастройки": "SetSettings", +"Открыть тему форума": "Open forum topic", +"РезультатВыполнения": "ExecutionResult", +"ДобавитьВнешнийФайл": "AddExternalFile", +"ВернутьИмяФайлаТела": "ReturnBodyFilename", +"ПолучитьВнешнийФайл": "GetExternalFile", +"Удалить тему форума": "Delete forum topic", +"ПереименоватьОбъект": "RenameObject", +"ИзменитьСделку (хук": "UpdateDeal (wh", +"Удалить комментарий": "Delete comment", +"СоответствиеКолонок": "ColoumnsMap", +"Длительность опроса": "Poll duration", +"Создает новую книгу": "Creates a new spreadsheet", +"Количество : number": "Count : number", +"ДобавитьПараметрURL": "AddURLParameter", +"СгруппироватьТовары": "GroupProducts", +"ПолучитьТокенПоКоду": "GetTokenByCode", +"СоздатьИзменитьБазу": "CreateUpdateDatabase", +"Фильтр по списку ID": "filter by IDs list", +"Создать/Удалить тег": "Create/Delete tag", +"ЗапуститьПриложение": "RunApp", +"ТелеграмМедиагруппа": "TelegramMediagroup", +"ОзонСписокКатегорий": "OzonCategoryList", +"ПолучитьСписокМеток": "GetTagsList", +"OAI_РаботаСМоделями": "OAI_ModelsManagement", +"СоздатьТранскрипцию": "CreateTranscription", +"ИсключениеПриОшибке": "ExceptionOnError", +"РабочееПространство": "Workspace", +"СтруктураЗавершения": "FinishStructure", +"Данные для отправки": "Sending data", +"ЗаменитьСпецсимволы": "ReplaceSpecialCharacters", +"ОбработатьПараметры": "ProcessParameters", +"Ставит лайк на пост": "Likes a post", +"ВызватьСНастройками": "CallWithSettings", +"Комментарий курьеру": "Comment to courier", +"Наименование бакета": "Bucket name", +"Эфимерное сообщение": "Ephemeral message", +"Альбом из автотеста": "AlbumFromAutoTest", +"ОбработкаПараметров": "ParamsProcessing", +"Ошибка отправки: %1": "Sending error: %1", +"СтруктураКлавиатуры": "KeyboardStructure", +"ОбработатьОтветGRPC": "ProcessGRPCResponse", +"НеобходимыйПараметр": "RequiredParameter", +"БитриксНеопределено": "BitrixUndefined", +"ПолучитьТелоЗапроса": "GetRequestBody", +"ПолучитьСписокАкций": "GetPromotionsList", +"Удалить теги бакета": "Delete bucket tagging", +"Управление группами": "Group management", +"ЗаписатьЭлементФида": "WriteFeedItem", +"Новый текст новости": "New post text", +"Создание приложения": "Creating an application", +"Команда FTP: `STOR`": "FTP Command: `STOR`", +"КлавиатураСообщения": "MessageKeyboard", +"Получить статистику": "Get statistics", +"ПреобразоватьБулево": "ConvertBoolean", +"ДлительностьПопытки": "AttemptDuration", +"ПолучитьОсобенности": "GetFeatures", +"ЗаполнитьСортировку": "FillSorting", +"ДобавитьФайлВЗадачу": "AttachFileToTopic", +"Удаляет тему форума": "Deletes a forum topic", +"ЗаполнитьURLОбъекта": "FillObjectURL", +"один из типов медиа": "media type", +"ИзменитьКомментарий": "EditComment", +"ПараметрыСоединения": "ConnectionParams", +"Наименование товара": "Product name", +"ВосстановитьСчетчик": "RestoreCounter", +"Получить лог !NOCLI": "Get log !NOCLI", +"Переслать сообщения": "Forward messages", +"Глубина товара в мм": "Product depth in mm", +"МассивСтрокОписания": "DescriptionLinesArray", +"Закрыть тему форума": "Close forum topic", +"УправлениеДоставкой": "DeliveryManagement", +"ОбновитьЗаписи (TLS": "UpdateRecords (TLS", +"ОбработатьРезультат": "ProcessResult", +"ОбработатьЗаголовки": "HeadersProcessing", +"Получить блок файла": "Get file block", +"УстановитьТипДанных": "SetDataType", +"ПолучитьТаблицыБазы": "GetDatabaseTables", +"СоответствиеОтветов": "ResponseMap", +"Имя новой коллекции": "Collection name", +"УправлениеПроектами": "ProjectManagement", +"Кабинеты и магазины": "Campaigns and business", +"ДобавитьЗаписи (TLS": "AddRecords (TLS", +"Изменить имя группы": "Update group name", +"12000).Равно(Истина": "1200).Equal(True", +"ГуглОбновлениеЯчеек": "GoogleCellUpdating", +"ПолучитьЗадачу (хук": "GetTask (wh", +"ЦеныИОстаткиТоваров": "PricesAndStocks", +"Пароль пользователя": "Users password", +"Закрепить сообщение": "Pin message", +"Проверка_ВКПодборка": "Check_VKCollection", +"SQLL_ОсновныеМетоды": "SQLL_CommonMethods", "СоздатьПодразделение": "CreateDepartment", +"ВернутьДочерниеБлоки": "ReturnChildBlocks", +"ID события календаря": "Calednar event ID", +"Тип (язык) квитанции": "Receipt type (language)", +"1: Значения не равны": "1: Values ​​are not equal", +"Делает репост записи": "Reposts the record", "Скопируйте **Токен**": "Copy the **Token**", +"Создать/Удалить пост": "Create/Delete post", +"НормализоватьТаблицу": "NormalizeTable", +"ПолучитьПолеТелефона": "GetPhoneField", +"ПолучитьСписокФайлов": "GetFilesList", +"ДобавитьПараметрФлаг": "AddFlagParam", +"Общий вес (в граммах": "Total weight (grams", +"ОтладочнаяИнформация": "DebugInfo", "API Google Kалендаря": "Google Calendar API", -"частное событие: Y,N": "private event: Y,N", -"Восстановить счетчик": "Restore counter", -"СоздатьТоварПодборку": "CreateProductSelection", -"идентификатор задачи": "task identifier", -"ID элемента чеклиста": "Checklist element ID", -"идентификатор автора": "author identifier", -"Dropbox_СоздатьПапку": "Dropbox_CreateFolder", -"МассивПолныхОписаний": "FullDescriptionsArray", -"ОбычноеСопоставление": "SimpleComparison", +"Включить звук задачи": "Unmute task", +"С клавиатурой, в чат": "With keyboard, in chat", +"Наименование объекта": "Object name", "ПрочестьРезультатCLI": "ReadCLIResponse", -"СтруктураОтправителя": "SenderStructure", -"ПолучениеУведомлений": "NotificationsReceiving", -"Б24_РаботаСоСделками": "B24_DealsManagement", -"VK_ОткрытьОбсуждение": "VK_OpenDiscussion", -"Список пользователей": "User list", -"Удалить теги объекта": "Delete object tagging", -"Работа с документами": "DocumentsManagement", -"ИзменитьСвойстваБазы": "EditDatabaseProperties", -"СтруктураПараметров2": "ParameterStructure2", +"Восстановить счетчик": "Restore counter", "Проверка_БитриксПоля": "Check_BitrixFields", +"СтруктураПараметров2": "ParameterStructure2", +"С basic авторизацией": "With basic authorization", +"ИзменитьСвойстваБазы": "EditDatabaseProperties", +"Работа с документами": "DocumentsManagement", +"Удалить теги объекта": "Delete object tagging", +"Список пользователей": "User list", +"VK_ОткрытьОбсуждение": "VK_OpenDiscussion", +"частное событие: Y,N": "private event: Y,N", +"Б24_РаботаСоСделками": "B24_DealsManagement", +"СтруктураОтправителя": "SenderStructure", +"ОбычноеСопоставление": "SimpleComparison", +"МассивПолныхОписаний": "FullDescriptionsArray", +"Dropbox_СоздатьПапку": "Dropbox_CreateFolder", +"идентификатор автора": "author identifier", +"ID элемента чеклиста": "Checklist element ID", +"идентификатор задачи": "task identifier", +"СоздатьТоварПодборку": "CreateProductSelection", +"ПолучениеУведомлений": "NotificationsReceiving", +"Важный документ.docx": "Imortant doc.docx", +"НормализованныеФайлы": "NormalizedFiles", +"Хеширование.Добавить": "Hashing.Append", +"HTTP_ПолучениеОтвета": "HTTP_ResponseReceiving", +"Bitrix24_УдалитьФайл": "Bitrix24_DeleteFile", +"ID копируемого листа": "CopiedSheetID", +"Создать пользователя": "Create user", +"Аннотация к картинке": "Image annotation", +"ЗагрузитьУдалитьФайл": "UploadDeleteFile", +"УстановитьСессиюGRPC": "SetGRPCSession", +"ПолучитьПолныйСостав": "GetFullComposition", +"ПрочитатьФайлЗапуска": "ReadLaunchFile", +"Получить поле (email": "Get field (email", +"Офис группы компаний": "Group office", +"Восстановить каталог": "Restore folder", +"Домен из URL запроса": "Domain from the request URL", +"СтруктураПараметров7": "ParameterStructure7", +"ПолучитьВремяЗапуска": "GetLaunchTime", "КодировкаТелаЗапроса": "EncodeRequestBody", +"задача в отчете (Y|N": "task in the report (Y|N)", +"Новый заголовок базы": "New database title", +"ПодключитьРасширение": "ConnectExtension", +"ЗаголовокАвторизации": "AuthorizationHeader", +"ОтправитьФайл (канал": "SendFile (channel", +"Проверка_ТелеграмБан": "Check_TelegramBan", +"Добавить комментарий": "Create comment", +"Начало синхронизации": "Start synchronization", +"СформироватьМедиаURL": "FormMediaURL", +"метод>|#color=Бирюза": "метод>|#color=Cyan", +"УстановитьТегиБакета": "PutBucketTagging", +"Закрыть поток !NOCLI": "Close stream !NOCLI", +"показатель информера": "informer index", +"137516).Равно(Истина": "137516).Equal(True", +"Получает метку по ID": "Gets the tag by ID", +"ДобавитьСвойстваБазы": "AddDatabaseProperties", +"ДобавитьОписаниеБазы": "AddDatabaseDescription", +"OPI_РасширенныйВызов": "OPI_AdvancedCall", +"ФорсироватьРезультат": "ForceResult", +"ПолучитьОбъект (файл": "GetObject (file", +"ПолучитьБлокКартинки": "GetPictureBlock", +"Изменение публикации": "PublicationChange", +"Изменить аватар чата": "Change chat picture", "ответ сервера Google": "Google server response", -"Дата выдачи паспорта": "Date of issue of passport", +"Текст запроса к базе": "Database query text", "Изменить тему форума": "Edit forum topic", -"УдалитьПодразделение": "DeleteDepartment", -"Google Calendar (ОПИ": "Google Calendar (OpenIntegrations", -"Клавиатура структура": "Keyboard structure", -"ФИО контактного лица": "Full name of contact person", -"Установить form тело": "Set Form body", -"СоздатьСоставнойПост": "CreateCompositePost", -"Дополнительный текст": "Additional text", -"ПрограммныйИнтерфейс": "Public", -"Изменить комментарий": "Modify comment", -"Идентификатор канала": "Channel ID", -"УстановитьМетаданные": "SetMetadata", -"СтрокаПодключенияTLS": "TLSConnectionString", -"ПолучитьСвязанныеSKU": "GetRelatedSKUs", -"ЗавершитьЗадачу (хук": "CompleteTask (wh", -"Будущая сделка в RUB": "Future deal in RUB", -"ПереносСтрокJSON.Нет": "JSONLineBreak.None", +"ОтклонитьЗадачу (хук": "DisapproveTask (wh", +"СоздатьТекстовыйТвит": "CreateTextTweet", +"РазделятьМассивыВURL": "SplitArraysInURL", +"ПолучитьОтчетЗапуска": "GetLaunchReport", +"Строка, Произвольный": "String, Arbitrary", +"СоответствиеВарианта": "OptionMap", +"УстановитьЦельКанала": "SetChannelGoal", +"Размер).Равно(Истина": "Size).Equal(True", +"СтруктураПараметров4": "ParameterStructure4", +"предполагаемая сумма": "expected amount", +"Про варианты релизов": "About releases variants", +"Код состояния ответа": "Response status code", +"ПолучитьПодборкиПоИД": "GetSelectionsByID", +"СоответствиеКартинки": "PictureMap", +"ВозвращаемоеЗначение": "ReturnValue", +"Строка, Неопределено": "String, Undefined", +"УстановитьФайлВывода": "SetOutputFile", +"Поддержать на Boosty": "Support on Boosty", +"БезопасноеСоединение": "SafeConnection", +"color=Зеленый) Метод": "color=Green) Method", +"СоответствиеЗначений": "ValueMapping", +"Удалить внешний файл": "Delete external file", +"СделатьФайлПубличным": "MakeFilePublic", +"Путь или ID каталога": "Path or ID of the directory", +"ПрочитатьЭлементAtom": "ReadItemAtom", +"Написать комментарий": "Write a comment", +"Результат выполнения": "Execution result", +"Получить уведомление": "Get notification", +"Тестовое сообщение 2": "TestMessage2", +"ПолучитьИмяФайлаТела": "GetBodyFileName", +"УдалитьТаблицу (тест": "DeleteTable (test", +"Системная информация": "System info", +"СтруктураПараметров1": "ParameterStructure1", +"Новый заголовок чата": "New chat title", +"СтруктураПараметров6": "ParameterStructure6", +"ТипВнешнейКомпоненты": "AddInType", +"Данные описание поля": "Field description data", +"ВКТ_УправлениеЧатами": "VKT_ChatManagement", +"AWS_РаботаСОбъектами": "AWS_ObjectsManagement", +"Telegram_СкачатьФайл": "Telegram_DownloadFile", +"СоздатьУдалитьЗаписи": "CreateDeleteRecords", +"УправлениеИНастройки": "ManagementAndSettings", "Установка заголовков": "Headers setting", +"ПереносСтрокJSON.Нет": "JSONLineBreak.None", +"Будущая сделка в RUB": "Future deal in RUB", +"ЗавершитьЗадачу (хук": "CompleteTask (wh", +"ПолучитьСвязанныеSKU": "GetRelatedSKUs", +"СтрокаПодключенияTLS": "TLSConnectionString", +"УстановитьМетаданные": "SetMetadata", +"Идентификатор канала": "Channel ID", +"Изменить комментарий": "Modify comment", +"ПрограммныйИнтерфейс": "Public", +"Дополнительный текст": "Additional text", +"СоздатьСоставнойПост": "CreateCompositePost", +"Установить form тело": "Set Form body", +"ФИО контактного лица": "Full name of contact person", +"Клавиатура структура": "Keyboard structure", +"Google Calendar (ОПИ": "Google Calendar (OpenIntegrations", +"УдалитьПодразделение": "DeleteDepartment", "200000).Равно(Истина": "200000).Equal(True", "ЗагрузитьФайлЧастями": "UploadFileInParts", "РазмерНесжатыхДанных": "UncompressedDataSize", "Неподдерживаемый тип": "Invalid type", -"ИнформацияОПрогрессе": "ProgressInformation", -"ОтправитьВнешнийФайл": "SendExternalFile", -"Работа с CLI версией": "Working with CLI app", -"СформироватьТестыЯкс": "FormYAXTests", -"ПолучитьПолеВложения": "GetAttachmentField", -"Получить комментарий": "Get comment", -"СоздатьПапку (корень": "CreateFolder (root", -"ПозиционныеПараметры": "PositionParams", -"УстановитьИмяТаблицы": "SetTableName", -"МассивСтруктурКнопок": "ArrayOfButtonStructures", -"ОтправитьМедиагруппу": "SendMediaGroup", -"Mongo_ОсновныеМетоды": "Mongo_CommonMethods", -"Описание нового поля": "Description of the new field", -"Получить теги бакета": "Get bucket tagging", -"ПолучениеОбщихДанных": "GeneralDataRetrieval", -"Получить комментарии": "Get comments", -"ТекстСозданияТаблицы": "TableCreationText", "Свойства базы данных": "Database properties", -"УправлениеИНастройки": "ManagementAndSettings", -"СоздатьУдалитьЗаписи": "CreateDeleteRecords", -"Telegram_СкачатьФайл": "Telegram_DownloadFile", -"БезопасноеСоединение": "SafeConnection", -"Текст запроса к базе": "Database query text", -"УстановитьФайлВывода": "SetOutputFile", -"Строка, Неопределено": "String, Undefined", -"ВозвращаемоеЗначение": "ReturnValue", -"СоответствиеКартинки": "PictureMap", -"ПолучитьПодборкиПоИД": "GetSelectionsByID", -"Код состояния ответа": "Response status code", -"Про варианты релизов": "About releases variants", -"предполагаемая сумма": "expected amount", -"СтруктураПараметров4": "ParameterStructure4", -"Размер).Равно(Истина": "Size).Equal(True", -"УстановитьЦельКанала": "SetChannelGoal", -"СоответствиеВарианта": "OptionMap", -"Строка, Произвольный": "String, Arbitrary", -"ПолучитьОтчетЗапуска": "GetLaunchReport", -"РазделятьМассивыВURL": "SplitArraysInURL", -"СоздатьТекстовыйТвит": "CreateTextTweet", -"ОтклонитьЗадачу (хук": "DisapproveTask (wh", -"Поддержать на Boosty": "Support on Boosty", -"color=Зеленый) Метод": "color=Green) Method", -"AWS_РаботаСОбъектами": "AWS_ObjectsManagement", -"СоответствиеЗначений": "ValueMapping", -"ВКТ_УправлениеЧатами": "VKT_ChatManagement", -"Данные описание поля": "Field description data", -"ТипВнешнейКомпоненты": "AddInType", -"СтруктураПараметров6": "ParameterStructure6", -"Новый заголовок чата": "New chat title", -"СтруктураПараметров1": "ParameterStructure1", -"Системная информация": "System info", -"УдалитьТаблицу (тест": "DeleteTable (test", -"ПолучитьИмяФайлаТела": "GetBodyFileName", -"Тестовое сообщение 2": "TestMessage2", -"Получить уведомление": "Get notification", -"Результат выполнения": "Execution result", -"Написать комментарий": "Write a comment", -"ПрочитатьЭлементAtom": "ReadItemAtom", -"Путь или ID каталога": "Path or ID of the directory", -"СделатьФайлПубличным": "MakeFilePublic", -"Изменение публикации": "PublicationChange", -"Получение уведомлений": "Notifications receiving", -"ОткрытьСоединениеGRPC": "CreateGRPCConnection", -"ТекущееПолноеОписание": "CurrentFullDescription", -"Заголовок приглашения": "Invitation title", -"Ссылка получения кода": "Code retrieval link", -"Изменить пользователя": "Update user", -"ДобавитьContentLength": "AddContentLength", -"Получить список чатов": "Get chat list", -"Проверка_ДропБоксФайл": "Check_DropboxFile", -"ИнициализироватьПоток": "InitializeStream", -"ID рекламной кампании": "Advertising campaign ID", -"1|#color=Желтый) - %2": "1|#color=Yellow) - %2", -"Дата ожидания курьера": "Courier waiting date", -"СтруктураПользователя": "UserStructure", -"ОтправлятьУведомления": "SendNotifications", -"СоответствиеУстановки": "SettingMapping", -"ОтправитьКартинку (ДД": "SendPicture (DD", -"Орган выдачи паспорта": "Passport issuing authority", -"УказаноЧислоСообщений": "NumberOfMessagesSpecified", -"ПолучитьЧеклистЗадачи": "GetTasksChecklist", -"Создать твит картинки": "Create image tweet", -"Гарантировать таблицу": "Ensure table", -"ОтправитьОпрос (канал": "SendPoll (channel", -"РаботаСДискомИФайлами": "StoragesAndFilesManagement", -"Создать/Изменить базу": "Create/Edit database", -"ПреобразованныеДанные": "ConvertedData", -"Наименование картинки": "Picture name", -"ПолучитьСтруктуруЧата": "GetChatStructure", -"ул. Лермонтова, д. 20": "Lermontov st., b. 20", -"GAPI_ЖурналыСообщений": "GAPI_MessageLogs", -"Пакет oint-cli (.ospx": "oint-cli package (.ospx)", -"ПолучитьРазмерОбъекта": "GetObjectSize", -"CHAT (по приглашениям": "CHAT (private", -"ссылка на руководство": "URL to manual", -"Новый текст сообщения": "New message text", -"ТекстПервогоСообщения": "FirstMessageText", -"ОткрытьПотокДляЧтения": "OpenStreamForRead", -"УдалитьМодель (список": "DeleteModel (list", -"Стандартные реквизиты": "Common fields", -"ID поля для изменения": "Field ID for updating", -"УдалитьКолонкуТаблицы": "DeleteTableColumn", -"УдалитьСообщение (хук": "DeleteMessage (wh", -"ПолучитьСтадииКанбана": "GetKanbanStages", -"ВК_СоздатьУдалитьПост": "VKAPI_CreateDeletePost", -"ПолучитьИсториюЗадачи": "GetTaskHistory", -"Получить товары по ID": "Get products by ID", -"Комментарий к новости": "Comment for post", -"Тестовая таблица (изм": "Test table (changed", -"релизах ОПИ на GitHub": "OpenIntegrations releases on GitHub", -"Установить URL !NOCLI": "Set URL !NOCLI", -"Ошибка удаления файла": "File deletion error", -"СоответствиеКатегорий": "CategoryMap", -"Путь файла на сервере": "Path to file on server", -"Dropbox_УдалитьОбъект": "Dropbox_DeleteObject", -"Географическая широта": "Geographic latitude", -"Закрывает поток по ID": "Close stream by ID", -"Учет рабочего времени": "Timekeeping", -"ОбработатьЗапрос (TLS": "ProcessRequest (TLS", -"Перезапустить инстанс": "Reboot instance", -"Получить таблицы базы": "Get base tables", -"РазархивироватьТовары": "UnarchiveProducts", -"СоздатьСвойствоТовара": "CreateProductProperty", -"Получить список задач": "Get tasks list", -"двоичные данные файла": "binary data of the file", -"Роль или массив ролей": "Role or role array", -"Ноушн_СоздатьСтраницу": "Notion_CreatePage", -"ПолучитьСтруктуруЛида": "GetLeadStructure", -"МассивВариантовОпроса": "PollOptionsArray", -"ВременноеСоответствие": "TempMap", -"Установить тип данных": "Set data type", -"УстановкаКонфигурации": "ConfigureSetup", -"СоздатьМодель (запрос": "CreateModel (request", -"Удаляет лист из книги": "Deletes a sheet from the spreadsheet", -"Получить внешний файл": "Get external file", -"Dropbox_ПолучитьТокен": "Dropbox_GetToken", -"Обновить цены товаров": "Update products prices", -"Получить поле (флажок": "Get field (checkbox", -"Отправляем из клиента": "Send from client", -"Новый текст заголовка": "New title", -"наименование компании": "company name", -"Написать в обсуждение": "Write in discussion", -"Изменяет имя каталога": "Change folder name", -"ОбработатьКонецЗаписи": "ProcessRecordsEnd", -"Другой заголовок чата": "Another title", -"ВК_ОтправитьСообщение": "VKAPI_SendMessage", -"ЗапросИнициализирован": "RequestInitialized", -"ПолучитьПолеСтроковое": "GetStringField", -"HTTP_ОбработкаЗапроса": "HTTP_RequestProcessing", -"ID чата для архивации": "Chat ID for archiving", -"ПолучитьПользователей": "GetUsers", -"Строка: `имя роли`": "String: `role name`", -"ЗавершитьОтправкуGRPC": "CompleteGRPCSending", -"ИзменитьПуть (каталог": "UpdatePath (directory", -"ДобавитьЗаголовокБазы": "AddDatabaseHeader", -"Дополнительный тест 3": "Additional test 3", -"Удаляет счетчик по ID": "Deletes a counter by ID", -"Отправить файл по URL": "Send file by URL", -"ПолучитьСообщениеЧата": "GetChatMessage", -"Отключить звук задачи": "Mute task", -"информация о проблеме": "problem information", -"АТУдалениеКомментария": "ATCommentDeleting", -"ОбработатьПодключение": "ProcessConnection", -"ЗаполнитьМассивЛистов": "FillSheetArray", -"ЗаписатьОбъявлениеXML": "WriteXMLDeclaration", -"АутентификацияWindows": "WindowsAuth", -"СформироватьТекстТопа": "FormTopText", -"Создать подразделение": "Create department", -"НачалоФормированияXML": "StartFormingXML", -"УдалитьСвойствоТовара": "DeleteProductProperty", -"СоздатьУдалитьСобытие": "CreateDeleteEvent", -"Получить историю чата": "Get chat history", -"Сервер из URL запроса": "Server from the request URL", -"GMax_ИсторияСообщений": "GMax_MessageHistory", -"Проверка_ВКОбъявление": "Check_VKAd", -"СоздатьТвитСКартинкой": "CreateTweetWithImage", -"Создать копию объекта": "Create object copy", -"1 = ЗагрузитьСценарий": "1 = LoadScript", -"Новое описание задачи": "New task description", -"Массив описаний полей": "Array of field descriptions", -"2000000).Равно(Истина": "2000000).Equal(True", -"СуществующийУдаленный": "ExistingRemote", -"ID метки для удаления": "ID of the tag to be deleted", -"ПолучитьСписокТоваров": "GetProductList", -"id цели для изменения": "if of goal for updating", -"ЗаписатьЗначениеВФайл": "WriteValueToFile", -"Создать сервер !NOCLI": "Create server !NOCLI", -"ПодключитьИсполнитель": "AttachExecutor", -"Вызвать с настройками": "Call with settings", -"СдэкИнтервалыДоставки": "CdekkDeliveryIntervals", -"ВыполнитьЗапросСТелом": "ExecuteRequestWithBody", -"Получить чеки на дату": "Get cashbox checks by date", -"ИзменитьЗаголовокЧата": "ChangeChatTitle", -"Проверка_ЯДискКаталог": "Check_YaDiskFolder", -"ПолучитьСписокЗаписей": "GetListOfRecords", -"Получает сделку по ID": "Gets deal by ID", -"Dropbox_ЗагрузитьФайл": "Dropbox_UploadFile", -"ПолучитьСтруктуруЛога": "GetLogStructure", -"ВернутьОтветКакСтроку": "ReturnResponseAsString", -"ОтправитьДокумент (ДД": "SendDocument (DD", -"габариты и вес товара": "product dimensions and weight", -"УстановитьТегиОбъекта": "PutObjectTagging", -"БитриксМассивОбъектов": "BitrixObjectsArray", -"ЭтоАвторизацияТокеном": "IsTokenAuth", -"ПолучитьОписаниеФайла": "GetFileDescription", -"Минимальная структура": "Minimal structure", -"Новое имя файла 2.jpg": "New file name 2.jpg", -"Проверка_ВКСтатистика": "Check_VKStatistic", -"Удалить подразделение": "Delete department", -"ID целевого сообщения": "Target message ID", -"заголовок руководства": "manual title", -"Google Workspace (ОПИ": "Google Workspace (OpenIntegrations", -"Твиттер_ОбновитьТокен": "Twitter_UpdateToken", -"Token для авторизации": "Token for authorization", -"СформироватьКвитанцию": "CreateReceipt", -"OAI_ОбработкаЗапросов": "OAI_RequestsProcessing", -"Время окончания обеда": "Lunch finish time", -"VK_ПолучитьСтатистику": "VK_GetStatistics", -"СоответствиеАртикулов": "ArticlesMap", -"Загрузить файл по URL": "Upload file by URL", -"МассивОписанийКолонок": "ColoumnsDescriptionArray", -"Проверка_БитриксЧисло": "Check_BitrixNumber", -"ДвоичныеДанные,Строка": "BinaryData,String", -"Роль или список ролей": "Role or list of roles", -"ЗаписатьПараметрВФайл": "WriteParameterToFile", -"ПодключениеРасширения": "ExtensionConnection", -"ВосстановитьФайл (хук": "RestoreFile (wh", -"ДобавитьТестовыйНабор": "AddTestSet", -"Управление операциями": "Actions management", -"СтруктураОффлайнОпций": "OfflineOptionsStructure", -"цвет текста календаря": "calendar text color", -"ID тестового элемента": "Test item ID", -"VK_ПолучитьТоварыПоИД": "VK_GetProductsByID", +"ТекстСозданияТаблицы": "TableCreationText", +"Получить комментарии": "Get comments", +"ПолучениеОбщихДанных": "GeneralDataRetrieval", +"Получить теги бакета": "Get bucket tagging", +"Описание нового поля": "Description of the new field", +"Mongo_ОсновныеМетоды": "Mongo_CommonMethods", +"ОтправитьМедиагруппу": "SendMediaGroup", +"Дата выдачи паспорта": "Date of issue of passport", +"МассивСтруктурКнопок": "ArrayOfButtonStructures", +"ПозиционныеПараметры": "PositionParams", +"СоздатьПапку (корень": "CreateFolder (root", +"Получить комментарий": "Get comment", +"ПолучитьПолеВложения": "GetAttachmentField", +"СформироватьТестыЯкс": "FormYAXTests", +"Работа с CLI версией": "Working with CLI app", +"ОтправитьВнешнийФайл": "SendExternalFile", +"ИнформацияОПрогрессе": "ProgressInformation", +"УстановитьИмяТаблицы": "SetTableName", +"Проверка_НоушнОбъект": "Check_NotionObject", +"Сгруппировать товары": "Group products", +"VK_НаписатьСообщение": "VK_WriteMessage", +"ОтправитьГифку (Путь": "SendGif (Path", +"ЦветнойВыводРазрешен": "ColoredOutputAvailable", +"УправлениеСчетчиками": "CountersManagement", +"ИменованныеПараметры": "NamedParams", +"VK_СоздатьОбсуждение": "VK_CreateDiscussion", +"ЗагрузитьБольшойФайл": "UploadLargeFile", +"ДокументБезКатегории": "DocumentWithoutCategory", +"ОбработанныйАргумент": "ProcessedArgument", +"СоответствиеВозврата": "ReturnMapping", +"Структура полей лида": "Structure of lead fields", +"ID страницы родителя": "Parent page ID", +"Проверка_БитриксФайл": "Check_BitrixFile", +"ID поля для удаления": "Field ID for deletion", +"ВременныйФайлБольшой": "BigTempFile", +"РазмерФайлаЛокальный": "FileSizeLocal", +"Если Не Клиент Тогда": "If Not Client Then", +"Dropbox_СкачатьПапку": "Dropbox_DownloadFolder", +"ID родительской базы": "Parent database ID", +"ПараметрыАвторизации": "AuthParameters", +"Удаляет задачу по ID": "Delete task by ID", +"Клавиатура коллекция": "Keyboard collection", +"УстановитьТемуКанала": "SetChannelTopic", +"МассивПараметровСокр": "ParameterArrayTrim", +"признак шаблона (Y|N": "is pattern (Y|N", +"Тестовый комментарий": "TestComment", +"НастройкаНапоминания": "ReminderSetting", +"НастройкиИИнформация": "SettingsAndInformation", +"Вайбер_ОтправитьФайл": "Viber_SendFile", +"СменитьВладельцаЧата": "ChangeChatOwner", +"ПараметрыПодключения": "ConnectionParams", +"СтруктураРуководства": "ManualStructure", +"Очищает таблицу базы": "Clears the database table", +"СкопироватьФайл (хук": "MakeFileCopy (wh", +"Работа с коллекциями": "Collections management", +"ПолучитьСписокОфисов": "GetOfficeList", +"Новый путь к объекту": "New path to object", +"ПолучитьСписокТестов": "GetTestList", +"ПолучитьКаталог (хук": "GetFolder (wh", +"ПодчиненнаяСтруктура": "SubordinateStructure", +"ПолучитьТелоКакПоток": "GetBodyAsStream", +"INSERT с параметрами": "INSERT with parameters", +"УстановитьСессиюHTTP": "SetHTTPSession", +"СтруктураНапоминаний": "RemindersStructure", +"Идентификатор потока": "Stream Identifier", +"Соответствие свойств": "Properties map", +"Имя пользователя SSH": "SSH username", +"Параметры соединения": "Connection parameters", +"Получение информации": "Data retrieval", +"СтруктураПараметров3": "ParameterStructure3", +"СуществующееЗначение": "ExistingValue", +"Это коннектор !NOCLI": "Is connector !NOCLI", +"Комментарий к заказу": "Order comment", +"ПолучитьТаймслотыFBO": "GetFBOTimeslots", +"УправлениеОперациями": "ActionsManagement", +"HTTP (служебный, ОПИ": "HTTP (service, OpenIntegrations", +"КоличествоПараметров": "NumberOfParameters", +"НастройкиЛогирования": "LoggingSettings", +"УдалитьСтадиюКанбана": "DeleteKanbanStage", +"ПолучитьПользователя": "GetUser", +"ИзменитьКартинкуЧата": "ChangeChatPicture", +"УстановитьФайлОтвета": "SetResponseFile", +"ПолучитьСписокСделок": "GetDealsList", +"ПереименоватьКаталог": "RenameFolder", +"Создать/Удалить блок": "Create/Delete block", +"СледующаяВложенность": "NextNesting", +"Имя бакета приемника": "Destination bucket name", +"ПолучитьДанныеОСайте": "GetSiteData", +"СкачатьФайлСообщения": "DownloadMessageFile", +"СтруктураЦеныЗакупки": "PurchasePriceStructure", +"ПереданКоннекторGrpc": "ConnectorGrpcPassed", +"СравнитьДвеКоллекции": "CompareTwoCollections", +"МассивДвоичныхДанных": "BinaryDataArray", +"Удалить пользователя": "Delete user", +"ПолучитьНастройкиTls": "GetTlsSettings", +"ДобавитьКлючЗначение": "AddKeyValue", +"ПолучитьЛогиЭлемента": "GetItemLogs", +"Обновленный файл.jpg": "UpdatedFile.jpg", +"СоздатьСтрокуПодписи": "CreateSignatureString", +"Тестовое сообщение 1": "TestMessage1", +"УстановитьРежимТеста": "SetTestMode", +"ВКИНформацияОТоварах": "VKProductData", +"ПолучитьНовости (хук": "GetPosts (wh", +"Сервер вернул статус": "The server returned the status", +"и OpenSSL версии 3.x": "and OpenSSL version 3.x", +"ПолучитьНастройкиTLS": "GetTLSSettings", +"Аудио и видеотехника": "Audio and video", +"Создать транскрипцию": "Create transcription", +"Получить аватар чата": "Get chat avatar", +"Удаляет проект по ID": "Deletes a project by ID", +"ДобавитьРодителяБазы": "AddDatabaseParent", +"идентификатор стадии": "stage identifier", +"РезультатПодкаталога": "ResultSubdirectory", +"РаботаСКомментариями": "CommentManagement", +"ОткрытьЗакрытьДиалог": "OpenCloseDialog", +"ВывестиДопИнформацию": "DisplayAdditionalInformation", +"Использовать asserts": "Use asserts", +"СоздатьСтраницуВБазу": "CreatePageInDatabase", +"OLLM_РаботаСМоделями": "OLLM_ModelsManagement", +"ГарантироватьТаблицу": "EnsureTable", +"ОтправитьВидео (Путь": "SendVideo (Path", +"URL к внешнему файлу": "URL to external file", +"Работа с календарями": "Calendars management", +"ЗащищенноеСоединение": "SecureConnection", +"Пустой макет события": "Empty event template", +"СтруктураСертификата": "CertStructure", +"ИзменитьПользователя": "UpdateUser", +"Удаляет сделку по ID": "Deletes deal by ID", +"СтруктураПараметров5": "ParameterStructure5", +"СоздатьИсторию (путь": "CreateStory (path", +"1|#color=Желтый) -%2": "1|#color=Yellow) -%2", +"РаботаСУведомлениями": "NotificationsManagement", +"ДропбоксПространство": "DropboxSpace", +"Б24_РаботаСНовостями": "B24_PostsManagement", +"Отложенное сообщение": "Sheduled message", +"MIME тип аудио файла": "MIME type of audio file", +"СтруктураАвторизации": "AuthStructure", +"ИзменитьПуть (список": "UpdatePath (list", +"ОтправитьАудио (Путь": "SendAudio (Path", +"Результат = %1.%2(%3": "Result = %1.%2(%3", +"Компонента RCON (ОПИ": "RCON Component (OpenIntegrations", +"РазмерФайлаУдаленный": "FileSizeRemote", +"ОтправитьМеидагруппу": "SendMediaGroup", +"Приостановить задачу": "Pause task", +"идентификатор валюты": "currency identifier", +"Проверка_ВКСообщение": "Check_VKMessage", +"МетаданныеСоединения": "ConnectionMetadata", +"Настройки соединения": "Connection settings", +"ЗавершитьУчетВремени": "StopTimekeeping", +"Структура привилегии": "Privilege structure", +"ПараметрыТестаПрокси": "TestProxyParameters", +"ВКИнформацияОТоварах": "VKProductData", +"Гарантировать записи": "Ensure records", +"СделатьФайлПриватным": "MakeFilePrivate", +"GMax_РаботаСГруппами": "GMax_GroupManagement", +"БитриксФайлСообщение": "BitrixFileMessage", +"Имя функции в модуле": "Function name in module", +"время начала запуска": "launch start time", +"УправлениеЗвукомЧата": "ChatNotificationsSwitch", +"ПреобразоватьТелефон": "ConvertPhone", +"СтруктураНапоминания": "ReminderStructure", +"Универсальный сервер": "Generic server", +"Идентификатор товара": "Product identifier", +"VK_ЗакрытьОбсуждение": "VK_CloseDiscussion", +"ОбработанноеЗначение": "ProcessedValue", +"ВК_ЛайкРепостКоммент": "VKAPI_LikeRepostComment", +"ОчиститьТаблицу (TLS": "ClearTable (TLS", +"СформироватьТекстSQL": "FormSQLText", +"ТранспортПоУмолчанию": "DefaultTransport", +"Управление проектами": "Project management", +"ЛокальныеПодкаталоги": "LocalSubfolders", +"Выполнить запрос SQL": "Execute SQL query", +"СформироватьШтрихкод": "CreateBarcode", +"СтруктураБазовойЦены": "BasePriceStructure", +"ИзменитьНовость (хук": "UpdatePost (wh", +"Наименование альбома": "Album name", +"Переименовать объект": "Rename object", +"СоответствиеСимволов": "CharacterMapping", +"Спец. символы в пути": "Special characters at path", +"ЧатыИЛичныеСообщения": "ChatsAndMessages", +"Получить базу данных": "Get database", +"НеобходимТипПоВерсии": "TypeRequieredByVersion", +"ПерезапуститьИнстанс": "RebootInstance", +"идентификатор сделки": "Deal identifier", +"ТелеграмСозданиеТемы": "TelegramCreateTopic", +"Вернуть ответ !NOCLI": "Return response !NOCLI", +"ЗагрузитьМедиаЧастями": "UploadMediaInParts", +"GAPI_ОчередьСообщений": "GAPI_MessageQueue", +"ID магазина (кампании": "Market ID (campaignsId", +"ЗагрузитьФайлВКаталог": "UploadFileToFolder", +"Путь сохранения файла": "File save path", +"Получить список тегов": "Get list of tags", +"ID асинхронной работы": "AsynchronousJobID", +"СохранитьФайл (размер": "SaveFile (size", +"Отправить медиагруппу": "Send mediagroup", +"является перезапуском": "is a rerun", +"Слак_ПолучитьСписокВФ": "Slack_GetExternalFileList", +"Площадь Победы, Минск": "Victory Square, Minsk", +"ДобавитьСерверныйТест": "AddServerTest", +"Использование методов": "Using methods", +"b>Полужирный текстBold textПолужирный текстBold text= вчера": "Creation date >= yesterday", -"СоздатьПост (один путь": "CreatePost (one path", -"ЗаменитьТекстСообщения": "ReplaceMessageText", -"УдалитьУчастникаГруппы": "RemoveGroupMember", -"Bitrix24_ПринятьЗадачу": "Bitrix24_ApproveTask", -"УдалитьБазуДанных (TLS": "DeleteDatabase (TLS", -"ОбработатьНачалоЗаписи": "ProcessRecordsStart", -"ОпределитьТипПараметра": "DefineParameterType", -"ЗагрузитьОбъектЧастями": "UploadObjectInParts", -"Значение Bearer токена": "Bearer token value", -"VK_СгруппироватьТовары": "VK_GroupProducts", -"ДвоичныеДанные, Строка": "BinaryData, String", -"МаксимальнаяДлина Цикл": "MaximumLength Do", -"Bitrix24_ПолучитьТокен": "Bitrix24_GetToken", -"Картинка в формате jpg": "Image in jpg format", -"Массив Из Соответствие": "Array Of Map", -"ЭтоСерверИлиОбработчик": "IsServerOrHandler", -"Создать текстовый твит": "Create text tweet", -"НоваяТаблицаПараметров": "NewParamsTable", -"ЗаписатьДвоичныеДанные": "WriteBinaryData", -"Соответствие Из Строка": "Map Of String", -"Получает событие по ID": "Gets an event by ID", -"Массив привилегий роли": "Array of role privileges", -"ИспользоватьСжатиеGzip": "UseGzipCompression", -"СтруктураЦеныДляСкидок": "PriceForDiscountsStructure", -"ID рекламного кабинета": "Advertising account ID", -"ДобавитьТоварВПодборку": "AddProductToCollection", -"Соответствие из Строка": "Map of String", -"GAPI_ОтправкаСообщений": "GAPI_MessageSending", -"Сообщение из автотеста": "Message from autotest", -"УстановитьТелоИзСтроки": "SetBodyFromString", -"Изменить подразделение": "Update department", -"Данные первого запроса": "First request data", -"Изменить картинку чата": "Change chat picture", -"СтандартныеОсобенности": "DefaultFeatures", -"Завершает задачу по ID": "Complete task by ID", -"Массив изображений 360": "Array of 360 images", -"КаталогЛоговБиблиотеки": "LibraryLogCatalog", -"ПолучитьВременныйТокен": "GetTemporaryToken", -"1|#color=Желтый) -%2%3": "1|#color=Yellow) -%2%3", -"Создайте бота Telegram": "Create a Telegram bot", -"Удалить товары без SKU": "Delete products without SKU", -"Secret для авторизации": "Secret for authorization", -"Получить таймслоты FBO": "Get FBO timeslots", -"Тесты для YaxUnit (ОПИ": "Tests for YaxUnit (OpenIntegrations", -"Получить токен по коду": "Get token by code", -"OllamaИнформацияМодели": "OllamaModelInfo", -"УдалитьЛишниеПоляБлока": "RemoveExtraBlockFields", -"HEX цвета новой стадии": "HEX of new stage color", -"ПереименоватьХранилище": "RenameStorage", -"Ремонт и строительство": "Repair and building", -"идентификатор компании": "company identifier", -"СформироватьЗапросGRPC": "FormGRPCRequest", -"Работа с комментариями": "Comments management", -"цена цели по умолчанию": "goal default price", -"Получить блок картинки": "Get picture block", -"ПолучитьЗаписи (отборы": "GetRecords (filters", -"Тип файла для отправки": "Content type for sending", -"ЗаписатьНачалоЭлемента": "WriteStartElement", -"ЭтоФорматВалидногоJSON": "IsValidJSONFormat", -"ПолучитьУдаляемыеФайлы": "GetDeletedFiles", -"сообщением в этом чате": "of mesage in this chat", -"ID владельца календаря": "Calendar owner ID", -"РазмерФайлаЛокальныйДД": "FileSizeLocalBD", -"SF_РаботаСДиректориями": "SF_DirectoryManagement", -"ИзменитьСвойствоТовара": "EditProductProperty", -"ИзменитьСообщение (хук": "EditMessage (wh", -"Получить список файлов": "Get list of files", -"ЗаполнитьДанныеПоСхеме": "FillDataBySchema", -"ДобавитьОбновитьТовары": "AddUpdateProducts", -"Массив блоков вложений": "Array of attachments", -"ТелеграмМестоположение": "TelegramLocation", -"ИзменитьТекущийКаталог": "ChangeCurrentDirectory", -"ПолучитьМассивПодборок": "GetSelectionArray", -"ПолучитьТегиБакета (DB": "GetBucketTagging (DB", -"УстановитьПараметрыURL": "SetURLParams", -"Дата окончания периода": "End date of the period", -"возрастное ограничение": "age limit", -"Какой ваш любимый цвет": "What's your favorite color?", -"РаботаСФайламиИПапками": "FileAndFolderManagement", -"Создать составной пост": "Create composite post", -"Компонента SQLite (ОПИ": "SQLite Component (OpenIntegrations", -"Bitrix24_СоздатьЗадачу": "Bitrix24_CreateTask", -"Создает TCP соединение": "Creates a TCP connection", -"ШаблонЦветнойПодстроки": "ColoredSubstringPattern", -"Массив URL изображений": "Array of images URLs", -"дата начала выполнения": "start date", -"OllamaЗагрузкаВыгрузка": "OllamaLoadUnload", -"Получить запрос !NOCLI": "GetRequest !NOCLI", -"ОформитьОпциюКоллекцию": "FormOptionCollection", -"УстановитьОписаниеЧата": "SetChatDescription", -"Получаем ID соединения": "Get connection ID", -"Загрузить файл частями": "Upload file in parts", -"Список соединений пуст": "Connection list is empty", -"Разархивировать товары": "Unarchive products", -"Вайбер_ОтправитьСсылку": "Viber_SendLink", -"ИзменитьКалендарь (хук": "UpdateCalendar (wh", -"Фильтр по наименованию": "Filter by name", -"ПромежуточныйРезультат": "InterimResult", -"ID метки для изменения": "Tag ID to change", -"ID каталога назначения": "ID of target folder", -"ПреобразоватьКодВТокен": "ConvertCodeToToken", -"ПолучитьХранилище (хук": "GetStorage (wh", -"НачатьУчетВремени (хук": "StartTimekeeping (wh", -"Удаляет файл с сервера": "Delete file from server", -"Проверка_ТелеграмАудио": "Check_TelegramAudio", -"ЗагрузитьФайл (большой": "UploadFile (big", -"ПолучитьШтрихкод (файл": "GetBarcode (file", -"Отправить часть !NOCLI": "Send part !NOCLI", -"ВК_СоздатьСсылкуТокена": "VKAPI_CreateTokenLink", -"МассивКнопокКлавиатуры": "KeyboardButtonsArray", -"Идентификатор каталога": "Folder identifier", -"Получает версию Ollama": "Gets a version of Ollama", -"Завершить учет времени": "Stop timekeeping", -"УдалитьПостоянныйТокен": "DeletePermanentToken", -"Использовать \"internal": "Use \"internal", -"ДобавитьОписаниеДанных": "AddDataDescription", -"Начните диалог с ботом": "Start a dialog with the bot", -"ЗагрузитьФайл (в канал": "UploadFile (to channel", -"ДропбоксПубличнаяПапка": "DropboxPublicFolder", -"ПолучитьСписокПодборок": "GetSelectionList", -"id счетчика для отбора": "counter id for selection", -"РаботаСЧеклистамиЗадач": "TasksChecklistsManagement", -"Сделать файл приватным": "Make file private", -"Объект GRPC соединения": "GRPC connection object", -"Ключ параметра запроса": "Request parameter key", -"Имя файла с раширением": "File name with extension", -"Проверка_ТелеграмВидео": "Check_TelegramVideo", -"Новое имя главной темы": "New main topic name", -"ВыполнитьЗапросБезТела": "ExecuteRequestWithoutBody", -"отображать задачи: Y,N": "display tasks: Y,N", -"Загружает файл в бакет": "Uploads the file to the bucket", -"Б24_РаботаСКалендарями": "B24_CalendarsManagement", +"Перезапускает инстанс": "Restarts the instance", +"ID тестового элемента": "Test item ID", +"ПолучитьИсториюКанала": "GetChannelHistory", +"Установите приложение": "Install the application", +"Получить данные файла": "Get file data", +"идентификатор статуса": "status identifier", +"СоздатьКалендарь (хук": "CreateCalendar (wh", +"Идентификатор клиента": "Client identifier", +"Проверка_ДропБоксТеги": "Check_DropboxTags", +"Проверка_Соответствие": "Check_Map", +"SShell_ОсновныеМетоды": "SShell_CommonMethods", +"СтруктураНаименования": "NameStructure", +"Создать/Изменить поле": "Create/Edit field", +"ПолучитьСписокСобытий": "GetEventList", +"ПолучитьСписокМетодов": "GetMethodList", +"Получить цены товаров": "Get products prices", +"СоздатьТоварыПоOzonID": "CreateProductByOzonID", +"г.Бердск ул.Ленина 16": "Berdsk Lenina street 16", +"Номер страницы списка": "List page number", +"Получить список лидов": "Get leads list", +"ПолучитьСписокСвойств": "GetPropertyList", +"ПолучитьТаблицуТестов": "GetTestTable", +"Непредвиденная ошибка": "Unexpected Error", +"ПолучитьОбъектЧастями": "GetObjectInChunks", +"Переименовать каталог": "Rename folder", +"Проверка_БитриксВремя": "Check_BitrixTime", +"Главное подразделение": "Main department", +"ПоместитьФайлВКорзину": "MarkFileAsDeleted", +"Проверка_ТвиттерТекст": "Check_TwitterText", +"количество повторений": "number of repetitions", +"ТекущийКаталогСкрипта": "CurrentScriptFolder", +"Данные файла картинки": "Picture data", +"ЗапросПотокЧтенияТела": "RequestReadBodyStream", +"Наименование кампании": "Campaign name", +"СортироватьПоЗначению": "SortByValue", +"ОткрытьСоединение (im": "CreateConnection (im", +"АрхивироватьТовары (2": "ArchiveProducts (2", +"УдалитьФайл (проверка": "DeleteFile (check", +"Получить список акций": "Get promotions list", +"Архив версий (GitHub)": "Version archive (GitHub)", +"СклеитьДвоичныеДанные": "UniteBinaryData", +"URL адрес для запроса": "URL address for request", +"ВыполнитьСборкуМусора": "RunGarbageCollection", +"ПозицияВПотоке.Начало": "PositionInStream.Begin", +"Удаляет событие по ID": "Deletes an event by ID", +"Идентификатор таблицы": "Table identifier", +"ЗаписатьКонецЭлемента": "WriteEndElement", +"Разлогинивает инстанс": "Unlogging the instance", +"МассивЛишнихЭлементов": "UncorrectElements", +"ИзменитьПуть (обратно": "UpdatePath (back", +"ИзменитьПараметрыЧата": "UpdateChatParameters", +"В работе : checkbox": "In progress : checkbox", +"ИмяПараметраСтруктура": "StructureParameterName", +"Консольное приложение": "Console application", +"ПолучитьСписокМоделей": "GetModelList", +"ИнтерактивныеДействия": "InteractiveActions", +"СоздатьОбновитьТовары": "CreateUpdateProducts", +"наименование счетчика": "counter name", +"ПроверитьBlob (ошибка": "CheckBlob (error", +"Вернуть запрос !NOCLI": "Return request !NOCLI", +"Получить список меток": "Get tags list", +"цвет текста календаря": "calendar text color", +"мПозиционныеПараметры": "mPositionParams", +"Управление операциями": "Actions management", +"Получить таблицы базы": "Get base tables", +"Перезапустить инстанс": "Reboot instance", +"ОбработатьЗапрос (TLS": "ProcessRequest (TLS", +"Учет рабочего времени": "Timekeeping", +"Закрывает поток по ID": "Close stream by ID", +"Географическая широта": "Geographic latitude", +"Dropbox_УдалитьОбъект": "Dropbox_DeleteObject", +"Путь файла на сервере": "Path to file on server", +"СоответствиеКатегорий": "CategoryMap", +"Ошибка удаления файла": "File deletion error", +"Установить URL !NOCLI": "Set URL !NOCLI", +"релизах ОПИ на GitHub": "OpenIntegrations releases on GitHub", +"Тестовая таблица (изм": "Test table (changed", +"Комментарий к новости": "Comment for post", +"Получить товары по ID": "Get products by ID", +"ПолучитьИсториюЗадачи": "GetTaskHistory", +"ВК_СоздатьУдалитьПост": "VKAPI_CreateDeletePost", +"РазархивироватьТовары": "UnarchiveProducts", +"ПолучитьСтадииКанбана": "GetKanbanStages", +"СоздатьСвойствоТовара": "CreateProductProperty", +"двоичные данные файла": "binary data of the file", +"Написать в обсуждение": "Write in discussion", +"наименование компании": "company name", +"Новый текст заголовка": "New title", +"Отправляем из клиента": "Send from client", +"Получить поле (флажок": "Get field (checkbox", +"Обновить цены товаров": "Update products prices", +"Dropbox_ПолучитьТокен": "Dropbox_GetToken", +"Получить внешний файл": "Get external file", +"Удаляет лист из книги": "Deletes a sheet from the spreadsheet", +"СоздатьМодель (запрос": "CreateModel (request", +"УстановкаКонфигурации": "ConfigureSetup", +"Установить тип данных": "Set data type", +"ВременноеСоответствие": "TempMap", +"МассивВариантовОпроса": "PollOptionsArray", +"ПолучитьСтруктуруЛида": "GetLeadStructure", +"Ноушн_СоздатьСтраницу": "Notion_CreatePage", +"Роль или массив ролей": "Role or role array", +"Получить список задач": "Get tasks list", +"УдалитьСообщение (хук": "DeleteMessage (wh", +"УдалитьКолонкуТаблицы": "DeleteTableColumn", +"Стандартные реквизиты": "Common fields", +"СоответствиеУстановки": "SettingMapping", +"ОтправлятьУведомления": "SendNotifications", +"СтруктураПользователя": "UserStructure", +"Дата ожидания курьера": "Courier waiting date", +"1|#color=Желтый) - %2": "1|#color=Yellow) - %2", +"ID рекламной кампании": "Advertising campaign ID", +"ИнициализироватьПоток": "InitializeStream", +"Проверка_ДропБоксФайл": "Check_DropboxFile", +"Получить список чатов": "Get chat list", +"ДобавитьContentLength": "AddContentLength", +"Изменить пользователя": "Update user", +"Ссылка получения кода": "Code retrieval link", +"Заголовок приглашения": "Invitation title", +"ТекущееПолноеОписание": "CurrentFullDescription", +"ОткрытьСоединениеGRPC": "CreateGRPCConnection", +"Получение уведомлений": "Notifications receiving", +"СтруктураОффлайнОпций": "OfflineOptionsStructure", +"ОтправитьКартинку (ДД": "SendPicture (DD", +"Орган выдачи паспорта": "Passport issuing authority", +"УказаноЧислоСообщений": "NumberOfMessagesSpecified", +"ПолучитьЧеклистЗадачи": "GetTasksChecklist", +"УдалитьМодель (список": "DeleteModel (list", +"ОткрытьПотокДляЧтения": "OpenStreamForRead", +"ТекстПервогоСообщения": "FirstMessageText", +"Новый текст сообщения": "New message text", +"ссылка на руководство": "URL to manual", +"CHAT (по приглашениям": "CHAT (private", +"ПолучитьРазмерОбъекта": "GetObjectSize", +"Пакет oint-cli (.ospx": "oint-cli package (.ospx)", +"Изменяет имя каталога": "Change folder name", +"GAPI_ЖурналыСообщений": "GAPI_MessageLogs", +"ПолучитьСтруктуруЧата": "GetChatStructure", +"Наименование картинки": "Picture name", +"ПреобразованныеДанные": "ConvertedData", +"Создать/Изменить базу": "Create/Edit database", +"РаботаСДискомИФайлами": "StoragesAndFilesManagement", +"ОтправитьОпрос (канал": "SendPoll (channel", +"Гарантировать таблицу": "Ensure table", +"Создать твит картинки": "Create image tweet", +"ул. Лермонтова, д. 20": "Lermontov st., b. 20", +"ОбработатьКонецЗаписи": "ProcessRecordsEnd", +"ID поля для изменения": "Field ID for updating", +"ВК_ОтправитьСообщение": "VKAPI_SendMessage", +"Минимальная структура": "Minimal structure", +"ПолучитьОписаниеФайла": "GetFileDescription", +"ЭтоАвторизацияТокеном": "IsTokenAuth", +"БитриксМассивОбъектов": "BitrixObjectsArray", +"УстановитьТегиОбъекта": "PutObjectTagging", +"габариты и вес товара": "product dimensions and weight", +"ОтправитьДокумент (ДД": "SendDocument (DD", +"ВернутьОтветКакСтроку": "ReturnResponseAsString", +"ПолучитьСтруктуруЛога": "GetLogStructure", +"Dropbox_ЗагрузитьФайл": "Dropbox_UploadFile", +"Получает сделку по ID": "Gets deal by ID", +"ПолучитьСписокЗаписей": "GetListOfRecords", +"Проверка_ЯДискКаталог": "Check_YaDiskFolder", +"ИзменитьЗаголовокЧата": "ChangeChatTitle", +"Получить чеки на дату": "Get cashbox checks by date", +"ВыполнитьЗапросСТелом": "ExecuteRequestWithBody", +"СдэкИнтервалыДоставки": "CdekkDeliveryIntervals", +"Новое имя файла 2.jpg": "New file name 2.jpg", +"Удалить подразделение": "Delete department", +"ID целевого сообщения": "Target message ID", +"заголовок руководства": "manual title", +"ДобавитьТестовыйНабор": "AddTestSet", +"Другой заголовок чата": "Another title", +"ВосстановитьФайл (хук": "RestoreFile (wh", +"ПодключениеРасширения": "ExtensionConnection", +"ЗаписатьПараметрВФайл": "WriteParameterToFile", +"Роль или список ролей": "Role or list of roles", +"ДвоичныеДанные,Строка": "BinaryData,String", +"Проверка_БитриксЧисло": "Check_BitrixNumber", +"Вызвать с настройками": "Call with settings", +"МассивОписанийКолонок": "ColoumnsDescriptionArray", +"СоответствиеАртикулов": "ArticlesMap", +"VK_ПолучитьСтатистику": "VK_GetStatistics", +"Время окончания обеда": "Lunch finish time", +"OAI_ОбработкаЗапросов": "OAI_RequestsProcessing", +"СформироватьКвитанцию": "CreateReceipt", +"Token для авторизации": "Token for authorization", +"Твиттер_ОбновитьТокен": "Twitter_UpdateToken", +"Google Workspace (ОПИ": "Google Workspace (OpenIntegrations", +"Загрузить файл по URL": "Upload file by URL", +"ПодключитьИсполнитель": "AttachExecutor", +"Проверка_ВКСтатистика": "Check_VKStatistic", +"Отправить файл по URL": "Send file by URL", +"ЗаписатьОбъявлениеXML": "WriteXMLDeclaration", +"ОбработатьПодключение": "ProcessConnection", +"АТУдалениеКомментария": "ATCommentDeleting", +"информация о проблеме": "problem information", +"Отключить звук задачи": "Mute task", +"ПолучитьСообщениеЧата": "GetChatMessage", +"Удаляет счетчик по ID": "Deletes a counter by ID", +"Дополнительный тест 3": "Additional test 3", +"АутентификацияWindows": "WindowsAuth", +"ДобавитьЗаголовокБазы": "AddDatabaseHeader", +"ЗавершитьОтправкуGRPC": "CompleteGRPCSending", +"Строка: `имя роли`": "String: `role name`", +"ПолучитьПользователей": "GetUsers", +"ID чата для архивации": "Chat ID for archiving", +"HTTP_ОбработкаЗапроса": "HTTP_RequestProcessing", +"Создать сервер !NOCLI": "Create server !NOCLI", +"ПолучитьПолеСтроковое": "GetStringField", +"ЗапросИнициализирован": "RequestInitialized", +"ИзменитьПуть (каталог": "UpdatePath (directory", +"СформироватьТекстТопа": "FormTopText", +"ЗаполнитьМассивЛистов": "FillSheetArray", +"Создать подразделение": "Create department", +"ЗаписатьЗначениеВФайл": "WriteValueToFile", +"id цели для изменения": "if of goal for updating", +"ПолучитьСписокТоваров": "GetProductList", +"ID метки для удаления": "ID of the tag to be deleted", +"СуществующийУдаленный": "ExistingRemote", +"2000000).Равно(Истина": "2000000).Equal(True", +"Массив описаний полей": "Array of field descriptions", +"1 = ЗагрузитьСценарий": "1 = LoadScript", +"Создать копию объекта": "Create object copy", +"Новое описание задачи": "New task description", +"Проверка_ВКОбъявление": "Check_VKAd", +"НачалоФормированияXML": "StartFormingXML", +"СоздатьТвитСКартинкой": "CreateTweetWithImage", +"СоздатьУдалитьСобытие": "CreateDeleteEvent", +"Получить историю чата": "Get chat history", +"УдалитьСвойствоТовара": "DeleteProductProperty", +"GMax_ИсторияСообщений": "GMax_MessageHistory", +"Сервер из URL запроса": "Server from the request URL", +"ИНН истинного продавца": "TIN of the true seller", +"ТелеграмИнформацияБота": "TelegramBotInformation", +"Проверка_ТелеграмОпрос": "Check_TelegramPoll", +"Дневной лимит в рублях": "Daily limit in rubles", +"Получить список сделок": "Get deals list", +"Получить подразделения": "Get departments", +"Отправить ответ !NOCLI": "SendResponse !NOCLI", +"ЭтоКоннектор (открытие": "IsConnector (creation", +"ГринСохранениеНастроек": "GreenSettingsSaving", +"СоздатьНовуюДиректорию": "CreateNewDirectory", +"УстановитьРежимОтладки": "SetDebugMode", +"Принимает задачу по ID": "Approve task by ID", +"Адрес грузоотправителя": "Shippers address", +"Создать/Удалить записи": "Create/Delete records", +"значение для сравнения": "comparison value", +"Проверка_БитриксМассив": "Check_BitrixArray", +"ПолучитьТекущийКаталог": "GetCurrentDirectory", +"ID черновика (операции": "Draft (operation) ID", +"ДропБокс_ЗагрузитьФайл": "DropboxAPI_UploadFile", +"ЗагрузитьОбъектЦеликом": "UploadFullObject", +"ЗаписатьJSONМультипарт": "WriteJSONMultipart", +"ПолучитьСписокСервисов": "GetServiceList", +"GMax_ОтправкаСообщений": "GMax_MessageSending", +"Структура полей сделки": "Deal fields structure", +"Тестовый товар (другой": "Test product (another", +"Описание : rich_text": "Description : rich_text", +"Получить данные !NOCLI": "Receive data !NOCLI", +"название подразделения": "department name", +"Получает заказ по UUID": "Gets the order by UUID", +"Вернуть дочерние блоки": "Return child blocks", +"Загрузить/Удалить файл": "Upload/Delete file", +"Сообщение о завершении": "Completion message", +"Консолидированный груз": "Consolidated cargo", +"идентификатор контакта": "contact identifier", +"ЦветПоле.Позиция Тогда": "ColorField.Item Then", +"Объект соединения GRPC": "GRPC connection object", +"Идентификаторы товаров": "Products identifier", +"Открыть/Закрыть диалог": "Open/Close dialog", +"Отображаемое имя файла": "Displayed file name", +"Обычный текстовый твит": "Regular text tweet", +"Компонента MS SQL (ОПИ": "MS SQL Component (OpenIntegrations", +"CommonModule.OPI_Тесты": "CommonModule.OPI_Tests", +"ПолеКоллекцииСуществет": "CollectionFieldExists", "СоздатьПодборкуТоваров": "CreateProductCollection", -"Массив Из Произвольный": "Array Of Arbitrary", -"РезультатТестаКакТекст": "TestResultAsText", -"ПутьУдаленногоОсновной": "PathOfRemotePrimary", -"РазбитьURL: Защищенное": "SplitURL: Secure", -"Проверка_ТелеграмЧисло": "Check_TelegramNumber", -"Создает твит с опросом": "Creates a tweet with a poll", -"МинимальныйРазмерЧасти": "MinPartSize", -"СформироватьКлавиатуру": "FormKeyboard", -"СоответствиеШтрихкодов": "BarcodesMap", -"Получить пользователей": "Get users", -"ПолучитьТоварыКабинета": "GetBusinessProducts", -"Скачать файл сообщения": "Download message file", -"операции для изменения": "change actions", -"СоответствиеРасширений": "ExtensionMap", +"Твиттер_ДанныеАккаунта": "TwitterAPI_AccountData", "Изменить свойства базы": "Edit database properties", +"СоответствиеРасширений": "ExtensionMap", +"операции для изменения": "change actions", +"Скачать файл сообщения": "Download message file", +"ПолучитьТоварыКабинета": "GetBusinessProducts", +"Получить пользователей": "Get users", +"СоответствиеШтрихкодов": "BarcodesMap", +"СформироватьКлавиатуру": "FormKeyboard", "ОбработатьОтправкуGRPC": "ProcessGRPCSending", +"МинимальныйРазмерЧасти": "MinPartSize", +"Проверка_ТелеграмЧисло": "Check_TelegramNumber", +"РазбитьURL: Защищенное": "SplitURL: Secure", +"ПутьУдаленногоОсновной": "PathOfRemotePrimary", +"РезультатТестаКакТекст": "TestResultAsText", +"Массив Из Произвольный": "Array Of Arbitrary", +"Б24_РаботаСКалендарями": "B24_CalendarsManagement", +"Загружает файл в бакет": "Uploads the file to the bucket", +"ОзонАПИ_РаботаСАкциями": "OzonAPI_PromotionsManagement", +"Создает твит с опросом": "Creates a tweet with a poll", "УправлениеРезультатами": "ResultsManagement", "HTTP-клиент набора ОПИ": "HTTP Client of OpenIntegrations", "ID календаря приемника": "ID of the target calendar", -"Проверка_ТелеграмГифка": "Check_TelegramGif", -"Структура для кластера": "Structure for cluster", -"СоответствиеНахождения": "FoundMapping", -"Получить курсор !NOCLI": "Get cursor !NOCLI", -"Mongo_УправлениеРолями": "Mongo_RoleManagement", -"URL файла для отправки": "File URL", -"ЗагрузитьВидеоНаСервер": "UploadVideoToServer", -"Получает список файлов": "Gets the list of files", -"Загрузить/Удалить Файл": "Upload/Delete file", -"ЭтоИменованныйПараметр": "IsNamedParam", -"Структура полей товара": "Product fields structure", -"МодульИнструментовOint": "OintToolsModule", -"СоздатьТестовыйЭлемент": "CreateTestElement", -"Получить связанные SKU": "Get related SKUs", -"Получить представления": "Get embeddings", -"СоздатьПодключение (im": "CreateConnection (im", -"ПолучитьИнформациюБота": "GetBotInformation", -"ДобавитьКолонкуТаблицы": "AddTableColumn", "Загружает файл на диск": "Uploads a file to the drive", -"Твиттер_ДанныеАккаунта": "TwitterAPI_AccountData", +"ДобавитьКолонкуТаблицы": "AddTableColumn", +"ПолучитьИнформациюБота": "GetBotInformation", +"СоздатьПодключение (im": "CreateConnection (im", +"Получить представления": "Get embeddings", +"Получить связанные SKU": "Get related SKUs", +"СоздатьТестовыйЭлемент": "CreateTestElement", +"МодульИнструментовOint": "OintToolsModule", +"Структура полей товара": "Product fields structure", +"ЭтоИменованныйПараметр": "IsNamedParam", +"Загрузить/Удалить Файл": "Upload/Delete file", +"Получает список файлов": "Gets the list of files", +"ЗагрузитьВидеоНаСервер": "UploadVideoToServer", +"URL файла для отправки": "File URL", +"Mongo_УправлениеРолями": "Mongo_RoleManagement", +"Получить курсор !NOCLI": "Get cursor !NOCLI", +"СоответствиеНахождения": "FoundMapping", +"Структура для кластера": "Structure for cluster", +"Проверка_ТелеграмГифка": "Check_TelegramGif", "СоздатьПодкаталог (хук": "CreateSubfolder (wh", -"ПолеКоллекцииСуществет": "CollectionFieldExists", -"Структура полей сделки": "Deal fields structure", -"ДропБокс_ЗагрузитьФайл": "DropboxAPI_UploadFile", -"ПолучитьТекущийКаталог": "GetCurrentDirectory", -"Проверка_БитриксМассив": "Check_BitrixArray", -"значение для сравнения": "comparison value", -"Создать/Удалить записи": "Create/Delete records", -"Адрес грузоотправителя": "Shippers address", -"Принимает задачу по ID": "Approve task by ID", -"УстановитьРежимОтладки": "SetDebugMode", -"ЗагрузитьОбъектЦеликом": "UploadFullObject", -"ГринСохранениеНастроек": "GreenSettingsSaving", -"Проверка_ТелеграмОпрос": "Check_TelegramPoll", -"ЭтоКоннектор (открытие": "IsConnector (creation", -"Отправить ответ !NOCLI": "SendResponse !NOCLI", -"Получить список сделок": "Get deals list", -"Дневной лимит в рублях": "Daily limit in rubles", -"ИНН истинного продавца": "TIN of the true seller", -"Получить подразделения": "Get departments", -"ТелеграмИнформацияБота": "TelegramBotInformation", -"ID черновика (операции": "Draft (operation) ID", -"ЗаписатьJSONМультипарт": "WriteJSONMultipart", -"Сообщение о завершении": "Completion message", -"GMax_ОтправкаСообщений": "GMax_MessageSending", -"Компонента MS SQL (ОПИ": "MS SQL Component (OpenIntegrations", -"Обычный текстовый твит": "Regular text tweet", -"Отображаемое имя файла": "Displayed file name", -"Открыть/Закрыть диалог": "Open/Close dialog", -"Идентификаторы товаров": "Products identifier", -"Объект соединения GRPC": "GRPC connection object", -"ЦветПоле.Позиция Тогда": "ColorField.Item Then", -"идентификатор контакта": "contact identifier", -"CommonModule.OPI_Тесты": "CommonModule.OPI_Tests", -"Консолидированный груз": "Consolidated cargo", -"Загрузить/Удалить файл": "Upload/Delete file", -"Вернуть дочерние блоки": "Return child blocks", -"Получает заказ по UUID": "Gets the order by UUID", -"название подразделения": "department name", -"Получить данные !NOCLI": "Receive data !NOCLI", -"Описание : rich_text": "Description : rich_text", -"ПолучитьСписокСервисов": "GetServiceList", -"Тестовый товар (другой": "Test product (another", -"СоздатьНовуюДиректорию": "CreateNewDirectory", -"ОзонАПИ_РаботаСАкциями": "OzonAPI_PromotionsManagement", "ОтправитьЗапросБезТела": "SendRequestWithoutBody", -"Не найден входной файл": "Input File Not Found!", +"ПереименоватьФайл (хук": "RenameFile (wh", "НаименованиеИзмененное": "EditedName", -"Массив из Произвольный": "Array of Arbitrary", -"ПолучитьСтруктуруТипов": "GetTypesStructure", -"УдалитьТоварИзПодборки": "RemoveProductFromSelection", -"ПолучитьТоварыМагазина": "GetCampaignProducts", -"Разделитель строк тела": "Body line separator", -"Б24_РаботаСПолямиЗадач": "B24_TasksFieldsManagement", -"РазмерФайлаУдаленныйДД": "FileSizeRemoteBD", -"СоответствиеРезультата": "ResultMap", -"ID стадии для удаления": "ID of stage to dele", -"мПозицияВСпискеТокенов": "mTokenListPosition", -"Все записи без отборов": "All records without filters", -"Пароль для подключения": "Password for connection", -"Отправить внешний файл": "Send external file", -"НужнаПовторнаяОтправка": "NeedsResend", -"СоздатьБакет (удаление": "CreateBucket (deleting", -"СтруктураПовторяемости": "RepeatabilityStructure", -"СоздатьТаблицу (запрос": "CreateTable (query", -"НачатьВыполнениеЗадачи": "StartTask", -"ПолучитьРазмерЭлемента": "GetElementSize", -"ПолучитьСписокХранилищ": "GetStoragesList", -"Другое описание задачи": "Another task description", -"Массив из Строка,Число": "Array of String,Number", -"Массив участников чата": "Chat members array", -"Токен авторизации (Api": "Auth token (Api", -"Новое описание события": "New event description", -"Запрос (вставка данных": "Request (data insertion", -"ОтправитьСообщениеGRPC": "SendGRPCMessage", -"Удаляет подборку по ID": "Deletes the selection by ID", -"Бакет источник объекта": "Source bucket name", -"ТекущийЯзыкОПИ = \"ru\";": "CurrentOPILanguage = \"en\";", -"ПараметрыТестаОсновные": "TestParametersMain", -"Цены и остатки товаров": "Prices and stocks", -"УстановитьНастройкиFtp": "SetFtpSettings", -"Структура полей задачи": "Task fields structure", -"Удалить стадию канбана": "ID of the stage to be deleted", -"Создает текст RSS фида": "Creates RSS feed text", -"ПолучитьТекстовыйМакет": "GetTextTemplate", -"VK_НаписатьКомментарий": "VK_WriteComment", -"Число записей в пакете": "Amount of records in the batch", -"ВозобновитьЗадачу (хук": "RenewTask (wh", -"СоответствиеПараметров": "ParameterMap", -"ОпределитьШаблоныПутей": "DefinePathsTemplates", -"СтандартныеЗависимости": "StandardDependencies", -"Получить поле (телефон": "Get field (phone", -"СоздатьБазуДанных (TLS": "CreateDatabase (TLS", -"Получить логи элемента": "Get item logs", -"ОтправитьДанныеЧастями": "SendDataInParts", -"ОбработатьСекретыMSSQL": "ProcessSecretsMSSQL", -"Получить список офисов": "Get office list", -"Сделать файл публичным": "Make file public", -"Проверка_БитриксИстина": "Check_BitrixTrue", -"OLLM_ОбработкаЗапросов": "OLLM_RequestsProcessing", -"Добавить файл в задачу": "Attach file to the topic", -"КодОшибкиСервера Тогда": "ServerErrorCode Then", -"Bitrix24_УдалитьЗадачу": "Bitrix24_DeleteTask", -"ПустаяСхемаTableSchema": "EmptySchemeTableSchema", -"ПолучитьСписокРегионов": "GetRegionsList", -"ПолучитьСписокОбъектов": "ListObjects", -"Массив описаний блоков": "Array of block descriptions", -"ИзменитьИмяГлавнойТемы": "ChangeMainTopicName", -"Работает ли офис с LTL": "Does the office work with LTL", -"Структура полей фильра": "Filter fields structure", "ПолучитьИмяСервисаGRPC": "GetGRPCServiceName", +"Структура полей фильра": "Filter fields structure", +"Работает ли офис с LTL": "Does the office work with LTL", +"ИзменитьИмяГлавнойТемы": "ChangeMainTopicName", +"Массив описаний блоков": "Array of block descriptions", +"ПолучитьСписокОбъектов": "ListObjects", +"ПолучитьСписокРегионов": "GetRegionsList", +"ПустаяСхемаTableSchema": "EmptySchemeTableSchema", "ПолучитьСписокОбластей": "GetRegionList", +"Bitrix24_УдалитьЗадачу": "Bitrix24_DeleteTask", +"Добавить файл в задачу": "Attach file to the topic", +"OLLM_ОбработкаЗапросов": "OLLM_RequestsProcessing", +"Проверка_БитриксИстина": "Check_BitrixTrue", +"Сделать файл публичным": "Make file public", +"Получить список офисов": "Get office list", +"ОбработатьСекретыMSSQL": "ProcessSecretsMSSQL", +"ОтправитьДанныеЧастями": "SendDataInParts", +"Получить логи элемента": "Get item logs", +"КодОшибкиСервера Тогда": "ServerErrorCode Then", "ПолучитьЗначениеДляCLI": "GetCLIFormedValue", "ТелеграмУдалениеВебхук": "TelegramWebhookDeletion", "УстановитьДвоичноеТело": "SetBinaryBody", -"ID календаря источника": "ID of the source calendar", -"Проверка_БитриксСтрока": "Check_BitrixString", -"ОбработатьСекретыMySQL": "ProcessSecretsMySQL", -"СтруктураВызоваСтрокой": "CallStructureAsString", -"УдалитьТоварыБезSKU (2": "DeleteProductsWithoutSKU (2", -"ОтправитьДокумент (Имя": "SendDocument (name", -"ПолучитьОписаниеТовара": "GetProductDescription", -"Установить тему канала": "Set channel topic", -"Пустое описание товара": "Empty product description", -"УправлениеБазамиДанных": "DatabaseManagement", -"Получить отчет запуска": "Get launch report", -"Отклоняет задачу по ID": "Disapprove task by ID", -"Проверка_БитриксЗадача": "Check_BitrixTask", -"Bitrix24_ОбновитьТокен": "Bitrix24_RefreshToken", -"ПереименоватьФайл (хук": "RenameFile (wh", -"Сформировать квитанцию": "Create receipt", -"ПолучитьЗаписи (ошибка": "GetRecords (error", -"ID задачи для переноса": "ID of task to move", +"отображать задачи: Y,N": "display tasks: Y,N", "ИзменитьТекстСообщения": "EditMessageText", -"Проверка_ДропБоксСтатус": "Check_DropboxStatus", -"Используемый метод HTTP": "HTTP method used", -"массив URL картинок 360": "array of 360 images URLs", -"ОтправитьКонтакт (канал": "SendContact (channel", -"ПолучитьСписокКаталогов": "GetDirectoriesList", -"НовоеЧислоПереадресаций": "NewRedirectCount", -"ПолучитьСписокКоллекций": "GetCollectionList", -"ОпределитьМетодОтправки": "DetermineSendMethod", -"Телеграм_ОтправитьВидео": "TelegramAPI_SendVideo", -"ПолучитьПоследнююОшибку": "GetLastError", -"Имя файла с расширением": "File name with extension", -"UUID тестового элемента": "Test item UUID", -"СформироватьТекстUpdate": "FormTextUpdate", -"Отключить сервер !NOCLI": "Stop server !NOCLI", -"Bitrix24_УдалитьНовость": "Bitrix24_DeletePost", -"СформироватьТекстDelete": "FormTextDelete", -"ЗаполнитьОчиститьЯчейки": "FillClearCells", -"ДропБокс_СоздатьКаталог": "DropboxAPI_CreateFolder", -"ТелеграмУстановкаВебхук": "TelegramWebhookSetup", -"ОтправитьЛокацию (канал": "SendLocation (channel", -"Компонента MongoDB (ОПИ": "MongoDB Component (OpenIntegrations", -"Вайбер_ОтправитьКонтакт": "Viber_SendContact", -"РазделитьДвоичныеДанные": "SplitBinaryData", -"Скопированный файл.jpeg": "CopiedFile.jpeg", -"ПрочитатьДвоичныеДанные": "ReadBinaryData", -"ПоместитьДвоичныеДанные": "PutBinaryData", -"GAPI_УправлениеГруппами": "GAPI_GroupManagement", -"Проверка_ДропБоксРабота": "Check_DropboxWork", -"Bitrix24_УдалитьКаталог": "Bitrix24_DeleteFolder", -"Флаг анонимности опроса": "Survey anonymity flag", -"ДобавитьУчастникаГруппы": "AddGroupMember", -"ГринОтзывАдминистратора": "GreenAdminRemove", -"Использовать \"../../api": "Use \"../../api", -"ЕстьИдентификаторСессии": "HasSessionID", -"Удалить свойство товара": "Delete product property", -"Б24_РаботаСППолямиЗадач": "B24_TaskFieldsManagement", -"УдалитьФайлы (каталог 2": "DeleteSelectedFiles (folder 2", -"ЗагрузитьМассивВложений": "UploadAttachmentsArray", -"СоздатьЗапросМультипарт": "CreateMultipartRequest", -"список активных токенов": "active token list", -"ID версии начала списка": "Version ID for the beginning of the list", -"Твиттер_СоздатьТвитСГиф": "Twitter_CreateTweetWithGif", -"Является пунктом выдачи": "Its a shipping point", -"СоздатьПроизвольныйТвит": "CreateCustomTweet", -"СформироватьМассивМедиа": "FormMediaArray", -"ПолучитьНастройкиСессии": "GetSessionSettings", -"ПолучитьПостоянныйТокен": "GetPermanentToken", -"ПолучитьРазделительПути": "GetPathSeparator", -"СформироватьТестыЯксCLI": "FormYAXTestsCLI", -"ОбработатьСекретыOllama": "ProcessSecretsMySQLOllama", -"СкопироватьКаталог (хук": "MakeFolderCopy (wh", -"Информация о выполнении": "Execution information", -"ВывестиСправкуПоКоманде": "ShowCommandHelp", -"ТаблицаДляИспользования": "TableForUse", -"Инициализировать !NOCLI": "Initialize !NOCLI", -"Отправить строку !NOCLI": "Send line !NOCLI", -"Добавить стадию канбана": "Add kanban stage", -"СоздатьУдалитьКалендарь": "CreateDeleteCalendar", -"Создать обновить товары": "Create update product", -"Получить/Обновить токен": "Get/Update token", -"Код формы собственности": "Form of ownership code", -"УдалитьКомментарий (хук": "DeleteComment (wh", -"Массив из Строка, Число": "Array of string, number", -"Новое название подборки": "New selection name", -"ПолучитьПакетДокументов": "GetDocumentBatch", -"Использовать \"../../app": "Use \"../../app", -"Новое имя стадии стадии": "New stage name", -"Получить стадии канбана": "Get kanban stages", -"Проверка_БитриксНовость": "Check_BitrixPost", -"Получить поле (числовое": "Get field (numeric", -"Создать канал приватным": "Create channel as private", -"ЯДиск_ПереместитьОбъект": "YDisk_MoveObject", -"ПолучитьИнформациюОБоте": "GetBotInformation", -"УдалитьЗаписи (проверка": "DeleteRecords (check", -"УникальныйИдентификатор": "UUID", -"Массив ID пользователей": "User ID Array", -"Идентификатор категории": "Category identifier", -"Получить значения ячеек": "Get cell values", -"Запустить сервер !NOCLI": "Start server !NOCLI", -"ОбработатьПолучениеGRPC": "ProcessGRPCReceiving", -"Telegram_ОтправитьВидео": "Telegram_SendVideo", -"Ошибка загрузки участка": "Chunk upload error", -"Создать/Удалить каталог": "Create/Delete catalog", -"Получить список свойств": "Get property list", -"ИсключатьАрхивированные": "ExcludeArchived", -"Получить сообщение чата": "Get chat message", -"Проверка_ТелеграмМассив": "Check_TelegramArray", -"Bitrix24_СоздатьНовость": "Bitrix24_CreatePost", -"ИзменитьПодборкуТоваров": "EditProductCollection", -"Телеграм_ОтправитьАудио": "TelegramAPI_SendAudio", -"УдалитьЗависимостьЗадач": "DeleteTasksDependencies", -"Имя участника разговора": "Name of participant in conversation", -"Текст первого сообщения": "Text of the first message", -"ПолучитьОписаниеЛокации": "GetLocationDescription", -"ПолучитьСтруктуруТовара": "GetProductStructure", -"20000000 байт (20 МБайт": "20000000 bytes (20 MB", -"ВК_СоздатьТоварПодборку": "VKAPI_CreateProductSelection", -"ПолучитьСписокКонтактов": "GetContactList", -"ОтправитьКартинку (Путь": "SendPicture (Path", -"VK_СоздатьСоставнойПост": "VK_CreateCompositePost", -"Лайк/Репост/Комментарий": "Like/Repost/Comment", -"СформироватьТекстSelect": "FormTextSelect", -"Новая картинка подборки": "New selection image", -"УстановитьОбъектЗапроса": "SetRequestObject", -"ПолучитьПубличныйОбъект": "GetPublicObject", -"Массив вариантов опроса": "Poll options array", -"Получить чеклист задачи": "Get tasks checklist", -"СдэкАПИ_РаботаСЗаказами": "CDEKAPI_OrdersManagement", -"Получить описание файла": "Get file description", -"Тестовая таблица 2 (изм": "Test table 2 (change", -"ПолучитьСписокКластеров": "GetClustersList", -"ЗагрузитьФайл (размер 2": "UploadFile (size 2", -"СтруктураДоговоренности": "AppointmentStructure", -"ИзменитьКалендарьСписка": "EditListCalendar", -"Элемент фильтра записей": "Record filter element", -"Телеграм_ОтправитьОпрос": "TelegramAPI_SendPoll", -"ОткрытьСоединение (база": "CreateConnection (base", -"Пароль пользователя SSH": "SSH user password", -"Получить структуру лида": "Get lead structure", -"Переименовать хранилище": "Rename storage", -"Установить теги объекта": "Put object tagging", -"СоздатьКомментарий (хук": "CreateComment (wh", -"Добавить данные Related": "Add data as Related", -"ГенераторОтчетаПокрытия": "CoverageReportGenerator", -"Удалить выбранные файлы": "Delete selected files", -"УдалитьШифрованиеБакета": "DeleteBucketEncryption", -"ПолучитьСтруктуруЗадачи": "GetTaskFieldsStructure", -"Удаляет календарь по ID": "Deletes a calendar by ID", -"Конфигурация соединения": "Connection configuration", -"Создает текст Atom фида": "Creates the text of an Atom feed", -"Отправить данные !NOCLI": "Send data !NOCLI", -"Данные файла для записи": "File data to be written", -"идентификатор владельца": "owner identifier", -"Bitrix24_СерверноеВремя": "Bitrix24_ServerTime", -"Сформировать клавиатуру": "Create keyboard", -"СформироватьТекстInsert": "FormTextInsert", -"ЗагрузитьФайлВХранилище": "UploadFileToStorage", -"Массив вариантов ответа": "Array of answer options", -"Выберите пункт External": "Choose External", -"Получить данные о сайте": "Get site data", -"для дальнейших действий": "for further actions", -"Изменяет наименование и": "Changes the name and", -"Создает новый календарь": "Creates a new calendar", -"адрес электронной почты": "email address", -"Получает лог выполнения": "Gets the execution log", -"Получить историю канала": "Get channel history", -"ПереместитьКаталог (хук": "MoveFolder (wh", -"НайтиПользователей (хук": "FindUsers (wh", -"Новый текст комментария": "New comment text", -"Получить список товаров": "Get product list", -"ПолучитьПутьHttpКлиента": "GetHttpClientPath", -"Получить список заказов": "Get order list", -"Получить размер объекта": "Get object size", -"ОтправитьДвоичныеДанные": "SendBinaryData", -"Прочитать строку !NOCLI": "Read line !NOCLI", -"ОбработатьСтруктуруBlob": "ProcessBlobStructure", -"СпособКодированияСтроки": "StringEncodingMethod", -"YandexDisk_СоздатьПапку": "YandexDisk_CreateFolder", -"Множественный, двоичные": "Multiple, binary", -"СоответствиеПоставщиков": "SupplierMap", -"ДлинаОтступаНовойСтроки": "NewLineTabLength", -"ПолучитьОписаниеОбъекта": "HeadObject", -"ОтправитьКодАвторизации": "SendAuthorizationCode", -"УстановитьСтроковоеТело": "SetStringBody", -"Bitrix24_ОтложитьЗадачу": "Bitrix24_DeferTask", -"Telegram_ОтправитьАудио": "Telegram_SendAudio", -"ПолучитьИнформациюОБазе": "GetDatabaseInfo", -"ПолучитьЗначениеИзФайла": "GetValueFromFile", -"Проверка_ТелеграмИстина": "Check_TelegramTrue", -"Б24_УчетРабочегоВремени": "B24_Timekeeping", -"Удалить колонку таблицы": "Delete table column", -"РаботаСЧатамиИДиалогами": "ChatsAndDialogsManagement", -"Путь к файлу или данные": "Path to file or data", -"Новое наименование чата": "New chat name", -"Установить правила чата": "Set chat rules", -"ОбработатьЗаписиПакетом": "ProcessRecordsBatch", -"ПолучитьПеременнуюСреды": "GetEnvironmentVariable", -"СоздатьЗаголовкиЗапроса": "CreateRequestHeaders", -"Данные или путь к файлу": "File data or filepath", -"ПолучитьЧислоУчастников": "GetParticipantCount", -"Удаляет сообщение по ID": "Deletes a message by ID", -"Создать страницу в базу": "Create page in database", -"УстановитьЗначенияЯчеек": "SetCellValues", -"Существующее соединение": "Existing connection", -"МаксимальнаяВложенность": "MaximumNesting", -"Идентификатор базы База": "Base identifier Base", -"ОтправитьДокумент (Путь": "SendDocument (Path", -"СлакОтложенноеСообщение": "SlackSheduledMessage", -"ПараметрыЗапросаВСтроку": "RequestParametersToString", -"Получить структуру чата": "Get chats structure", -"МассивURLФайловВложений": "ArrayOfAttachmentURLs", -"АТ_СоздатьУдалитьЗаписи": "AT_CreateDeleteRecords", -"Получить историю задачи": "Get task history", -"ВключитьУведомленияЧата": "EnableChatNotifications", -"АтрибутыИХарактеристики": "AttributesAndFeatures", -"ДобавитьПараметрыМетода": "AddMethodParams", -"ВключитьЗвукЗадачи (хук": "UnmuteTask (wh", -"OPI_TCP.ОтправитьСтроку": "OPI_TCP.SendLine", -"СформироватьТекстCreate": "FormTextCreate", -"Название района региона": "Name of the area of the region", -"ШаблонОписанияПараметра": "ParameterDescriptionTemplate", -"Действия с обсуждениями": "Actions with discussions", -"Путь к объекту удаления": "Path to the object to delete", -"ВывестиСправкуПоМетодам": "DisplayMethodHelp", -"ВыгрузитьМодельИзПамяти": "UnloadModelFromMemory", -"УправлениеВнешнимФайлом": "ExternalFileManagement", -"Проверка_ДвоичныеДанные": "Check_BinaryData", -"Получить список складов": "Get warehouses list", +"ID задачи для переноса": "ID of task to move", +"ПолучитьЗаписи (ошибка": "GetRecords (error", +"Сформировать квитанцию": "Create receipt", +"Bitrix24_ОбновитьТокен": "Bitrix24_RefreshToken", +"Проверка_БитриксЗадача": "Check_BitrixTask", +"Отклоняет задачу по ID": "Disapprove task by ID", +"Получить отчет запуска": "Get launch report", +"УправлениеБазамиДанных": "DatabaseManagement", +"Пустое описание товара": "Empty product description", +"Установить тему канала": "Set channel topic", +"ПолучитьОписаниеТовара": "GetProductDescription", +"ОтправитьДокумент (Имя": "SendDocument (name", +"УдалитьТоварыБезSKU (2": "DeleteProductsWithoutSKU (2", +"СтруктураВызоваСтрокой": "CallStructureAsString", +"ОбработатьСекретыMySQL": "ProcessSecretsMySQL", +"Проверка_БитриксСтрока": "Check_BitrixString", +"ID календаря источника": "ID of the source calendar", +"СоздатьБазуДанных (TLS": "CreateDatabase (TLS", +"Не найден входной файл": "Input File Not Found!", +"Получить поле (телефон": "Get field (phone", +"ОпределитьШаблоныПутей": "DefinePathsTemplates", +"НачатьВыполнениеЗадачи": "StartTask", +"СоздатьТаблицу (запрос": "CreateTable (query", +"СтруктураПовторяемости": "RepeatabilityStructure", +"СоздатьБакет (удаление": "CreateBucket (deleting", +"НужнаПовторнаяОтправка": "NeedsResend", +"Отправить внешний файл": "Send external file", +"Пароль для подключения": "Password for connection", +"Все записи без отборов": "All records without filters", +"ПолучитьРазмерЭлемента": "GetElementSize", +"мПозицияВСпискеТокенов": "mTokenListPosition", +"СоответствиеРезультата": "ResultMap", +"РазмерФайлаУдаленныйДД": "FileSizeRemoteBD", +"Б24_РаботаСПолямиЗадач": "B24_TasksFieldsManagement", +"Разделитель строк тела": "Body line separator", +"ПолучитьТоварыМагазина": "GetCampaignProducts", +"УдалитьТоварИзПодборки": "RemoveProductFromSelection", +"ПолучитьСтруктуруТипов": "GetTypesStructure", +"Массив из Произвольный": "Array of Arbitrary", +"ID стадии для удаления": "ID of stage to dele", +"ПолучитьСписокХранилищ": "GetStoragesList", +"Другое описание задачи": "Another task description", +"Массив из Строка,Число": "Array of String,Number", +"СоответствиеПараметров": "ParameterMap", +"ВозобновитьЗадачу (хук": "RenewTask (wh", +"Число записей в пакете": "Amount of records in the batch", +"VK_НаписатьКомментарий": "VK_WriteComment", +"ПолучитьТекстовыйМакет": "GetTextTemplate", +"Создает текст RSS фида": "Creates RSS feed text", +"Удалить стадию канбана": "ID of the stage to be deleted", +"Структура полей задачи": "Task fields structure", +"УстановитьНастройкиFtp": "SetFtpSettings", +"Цены и остатки товаров": "Prices and stocks", +"ПараметрыТестаОсновные": "TestParametersMain", +"ТекущийЯзыкОПИ = \"ru\";": "CurrentOPILanguage = \"en\";", +"Бакет источник объекта": "Source bucket name", +"Удаляет подборку по ID": "Deletes the selection by ID", +"ОтправитьСообщениеGRPC": "SendGRPCMessage", +"Запрос (вставка данных": "Request (data insertion", +"Новое описание события": "New event description", +"Токен авторизации (Api": "Auth token (Api", +"Массив участников чата": "Chat members array", +"СтандартныеЗависимости": "StandardDependencies", +"ВыполнитьЗапросБезТела": "ExecuteRequestWithoutBody", +"ПолучитьВременныйТокен": "GetTemporaryToken", +"Проверка_ТелеграмВидео": "Check_TelegramVideo", +"Картинка в формате jpg": "Image in jpg format", +"Bitrix24_ПолучитьТокен": "Bitrix24_GetToken", +"МаксимальнаяДлина Цикл": "MaximumLength Do", +"ДвоичныеДанные, Строка": "BinaryData, String", +"VK_СгруппироватьТовары": "VK_GroupProducts", +"Значение Bearer токена": "Bearer token value", +"ЗагрузитьОбъектЧастями": "UploadObjectInParts", +"ОпределитьТипПараметра": "DefineParameterType", +"Массив Из Соответствие": "Array Of Map", +"ОбработатьНачалоЗаписи": "ProcessRecordsStart", +"Bitrix24_ПринятьЗадачу": "Bitrix24_ApproveTask", +"УдалитьУчастникаГруппы": "RemoveGroupMember", +"ЗаменитьТекстСообщения": "ReplaceMessageText", +"СоздатьПост (один путь": "CreatePost (one path", +"Дата создания >= вчера": "Creation date >= yesterday", +"Число, Массив Из Число": "Number, Array Of Number", +"ПроверитьЗагрузкуЧасти": "CheckPartUpload", +"ОбластиДействияСтрокой": "ScopeAsString", +"УдалитьБазуДанных (TLS": "DeleteDatabase (TLS", +"Путь к папке или файлу": "Path to folder or file", +"ЭтоСерверИлиОбработчик": "IsServerOrHandler", +"НоваяТаблицаПараметров": "NewParamsTable", +"Массив изображений 360": "Array of 360 images", +"Завершает задачу по ID": "Complete task by ID", +"СтандартныеОсобенности": "DefaultFeatures", +"Изменить картинку чата": "Change chat picture", +"Данные первого запроса": "First request data", +"Изменить подразделение": "Update department", +"УстановитьТелоИзСтроки": "SetBodyFromString", +"Сообщение из автотеста": "Message from autotest", +"Создать текстовый твит": "Create text tweet", +"GAPI_ОтправкаСообщений": "GAPI_MessageSending", +"ДобавитьТоварВПодборку": "AddProductToCollection", +"ID рекламного кабинета": "Advertising account ID", +"СтруктураЦеныДляСкидок": "PriceForDiscountsStructure", +"ИспользоватьСжатиеGzip": "UseGzipCompression", +"Массив привилегий роли": "Array of role privileges", +"Получает событие по ID": "Gets an event by ID", +"Соответствие Из Строка": "Map Of String", +"ЗаписатьДвоичныеДанные": "WriteBinaryData", +"Соответствие из Строка": "Map of String", +"СлакПользователиКанала": "SlackChannelUsers", +"Получить настройки TLS": "Get TLS Settings", +"ВыполнитьСинхронизацию": "MakeSynchronization", +"Географическая долгота": "Geographic longitude", +"Свобода открытого кода": "The Freedom of Open Source", +"ПолучитьДвоичныеДанные": "GetBinaryData", +"пр. Ленинградский, д.4": "Ave. Leningradsky, 4", +"КопироватьКаталог (хук": "CopyFolder (wh", +"Массив файлов картинок": "Image files array", +"ЗагрузитьМодельВПамять": "LoadModelToMemory", +"ПроверитьДоступКЗадаче": "CheckTaskAccesses", +"ОтправитьСсылку (канал": "SendLink (channel", +"Строка, ДвоичныеДанные": "String, BinaryData", +"Фильтр по руководителю": "Filter by manager ID", +"УстановитьКонфигурацию": "SetConfiguration", +"Проверка_ВККомментарий": "Check_VKComment", +"СтруктураХаракетристик": "AttributesStructure", +"FT_РаботаСДиректориями": "FT_DirecotryManagement", +"МассивНеобходимыхПолей": "RequiredFieldsArray", +"ИнициализироватьЗапрос": "InitializeQuery", +"VK_НаписатьВОбсуждение": "VK_WriteInDiscussion", +"ТелоОтветаДляОбработки": "ResponseBodyProcessing", +"Сменить владельца чата": "Change chat owner", +"ID изменяемой страницы": "ID of the page being modified", +"ПолучитьКодАвторизации": "GetAuthorizationCode", +"Установить цель канала": "Set channel purpose", +"СформироватьТекстMerge": "FormTextMerge", +"Работа с уведомлениями": "Notifications management", +"Комментарий к упаковке": "Package сommentary", +"и почитать комментарии": "and read comments", +"УстановитьИмяФайлаТела": "SetBodyFileName", +"Установить теги бакета": "Put bucket tagging", +"ПреобразоватьЗаголовок": "ConvertHeader", +"ОткрытьСоединение (TLS": "CreateConnection (TLS", +"ПолучитьСписокОпераций": "GetActionsList", +"СформированноеОписание": "FormedDescription", +"Dropbox_ПолучитьПревью": "Dropbox_GetPreview", +"ДропБоксПубличнаяПапка": "DropboxPublicFolder", +"ПолучитьОписаниеЗаказа": "GetOrderDescription", +"ОтправитьОпрос (цитата": "SendPoll (quote", +"0 Или СтрНайти(Вариант": " 0 Or StrFind(Option", +"Подробная документация": "Detailed documentation", +"СоздатьБакет (Удаление": "CreateBucket (Deleting", +"Проверка_БитриксСписок": "Check_BitrixList", +"КаталогЛоговБиблиотеки": "LibraryLogCatalog", +"Новое имя главной темы": "New main topic name", +"Текущий путь к объекту": "Current path to object", +"Создайте бота Telegram": "Create a Telegram bot", +"НачатьУчетВремени (хук": "StartTimekeeping (wh", +"ПолучитьХранилище (хук": "GetStorage (wh", +"ПреобразоватьКодВТокен": "ConvertCodeToToken", +"ID каталога назначения": "ID of target folder", +"ID метки для изменения": "Tag ID to change", +"ПромежуточныйРезультат": "InterimResult", +"Фильтр по наименованию": "Filter by name", +"ИзменитьКалендарь (хук": "UpdateCalendar (wh", +"Удаляет файл с сервера": "Delete file from server", +"Вайбер_ОтправитьСсылку": "Viber_SendLink", +"Список соединений пуст": "Connection list is empty", +"Загрузить файл частями": "Upload file in parts", +"Получаем ID соединения": "Get connection ID", +"УстановитьОписаниеЧата": "SetChatDescription", +"ОформитьОпциюКоллекцию": "FormOptionCollection", +"Получить запрос !NOCLI": "GetRequest !NOCLI", +"OllamaЗагрузкаВыгрузка": "OllamaLoadUnload", +"дата начала выполнения": "start date", +"Разархивировать товары": "Unarchive products", +"Проверка_ТелеграмАудио": "Check_TelegramAudio", +"ЗагрузитьФайл (большой": "UploadFile (big", +"ПолучитьШтрихкод (файл": "GetBarcode (file", +"1|#color=Желтый) -%2%3": "1|#color=Yellow) -%2%3", +"Имя файла с раширением": "File name with extension", +"Ключ параметра запроса": "Request parameter key", +"Объект GRPC соединения": "GRPC connection object", +"РаботаСЧеклистамиЗадач": "TasksChecklistsManagement", +"id счетчика для отбора": "counter id for selection", +"ПолучитьСписокПодборок": "GetSelectionList", +"ДропбоксПубличнаяПапка": "DropboxPublicFolder", +"ЗагрузитьФайл (в канал": "UploadFile (to channel", +"Начните диалог с ботом": "Start a dialog with the bot", +"ДобавитьОписаниеДанных": "AddDataDescription", +"Использовать \"internal": "Use \"internal", +"УдалитьПостоянныйТокен": "DeletePermanentToken", +"Завершить учет времени": "Stop timekeeping", +"Получает версию Ollama": "Gets a version of Ollama", +"Идентификатор каталога": "Folder identifier", +"МассивКнопокКлавиатуры": "KeyboardButtonsArray", +"ВК_СоздатьСсылкуТокена": "VKAPI_CreateTokenLink", +"Отправить часть !NOCLI": "Send part !NOCLI", +"Массив URL изображений": "Array of images URLs", +"ШаблонЦветнойПодстроки": "ColoredSubstringPattern", +"Сделать файл приватным": "Make file private", +"Bitrix24_СоздатьЗадачу": "Bitrix24_CreateTask", +"ЗаписатьНачалоЭлемента": "WriteStartElement", +"Тип файла для отправки": "Content type for sending", +"ПолучитьЗаписи (отборы": "GetRecords (filters", +"Получить блок картинки": "Get picture block", +"цена цели по умолчанию": "goal default price", +"Работа с комментариями": "Comments management", +"СформироватьЗапросGRPC": "FormGRPCRequest", +"идентификатор компании": "company identifier", +"ЭтоФорматВалидногоJSON": "IsValidJSONFormat", +"Ремонт и строительство": "Repair and building", +"HEX цвета новой стадии": "HEX of new stage color", +"УдалитьЛишниеПоляБлока": "RemoveExtraBlockFields", +"OllamaИнформацияМодели": "OllamaModelInfo", +"Получить токен по коду": "Get token by code", +"Удалить товары без SKU": "Delete products without SKU", +"Получить таймслоты FBO": "Get FBO timeslots", +"Secret для авторизации": "Secret for authorization", +"Создает TCP соединение": "Creates a TCP connection", +"ПереименоватьХранилище": "RenameStorage", +"ПолучитьУдаляемыеФайлы": "GetDeletedFiles", +"Тесты для YaxUnit (ОПИ": "Tests for YaxUnit (OpenIntegrations", +"ID владельца календаря": "Calendar owner ID", +"сообщением в этом чате": "of mesage in this chat", +"Создать составной пост": "Create composite post", +"Какой ваш любимый цвет": "What's your favorite color?", +"возрастное ограничение": "age limit", +"Дата окончания периода": "End date of the period", +"УстановитьПараметрыURL": "SetURLParams", +"ПолучитьТегиБакета (DB": "GetBucketTagging (DB", +"ПолучитьМассивПодборок": "GetSelectionArray", +"ИзменитьТекущийКаталог": "ChangeCurrentDirectory", +"РаботаСФайламиИПапками": "FileAndFolderManagement", +"Массив блоков вложений": "Array of attachments", +"РазмерФайлаЛокальныйДД": "FileSizeLocalBD", +"ТелеграмМестоположение": "TelegramLocation", +"SF_РаботаСДиректориями": "SF_DirectoryManagement", +"ИзменитьСвойствоТовара": "EditProductProperty", +"Компонента SQLite (ОПИ": "SQLite Component (OpenIntegrations", +"Получить список файлов": "Get list of files", +"ЗаполнитьДанныеПоСхеме": "FillDataBySchema", +"ИзменитьСообщение (хук": "EditMessage (wh", +"ДобавитьОбновитьТовары": "AddUpdateProducts", "ID файла для скачивания": "File ID for downloading", -"МассивОбязательныхПолей": "RequiredFieldsArray", -"ПолучитьПланЗадачНаДень": "GetDailyPlan", -"ПолучитьКалендарьСписка": "GetListCalendar", -"ОтменитьПубликациюФайла": "CancelFilePublication", -"Получить список методов": "Get method list", -"Создает новый сеанс SSH": "Creates a new SSH session", -"ВходнойМассивПараметров": "InputParamsArray", -"КоличествоПереадресаций": "RedirectCount", -"ОтменитьЗаписьMultipart": "CancelMultipartBody", -"ПолучитьСписокСчетчиков": "GetCountersList", -"ID товаров для проверки": "Product IDs to be inspected", -"OPI_УниверсальныйСервер": "OPI_GenericServer", -"Получить список записей": "Get list of records", -"Наименование новой базы": "New base name", "Bitrix24_ПолучитьЗадачу": "Bitrix24_GetTask", +"Наименование новой базы": "New base name", +"Получить список записей": "Get list of records", +"OPI_УниверсальныйСервер": "OPI_GenericServer", +"ID товаров для проверки": "Product IDs to be inspected", +"ПолучитьСписокСчетчиков": "GetCountersList", +"ОтменитьЗаписьMultipart": "CancelMultipartBody", +"ВходнойМассивПараметров": "InputParamsArray", +"Создает новый сеанс SSH": "Creates a new SSH session", +"Получить список методов": "Get method list", +"ПолучитьКалендарьСписка": "GetListCalendar", +"ПолучитьПланЗадачНаДень": "GetDailyPlan", +"МассивОбязательныхПолей": "RequiredFieldsArray", +"Получить список складов": "Get warehouses list", "ЗагрузитьФайл (размер 1": "UploadFile (size 1", -"Получить список каналов": "Get channel list", -"Загрузить часть объекта": "Upload object part", -"Telegram_УдалитьWebhook": "Telegram_DeleteWebhook", -"Имя существующей модели": "Name of existing model", -"Слак_ПолучитьИнформацию": "SlackGetData", -"ПолучитьЭлементыЗапуска": "GetLaunchItems", -"20971520 байт (20 МБайт": "20971520 bytes (20 MB", -"Таймаут ожидания данных": "Data reading timeout", -"Слак_ЗагрузитьУдалитьВФ": "Slack_UploadDeleteExternalFile", +"КоличествоПереадресаций": "RedirectCount", +"ОтменитьПубликациюФайла": "CancelFilePublication", "СтруктураАдресаДоставки": "DeliveryAddressStruct", -"XML содержимое RSS фида": "XML content of RSS feed", -"ID новости для удаления": "Id of post to remove", -"ПолучитьСтруктуруДанных": "GetBasicDataStructure", -"ВК_СоздатьСоставнойПост": "VKAPI_CreateCompositePost", -"СоединитьДвоичныеДанные": "ConcatBinaryData", -"Изменить заголовок чата": "Change chat title", -"Удаляет таблицу из базы": "Deletes a table from the database", -"Новое описание картинки": "New picture description", -"ДобавитьЗаписиРаздельно": "AddRecordsSeparately", +"Загрузить часть объекта": "Upload object part", "Создать/Удалить событие": "Create/Delete event", +"ДобавитьЗаписиРаздельно": "AddRecordsSeparately", +"Новое описание картинки": "New picture description", +"Удаляет таблицу из базы": "Deletes a table from the database", +"Изменить заголовок чата": "Change chat title", +"СоединитьДвоичныеДанные": "ConcatBinaryData", +"ВК_СоздатьСоставнойПост": "VKAPI_CreateCompositePost", +"ПолучитьСтруктуруДанных": "GetBasicDataStructure", +"ID новости для удаления": "Id of post to remove", +"XML содержимое RSS фида": "XML content of RSS feed", +"Слак_ЗагрузитьУдалитьВФ": "Slack_UploadDeleteExternalFile", +"Таймаут ожидания данных": "Data reading timeout", +"20971520 байт (20 МБайт": "20971520 bytes (20 MB", +"ПолучитьЭлементыЗапуска": "GetLaunchItems", +"Слак_ПолучитьИнформацию": "SlackGetData", +"Имя существующей модели": "Name of existing model", +"Telegram_УдалитьWebhook": "Telegram_DeleteWebhook", +"Получить список каналов": "Get channel list", +"Проверка_ДвоичныеДанные": "Check_BinaryData", +"Идентификатор базы База": "Base identifier Base", +"ВыгрузитьМодельИзПамяти": "UnloadModelFromMemory", +"Создать страницу в базу": "Create page in database", +"Удаляет сообщение по ID": "Deletes a message by ID", +"ПолучитьЧислоУчастников": "GetParticipantCount", +"Данные или путь к файлу": "File data or filepath", +"СоздатьЗаголовкиЗапроса": "CreateRequestHeaders", +"ПолучитьПеременнуюСреды": "GetEnvironmentVariable", +"ОбработатьЗаписиПакетом": "ProcessRecordsBatch", +"Установить правила чата": "Set chat rules", +"Новое наименование чата": "New chat name", +"Путь к файлу или данные": "Path to file or data", +"РаботаСЧатамиИДиалогами": "ChatsAndDialogsManagement", +"Удалить колонку таблицы": "Delete table column", +"Б24_УчетРабочегоВремени": "B24_Timekeeping", +"Проверка_ТелеграмИстина": "Check_TelegramTrue", +"ПолучитьЗначениеИзФайла": "GetValueFromFile", "ПолучитьОтвет (картинка": "GetResponse (image", +"ПолучитьИнформациюОБазе": "GetDatabaseInfo", +"УстановитьЗначенияЯчеек": "SetCellValues", +"УправлениеВнешнимФайлом": "ExternalFileManagement", +"Существующее соединение": "Existing connection", +"ОтправитьДокумент (Путь": "SendDocument (Path", +"ВывестиСправкуПоМетодам": "DisplayMethodHelp", +"Путь к объекту удаления": "Path to the object to delete", +"Действия с обсуждениями": "Actions with discussions", +"ШаблонОписанияПараметра": "ParameterDescriptionTemplate", +"Название района региона": "Name of the area of the region", +"СформироватьТекстCreate": "FormTextCreate", +"OPI_TCP.ОтправитьСтроку": "OPI_TCP.SendLine", +"ВключитьЗвукЗадачи (хук": "UnmuteTask (wh", +"ДобавитьПараметрыМетода": "AddMethodParams", +"АтрибутыИХарактеристики": "AttributesAndFeatures", +"ВключитьУведомленияЧата": "EnableChatNotifications", +"Получить историю задачи": "Get task history", +"АТ_СоздатьУдалитьЗаписи": "AT_CreateDeleteRecords", +"МассивURLФайловВложений": "ArrayOfAttachmentURLs", +"Получить структуру чата": "Get chats structure", +"ПараметрыЗапросаВСтроку": "RequestParametersToString", +"СлакОтложенноеСообщение": "SlackSheduledMessage", +"МаксимальнаяВложенность": "MaximumNesting", "СоздатьТоварСоСвойством": "CreateProductWithProp", -"Массив Из Строка, Число": "Array of String, Number", -"ПолучитьКопиюСоединения": "GetConnectionCopy", -"ПолучитьКвитанцию (файл": "GetReceipt (file", -"Управление результатами": "Results management", -"Идентификатор хранилища": "Storage ID", -"Массив описаний товаров": "Array of product descriptions", -"ДелегироватьЗадачу (хук": "DelegateTask (wh", -"Получить список бакетов": "List buckets", -"ID удаляемого сообщения": "ID of message to delete", -"идентификатор реквизита": "prop identifier", -"ОтправитьСообщение (хук": "SendMessage", -"Другой заголовок задачи": "Another task title", -"ОзонСписокХарактеристик": "OzonAttributesList", -"ЗаписатьФайлыМультипарт": "WriteMultipartFiles", -"Наименование обсуждения": "Discussion name", -"ПолучитьСписокМагазинов": "GetMarketsList", -"ИзменитьНастройкиГруппы": "ChangeGroupSettings", -"ПолучитьИнформациюОЧате": "GetChatInfo", -"Проверка_ДропБоксМассив": "Check_DropboxArray", -"Изменить стадию канбана": "Change kanban stage", -"Создать свойство товара": "Create product property", -"СправкаВозможныеКоманды": "HelpAvailableCommand", -"СоздатьЗависимостьЗадач": "CreateTasksDependencies", -"ПолучитьСтатусОбработки": "GetProcessingStatus", -"ОбеспечитьПустойКаталог": "EnsureEmptyDirectory", -"Выполнить запрос !NOCLI": "Execute request !NOCLI", -"признак повторного лида": "repeat lead", -"СформироватьОсновнойURL": "FormPrimaryURL", -"Получить список событий": "Get list of events", -"Mongo_ПользователиИРоли": "Mongo_UsersAndRoles", -"ПолучитьСтруктуруСделки": "GetDealStructure", -"ОтправитьМестоположение": "SendLocation", -"ИмяМедиа, ТекущиеДанные": "MediaName, CurrentData", -"Телеграм_ОтправитьГифку": "TelegramAPI_SendGIF", -"ПереместитьФайлВКаталог": "MoveFileToFolder", -"ОтменитьЗагрузкуЧастями": "AbortMultipartUpload", -"Ответ сервера с ссылкой": "Server response with a URL", -"ГД_ЗагрузитьУдалитьФайл": "GD_UploadDeleteFile", -"Вайбер_ОтправитьЛокацию": "Viber_SendLocation", -"ЗаписатьПропущенныйТест": "WriteMissingTest", -"ПустаяСхемаDropDatabase": "EmptySchemeDropDatabase", -"УдалитьСобытиеКалендаря": "DeleteCalendarEvent", -"Не удалось удалить файл": "Failed to delete file", "СкрытьГлавнуюТемуФорума": "HideMainForumTopic", -"СтруктураХарактеристики": "AttributesStructure", -"Bitrix24_ИзменитьЗадачу": "Bitrix24_UpdateTask", -"Максимум попыток !NOCLI": "Max attempts !NOCLI", -"ОтменитьПубликациюПапки": "CancelFolderPublication", -"и перейдите в настройки": "and go to the settings", -"Новый заголовок новости": "New post title", -"УстановитьЗаголовокЧата": "SetChatTitle", -"ДобавитьAWS4Авторизацию": "AddAWS4Authorization", -"Postgres_ОсновныеМетоды": "Postgres_CommonMethods", -"ИзменитьАртикулыТоваров": "UpdateProductsArticles", -"идентификатор календаря": "calendar identifier", -"ЗаписатьЭлементФидаAtom": "WriteFeedItemAtom", -"Получить подборки по ID": "Get selections by ID", -"Получить список моделей": "Get model list", -"ДФ=yyyy-MM-ddTHH:mm:ssZ": "DF=yyyy-MM-ddTHH:mm:ssZ", -"Telegram_ОтправитьОпрос": "Telegram_SendPoll", +"ПолучитьКопиюСоединения": "GetConnectionCopy", "ОбработатьСписокПозиций": "ProcessItemsList", +"Telegram_ОтправитьОпрос": "Telegram_SendPoll", +"ДФ=yyyy-MM-ddTHH:mm:ssZ": "DF=yyyy-MM-ddTHH:mm:ssZ", +"Получить список моделей": "Get model list", +"Получить подборки по ID": "Get selections by ID", +"ЗаписатьЭлементФидаAtom": "WriteFeedItemAtom", +"идентификатор календаря": "calendar identifier", "ПолучитьОписаниеСобытия": "GetEventDescription", +"ИзменитьАртикулыТоваров": "UpdateProductsArticles", +"ДобавитьAWS4Авторизацию": "AddAWS4Authorization", +"УстановитьЗаголовокЧата": "SetChatTitle", +"Новый заголовок новости": "New post title", +"и перейдите в настройки": "and go to the settings", +"ОтменитьПубликациюПапки": "CancelFolderPublication", +"Максимум попыток !NOCLI": "Max attempts !NOCLI", +"Bitrix24_ИзменитьЗадачу": "Bitrix24_UpdateTask", +"Postgres_ОсновныеМетоды": "Postgres_CommonMethods", "Получить структуру лога": "Get log structure", "ID события для удаления": "ID of the event to be deleted", "ID стадии для изменения": "Stage ID for change", -"ДополнитьURLПараметрами": "CompleteURLWithParameters", -"Новое значение свойства": "New property value", -"Путь к новой директории": "Path to new directory", -"СоздатьСобытиеКалендаря": "CreateCalendarEvent", -"ЯМаркет_РаботаСТоварами": "YaMarket_ProductsManagement", -"OPI_ПреобразованиеТипов": "OPI_TypeConversion", -"ПолучитьОтветВКонтексте": "GetContextResponse", -"ДФ=yyyy-MM-ddThh:mm:ssZ": "DF=yyyy-MM-ddThh:mm:ssZ", -"HEX нового цвета стадии": "HEX of new stage color", -"ИзменитьАватарЧата (URL": "ChangeChatPicture (URL", -"ПроверитьОсновныеДанные": "CheckBasicData", -"Произвольный, HTTPОтвет": "Arbitrary, HTTPResponse", -"ПолеКоллекцииСуществует": "CollectionFieldExists", -"ПолучитьНастройкиПрокси": "GetProxySettings", -"Telegram_ОтправитьГифку": "Telegram_SendGif", +"Telegram_ОтправитьАудио": "Telegram_SendAudio", "Идентификатор сообщения": "Message identifier", -"Получить поле (строковое": "Get field (string", -"МаксимальноеЧислоПопыток": "MaximumRetryCount", -"УбратьЗадачуИзИзбранного": "RemoveTaskFromFavorites", -"УправлениеАрхивациейЧата": "ChatArchivingManagement", -"Dropbox_КопироватьОбъект": "Dropbox_CopyObject", -"Адрес истинного продавца": "The address of the true seller", -"ТаблицаСправкаПоКомандам": "CommandsHelpTable", -"ПоместитьКаталогВКорзину": "MarkFolderAsDeleted", -"Компонента SSH/SFTP (ОПИ": "SSH/SFTP Component (OpenIntegrations", -"РаботаСПодборкамиТоваров": "ProductSelectionManagement", -"признак цифрового товара": "digital attribute", -"Блоки в документации API": "Blocks at API documentation", -"Получить список подборок": "Get selection list", -"СохранитьУдалитьКартинку": "SaveDeleteImage", -"Управление базами данных": "Database management", -"Настройки прокси запроса": "Request proxy settings", -"Метод в документации AWS": "Method at AWS documentation", -"ДобавитьРодителяСтраницы": "AddPageParent", -"Установить прокси !NOCLI": "Set proxy !NOCLI", -"Файл источник обновления": "File source for update", -"Получить описание товара": "Get product description", -"СоздатьДлиннуюКлавиатуру": "CreateLongKeyboard", -"Выбрать пункт **Другое**": "Select **Other**", -"Удалить постоянный токен": "Delete permanent token", -"Получить список операций": "Get actions list", -"УдалитьМодель (tiny, bay": "DeleteModel (tiny, bay", -"Язык штрихкода: RUS, ENG": "Barcode language: RUS, ENG", -"Проверка, Новый, Обратно": "Check, New, Back", -"ВК_ПолучитьСписокЗаказов": "VKAPI_GetOrderList", -"УдалитьКомментарийЗадачи": "DeleteTaskComment", -"D:\\GD\\Мой диск\\data.json": "D:\\GD\\My Drive\\data.json", -"СоздатьВысокуюКлавиатуру": "CreateTallKeyboard", -"произвольный комментарий": "arbitrary comment", -"ПолучитьОписаниеКонтакта": "GetContactDescription", -"Откладывает задачу по ID": "Defer task by ID", -"Массив товаров или товар": "Array of products or product", -"ОтправитьКартинку (канал": "SendPicture (channel", -"Mongo_РаботаСДокументами": "Mongo_DocumentsManagement", -"Bitrix24_ПолучитьНовости": "Bitrix24_GetPosts", -"Запрос (создание таблицы": "Request (table creation", -"https://example.com/путь": "https://example.com/path", -"Изменяет имя метки по ID": "Changes the tag name by ID", -"ДобавитьЗадачуВИзбранное": "AddTaskToFavorites", -"ПолучитьСообщениеСистемы": "GetSystemMessage", -"СоздатьПользователя (хук": "CreateUser (wh", -"Вайбер_ОтправкаСообщений": "Viber_MessagesSending", -"РаботаСУдаленнымиФайлами": "ExternalFilesManagement", -"Строка, Массив Из Строка": "String, Array of String", -"Проверка_ТелеграмКонтакт": "Check_TelegramContact", -"VK_ПолучитьСписокЗаказов": "VK_GetOrderList", -"ОбработатьТелоДляЗапроса": "ProcessRequestBody", -"Данные файл для загрузки": "Data file for upload", -"ПолучитьСписокКалендарей": "GetCalendarList", -"СформироватьТестыАссертс": "FormAssertsTests", -"режим: default или debug": "mode: default or debug", -"ПоследнийКодУспеха Тогда": "LastSuccessCode Then", -"Создать новую директорию": "Create new directory", -"МаксимальныйРазмер Тогда": "MaxSize Then", -"Subsystem.OPI_Интеграция": "Subsystem.OPI_Integrations", -"Путь к целевому каталогу": "Path to the target directory", -"загрузка страниц в плеер": "page load to player", -"всегда возвращает Истина": "always return True", -"Получить данные аккаунта": "Get account data", -"Добавить обновить товары": "Add update products", -"СоздатьРекламнуюКампанию": "CreateAdvertisingCampaign", -"БитриксСписокРезультатов": "BitrixResultsList", -"ГК_ПолучитьСписокСобытий": "GC_GetEventList", -"ДобавитьЗаголовокOAuthV1": "AddOAuthV1Header", -"Дата и время записи лога": "Log entry date and time", -"Набор тестов для YAxUnit": "Test suite for YAxUnit", -"XML содержимое Atom фида": "XML content of Atom feed", -"Создает новый сеанс SFTP": "Creates a new SFTP session", -"HTTP_УстановкаЗаголовков": "HTTP_HeadersSetting", -"ПолучитьСписокСоединений": "GetConnectionList", -"ДропБокс_ПолучитьАккаунт": "DropboxAPI_GetAccount", -"ПолноеОписаниеПараметров": "FullParamsDescription", -"Установить описание чата": "Set chat description", -"Не удалось получить файл": "Failed to retrieve the file!", -"Проверка_БитриксВложение": "Check_BitrixAttachment", -"Использовать \"../../main": "Use \"../../main", -"Получить заказ по номеру": "Get order by number", -"ID пользователя адресата": "Recipient user ID", -"ОчиститьОчередьСообщений": "ClearMessageQueue", -"Mongo_РаботаСКоллекциями": "Mongo_CollectionManagement", -"ВывестиСправкуПоКомандам": "ShowCommandsHelp", -"КодировкаВыходногоПотока": "OutputEncoding", -"ДобавитьУчастникаВГруппу": "AddGroupMember", -"Признак рекламного поста": "Sign of an advertising post", -"Создать товар и подборку": "Create product and selection", -"СоздатьУдалитьТемуФорума": "CreateDeleteForumTopic", -"БитриксДоступныеДействия": "BitrixAvailableActions", -"ОбработатьСерверныйПоток": "ProcessServerStream", -"Начать выполнение задачи": "Start a task", -"количество грузовых мест": "number of cargo spaces", -"Получить описание заказа": "Get order description", -"Структура учетных данных": "Credentials structure", -"ПрочитатьСтроку (таймаут": "ReadLine (timeout", -"номер документа на товар": "item document number", -"ПолучитьСписокЛидов (хук": "GetLeadsList (wh", -"Метод в документации API": "Method at API documentation", -"Завершает работу сервера": "Shuts down the server", -"СоответствиеСписковОпций": "OptionListsMap", -"Новая рекламная кампания": "New ads campaign", -"ТекущаяУниверсальнаяДата": "CurrentUniversalDate", -"ВыполнитьЗапросЧерезGRPC": "ExecuteRequestViaGRPC", -"ставка ндс, например 0.2": "VAT rate, e.g. 0.2", -"РазложитьОбъектыПодробно": "BreakDownObjectsInDetail", -"VK_ПолучитьСписокСвойств": "VK_GetPropertyList", -"Обработать запрос !NOCLI": "Process request !NOCLI", -"Использовать \"./internal": "Use \"./internal", -"НачатьНаблюдатьЗаЗадачей": "StartWatchingTask", -"ОписаниеПримитивногоПоля": "PrimitiveFieldDescription", -"СоздатьАрхивироватьКанал": "CreateArchiveChannel", -"СоздатьТоварСоСвойствами": "CreateProductWithProperties", -"ГК_СоздатьУдалитьСобытие": "GC_CreateDeleteEvent", -"ПолучитьПараметрыТвиттер": "GetTwitterParameters", -"ID файла для копирования": "Original file ID", -"НаправлениеПоиска.СКонца": "SearchDirection.FromEnd", -"СформироватьТекстФильтра": "FormFilterText", -"ПолучитьСписокЗадач (хук": "GetTasksList (wh", -"СинхронизироватьКаталоги": "SynchronizeFolders", -"НормализоватьАвторизацию": "NormalizeAuth", -"ДоступноИзменениеПозиции": "CanSeek", -"Новое описание сообщения": "New message description", -"УстановитьТегиБакета (DB": "PutBucketTagging (DB", -"ID целевого пользователя": "Target user ID", -"Код региона по базе СДЭК": "Region code according to CDEK database", -"ОбновитьЗаписи (проверка": "UpdateRecords (check", -"ПолучитьСтрокуПараметров": "GetParamsString", -"ЗаполнитьЗначенияСвойств": "FillPropertyValues", -"ПустаяСхемаAlterTableAdd": "EmptySchemeAlterTableAdd", -"UUID заявки для удаления": "UUID of the invitation for deletion", -"ПреобразоватьДанныеФайла": "ConvertFileData", -"Изменяет название канала": "Changes the name of the channel", -"Создает каталог на диске": "Creates a directory on the disk", -"ПолучитьТекущиеНастройки": "GetCurrentSettings", -"OpenAIУдалениеАссистента": "OpenAIAssistantDeletion", -"ДобавитьФайлВЗадачу (хук": "AttachFileToTopic (wh", -"ИзменитьСобытиеКалендаря": "UpdateCalendarEvent", -"ДобавитьКомментарий (хук": "CreateComment (wh", -"Дополнительные параметры": "Additional parameters", -"ИзменитьАватарЧата (Путь": "ChangeChatPicture (Path", -"ПолучитьДвоичныеИлиПоток": "GetBinaryOrStream", -"Добавить колонку таблицы": "Add table column", -"Получить товары кабинета": "Get business products", -"Идентификатор соединения": "Connection identifier", -"Получить текущий каталог": "Get current directory", -"Тип чата OPEN (публичный": "Chat type OPEN (public", -"ОтправитьЛокацию (цитата": "SendLocation (quote", -"СформироватьБлокКартинку": "GenerateImageBlock", -"ОписаниеСтандартныхОпций": "StandardOptionsDescription", -"Путь к создаваемой папке": "Path to the created folder", -"цвет текста на информере": "informer text color", -"ПолучитьСтруктуруТаблицы": "GetTableStructure", -"VK_ПолучитьСписокТоваров": "VK_GetProductList", -"Пустая строка параметров": "Empty parameter string", -"ТекущийПараметрКоллекция": "CurrentCollectionParam", -"СоздатьТвитКартинки (ИВФ": "CreateImageTweet (TFN", -"ПолучитьШифрованиеБакета": "GetBucketEncryption", -"Изменяет новость в ленте": "Change post data", -"Идентификаторы кластеров": "Clusters identifiers", -"УстановитьКартинкуГруппы": "SetGroupPicture", -"Получить список объектов": "List objects", -"КонечныйМассивПараметров": "FinalParamsArray", -"Обработать отправку GRPC": "Process GRPC sending", -"ИзменитьСвойстваСтраницы": "EditPageProperties", -"ПолучитьИнформациюОДиске": "GetDiskInformation", -"ОзонАПИ_РаботаСоСкладами": "OzonAPI_WarehousesManagement", -"Создает новое обсуждение": "Creates a new discussion", -"ОтправитьКонтакт (цитата": "SendContact (quote", +"Telegram_ОтправитьГифку": "Telegram_SendGif", +"ПолучитьНастройкиПрокси": "GetProxySettings", +"ПолеКоллекцииСуществует": "CollectionFieldExists", +"Произвольный, HTTPОтвет": "Arbitrary, HTTPResponse", +"ПроверитьОсновныеДанные": "CheckBasicData", +"ИзменитьАватарЧата (URL": "ChangeChatPicture (URL", +"HEX нового цвета стадии": "HEX of new stage color", +"ДФ=yyyy-MM-ddThh:mm:ssZ": "DF=yyyy-MM-ddThh:mm:ssZ", +"ПолучитьОтветВКонтексте": "GetContextResponse", +"OPI_ПреобразованиеТипов": "OPI_TypeConversion", +"ЯМаркет_РаботаСТоварами": "YaMarket_ProductsManagement", +"СоздатьСобытиеКалендаря": "CreateCalendarEvent", +"Путь к новой директории": "Path to new directory", +"Новое значение свойства": "New property value", +"ДополнитьURLПараметрами": "CompleteURLWithParameters", +"СтруктураХарактеристики": "AttributesStructure", +"Не удалось удалить файл": "Failed to delete file", +"УдалитьСобытиеКалендаря": "DeleteCalendarEvent", +"ПустаяСхемаDropDatabase": "EmptySchemeDropDatabase", +"Проверка_ДропБоксМассив": "Check_DropboxArray", +"ПолучитьИнформациюОЧате": "GetChatInfo", +"ИзменитьНастройкиГруппы": "ChangeGroupSettings", +"ПолучитьСписокМагазинов": "GetMarketsList", +"Наименование обсуждения": "Discussion name", +"ЗаписатьФайлыМультипарт": "WriteMultipartFiles", +"ОзонСписокХарактеристик": "OzonAttributesList", +"Другой заголовок задачи": "Another task title", +"ОтправитьСообщение (хук": "SendMessage", +"идентификатор реквизита": "prop identifier", +"ID удаляемого сообщения": "ID of message to delete", +"Получить список бакетов": "List buckets", +"ДелегироватьЗадачу (хук": "DelegateTask (wh", +"Массив описаний товаров": "Array of product descriptions", +"Идентификатор хранилища": "Storage ID", +"Управление результатами": "Results management", +"ПолучитьКвитанцию (файл": "GetReceipt (file", +"Изменить стадию канбана": "Change kanban stage", +"Массив Из Строка, Число": "Array of String, Number", +"Создать свойство товара": "Create product property", +"СоздатьЗависимостьЗадач": "CreateTasksDependencies", +"ЗаписатьПропущенныйТест": "WriteMissingTest", +"Вайбер_ОтправитьЛокацию": "Viber_SendLocation", +"ГД_ЗагрузитьУдалитьФайл": "GD_UploadDeleteFile", +"Ответ сервера с ссылкой": "Server response with a URL", +"ОтменитьЗагрузкуЧастями": "AbortMultipartUpload", +"ПереместитьФайлВКаталог": "MoveFileToFolder", +"Телеграм_ОтправитьГифку": "TelegramAPI_SendGIF", +"ИмяМедиа, ТекущиеДанные": "MediaName, CurrentData", +"ОтправитьМестоположение": "SendLocation", +"ПолучитьСтруктуруСделки": "GetDealStructure", +"Mongo_ПользователиИРоли": "Mongo_UsersAndRoles", +"Получить список событий": "Get list of events", +"СформироватьОсновнойURL": "FormPrimaryURL", +"признак повторного лида": "repeat lead", +"Выполнить запрос !NOCLI": "Execute request !NOCLI", +"ОбеспечитьПустойКаталог": "EnsureEmptyDirectory", +"ПолучитьСтатусОбработки": "GetProcessingStatus", +"СправкаВозможныеКоманды": "HelpAvailableCommand", +"Bitrix24_ОтложитьЗадачу": "Bitrix24_DeferTask", +"Получить размер объекта": "Get object size", +"ОтправитьКодАвторизации": "SendAuthorizationCode", +"СоздатьУдалитьКалендарь": "CreateDeleteCalendar", +"Добавить стадию канбана": "Add kanban stage", +"Отправить строку !NOCLI": "Send line !NOCLI", +"Инициализировать !NOCLI": "Initialize !NOCLI", +"ТаблицаДляИспользования": "TableForUse", +"ВывестиСправкуПоКоманде": "ShowCommandHelp", +"Информация о выполнении": "Execution information", +"Создать обновить товары": "Create update product", +"СкопироватьКаталог (хук": "MakeFolderCopy (wh", +"СформироватьТестыЯксCLI": "FormYAXTestsCLI", +"ПолучитьРазделительПути": "GetPathSeparator", +"ПолучитьПостоянныйТокен": "GetPermanentToken", +"ПолучитьНастройкиСессии": "GetSessionSettings", +"СформироватьМассивМедиа": "FormMediaArray", +"СоздатьПроизвольныйТвит": "CreateCustomTweet", +"Является пунктом выдачи": "Its a shipping point", +"ОбработатьСекретыOllama": "ProcessSecretsMySQLOllama", +"Получить/Обновить токен": "Get/Update token", +"Код формы собственности": "Form of ownership code", +"УдалитьКомментарий (хук": "DeleteComment (wh", +"Запустить сервер !NOCLI": "Start server !NOCLI", +"Получить значения ячеек": "Get cell values", +"Идентификатор категории": "Category identifier", +"Массив ID пользователей": "User ID Array", +"УникальныйИдентификатор": "UUID", +"УдалитьЗаписи (проверка": "DeleteRecords (check", +"ПолучитьИнформациюОБоте": "GetBotInformation", +"ЯДиск_ПереместитьОбъект": "YDisk_MoveObject", +"Создать канал приватным": "Create channel as private", +"Получить поле (числовое": "Get field (numeric", +"Проверка_БитриксНовость": "Check_BitrixPost", +"Получить стадии канбана": "Get kanban stages", +"Новое имя стадии стадии": "New stage name", +"Использовать \"../../app": "Use \"../../app", +"ПолучитьПакетДокументов": "GetDocumentBatch", +"Новое название подборки": "New selection name", +"Массив из Строка, Число": "Array of string, number", +"Твиттер_СоздатьТвитСГиф": "Twitter_CreateTweetWithGif", +"ID версии начала списка": "Version ID for the beginning of the list", +"список активных токенов": "active token list", +"СоздатьЗапросМультипарт": "CreateMultipartRequest", +"ЗаполнитьОчиститьЯчейки": "FillClearCells", +"СформироватьТекстDelete": "FormTextDelete", +"Bitrix24_УдалитьНовость": "Bitrix24_DeletePost", +"Отключить сервер !NOCLI": "Stop server !NOCLI", +"СформироватьТекстUpdate": "FormTextUpdate", +"UUID тестового элемента": "Test item UUID", +"Имя файла с расширением": "File name with extension", +"ПолучитьПоследнююОшибку": "GetLastError", +"Телеграм_ОтправитьВидео": "TelegramAPI_SendVideo", +"ОпределитьМетодОтправки": "DetermineSendMethod", +"ПолучитьСписокКоллекций": "GetCollectionList", +"НовоеЧислоПереадресаций": "NewRedirectCount", +"УстановитьСтроковоеТело": "SetStringBody", +"ОтправитьКонтакт (канал": "SendContact (channel", +"массив URL картинок 360": "array of 360 images URLs", +"Используемый метод HTTP": "HTTP method used", +"Проверка_ДропБоксСтатус": "Check_DropboxStatus", +"ДропБокс_СоздатьКаталог": "DropboxAPI_CreateFolder", +"ОбработатьПолучениеGRPC": "ProcessGRPCReceiving", +"ТелеграмУстановкаВебхук": "TelegramWebhookSetup", +"Компонента MongoDB (ОПИ": "MongoDB Component (OpenIntegrations", +"ЗагрузитьМассивВложений": "UploadAttachmentsArray", +"УдалитьФайлы (каталог 2": "DeleteSelectedFiles (folder 2", +"Б24_РаботаСППолямиЗадач": "B24_TaskFieldsManagement", +"Удалить свойство товара": "Delete product property", +"ЕстьИдентификаторСессии": "HasSessionID", +"Использовать \"../../api": "Use \"../../api", +"ГринОтзывАдминистратора": "GreenAdminRemove", +"ДобавитьУчастникаГруппы": "AddGroupMember", +"Флаг анонимности опроса": "Survey anonymity flag", +"Bitrix24_УдалитьКаталог": "Bitrix24_DeleteFolder", +"Проверка_ДропБоксРабота": "Check_DropboxWork", +"GAPI_УправлениеГруппами": "GAPI_GroupManagement", +"ПоместитьДвоичныеДанные": "PutBinaryData", +"ПрочитатьДвоичныеДанные": "ReadBinaryData", +"Скопированный файл.jpeg": "CopiedFile.jpeg", +"РазделитьДвоичныеДанные": "SplitBinaryData", +"Вайбер_ОтправитьКонтакт": "Viber_SendContact", +"ОтправитьЛокацию (канал": "SendLocation (channel", +"Telegram_ОтправитьВидео": "Telegram_SendVideo", +"ПолучитьСписокКаталогов": "GetDirectoriesList", +"Создать/Удалить каталог": "Create/Delete catalog", +"Получить данные о сайте": "Get site data", +"Выберите пункт External": "Choose External", +"Массив вариантов ответа": "Array of answer options", +"ЗагрузитьФайлВХранилище": "UploadFileToStorage", +"СформироватьТекстInsert": "FormTextInsert", +"Сформировать клавиатуру": "Create keyboard", +"Bitrix24_СерверноеВремя": "Bitrix24_ServerTime", +"для дальнейших действий": "for further actions", +"идентификатор владельца": "owner identifier", +"Отправить данные !NOCLI": "Send data !NOCLI", +"Создает текст Atom фида": "Creates the text of an Atom feed", +"Конфигурация соединения": "Connection configuration", +"Удаляет календарь по ID": "Deletes a calendar by ID", +"ПолучитьСтруктуруЗадачи": "GetTaskFieldsStructure", +"УдалитьШифрованиеБакета": "DeleteBucketEncryption", +"Удалить выбранные файлы": "Delete selected files", +"Данные файла для записи": "File data to be written", +"Изменяет наименование и": "Changes the name and", +"Создает новый календарь": "Creates a new calendar", +"адрес электронной почты": "email address", +"Ошибка загрузки участка": "Chunk upload error", +"ПолучитьОписаниеОбъекта": "HeadObject", +"ДлинаОтступаНовойСтроки": "NewLineTabLength", +"Множественный, двоичные": "Multiple, binary", +"YandexDisk_СоздатьПапку": "YandexDisk_CreateFolder", +"СпособКодированияСтроки": "StringEncodingMethod", +"ОбработатьСтруктуруBlob": "ProcessBlobStructure", +"Прочитать строку !NOCLI": "Read line !NOCLI", +"ОтправитьДвоичныеДанные": "SendBinaryData", +"Получить список заказов": "Get order list", +"ПолучитьПутьHttpКлиента": "GetHttpClientPath", +"Получить список товаров": "Get product list", +"Новый текст комментария": "New comment text", +"НайтиПользователей (хук": "FindUsers (wh", +"ПереместитьКаталог (хук": "MoveFolder (wh", +"Получить историю канала": "Get channel history", +"Получает лог выполнения": "Gets the execution log", +"ГенераторОтчетаПокрытия": "CoverageReportGenerator", +"Добавить данные Related": "Add data as Related", +"СоответствиеПоставщиков": "SupplierMap", +"Установить теги объекта": "Put object tagging", +"VK_СоздатьСоставнойПост": "VK_CreateCompositePost", +"ОтправитьКартинку (Путь": "SendPicture (Path", +"ПолучитьСписокКонтактов": "GetContactList", +"ВК_СоздатьТоварПодборку": "VKAPI_CreateProductSelection", +"20000000 байт (20 МБайт": "20000000 bytes (20 MB", +"ПолучитьСтруктуруТовара": "GetProductStructure", +"ПолучитьОписаниеЛокации": "GetLocationDescription", +"Лайк/Репост/Комментарий": "Like/Repost/Comment", +"Текст первого сообщения": "Text of the first message", +"УдалитьЗависимостьЗадач": "DeleteTasksDependencies", +"Телеграм_ОтправитьАудио": "TelegramAPI_SendAudio", +"ИзменитьПодборкуТоваров": "EditProductCollection", +"Bitrix24_СоздатьНовость": "Bitrix24_CreatePost", +"Проверка_ТелеграмМассив": "Check_TelegramArray", +"ИсключатьАрхивированные": "ExcludeArchived", +"СоздатьКомментарий (хук": "CreateComment (wh", +"Имя участника разговора": "Name of participant in conversation", +"СформироватьТекстSelect": "FormTextSelect", +"Получить сообщение чата": "Get chat message", +"УстановитьОбъектЗапроса": "SetRequestObject", +"Переименовать хранилище": "Rename storage", +"Новая картинка подборки": "New selection image", +"Получить структуру лида": "Get lead structure", +"Пароль пользователя SSH": "SSH user password", +"ОткрытьСоединение (база": "CreateConnection (base", +"Телеграм_ОтправитьОпрос": "TelegramAPI_SendPoll", +"Элемент фильтра записей": "Record filter element", +"ИзменитьКалендарьСписка": "EditListCalendar", +"СтруктураДоговоренности": "AppointmentStructure", +"Получить список свойств": "Get property list", +"ЗагрузитьФайл (размер 2": "UploadFile (size 2", +"ПолучитьСписокКластеров": "GetClustersList", +"Тестовая таблица 2 (изм": "Test table 2 (change", +"Получить описание файла": "Get file description", +"СдэкАПИ_РаботаСЗаказами": "CDEKAPI_OrdersManagement", +"Получить чеклист задачи": "Get tasks checklist", +"ПолучитьПубличныйОбъект": "GetPublicObject", +"Массив вариантов опроса": "Poll options array", +"Скачать последнюю версию": "Download the latest version", +"Bitrix24_ОтклонитьЗадачу": "Bitrix24_DisapproveTask", +"ПолучитьСписокРазрешений": "GetPermissionsList", +"ЗагрузитьОбъект (частями": "PutObject (parts", +"ПолучитьКатегорииТоваров": "GetProductCategories", +"ID события для получения": "Event ID to retrieve", +"Получить информацию бота": "Get bot information", +"Остановить сервер !NOCLI": "Stop server !NOCLI", +"ДобавитьBasicАвторизацию": "AddBasicAuthorization", +"ДобавитьКалендарьВСписок": "AddCalendarToList", +"ПреобразоватьФайлыВМедиа": "ConvertFilesToMedia", +"Изменить текст сообщения": "Change the message text", +"ОтправитьСтроку (таймаут": "SendLine (timeout", +"Получить список хранилищ": "Get list of storages", +"Получить размер элемента": "Get element size", +"фильтр по уровню доступа": "filter by access level", +"ЗавершитьЗагрузкуЧастями": "FinishPartsUpload", +"ВК_ПолучитьСписокСвойств": "VKAPI_GetPropertyList", +"ПолучитьДанныеСоединения": "GetConnectionData", +"РезультатПроверкиСтрокой": "CheckResultAsString", +"Наименование нового поля": "New field name", +"ДобавитьПараметрВТаблицу": "AddPramToTable", +"УдалитьКалендарьИзСписка": "DeleteCalendarFromList", +"ПолучитьСтруктуруЗапуска": "GetLaunchStructure", +"СоздатьКаталогВХранилище": "CreateStorageFolder", +"Отправить запрос с телом": "Send request with body", +"НоушнАпи_СоздатьСтраницу": "NotionAPI_CreatePage", +"Номер телефона без знака": "Phone number without", +"ПолучитьОчередьСообщений": "GetMessageQueue", +"Загрузить объект целиком": "Upload full object", +"Логин пользователя mssql": "mssql user login", +"Архивирует выбранный чат": "Archives the selected chat", +"Новый каталог размещения": "New parent directory", +"Логин пользователя mysql": "MySQL user", +"Создать/Изменить таблицу": "Create/Edit table", +"Получить список регионов": "Get regions list", +"ВывестиНачальнуюСтраницу": "DisplayStartPage", +"ID чата для разархивации": "Chat ID for dearchiving", +"Удалено %1 лишних файлов": "Removed %1 unnecessary files", "Заменить текст сообщения": "Replace message text", +"ОтправитьКонтакт (цитата": "SendContact (quote", +"Создает новое обсуждение": "Creates a new discussion", +"ОзонАПИ_РаботаСоСкладами": "OzonAPI_WarehousesManagement", +"ПолучитьИнформациюОДиске": "GetDiskInformation", +"ИзменитьСвойстваСтраницы": "EditPageProperties", +"Обработать отправку GRPC": "Process GRPC sending", +"КонечныйМассивПараметров": "FinalParamsArray", +"Получить список объектов": "List objects", +"УстановитьКартинкуГруппы": "SetGroupPicture", +"Идентификаторы кластеров": "Clusters identifiers", +"Изменяет новость в ленте": "Change post data", +"ПолучитьШифрованиеБакета": "GetBucketEncryption", +"Вайбер_ОтправитьКартинку": "Viber_SendImage", +"СоздатьТвитКартинки (ИВФ": "CreateImageTweet (TFN", "Поместить файл в корзину": "Mark file as deleted", "Получить список областей": "Get region list", "СоздатьСсылкуПриглашение": "CreateInvitationLink", "Удалить участника группы": "Remove group member", -"ОткрытьСоединениеВМодуле": "CreateConnectionInsideModule", -"ID чата для разархивации": "Chat ID for dearchiving", -"VK_УдалитьСвойствоТовара": "VK_DeleteProductProperty", -"ОбработанноеСоответствие": "ProcessedMap", -"Массив Из Строка, Строка": "Array Of String, String", -"Получить товары магазина": "Get campaign products", -"УправлениеПользователями": "UsersManagement", -"Авторизуйтесь на портале": "Log in to the portal", -"Изменяет текст сообщения": "Changes the text of the message", -"Секретный ключ (Password": "Secret key (Password", -"Этот же объект обработки": "This processor object", -"Использовать \"../../grpc": "Use \"../../grpc", -"сохранение страниц сайта": "page saving", -"СохранитьКартинкуВАльбом": "SaveImageToAlbum", -"Изменить свойство товара": "Edit product property", -"Новое описание календаря": "New calendar description", "Создать подборку товаров": "Create product selection", -"Удалено %1 лишних файлов": "Removed %1 unnecessary files", +"Новое описание календаря": "New calendar description", +"Изменить свойство товара": "Edit product property", +"СохранитьКартинкуВАльбом": "SaveImageToAlbum", +"сохранение страниц сайта": "page saving", +"Использовать \"../../grpc": "Use \"../../grpc", +"Этот же объект обработки": "This processor object", "Строка, Массив из Строка": "String, Array of String", -"Наименование нового поля": "New field name", -"Получить размер элемента": "Get element size", -"Получить список хранилищ": "Get list of storages", -"ОтправитьСтроку (таймаут": "SendLine (timeout", -"Изменить текст сообщения": "Change the message text", -"ПреобразоватьФайлыВМедиа": "ConvertFilesToMedia", -"ДобавитьКалендарьВСписок": "AddCalendarToList", -"Остановить сервер !NOCLI": "Stop server !NOCLI", -"ДобавитьBasicАвторизацию": "AddBasicAuthorization", -"фильтр по уровню доступа": "filter by access level", -"Получить информацию бота": "Get bot information", -"ID события для получения": "Event ID to retrieve", -"ПолучитьКатегорииТоваров": "GetProductCategories", -"ЗагрузитьОбъект (частями": "PutObject (parts", -"ПолучитьСписокРазрешений": "GetPermissionsList", -"Bitrix24_ОтклонитьЗадачу": "Bitrix24_DisapproveTask", -"Скачать последнюю версию": "Download the latest version", -"ЗавершитьЗагрузкуЧастями": "FinishPartsUpload", -"НоушнАпи_СоздатьСтраницу": "NotionAPI_CreatePage", -"ПолучитьДанныеСоединения": "GetConnectionData", -"ВК_ПолучитьСписокСвойств": "VKAPI_GetPropertyList", -"Логин пользователя mysql": "MySQL user", -"Новый каталог размещения": "New parent directory", -"Архивирует выбранный чат": "Archives the selected chat", -"Логин пользователя mssql": "mssql user login", -"Загрузить объект целиком": "Upload full object", -"ВывестиНачальнуюСтраницу": "DisplayStartPage", -"ПолучитьОчередьСообщений": "GetMessageQueue", -"Получить список регионов": "Get regions list", -"Номер телефона без знака": "Phone number without", -"Отправить запрос с телом": "Send request with body", -"СоздатьКаталогВХранилище": "CreateStorageFolder", -"ПолучитьСтруктуруЗапуска": "GetLaunchStructure", -"УдалитьКалендарьИзСписка": "DeleteCalendarFromList", -"ДобавитьПараметрВТаблицу": "AddPramToTable", -"РезультатПроверкиСтрокой": "CheckResultAsString", -"Создать/Изменить таблицу": "Create/Edit table", -"Вайбер_ОтправитьКартинку": "Viber_SendImage", +"Секретный ключ (Password": "Secret key (Password", +"Авторизуйтесь на портале": "Log in to the portal", +"УправлениеПользователями": "UsersManagement", +"Получить товары магазина": "Get campaign products", +"Массив Из Строка, Строка": "Array Of String, String", +"ОбработанноеСоответствие": "ProcessedMap", +"VK_УдалитьСвойствоТовара": "VK_DeleteProductProperty", +"ОткрытьСоединениеВМодуле": "CreateConnectionInsideModule", +"Изменяет текст сообщения": "Changes the text of the message", "ВосстановитьКаталог (хук": "RestoreFolder (wh", -"UUID заказа для удаления": "Order UUID for deletion", -"Структура параметров URL": "URL parameters structure", -"МассивОтсутствующихПолей": "MissingFieldsArray", -"Создает пустой календарь": "Creates an empty calendar", -"ID файла для перемещения": "File ID", -"Б24_РаботаСУведомлениями": "B24_NotificationsManagement", -"ПолучитьКодПодтверждения": "GetConfirmationCode", -"ВыполнитьЗапросSQL (файл": "ExecuteSQLQuery (file", -"ID элемента для удаления": "ID of deleted element", -"Другие товары сообщества": "Other items", -"Для работы через Webhook": "To work via Webhook", -"ДобавитьПараметрыКоманды": "AddCommandParameters", -"ПолучитьСобытиеКалендаря": "GetCalendarEvent", -"Структура полей счетчика": "Counter field structure", -"ПолучитьСтрокуЗаголовков": "GetHeadersString", -"VK_СоздатьСвойствоТовара": "VK_CreateProductProperty", -"Использовать \"../../core": "Use \"../../core", -"Путь к объекту оригинала": "Path to the original object", -"асинхронный код счетчика": "asynchronous counter code", -"ОбработатьОшибочныйВывод": "HandleErrorOutput", -"Массив заголовков кнопок": "Array of button titles", -"ПолучитьИмяОсновногоПоля": "GetPrimaryFieldName", -"ОтправитьСообщение (json": "SendMessage (json", -"Отправить местоположение": "Send location", -"URL сервера ReportPortal": "ReportPortal server URL", -"ВыполнитьЗапросЧерезHTTP": "ExecuteRequestViaHTTP", -"ИсключитьУчастникаГруппы": "ExcludeGroupMember", -"АргументыКоманднойСтроки": "CommandLineArguments", -"Путь к директории поиска": "Path to search directory", -"Получить код авторизации": "Get authorization code", -"ВК_ПолучитьСписокТоваров": "VKAPI_GetProductList", -"Получить список сервисов": "Get service list", -"ОбработатьСписокОбъектов": "ProcessObjectList", -"ПриостановитьЗадачу (хук": "PauseTask (wh", -"СформироватьСтрокуВызова": "FormCallString", -"ОтключитьУведомленияЧата": "DisableChatNotifications", -"Загрузить фото на сервер": "Upload photo to server", -"Удаляет объект из бакета": "Removes the object from the bucket", -"ЗаписатьПропущенныеТесты": "WriteMissingTests", -"Bitrix24_ИзменитьНовость": "Bitrix24_UpdatePost", "ID счетчика для удаления": "Counter ID for deletion", -"ПолучитьИнформациюОФайле": "GetFileInformation", -"ОпределитьКаталогПакетов": "DefinePackagesDirectory", -"Новый тестовый заголовок": "NewTestTitle", -"Ноушн_СоздатьУдалитьБлок": "Notion_CreateDeleteBlock", -"ОпределитьТекущуюКоманду": "DetermineCurrentCommand", -"УдалитьЗаписи (получение": "DeleteRecords (get", -"ПриостановитьУчетВремени": "PauseTimekeeping", -"УстановитьКаталогПакетов": "SetPackagesDirectory", -"ОтключитьЗвукЗадачи (хук": "MuteTask (wh", -"ДФ='yyyy-MM-dd HH:MM:ss'": "DF='yyyy-MM-dd HH:MM:ss", -"Bitrix24_ПолучитьКаталог": "Bitrix24_GetFolder", -"Bitrix24_ЗавершитьЗадачу": "Bitrix24_CompleteTask", -"Получить временный токен": "Get temporary token", -"ЗавершитьЗаписьMultipart": "EndMultipartBody", -"список параметров модели": "model parameter list", -"ID товаров для архивации": "Product IDs for archiving", +"Структура параметров URL": "URL parameters structure", "Загрузить файл в каталог": "Upload file to the folder", +"ID товаров для архивации": "Product IDs for archiving", +"список параметров модели": "model parameter list", +"ЗавершитьЗаписьMultipart": "EndMultipartBody", +"Получить временный токен": "Get temporary token", +"Bitrix24_ЗавершитьЗадачу": "Bitrix24_CompleteTask", +"Bitrix24_ПолучитьКаталог": "Bitrix24_GetFolder", +"ДФ='yyyy-MM-dd HH:MM:ss'": "DF='yyyy-MM-dd HH:MM:ss", +"ОтключитьЗвукЗадачи (хук": "MuteTask (wh", +"УстановитьКаталогПакетов": "SetPackagesDirectory", +"ПриостановитьУчетВремени": "PauseTimekeeping", +"УдалитьЗаписи (получение": "DeleteRecords (get", +"ОпределитьТекущуюКоманду": "DetermineCurrentCommand", +"Ноушн_СоздатьУдалитьБлок": "Notion_CreateDeleteBlock", +"Новый тестовый заголовок": "NewTestTitle", "Bitrix24_СкопироватьФайл": "Bitrix24_MakeFileCopy", "СоздатьЧерновикЗаявкиFBO": "CreateFBODraft", "мМассивВходныхПараметров": "mEntryParamsArray", "Ссылка (URL) под записью": "Link (URL) under the post", -"Проверка_ВКГруппаТоваров": "Check_VKProductsGroup", -"ДобавитьПараметрКартинки": "AddImageParameter", -"Проверка_ДропбоксАккаунт": "Check_DropboxAccount", -"ПолучитьОтвет (параметры": "GetResponse (parameter", -"ЗавершитьТестовыйЭлемент": "FinishTestElement", -"РазделитьКоллекциюДанных": "SplitDataCollection", -"ПолучитьНастройкиЗапроса": "GetRequestSettings", -"КвадратныеСкобкиМассивов": "ArraysSquareBrackets", -"Количество переадресаций": "Redirect count", -"ПолучитьСтатистикуПостов": "GetPostStatistics", -"Б24_РаботаСКомментариями": "B24_CommentsManagement", -"Токен авторизации OpenAI": "OpenAI authorization token", -"F0%9F%94%A5 *Новый релиз": "F0%9F%94%A5 *New release", -"ПолучитьЗаголовкиЗапроса": "GetRequestHeaders", +"ТекущийПараметрКоллекция": "CurrentCollectionParam", "Наличие терминала оплаты": "Availability of payment terminal", -"Отправить код авторизации": "Send authorization code", -"ПолучитьСсылкуНаСообщение": "GetMessageLink", -"ОформитьКлиентскийВозврат": "CreateCustomerRefund", -"Изменяет существующий лид": "Modifies an existing lead", -"Заполнить/Очистить ячейки": "Fill/Clear cells", -"ВыполнитьЗапросМультипарт": "ExecuteMultipartRequest", -"Идентификатор комментария": "Comment identifier", -"Получить структуру данных": "Get basic data structure", -"ПолучитьСписокСделок (хук": "GetDealsList (wh", -"ID пользователей(я) Viber": "Viber User(s) ID", -"ПолучитьНастройкиИнстанса": "GetInstanceSettings", -"признак новой сделки (Y|N": "new deal flag (Y|N", -"Получить описание объекта": "Head object", -"ID удаляемого комментария": "ID of comment to remove", -"ОтдельныеЭлементыМассивов": "SplitArrayParams", -"Массив параметров функции": "Array of function parameters", -"ПереключениеОбщегоДоступа": "TogglePublicAccess", -"Выбор по ID подразделения": "Selection by department ID", -"VK_СоздатьПодборкуТоваров": "VK_CreateProductCollection", -"ПолучитьИнформациюИндекса": "GetIndexData", -"ОбработатьЗаписиРаздельно": "ProcessRecordsSeparately", -"Изменить артикулы товаров": "Update products articles", -"ПолучитьИнформациюОТоваре": "GetProductInformation", -"ПолучитьСтрокуПодключения": "GetConnectionString", -"Создает пост с картинками": "Creates a post with images", -"ТекущийСценарий().Каталог": "CurrentScript().Path", -"Завершить отправку !NOCLI": "Complete send !NOCLI", -"дата окончания повторений": "repetition end date", -"ПолучитьЧерновикЗаявкиFBO": "GetFBODraft", -"фильтровать по поддоменам": "subdomain filter", -"Обработать получение GRPC": "Process GRPC receiving", -"RPortal_УправлениеТестами": "RPortal_TestManagement", -"ПолучитьКомментарийЗадачи": "GetTaskComment", -"МобильноеПриложениеСервер": "MobileAppServer", -"ПолучитьПользователейЧата": "GetChatMembers", -"ОжидатьВходящиеСоединения": "WaitIncomingConnections", -"УстановитьАлгоритмOAuthV1": "SetOAuthV1Algorithm", -"ПустаяСхемаCreateDatabase": "EmptySchemeCreateDatabase", -"Удалить товар из подборки": "Remove product from selection", -"Идентификатор базы данных": "Database identifier", -"Статус : Соответствие": "Status : Map", -"Добавить/Удалить картинку": "Add/Delete image", -"Отменить загрузку частями": "Abort multipart upload", -"OPI_ПолучениеДанныхТестов": "OPI_TestDataRetrieval", -"С явным приведением типов": "With explicit type casting", -"Текстовая информация лога": "Log text information", -"ПолучитьСтруктуруЭлемента": "GetItemStructure", -"СоздатьПодразделение (хук": "CreateDepartment (wh", -"ИзменитьПользователя (хук": "UpdateUser (wh", -"ЭкранированиеСимволовJSON": "JSONCharactersEscapeMode", -"Получить сообщение !NOCLI": "Get message !NOCLI", -"URL для установки Webhook": "URL for setting up Webhook", -"Новое наименование стадии": "New stages name", -"Создать зависимость задач": "Create tasks dependencies", -"библиотека>|#color=Бирюза": "library>|#color=Cyan", -"Удаляет существующую роль": "Deletes an existing role", -"Получить список контактов": "Get contact list", -"СоздатьКаноническийЗапрос": "CreateCanonicalRequest", -"Дополнительный тип заказа": "Additional order type", -"ОбновитьИзображенияТовара": "UpdateProductImages", -"Проверка_БитриксРезультат": "Check_BitrixResult", -"Копирует файл или каталог": "Copies file or directory", -"ОткрытьСоединение (запрос": "CreateConnection (query", -"ПолучитьСтруктуруСчетчика": "GetCounterStructure", -"ШаблонЗначенияПоУмолчанию": "DefaultValueTemplate", -"УстановитьАвторизациюGRPC": "SetGRPCAuthorization", -"СформироватьТекстTruncate": "FormTextTruncate", -"ПолучитьИнформациюОМодели": "GetModelInformation", -"См. ПолучитьОписаниеФайла": "See GetFileDescription", -"СоздатьУдалитьКомментарий": "CreateDeleteComment", -"CommonModule.OPI_ТестыCLI": "CommonModule.OPI_TestsCLI", -"ДобавитьBearerАвторизацию": "AddBearerAuthorization", -"признак доступен для всех": "feature is available for all", -"ВыполнитьОбработкуКоманды": "ExecuteCommandProcessing", -"ОбработатьСекретыBitrix24": "ProcessSecretsBitrix24", -"Команда + \"\"#color=Бирюза": "Command + \"\"#color=Aqua", -"Структура настроек сессии": "Session settings structure", -"Получить описание события": "Get event description", -"ГарантироватьТаблицу (TLS": "EnsureTable (TLS", -"ДобавитьИдентификаторЧата": "AddChatIdentifier", -"ПустаяСхемаAlterTableDrop": "EmptySchemeAlterTableDrop", -"Modules/OPI_ЗапросыSQL.os": "Modules/OPI_SQLQueries.os", -"Новый альбом из автотеста": "NewAlbumFromAutoTest", -"ПолучитьКоличествоТоваров": "GetProductsStocks", -"Идентификатор типа товара": "Item type identifier", -"ЗавершитьУчетВремени (хук": "StopTimekeeping (wh", -"Отменить публикацию файла": "Unpublish file", -"ПолучениеДанныхИНастройка": "DataRetrievalAndSettings", -"УстановитьПеременнуюСреды": "SetEnvironmentVariable", -"Modules/OPI_ЗапросыSSH.os": "Modules/OPI_SSHRequests.os", -"ПолучитьКаталогБиблиотеки": "GetLibraryDirectory", -"Соответствие файлов: Ключ": "Map: Key", -"УправлениеПодразделениями": "DepartmentsManagement", -"Описание первого элемента": "First element description", -"Отменить публикацию папки": "Unpublish folder", -"ПолучитьПользователейБазы": "GetDatabaseUsers", -"ПолучитьСобытияКалендарей": "GetCalendarEvents", -"Пароль пользователя mssql": "mssql user password", -"РаботаСФайламиИКаталогами": "FileAndDirectoryManagement", -"МобильноеПриложениеКлиент": "MobileAppClient", -"Получить число участников": "Get participant count", -"УстановитьНастройкиSelect": "SetSelectOptions", -"ПолучитьСоответствиеТипов": "GetTypesMap", -"Проверка_ТелеграмДокумент": "Check_TelegramDocument", -"ЗаменитьСекретыРекурсивно": "ReplaceSecretsRecursively", -"идентификатор комментария": "comment identifier", -"Количество попыток !NOCLI": "Retry count !NOCLI", -"ДействияПубличныхОбъектов": "PublicObjectActions", -"Слак_ПолучитьСписокФайлов": "Slack_GetFileList", -"ПустаяСхемаDeleteDatabase": "EmptySchemeDeleteDatabase", -"Открытый Пакет Интеграций": "Open Integrations Package", -"Отправить двоичные данные": "Send binary data", -"ID сообщения для удаления": "ID of the message to be deleted", -"Работа с заявками курьера": "Courier invitations management", -"Уникальный номер инстанса": "Unique instance number", -"Это объект клиента !NOCLI": "Is client object !NOCLI", -"идентификатор темы форума": "forum topic identifier", -"ИзменитьКартинкуЧата (хук": "ChangeChatPicture (wh", -"Удаляет уведомление по ID": "Delete notification by ID", -"ОтправитьОписанияОбъектов": "SendObjectsDescription", -"Получить структуру товара": "Get product structure", -"Получить список магазинов": "Get markets list", -"Трудозатраты по обработке": "Time spent on work", -"Твиттер_СоздатьТвитСВидео": "Twitter_CreateTweetWithVideo", -"Создает твит без вложений": "Creates a tweet without attachments", -"Тип дополнительной услуги": "Type of additional service", -"Удалить зависимость задач": "Delete tasks dependencies", -"ПоказатьГлавнуюТемуФорума": "ShowMainForumTopic", -"Получить структуру сделки": "Get deal structure", -"ПолучитьСписокФайлов (Все": "GetFilesList (All", -"Получить список кластеров": "Get clusters list", -"Структура JSON полей базы": "The structure of the JSON database fields", -"Проверка_БитриксХранилища": "Check_BitrixStorage", -"Создать событие календаря": "Create calendar event", -"СменитьВладельцаЧата (хук": "ChangeChatOwner (wh", -"Преобразование типов (ОПИ": "Type conversion (OpenIntegrations", -"Получить список счетчиков": "Get counters list", -"ОбработатьСписокКластеров": "ProcessClustersList", -"СоздатьЗапускReportPortal": "CreateReportPortalLaunch", -"таймаут визита в секундах": "visit timeout in seconds", -"Использовать \"../../tools": "Use \"../../tools", -"ДобавитьПользователейВЧат": "AddUsersToChat", -"КопироватьКоллекциюМассив": "CopyCollectionArray", -"ПолучитьСписокФайловПапки": "GetListOfFolderFiles", -"УстановитьАвторизациюHTTP": "SetHTTPAuthorization", -"ЗакрытьВходящееСоединение": "CloseIncomingConnection", -"Добавить заголовок !NOCLI": "Add header !NOCLI", -"ОтправитьУдалитьЭфемерное": "SendDeleteEphemeral", -"VK_ЗагрузитьВидеоНаСервер": "VK_UploadVideoToServer", -"UUID заказа для изменение": "Order UUID for updating", -"Открыть соединение !NOCLI": "Create connection !NOCLI", -"Номер рекламной категории": "Advertising category number", -"Установить таймаут !NOCLI": "Set timeout !NOCLI", -"СкрытьПоказатьГлавнуюТему": "HideShowMainTopic", -"VK_ИзменитьСвойствоТовара": "VK_EditProductProperty", -"Загрузить модель в память": "Load model to memory", -"Изменить подборку товаров": "Edit product selection", -"Устанавливает тему канала": "Sets the channel topic", -"ПолучитьИнформациюОКанале": "GetChannelInformation", -"МассивНастроекНапоминаний": "ReminderSettingsArray", -"ID задачи приемника связи": "To task ID", -"Вернуть соединение !NOCLI": "Return connection !NOCLI", -"ПолучитьИнформациюОМетоде": "GetMethodData", -"GAPI_ПолучениеУведомлений": "GAPI_NotificationsReceiving", +"ПолучитьЗаголовкиЗапроса": "GetRequestHeaders", +"F0%9F%94%A5 *Новый релиз": "F0%9F%94%A5 *New release", +"Токен авторизации OpenAI": "OpenAI authorization token", +"Б24_РаботаСКомментариями": "B24_CommentsManagement", +"ПолучитьСтатистикуПостов": "GetPostStatistics", +"ОпределитьКаталогПакетов": "DefinePackagesDirectory", +"Количество переадресаций": "Redirect count", +"ПолучитьНастройкиЗапроса": "GetRequestSettings", +"РазделитьКоллекциюДанных": "SplitDataCollection", +"ЗавершитьТестовыйЭлемент": "FinishTestElement", +"ПолучитьОтвет (параметры": "GetResponse (parameter", +"Проверка_ДропбоксАккаунт": "Check_DropboxAccount", +"ДобавитьПараметрКартинки": "AddImageParameter", +"Проверка_ВКГруппаТоваров": "Check_VKProductsGroup", +"КвадратныеСкобкиМассивов": "ArraysSquareBrackets", +"UUID заказа для удаления": "Order UUID for deletion", +"ПолучитьИнформациюОФайле": "GetFileInformation", +"ЗаписатьПропущенныеТесты": "WriteMissingTests", +"Использовать \"../../core": "Use \"../../core", +"VK_СоздатьСвойствоТовара": "VK_CreateProductProperty", +"ПолучитьСтрокуЗаголовков": "GetHeadersString", +"Структура полей счетчика": "Counter field structure", +"ПолучитьСобытиеКалендаря": "GetCalendarEvent", +"ДобавитьПараметрыКоманды": "AddCommandParameters", +"Для работы через Webhook": "To work via Webhook", +"Другие товары сообщества": "Other items", +"ID элемента для удаления": "ID of deleted element", +"ВыполнитьЗапросSQL (файл": "ExecuteSQLQuery (file", +"ПолучитьКодПодтверждения": "GetConfirmationCode", +"Б24_РаботаСУведомлениями": "B24_NotificationsManagement", +"ID файла для перемещения": "File ID", +"Создает пустой календарь": "Creates an empty calendar", +"МассивОтсутствующихПолей": "MissingFieldsArray", +"Путь к объекту оригинала": "Path to the original object", +"асинхронный код счетчика": "asynchronous counter code", +"ОбработатьОшибочныйВывод": "HandleErrorOutput", +"Массив заголовков кнопок": "Array of button titles", +"Удаляет объект из бакета": "Removes the object from the bucket", +"Загрузить фото на сервер": "Upload photo to server", +"СформироватьСтрокуВызова": "FormCallString", +"ПриостановитьЗадачу (хук": "PauseTask (wh", +"ОбработатьСписокОбъектов": "ProcessObjectList", +"Получить список сервисов": "Get service list", +"ВК_ПолучитьСписокТоваров": "VKAPI_GetProductList", +"Bitrix24_ИзменитьНовость": "Bitrix24_UpdatePost", +"Получить код авторизации": "Get authorization code", +"АргументыКоманднойСтроки": "CommandLineArguments", +"ИсключитьУчастникаГруппы": "ExcludeGroupMember", +"ВыполнитьЗапросЧерезHTTP": "ExecuteRequestViaHTTP", +"URL сервера ReportPortal": "ReportPortal server URL", +"Отправить местоположение": "Send location", +"ОтправитьСообщение (json": "SendMessage (json", +"ПолучитьИмяОсновногоПоля": "GetPrimaryFieldName", +"Путь к директории поиска": "Path to search directory", +"Пустая строка параметров": "Empty parameter string", +"ОтключитьУведомленияЧата": "DisableChatNotifications", +"ПолучитьСтруктуруТаблицы": "GetTableStructure", +"СформироватьТестыАссертс": "FormAssertsTests", +"ПолучитьСписокКалендарей": "GetCalendarList", +"Данные файл для загрузки": "Data file for upload", +"ОбработатьТелоДляЗапроса": "ProcessRequestBody", +"VK_ПолучитьСписокЗаказов": "VK_GetOrderList", +"Проверка_ТелеграмКонтакт": "Check_TelegramContact", +"Строка, Массив Из Строка": "String, Array of String", +"РаботаСУдаленнымиФайлами": "ExternalFilesManagement", +"Вайбер_ОтправкаСообщений": "Viber_MessagesSending", +"СоздатьПользователя (хук": "CreateUser (wh", +"ПолучитьСообщениеСистемы": "GetSystemMessage", +"ДобавитьЗадачуВИзбранное": "AddTaskToFavorites", +"Изменяет имя метки по ID": "Changes the tag name by ID", +"https://example.com/путь": "https://example.com/path", +"Запрос (создание таблицы": "Request (table creation", +"режим: default или debug": "mode: default or debug", +"ПоследнийКодУспеха Тогда": "LastSuccessCode Then", +"Создать новую директорию": "Create new directory", +"МаксимальныйРазмер Тогда": "MaxSize Then", +"ПолучитьСписокСоединений": "GetConnectionList", +"HTTP_УстановкаЗаголовков": "HTTP_HeadersSetting", +"Создает новый сеанс SFTP": "Creates a new SFTP session", +"XML содержимое Atom фида": "XML content of Atom feed", +"Набор тестов для YAxUnit": "Test suite for YAxUnit", +"Дата и время записи лога": "Log entry date and time", +"ДобавитьЗаголовокOAuthV1": "AddOAuthV1Header", +"Mongo_РаботаСДокументами": "Mongo_DocumentsManagement", +"ГК_ПолучитьСписокСобытий": "GC_GetEventList", +"СоздатьРекламнуюКампанию": "CreateAdvertisingCampaign", +"Добавить обновить товары": "Add update products", +"Получить данные аккаунта": "Get account data", +"всегда возвращает Истина": "always return True", +"загрузка страниц в плеер": "page load to player", +"Путь к целевому каталогу": "Path to the target directory", +"Subsystem.OPI_Интеграция": "Subsystem.OPI_Integrations", +"БитриксСписокРезультатов": "BitrixResultsList", +"ДропБокс_ПолучитьАккаунт": "DropboxAPI_GetAccount", +"ОтправитьКартинку (канал": "SendPicture (channel", +"Откладывает задачу по ID": "Defer task by ID", +"СохранитьУдалитьКартинку": "SaveDeleteImage", +"Получить список подборок": "Get selection list", +"Блоки в документации API": "Blocks at API documentation", +"признак цифрового товара": "digital attribute", +"РаботаСПодборкамиТоваров": "ProductSelectionManagement", +"Компонента SSH/SFTP (ОПИ": "SSH/SFTP Component (OpenIntegrations", +"ПоместитьКаталогВКорзину": "MarkFolderAsDeleted", +"ТаблицаСправкаПоКомандам": "CommandsHelpTable", +"Адрес истинного продавца": "The address of the true seller", +"Dropbox_КопироватьОбъект": "Dropbox_CopyObject", +"УправлениеАрхивациейЧата": "ChatArchivingManagement", +"УбратьЗадачуИзИзбранного": "RemoveTaskFromFavorites", +"МаксимальноеЧислоПопыток": "MaximumRetryCount", +"Получить поле (строковое": "Get field (string", +"VK_ПолучитьСписокТоваров": "VK_GetProductList", +"Управление базами данных": "Database management", +"Настройки прокси запроса": "Request proxy settings", +"Метод в документации AWS": "Method at AWS documentation", +"ДобавитьРодителяСтраницы": "AddPageParent", +"ПолучитьОписаниеКонтакта": "GetContactDescription", +"произвольный комментарий": "arbitrary comment", +"СоздатьВысокуюКлавиатуру": "CreateTallKeyboard", +"D:\\GD\\Мой диск\\data.json": "D:\\GD\\My Drive\\data.json", +"УдалитьКомментарийЗадачи": "DeleteTaskComment", +"ВК_ПолучитьСписокЗаказов": "VKAPI_GetOrderList", +"Проверка, Новый, Обратно": "Check, New, Back", +"Массив товаров или товар": "Array of products or product", +"Язык штрихкода: RUS, ENG": "Barcode language: RUS, ENG", +"Получить список операций": "Get actions list", +"Удалить постоянный токен": "Delete permanent token", +"Выбрать пункт **Другое**": "Select **Other**", +"СоздатьДлиннуюКлавиатуру": "CreateLongKeyboard", +"Получить описание товара": "Get product description", +"Файл источник обновления": "File source for update", +"Установить прокси !NOCLI": "Set proxy !NOCLI", +"УдалитьМодель (tiny, bay": "DeleteModel (tiny, bay", +"ПолноеОписаниеПараметров": "FullParamsDescription", +"Bitrix24_ПолучитьНовости": "Bitrix24_GetPosts", +"Не удалось получить файл": "Failed to retrieve the file!", +"Изменяет название канала": "Changes the name of the channel", +"UUID заявки для удаления": "UUID of the invitation for deletion", +"ПустаяСхемаAlterTableAdd": "EmptySchemeAlterTableAdd", +"ЗаполнитьЗначенияСвойств": "FillPropertyValues", +"ПолучитьСтрокуПараметров": "GetParamsString", +"ОбновитьЗаписи (проверка": "UpdateRecords (check", +"Код региона по базе СДЭК": "Region code according to CDEK database", +"Создает каталог на диске": "Creates a directory on the disk", +"ID целевого пользователя": "Target user ID", +"Новое описание сообщения": "New message description", +"ДоступноИзменениеПозиции": "CanSeek", +"НормализоватьАвторизацию": "NormalizeAuth", +"СинхронизироватьКаталоги": "SynchronizeFolders", +"ПолучитьСписокЗадач (хук": "GetTasksList (wh", +"СформироватьТекстФильтра": "FormFilterText", +"НаправлениеПоиска.СКонца": "SearchDirection.FromEnd", +"УстановитьТегиБакета (DB": "PutBucketTagging (DB", +"ID файла для копирования": "Original file ID", +"ПолучитьТекущиеНастройки": "GetCurrentSettings", +"ДобавитьФайлВЗадачу (хук": "AttachFileToTopic (wh", +"цвет текста на информере": "informer text color", +"Установить описание чата": "Set chat description", +"Путь к создаваемой папке": "Path to the created folder", +"ОписаниеСтандартныхОпций": "StandardOptionsDescription", +"СформироватьБлокКартинку": "GenerateImageBlock", +"ОтправитьЛокацию (цитата": "SendLocation (quote", +"Тип чата OPEN (публичный": "Chat type OPEN (public", +"OpenAIУдалениеАссистента": "OpenAIAssistantDeletion", +"Получить текущий каталог": "Get current directory", +"Получить товары кабинета": "Get business products", +"Добавить колонку таблицы": "Add table column", +"ПолучитьДвоичныеИлиПоток": "GetBinaryOrStream", +"ИзменитьАватарЧата (Путь": "ChangeChatPicture (Path", +"Дополнительные параметры": "Additional parameters", +"ДобавитьКомментарий (хук": "CreateComment (wh", +"ИзменитьСобытиеКалендаря": "UpdateCalendarEvent", +"Идентификатор соединения": "Connection identifier", +"ПолучитьПараметрыТвиттер": "GetTwitterParameters", +"ПреобразоватьДанныеФайла": "ConvertFileData", +"Использовать \"../../main": "Use \"../../main", +"Получить описание заказа": "Get order description", +"количество грузовых мест": "number of cargo spaces", +"Начать выполнение задачи": "Start a task", +"ОбработатьСерверныйПоток": "ProcessServerStream", +"СоздатьУдалитьТемуФорума": "CreateDeleteForumTopic", +"Создать товар и подборку": "Create product and selection", +"Признак рекламного поста": "Sign of an advertising post", +"Структура учетных данных": "Credentials structure", +"ДобавитьУчастникаВГруппу": "AddGroupMember", +"ВывестиСправкуПоКомандам": "ShowCommandsHelp", +"Mongo_РаботаСКоллекциями": "Mongo_CollectionManagement", +"ОчиститьОчередьСообщений": "ClearMessageQueue", +"ID пользователя адресата": "Recipient user ID", +"Получить заказ по номеру": "Get order by number", +"ГК_СоздатьУдалитьСобытие": "GC_CreateDeleteEvent", +"Проверка_БитриксВложение": "Check_BitrixAttachment", +"КодировкаВыходногоПотока": "OutputEncoding", +"ПрочитатьСтроку (таймаут": "ReadLine (timeout", +"БитриксДоступныеДействия": "BitrixAvailableActions", +"ПолучитьСписокЛидов (хук": "GetLeadsList (wh", +"СоздатьТоварСоСвойствами": "CreateProductWithProperties", +"СоздатьАрхивироватьКанал": "CreateArchiveChannel", +"номер документа на товар": "item document number", +"ОписаниеПримитивногоПоля": "PrimitiveFieldDescription", +"НачатьНаблюдатьЗаЗадачей": "StartWatchingTask", +"Использовать \"./internal": "Use \"./internal", +"Обработать запрос !NOCLI": "Process request !NOCLI", +"РазложитьОбъектыПодробно": "BreakDownObjectsInDetail", +"VK_ПолучитьСписокСвойств": "VK_GetPropertyList", +"ВыполнитьЗапросЧерезGRPC": "ExecuteRequestViaGRPC", +"ТекущаяУниверсальнаяДата": "CurrentUniversalDate", +"Новая рекламная кампания": "New ads campaign", +"СоответствиеСписковОпций": "OptionListsMap", +"Завершает работу сервера": "Shuts down the server", +"Метод в документации API": "Method at API documentation", +"ставка ндс, например 0.2": "VAT rate, e.g. 0.2", +"Описание тестового товара": "Test item description", +"НастройкаРасширенныйОтвет": "AdvancedResponseSettings", +"РаботаСоСпискомКалендарей": "CalendarListManagement", +"Создать/Удалить календарь": "Create/Delete calendar", +"Текст выполняемой команды": "Text of the executed command", +"Ноушн_СоздатьИзменитьБазу": "Notion_CreateEditDatabase", +"Открывает gRPC соединение": "Opens a gRPC connection", +"Станьте спонсором проекта": "Become a sponsor", +"Тестовый товар измененный": "EditedTestProduct", +"Удаляет комментарий по ID": "Deletes comment by ID", +"МетодыОбработкиСоединений": "ConnectionHandlingMethods", +"подробное описание товара": "detailed product description", +"Telegram_УдалитьСообщение": "Telegram_DeleteMessage", +"Bitrix24_ВосстановитьФайл": "Bitrix24_RestoreFile", +"Открытый пакет интеграций": "OpenIntegrations", +"Структура настроек прокси": "Proxy settings structure", +"Новое имя стадии стадии 2": "New stage name 2", +"openintegrations.dev/docs": "en.openintegrations.dev/docs", +"ПолучитьСсылкуАвторизации": "GetAuthorizationLink", +"ВосстановитьОбъектКВерсии": "RestoreObjectToVersion", +"РаботаСРекламнымКабинетом": "AdAccountManagement", +"Преобразование типов (OPI": "Type conversion (OpenIntegrations", +"Как EDT проект расширения": "As an EDT extension project", +"См.ПолучитьОписаниеТовара": "See GetProductDescription", +"MIME тип для Content-Type": "MIME type for Content-Type", +"Обновленное описание базы": "Updated base description", +"Установить заголовок чата": "Set chat title", +"ПолучитьВнешнююКомпоненту": "GetAddInObject", +"ПолучитьИнформациюОГруппе": "GetGroupInformation", +"Получить постоянный токен": "Get permanent token", +"Тестовый комментарий (изм": "Test comment (change", +"ПолучитьПользователя (хук": "GetUser (wh", +"Modules/OPI_Компоненты.os": "Modules/OPI_AddIns.os", +"Получить настройки прокси": "Get proxy settings", +"ОтправитьУдалитьСообщение": "SendDeleteMessage", +"календарь для приглашений": "invitation calendar", +"УдалитьСтадиюКанбана (хук": "DeleteKanbanStage (wh", +"МассивПараметровОбработки": "ProcessingParameterArray", "ID элемента для получения": "Element ID", -"Слак_ОткрытьЗакрытьДиалог": "Slack_OpenCloseDialog", -"Создает новую базу данных": "Creates a new database", -"ПереименоватьКаталог (хук": "RenameFolder (wh", -"ЗаменитьОписаниеСообщения": "ReplaceMessageCaption", -"ИзменитьНаименованиеКниги": "EditSpreadsheetTitle", -"текст после ответа модели": "text after the model's response", -"ссылка на картинку товара": "product picture link", -"0 И СтрНайти(ТекущаяОпция": "0 And StrFind(CurrentOption", -"Проверить доступ к задаче": "Check task accesses for users", -"Проверка_ДропбоксУчастник": "Check_DropboxMember", -"Загрузить видео на сервер": "Upload video to server", -"ВернутьИмяФайлаТелаОтвета": "ReturnResponseFilename", -"URL картинки для отправки": "URL of sending picture", +"Coverage_ЗапускВсехТестов": "Coverage_StartAllTests", "УдалитьПоследниеСообщения": "DeleteLastMessages", +"URL картинки для отправки": "URL of sending picture", +"ВернутьИмяФайлаТелаОтвета": "ReturnResponseFilename", +"Загрузить видео на сервер": "Upload video to server", +"Проверка_ДропбоксУчастник": "Check_DropboxMember", +"Проверить доступ к задаче": "Check task accesses for users", +"0 И СтрНайти(ТекущаяОпция": "0 And StrFind(CurrentOption", "УдалитьБазуДанных (ошибка": "DeleteDatabase (error", +"ссылка на картинку товара": "product picture link", +"ИзменитьНаименованиеКниги": "EditSpreadsheetTitle", +"ЗаменитьОписаниеСообщения": "ReplaceMessageCaption", +"ПереименоватьКаталог (хук": "RenameFolder (wh", +"Создает новую базу данных": "Creates a new database", +"Слак_ОткрытьЗакрытьДиалог": "Slack_OpenCloseDialog", +"Проверка_ТелеграмКартинка": "Check_TelegramImage", +"GAPI_ПолучениеУведомлений": "GAPI_NotificationsReceiving", +"текст после ответа модели": "text after the model's response", "ВК_ПолучитьСписокПодборок": "VKAPI_GetSelectionList", "ПолучитьСписокРезультатов": "GetResultsList", "ID задачи источника связи": "From task ID", -"ДействиеСУчастникомГруппы": "GroupMemberAction", -"Преобразовать код в токен": "Convert code to token", -"ID участника для удаления": "Member ID for removal", -"ДобавитьЗаголовокСтраницы": "AddPageHeader", -"Заголовок файла для Slack": "File title for Slack", -"VK_ПолучитьСписокПодборок": "VK_GetSelectionList", -"VK_СформироватьКлавиатуру": "VK_FormKeyboard", -"VK_ДобавитьТоварВПодборку": "VK_AddProductToCollection", -"ОбновитьКоличествоТоваров": "UpdateProductsStocks", -"Ссылка на последний релиз": "To the latest release", -"идентификатор наблюдателя": "auditor identifier", -"VK_УдалитьТоварИзПодборки": "VK_RemoveProductFromSelection", -"УстановитьБезопасныйРежим": "SetSafeMode", -"СоответствиеКомандМодулей": "ModuleCommandMapping", -"УдалитьТрудозатратыЗадачи": "DeleteTaskTimeAccounting", -"Массив имен пользователей": "Array of usernames", "Установить значения ячеек": "Set cell values", -"Coverage_ЗапускВсехТестов": "Coverage_StartAllTests", +"Массив имен пользователей": "Array of usernames", +"УдалитьТрудозатратыЗадачи": "DeleteTaskTimeAccounting", +"СоответствиеКомандМодулей": "ModuleCommandMapping", +"УстановитьБезопасныйРежим": "SetSafeMode", +"VK_УдалитьТоварИзПодборки": "VK_RemoveProductFromSelection", +"идентификатор наблюдателя": "auditor identifier", +"Ссылка на последний релиз": "To the latest release", +"ОбновитьКоличествоТоваров": "UpdateProductsStocks", +"VK_ДобавитьТоварВПодборку": "VK_AddProductToCollection", +"VK_СформироватьКлавиатуру": "VK_FormKeyboard", +"VK_ПолучитьСписокПодборок": "VK_GetSelectionList", +"Заголовок файла для Slack": "File title for Slack", +"ДобавитьЗаголовокСтраницы": "AddPageHeader", +"ID участника для удаления": "Member ID for removal", +"Преобразовать код в токен": "Convert code to token", +"ДействиеСУчастникомГруппы": "GroupMemberAction", "Отправить запрос без тела": "Send request without body", -"МассивПараметровОбработки": "ProcessingParameterArray", -"РаботаСРекламнымКабинетом": "AdAccountManagement", -"Станьте спонсором проекта": "Become a sponsor", -"Открытый пакет интеграций": "OpenIntegrations", -"Telegram_УдалитьСообщение": "Telegram_DeleteMessage", -"подробное описание товара": "detailed product description", -"МетодыОбработкиСоединений": "ConnectionHandlingMethods", -"Удаляет комментарий по ID": "Deletes comment by ID", -"Тестовый товар измененный": "EditedTestProduct", -"Структура настроек прокси": "Proxy settings structure", -"Открывает gRPC соединение": "Opens a gRPC connection", -"Описание тестового товара": "Test item description", -"Ноушн_СоздатьИзменитьБазу": "Notion_CreateEditDatabase", -"Текст выполняемой команды": "Text of the executed command", -"Создать/Удалить календарь": "Create/Delete calendar", -"НастройкаРасширенныйОтвет": "AdvancedResponseSettings", -"РаботаСоСпискомКалендарей": "CalendarListManagement", -"Bitrix24_ВосстановитьФайл": "Bitrix24_RestoreFile", -"Новое имя стадии стадии 2": "New stage name 2", -"УдалитьСтадиюКанбана (хук": "DeleteKanbanStage (wh", -"ПолучитьСсылкуАвторизации": "GetAuthorizationLink", -"календарь для приглашений": "invitation calendar", -"ОтправитьУдалитьСообщение": "SendDeleteMessage", -"Получить настройки прокси": "Get proxy settings", -"Modules/OPI_Компоненты.os": "Modules/OPI_AddIns.os", -"ПолучитьПользователя (хук": "GetUser (wh", -"Тестовый комментарий (изм": "Test comment (change", -"Получить постоянный токен": "Get permanent token", -"ПолучитьИнформациюОГруппе": "GetGroupInformation", -"ПолучитьВнешнююКомпоненту": "GetAddInObject", -"Установить заголовок чата": "Set chat title", -"Обновленное описание базы": "Updated base description", -"MIME тип для Content-Type": "MIME type for Content-Type", -"См.ПолучитьОписаниеТовара": "See GetProductDescription", -"Как EDT проект расширения": "As an EDT extension project", -"Преобразование типов (OPI": "Type conversion (OpenIntegrations", -"openintegrations.dev/docs": "en.openintegrations.dev/docs", -"ВосстановитьОбъектКВерсии": "RestoreObjectToVersion", -"Проверка_ТелеграмКартинка": "Check_TelegramImage", "Загрузить массив вложений": "Upload attachments array", -"БитриксСписокКомментариев": "BitrixCommentsList", +"Получить пакет документов": "Get document batch", "ПолучитьРазмерСодержимого": "GetContentSize", -"Синхронизировать каталоги": "Synchronize folders", -"ОчиститьТаблицу (проверка": "ClearTable (check", -"Удалить шифрование бакета": "Delete bucket encryption", -"Слак_ЗагрузитьУдалитьФайл": "Slack_UploadDeleteFile", -"Изменить имя главной темы": "Change main topic name", -"ПолучитьНастройкиМагазина": "GetCampaignSettings", -"Это объект сервера !NOCLI": "Is server object !NOCLI", -"Путь назначения для копии": "Destination path for the copy", -"Получить календарь списка": "Get list calendar", -"ДобавитьКомментарийЗадачи": "AddTaskComment", -"Закрыть соединение !NOCLI": "Close connection !NOCLI", -"Данные части для загрузки": "Part content for uploading", -"ПолучитьНастройкиКабинета": "GetBusinessSettings", -"Dropbox_ОпубликоватьПапку": "Dropbox_PublishFolder", -"Пароль пользователя mysql": "MySQL password", -"Изменить настройки группы": "Change group settings", -"Получить элементы запуска": "Get launch items", -"Подчиненное подразделение": "Subordinate department", -"Архивирует активный канал": "Archives an active channel", -"ДобавитьПараметрКоллекция": "AddCollectionParam", -"Получить структуру задачи": "Get task fields structure", -"URL для получения объекта": "URL for object retrieving", -"дата последнего изменения": "date of last modification", -"Наименование новой стадии": "New stage name", -"ПолучитьСписокАссистентов": "GetAssistantsList", -"идентификатор направления": "direction identifier", -"ОчиститьОсновнойКалендарь": "ClearMainCalendar", -"Управление пользователями": "Users management", -"Закрыть поток GRPC !NOCLI": "Close GRPC stream !NOCLI", -"Включить уведомления чата": "Enable chat notifications", -"ID записи о трудозатратах": "Time record ID", -"ИзменитьКомментарийЗадачи": "UpdateTaskComment", -"Изменить календарь списка": "Edit list calendar", -"Telegram_ОтправитьКонтакт": "Telegram_SendContact", -"Наименование нового листа": "NewSheetName", -"Получить список каталогов": "Get list of directories", -"ПолучитьСписокФайлов (все": "GetFilesList (full", -"Удалить событие календаря": "Delete calendar event", -"ЯМаркет_КабинетыИМагазины": "YaMarket_CampaignsAndBusiness", -"Получить последнюю ошибку": "Get last error", -"Получить описание локации": "Get location description", -"ПолучитьСостояниеИнстанса": "GetInstanceStatus", -"Проверка, Старый, Обратно": "Check, Old, Back", -"Добавить участника группы": "Add group member", -"ЗапросТелоТекущейОтправки": "RequestBodyCurrentSend", -"УстановитьКартинкуПрофиля": "SetProfilePicture", -"ОтменитьПубликациюОбъекта": "CancelObjectPublication", -"Получить настройки сессии": "Get session settings", -"ID счетчика для изменения": "Counter ID to change", -"Модуль для работы со СДЭК": "Module for working with CDEK", -"первый IP-адрес диапазона": "first IP address of the range", -"цвет стрелки на информере": "arrow color on the informer", -"Прочитать двоичные данные": "Read binary data", -"НаправлениеПоиска.СНачала": "SearchDirection.FromBegin", -"ПолучитьКаталогФайловЧата": "GetChatFilesFolder", -"Открыть поток GRPC !NOCLI": "Open GRPC stream !NOCLI", -"ОбработатьКлиентскийПоток": "ProcessClientStream", "РаботаСоСвойствамиТоваров": "ProductPropertiesManagement", +"ОбработатьКлиентскийПоток": "ProcessClientStream", +"Открыть поток GRPC !NOCLI": "Open GRPC stream !NOCLI", +"ПолучитьКаталогФайловЧата": "GetChatFilesFolder", +"НаправлениеПоиска.СНачала": "SearchDirection.FromBegin", +"Прочитать двоичные данные": "Read binary data", +"цвет стрелки на информере": "arrow color on the informer", "Создать произвольный твит": "Create custom tweet", +"первый IP-адрес диапазона": "first IP address of the range", +"ID счетчика для изменения": "Counter ID to change", +"Получить настройки сессии": "Get session settings", +"ОтменитьПубликациюОбъекта": "CancelObjectPublication", +"УстановитьКартинкуПрофиля": "SetProfilePicture", +"Добавить участника группы": "Add group member", +"Проверка, Старый, Обратно": "Check, Old, Back", +"ПолучитьСостояниеИнстанса": "GetInstanceStatus", +"Модуль для работы со СДЭК": "Module for working with CDEK", "Некорректный вид отправки": "Incorrect sending view", "Запрос с внешней таблицей": "Request with external table", "Удаляет записи из таблицы": "Deletes records from the table", -"ОткрытьСерверныйПотокGRPC": "OpenServerGRPCStream", -"Получить публичный объект": "Get public object", -"Dropbox_ПереместитьОбъект": "Dropbox_MoveObject", -"Атрибуты и характеристики": "Attributes and features", -"Описание второго элемента": "Second element description", -"УстановитьНастройкиПрокси": "SetProxySettings", -"ПоказыватьВыводНемедленно": "ShowOutputImmediately", -"Создать товары по Ozon ID": "Create products by Ozon ID", -"Добавить товар в подборку": "Add product to selection", -"Получить список коллекций": "Get collection list", -"ЯДиск_СоздатьКопиюОбъекта": "YDisk_CreateObjectCopy", -"ОчиститьУдалитьДиректорию": "ClearDeleteDirectory", -"НачатьЗаписьТелаMultipart": "StartMultipartBody", -"Получить пакет документов": "Get document batch", -"УдалитьПодразделение (хук": "DeleteDepartment (wh", -"Телеграм_ОтправитьКонтакт": "TelegramAPI_SendContact", "ДропБокс_РаботаСДоступами": "DropboxAPI_AccessManagement", -"Создание таблицы для теста": "Create tables for test", -"Удаляет элемент лога по ID": "Deletes a log item by ID", -"ОткрытьКлиентскийПотокGRPC": "OpenClientGRPCStream", -"ПреобразоватьПользователей": "ConvertUsers", -"СформироватьЗначенияВыбора": "FormSelectionValues", -"Наименование новой таблицы": "New table name", -"Это сообщение было удалено": "This message was deleted", -"УстановитьШифрованиеБакета": "PutBucketEncryption", -"ЗагрузитьЧастьОбъекта (ЗЗЧ": "UploadObjectPart (FPU", -"ГТ_ЗаполнитьОчиститьЯчейки": "GT_FillClearCells", -"ВывестиСправкуПоПараметрам": "DisplayParameterHelp", -"ДобавитьПользователяКФайлу": "AddUserToFile", -"ИзменитьСтатусПользователя": "ChangeUserStatus", -"Не удалось заменить origin": "Cant replace origin", -"Возврат лога в виде строки": "Return the log as a string", -"ИспользоватьПоляТелаВOAuth": "UseBodyFiledsAtOAuth", -"ОбработатьТабуляциюСправки": "HandleHelpTabulation", -"Получить очередь сообщений": "Get message queue", -"ПолучитьСписокКомментариев": "GetCommentList", -"Мне больше нравится желтый": "I like yellow more", -"Выгрузить модель из памяти": "Unload model from memory", -"РаботаССобытиямиКалендарей": "CalendarEventsManagement", -"ВыполнитьЗапросSQL (Create": "ExecuteSQLQuery (Create", -"Исключить участника группы": "Exclude group member", -"Telegram_СоздатьТемуФорума": "Telegram_CreateForumTopic", -"Получить список календарей": "Get list of calendars", -"СтруктураАдресаОтправления": "SendingAddressStructure", -"СлужебныеПроцедурыИФункции": "Private", -"ПолучитьСтатусУчетаВремени": "GetTimekeepingStatus", -"ПолучитьВходящиеСоединения": "GetIncomingConnections", -"Получить информацию о чате": "Get information about the chat room", -"Ноушн_СоздатьСтраницуВБазу": "Notion_CreatePageInDatabase", -"Modules/OPI_ЗапросыHTTP.os": "Modules/OPI_HTTPRequests.os", -"Документация Neocities API": "Neocities API docs", -"Получить ответ в контексте": "Get context response", -"ЯДиск_ПолучитьСписокФайлов": "YDisk_GetFileList", -"СоздатьБакет (Удаление, DB": "CreateBucket (Deleting, DB", -"Дата установки трудозатрат": "Date the record was set", -"ВывестиСообщениеИсключения": "DisplayExceptionMessage", -"Получить информацию о боте": "Get bot information", -"Отключает уведомлений чата": "Disable chat notifications", -"ПолучитьИнформациюОбУценке": "GetDiscountInformation", -"ПолучитьРезультатОбработки": "GetProcessingResult", -"ГК_СоздатьУдалитьКалендарь": "GC_CreateDeleteCalendar", -"Проверка_ТелеграмСообщение": "Check_TelegramMessage", -"ПолучитьТрудозатратыЗадачи": "GetTaskTimeAccounting", -"Проверка_ВККартинкаАльбома": "Check_VKAlbumPicture", -"ВыполнитьЗапросSQL (Insert": "ExecuteSQLQuery (Insert", -"Неподдерживаемое сообщение": "Unsupported message", -"Создать подключение !NOCLI": "Create connection !NOCLI", -"ПолучитьДоступныеНастройки": "GetAvailableSettings", -"ИзменитьПодразделение (хук": "UpdateDepartment (wh", -"Получить информацию о базе": "Get database info", -"ЗакрытьПодключение (запрос": "CloseConnection (query", -"Локальный каталог источник": "Local source catalog", -"ДобавитьСтадиюКанбана (хук": "AddKanbanStage (wh", -"ДобавитьТрудозатратыЗадачи": "AddTaskTimeAccounting", -"ПолучитьСтадииКанбана (хук": "GetKanbanStages (wh", -"ПолучитьСтатусПользователя": "GetUserStatus", -"ПолучитьТокеныПользователя": "GetUserTokens", -"Фильтры для отбора товаров": "Product filters", -"ЗакрытьТемуФорума (главная": "CloseForumTopic (main", -"Неопределено, Произвольный": "Undefined, Arbitrary", -"Добавляет записи в таблицу": "Adds new rows to the table", -"ЗапросТипУстановленВручную": "RequestTypeSetManualy", -"Ожидать подключения !NOCLI": "Await connections !NOCLI", -"МинимальныйРазмерДляПотока": "MinimumStreamSize", -"ГарантироватьТелоКоллекцию": "GuaranteeBodyCollection", -"Таймаут выполнения запроса": "Request execution timeout", -"УстановитьОбъектСоединения": "SetConnectionObject", -"ПроверитьДоступностьБакета": "HeadBucket", -"Получить событие календаря": "Get calendar event", -"Контекст = Новый Структура": "Context = New Structure", -"Наименование подразделения": "Department name", -"ТаблицаСправкаПоПараметрам": "ParamsHelpTable", -"Bitrix24_ВозобновитьЗадачу": "Bitrix24_RenewTask", -"уровень доступа к счетчику": "counter access level", -"1: Типы коллекций не равны": "1: Collections types are not equal", -"Пассивный режим соединения": "Passive connection mode", -"ПолучитьИнформациюОТоварах": "GetProductsInformation", -"Запрос, приходящий на http": "Request coming to http", -"ТекущееЗначениеПоУмолчанию": "CurrentDefaultValue", -"Использовать \"../../google": "Use \"../../google", -"ID оригинального сообщения": "Original message ID", -"ID сообщения для изменения": "ID of the message to be edited", -"ГринДобавлениеПользователя": "GreenAddMember", -"разрешение на методы Drive": "Drive methods permission", -"Загрузить файл в хранилище": "Upload file to a storage", -"ИзменитьЗаголовокЧата (хук": "ChangeChatTitle (wh", -"ОткрытьТемуФорума (главная": "OpenForumTopic (main", -"значение продолжительности": "duration value", -"ПреобразоватьВариантВыбора": "ConvertSelectionOption", -"ПолучитьЧеклистЗадачи (хук": "GetTasksChecklist (wh", -"ОтправитьМедиагруппу (доки": "SendMediaGroup (docs", -"ОтправитьСообщение (диалог": "SendMessage (dialog", -"ОдобритьЗаявкуНаВступление": "ApprovePending", -"ПолучитьСтруктуруЛида (хук": "GetLeadStructure (wh", -"Текст сообщения под файлом": "Message text below the file", -"Ожидать подключение !NOCLI": "Awaiting connection !NOCLI", -"Content ID, если необходим": "Content ID, if required", -"СледующийОбязательныйТокен": "NextRequiredToken", -"Создать рекламную кампанию": "Create advertising campaign", -"Получает список баз данных": "Gets the list of databases", -"Структура заполнения опции": "Data structure for option", -"Завершить получение !NOCLI": "Finish receiving !NOCLI", -"Телеграм_ОтправитьДокумент": "TelegramAPI_SendDocument", -"ПолучитьВнешнююСсылкуФайла": "GetFileExternalLink", -"Получить настройки запроса": "Get request settings", -"ПолучитьДанныеОСайте (Сайт": "GetSiteData (Site", -"УстановитьПараметрыЗапроса": "SetQueryParams", -"ЗаполнитьПоляЗапросаТовара": "FillProductRequestFields", -"ПолучитьИнформациюОТаблице": "GetTableInformation", -"Установить картинку группы": "Set group picture", -"ИмяФайла, Вид + Расширение": "FileName, View + Extension", -"1 (отправлено сообщений %2": "1 (sent messages %2", -"ЯДиск_ЗагрузитьУдалитьФайл": "YDisk_UploadDeleteFile", -"ВывестиСлужебнуюИнформацию": "LogServiceInformation", -"Получает список соединений": "Gets the list of connections", -"ПолучитьСтруктуруКалендаря": "GetCalendarStructure", -"VK_СоздатьТоварСоСвойством": "VK_CreateProductWithProp", -"Создать/Архивировать канал": "Create/Archive channel", -"Имя команды для выполнения": "Command name to execute", -"Разрешен наложенный платеж": "Cash on delivery allowed", -"URL к видео для добавления": "URL of the video", -"Структура Из КлючИЗначение": "Structure Of KeyAndValue", -"Название компании контакта": "Name of the contact company", -"Отключить уведомления чата": "Disable chat notifications", -"Управление подразделениями": "Departments management", -"запись содержимого страниц": "page content recording", -"Получить структуру запуска": "Get launch structure", -"ЗагрузитьЧастьОбъекта (ИЗЧ": "UploadObjectPart (IPU", -"ОшибкаПараметрНеКомпонента": "NotAddinParameterError", -"СоздатьПост (одна картинка": "CreatePost (one picture", -"ПолучитьТипыКолонокТаблицы": "GetTableColumnTypes", -"Признак использования gzip": "Flag for gzip using", -"Описание тестового события": "TestEventDescription", -"Число знаков после запятой": "Number of decimal places", +"Телеграм_ОтправитьКонтакт": "TelegramAPI_SendContact", +"УдалитьПодразделение (хук": "DeleteDepartment (wh", +"ПолучитьИнформациюОМетоде": "GetMethodData", +"НачатьЗаписьТелаMultipart": "StartMultipartBody", +"ОчиститьУдалитьДиректорию": "ClearDeleteDirectory", +"ЯДиск_СоздатьКопиюОбъекта": "YDisk_CreateObjectCopy", +"Получить список коллекций": "Get collection list", +"Добавить товар в подборку": "Add product to selection", +"Создать товары по Ozon ID": "Create products by Ozon ID", +"ПоказыватьВыводНемедленно": "ShowOutputImmediately", +"УстановитьНастройкиПрокси": "SetProxySettings", +"Описание второго элемента": "Second element description", +"Атрибуты и характеристики": "Attributes and features", +"Dropbox_ПереместитьОбъект": "Dropbox_MoveObject", +"Получить публичный объект": "Get public object", +"ОткрытьСерверныйПотокGRPC": "OpenServerGRPCStream", +"Получить описание локации": "Get location description", +"БитриксСписокКомментариев": "BitrixCommentsList", +"Получить последнюю ошибку": "Get last error", +"Удалить событие календаря": "Delete calendar event", +"Изменить настройки группы": "Change group settings", +"Пароль пользователя mysql": "MySQL password", +"Dropbox_ОпубликоватьПапку": "Dropbox_PublishFolder", +"ПолучитьНастройкиКабинета": "GetBusinessSettings", +"Данные части для загрузки": "Part content for uploading", +"Закрыть соединение !NOCLI": "Close connection !NOCLI", +"ДобавитьКомментарийЗадачи": "AddTaskComment", +"Получить элементы запуска": "Get launch items", +"Получить календарь списка": "Get list calendar", +"Это объект сервера !NOCLI": "Is server object !NOCLI", +"ПолучитьНастройкиМагазина": "GetCampaignSettings", +"Изменить имя главной темы": "Change main topic name", +"Слак_ЗагрузитьУдалитьФайл": "Slack_UploadDeleteFile", +"Удалить шифрование бакета": "Delete bucket encryption", +"ОчиститьТаблицу (проверка": "ClearTable (check", +"Синхронизировать каталоги": "Synchronize folders", +"Путь назначения для копии": "Destination path for the copy", +"Подчиненное подразделение": "Subordinate department", +"Архивирует активный канал": "Archives an active channel", +"ДобавитьПараметрКоллекция": "AddCollectionParam", +"ПолучитьСписокФайлов (все": "GetFilesList (full", +"Получить список каталогов": "Get list of directories", +"Наименование нового листа": "NewSheetName", +"Telegram_ОтправитьКонтакт": "Telegram_SendContact", +"Изменить календарь списка": "Edit list calendar", +"ИзменитьКомментарийЗадачи": "UpdateTaskComment", +"ID записи о трудозатратах": "Time record ID", +"Включить уведомления чата": "Enable chat notifications", +"Закрыть поток GRPC !NOCLI": "Close GRPC stream !NOCLI", +"Управление пользователями": "Users management", +"ОчиститьОсновнойКалендарь": "ClearMainCalendar", +"идентификатор направления": "direction identifier", +"ПолучитьСписокАссистентов": "GetAssistantsList", +"Наименование новой стадии": "New stage name", +"дата последнего изменения": "date of last modification", +"URL для получения объекта": "URL for object retrieving", +"Получить структуру задачи": "Get task fields structure", +"ЯМаркет_КабинетыИМагазины": "YaMarket_CampaignsAndBusiness", +"Вернуть соединение !NOCLI": "Return connection !NOCLI", +"ЗапросТелоТекущейОтправки": "RequestBodyCurrentSend", +"МассивНастроекНапоминаний": "ReminderSettingsArray", +"Получить список контактов": "Get contact list", +"Удаляет существующую роль": "Deletes an existing role", +"библиотека>|#color=Бирюза": "library>|#color=Cyan", +"Создать зависимость задач": "Create tasks dependencies", +"Новое наименование стадии": "New stages name", +"URL для установки Webhook": "URL for setting up Webhook", +"Получить сообщение !NOCLI": "Get message !NOCLI", +"СоздатьКаноническийЗапрос": "CreateCanonicalRequest", +"ЭкранированиеСимволовJSON": "JSONCharactersEscapeMode", +"СоздатьПодразделение (хук": "CreateDepartment (wh", +"ПолучитьСтруктуруЭлемента": "GetItemStructure", +"Текстовая информация лога": "Log text information", +"С явным приведением типов": "With explicit type casting", +"OPI_ПолучениеДанныхТестов": "OPI_TestDataRetrieval", +"Отменить загрузку частями": "Abort multipart upload", +"Добавить/Удалить картинку": "Add/Delete image", +"ИзменитьПользователя (хук": "UpdateUser (wh", +"Статус : Соответствие": "Status : Map", +"Дополнительный тип заказа": "Additional order type", +"Проверка_БитриксРезультат": "Check_BitrixResult", +"Структура настроек сессии": "Session settings structure", +"Команда + \"\"#color=Бирюза": "Command + \"\"#color=Aqua", +"ОбработатьСекретыBitrix24": "ProcessSecretsBitrix24", +"ВыполнитьОбработкуКоманды": "ExecuteCommandProcessing", +"признак доступен для всех": "feature is available for all", +"ДобавитьBearerАвторизацию": "AddBearerAuthorization", +"CommonModule.OPI_ТестыCLI": "CommonModule.OPI_TestsCLI", +"ОбновитьИзображенияТовара": "UpdateProductImages", +"СоздатьУдалитьКомментарий": "CreateDeleteComment", +"ПолучитьИнформациюОМодели": "GetModelInformation", +"СформироватьТекстTruncate": "FormTextTruncate", +"УстановитьАвторизациюGRPC": "SetGRPCAuthorization", +"ШаблонЗначенияПоУмолчанию": "DefaultValueTemplate", +"ПолучитьСтруктуруСчетчика": "GetCounterStructure", +"ОткрытьСоединение (запрос": "CreateConnection (query", +"Копирует файл или каталог": "Copies file or directory", +"См. ПолучитьОписаниеФайла": "See GetFileDescription", +"Идентификатор базы данных": "Database identifier", +"Удалить товар из подборки": "Remove product from selection", +"ПустаяСхемаCreateDatabase": "EmptySchemeCreateDatabase", +"Массив параметров функции": "Array of function parameters", +"ОтдельныеЭлементыМассивов": "SplitArrayParams", +"ID удаляемого комментария": "ID of comment to remove", +"признак новой сделки (Y|N": "new deal flag (Y|N", +"ПолучитьНастройкиИнстанса": "GetInstanceSettings", +"ID пользователей(я) Viber": "Viber User(s) ID", +"ПолучитьСписокСделок (хук": "GetDealsList (wh", +"ПереключениеОбщегоДоступа": "TogglePublicAccess", +"Получить структуру данных": "Get basic data structure", +"ВыполнитьЗапросМультипарт": "ExecuteMultipartRequest", +"Заполнить/Очистить ячейки": "Fill/Clear cells", +"Изменяет существующий лид": "Modifies an existing lead", +"ОформитьКлиентскийВозврат": "CreateCustomerRefund", +"ПолучитьСсылкуНаСообщение": "GetMessageLink", +"Отправить код авторизации": "Send authorization code", +"ID задачи приемника связи": "To task ID", +"Идентификатор комментария": "Comment identifier", +"Выбор по ID подразделения": "Selection by department ID", +"VK_СоздатьПодборкуТоваров": "VK_CreateProductCollection", +"ПолучитьИнформациюИндекса": "GetIndexData", +"УстановитьАлгоритмOAuthV1": "SetOAuthV1Algorithm", +"ОжидатьВходящиеСоединения": "WaitIncomingConnections", +"ПолучитьПользователейЧата": "GetChatMembers", +"МобильноеПриложениеСервер": "MobileAppServer", +"ПолучитьКомментарийЗадачи": "GetTaskComment", +"RPortal_УправлениеТестами": "RPortal_TestManagement", +"Обработать получение GRPC": "Process GRPC receiving", +"фильтровать по поддоменам": "subdomain filter", +"ПолучитьЧерновикЗаявкиFBO": "GetFBODraft", +"дата окончания повторений": "repetition end date", +"Завершить отправку !NOCLI": "Complete send !NOCLI", +"ТекущийСценарий().Каталог": "CurrentScript().Path", +"Создает пост с картинками": "Creates a post with images", +"ПолучитьСтрокуПодключения": "GetConnectionString", +"ПолучитьИнформациюОТоваре": "GetProductInformation", +"Изменить артикулы товаров": "Update products articles", +"ОбработатьЗаписиРаздельно": "ProcessRecordsSeparately", +"Получить описание события": "Get event description", +"ГарантироватьТаблицу (TLS": "EnsureTable (TLS", +"Получить описание объекта": "Head object", +"ПустаяСхемаAlterTableDrop": "EmptySchemeAlterTableDrop", +"ОбработатьСписокКластеров": "ProcessClustersList", +"Получить список счетчиков": "Get counters list", +"Преобразование типов (ОПИ": "Type conversion (OpenIntegrations", +"СменитьВладельцаЧата (хук": "ChangeChatOwner (wh", +"Создать событие календаря": "Create calendar event", +"Проверка_БитриксХранилища": "Check_BitrixStorage", +"Структура JSON полей базы": "The structure of the JSON database fields", +"СоздатьЗапускReportPortal": "CreateReportPortalLaunch", +"Получить список кластеров": "Get clusters list", +"Получить структуру сделки": "Get deal structure", +"ПоказатьГлавнуюТемуФорума": "ShowMainForumTopic", +"Удалить зависимость задач": "Delete tasks dependencies", +"Тип дополнительной услуги": "Type of additional service", +"Создает твит без вложений": "Creates a tweet without attachments", +"Твиттер_СоздатьТвитСВидео": "Twitter_CreateTweetWithVideo", +"Трудозатраты по обработке": "Time spent on work", +"ПолучитьСписокФайлов (Все": "GetFilesList (All", +"таймаут визита в секундах": "visit timeout in seconds", +"Использовать \"../../tools": "Use \"../../tools", +"ДобавитьПользователейВЧат": "AddUsersToChat", +"ДобавитьИдентификаторЧата": "AddChatIdentifier", +"ПолучитьИнформациюОКанале": "GetChannelInformation", +"Устанавливает тему канала": "Sets the channel topic", +"Изменить подборку товаров": "Edit product selection", +"Загрузить модель в память": "Load model to memory", +"VK_ИзменитьСвойствоТовара": "VK_EditProductProperty", +"СкрытьПоказатьГлавнуюТему": "HideShowMainTopic", +"Установить таймаут !NOCLI": "Set timeout !NOCLI", +"Открыть соединение !NOCLI": "Create connection !NOCLI", +"UUID заказа для изменение": "Order UUID for updating", +"VK_ЗагрузитьВидеоНаСервер": "VK_UploadVideoToServer", +"ОтправитьУдалитьЭфемерное": "SendDeleteEphemeral", +"Добавить заголовок !NOCLI": "Add header !NOCLI", +"ЗакрытьВходящееСоединение": "CloseIncomingConnection", +"УстановитьАвторизациюHTTP": "SetHTTPAuthorization", +"ПолучитьСписокФайловПапки": "GetListOfFolderFiles", +"КопироватьКоллекциюМассив": "CopyCollectionArray", +"Получить список магазинов": "Get markets list", +"Получить структуру товара": "Get product structure", +"Номер рекламной категории": "Advertising category number", +"Удаляет уведомление по ID": "Delete notification by ID", +"ПолучитьСобытияКалендарей": "GetCalendarEvents", +"ПолучитьПользователейБазы": "GetDatabaseUsers", +"Отменить публикацию папки": "Unpublish folder", +"Описание первого элемента": "First element description", +"УправлениеПодразделениями": "DepartmentsManagement", +"Соответствие файлов: Ключ": "Map: Key", +"ПолучитьКаталогБиблиотеки": "GetLibraryDirectory", +"Пароль пользователя mssql": "mssql user password", +"Modules/OPI_ЗапросыSSH.os": "Modules/OPI_SSHRequests.os", +"ПолучениеДанныхИНастройка": "DataRetrievalAndSettings", +"ЗавершитьУчетВремени (хук": "StopTimekeeping (wh", +"Идентификатор типа товара": "Item type identifier", +"ПолучитьКоличествоТоваров": "GetProductsStocks", +"Новый альбом из автотеста": "NewAlbumFromAutoTest", +"ОтправитьОписанияОбъектов": "SendObjectsDescription", +"Modules/OPI_ЗапросыSQL.os": "Modules/OPI_SQLQueries.os", +"УстановитьПеременнуюСреды": "SetEnvironmentVariable", +"РаботаСФайламиИКаталогами": "FileAndDirectoryManagement", +"Отменить публикацию файла": "Unpublish file", +"Получить число участников": "Get participant count", +"ИзменитьКартинкуЧата (хук": "ChangeChatPicture (wh", +"идентификатор темы форума": "forum topic identifier", +"МобильноеПриложениеКлиент": "MobileAppClient", +"Уникальный номер инстанса": "Unique instance number", +"Работа с заявками курьера": "Courier invitations management", +"ID сообщения для удаления": "ID of the message to be deleted", +"Отправить двоичные данные": "Send binary data", +"Открытый Пакет Интеграций": "Open Integrations Package", +"ПустаяСхемаDeleteDatabase": "EmptySchemeDeleteDatabase", +"Это объект клиента !NOCLI": "Is client object !NOCLI", +"ДействияПубличныхОбъектов": "PublicObjectActions", +"Количество попыток !NOCLI": "Retry count !NOCLI", +"Слак_ПолучитьСписокФайлов": "Slack_GetFileList", +"идентификатор комментария": "comment identifier", +"ЗаменитьСекретыРекурсивно": "ReplaceSecretsRecursively", +"УстановитьНастройкиSelect": "SetSelectOptions", +"ПолучитьСоответствиеТипов": "GetTypesMap", +"Проверка_ТелеграмДокумент": "Check_TelegramDocument", +"Вайбер_ПолучениеИнформации": "Viber_DataRetrieval", +"Telegram_ЗакрытьТемуФорума": "Telegram_CloseForumTopic", +"ПолучитьЗначенияЯчеек (все": "GetCellValues (all", +"Проверка_ВКВариантСвойства": "Check_VKPropVariant", +"Телеграм_УстановитьWebhook": "TelegramAPI_SetWebhook", +"Архив версий (Sourcecraft)": "Version archive (Sourcecraft)", +"Массив соответствий файлов": "Array of file mappings", +"СформироватьСтруктуруТегов": "FormTagsStructure", +"ИзменитьСтадиюКанбана (хук": "UpdateKanbansStage (wh", +"ПолучитьИмяВременногоФайла": "GetTempFileName", +"Структура из КлючИЗначение": "Structure of KeyAndValue", +"ID чата для отправки файла": "Chat ID for sending", +"НормализоватьТекстовыйВвод": "NormalizeTextInput", +"Создает TCP/TLS соединение": "Creates a TCP/TLS connection", +"Bitrix24_СоздатьПодкаталог": "Bitrix24_CreateSubfolder", +"Telegram_ОтправитьДокумент": "Telegram_SendDocument", +"Скрыть главную тему форума": "Hide main forum topic", +"Telegram_УстановитьWebhook": "Telegram_SetWebhook", +"Telegram_ОтправитьКартинку": "Telegram_SendImage", +"ОтправитьУведомлениеОВводе": "SendWritingNotification", +"Получить информацию канала": "Get channel info", +"Access key для авторизации": "Access key for authorization", +"ПолучитьПользователей (хук": "GetUsers (wh", +"Массив файлов для загрузки": "Array of files to be uploaded", +"ПолучитьСсылкуНаСкачивание": "GetDownloadLink", +"Telegram_УдалитьТемуФорума": "Telegram_DeleteForumTopic", +"ПроверитьСоздатьСоединение": "CheckCreateConnection", +"УстановитьПроизвольноеПоле": "SetCustomField", +"ТекущийПуть, ТекущиеДанные": "CurrentPath, CurrentData", +"ДобавитьВидеообложкуТовара": "AddProductVideoCover", +"ЧислоСтандартныхПараметров": "NumberOfStandardParameters", +"Bitrix24_ПереименоватьФайл": "Bitrix24_RenameFile", +"ОбработатьРезультатЗапроса": "ProcessQueryResult", "ИспользоватьКодированиеURL": "UseURLEncoding", +"Изменить свойства страницы": "Edit page properties", "КраткоеПредставлениеОшибки": "BriefErrorDescription", "Телефон истинного продавца": "The true sellers phone number", "Бренд на иностранном языке": "Brand in a foreign language", @@ -7651,9 +7548,8 @@ "Компонента PostgreSQL (ОПИ": "PostgreSQL Component (OpenIntegrations", "ПолучитьПодразделения (хук": "GetDepartments (wh", "ВывестиТекстВТекущуюСтроку": "WriteOnCurrentLine", -"Bitrix24_ПереименоватьФайл": "Bitrix24_RenameFile", +"Сформировать блок картинку": "Generate image block", "Тип календаря: user, group": "Calendar type: user, group", -"ПолучитьДанныеПользователя": "GetUserData", "Получает комментарий по ID": "Gets comment by ID", "Завершить загрузку частями": "Finish parts upload", "УдалитьКолонкуТаблицы (TLS": "DeleteTableColumn (TLS", @@ -7668,43 +7564,44 @@ "ПолучитьИсториюЗадачи (хук": "GetTaskHistory (wh", "Строка подключения MongoDB": "MongoDB connection string", "Удаляет колонку из таблицы": "Deletes a column from the table", -"ОбработатьРезультатЗапроса": "ProcessQueryResult", -"Сформировать блок картинку": "Generate image block", -"ЧислоСтандартныхПараметров": "NumberOfStandardParameters", -"ТекущийПуть, ТекущиеДанные": "CurrentPath, CurrentData", -"ID чата для отправки файла": "Chat ID for sending", -"Структура из КлючИЗначение": "Structure of KeyAndValue", -"ПолучитьИмяВременногоФайла": "GetTempFileName", -"ИзменитьСтадиюКанбана (хук": "UpdateKanbansStage (wh", -"Массив соответствий файлов": "Array of file mappings", -"СформироватьСтруктуруТегов": "FormTagsStructure", -"НормализоватьТекстовыйВвод": "NormalizeTextInput", -"Архив версий (Sourcecraft)": "Version archive (Sourcecraft)", -"Телеграм_УстановитьWebhook": "TelegramAPI_SetWebhook", -"Проверка_ВКВариантСвойства": "Check_VKPropVariant", -"ПолучитьЗначенияЯчеек (все": "GetCellValues (all", -"Telegram_ЗакрытьТемуФорума": "Telegram_CloseForumTopic", -"Создает TCP/TLS соединение": "Creates a TCP/TLS connection", -"ДобавитьВидеообложкуТовара": "AddProductVideoCover", -"Telegram_ОтправитьДокумент": "Telegram_SendDocument", -"Bitrix24_СоздатьПодкаталог": "Bitrix24_CreateSubfolder", -"Скрыть главную тему форума": "Hide main forum topic", -"Telegram_УстановитьWebhook": "Telegram_SetWebhook", -"Telegram_ОтправитьКартинку": "Telegram_SendImage", -"ОтправитьУведомлениеОВводе": "SendWritingNotification", -"Получить информацию канала": "Get channel info", -"Access key для авторизации": "Access key for authorization", -"ПолучитьПользователей (хук": "GetUsers (wh", -"Массив файлов для загрузки": "Array of files to be uploaded", -"ПолучитьСсылкуНаСкачивание": "GetDownloadLink", -"Telegram_УдалитьТемуФорума": "Telegram_DeleteForumTopic", -"ПроверитьСоздатьСоединение": "CheckCreateConnection", -"Вайбер_ПолучениеИнформации": "Viber_DataRetrieval", -"УстановитьПроизвольноеПоле": "SetCustomField", -"Изменить свойства страницы": "Edit page properties", +"ПолучитьДанныеПользователя": "GetUserData", "ГД_ПолучитьСписокКаталогов": "GD_GetCatalogList", -"Закрыть подключение !NOCLI": "Close connection !NOCLI", +"УдалитьПустыеПоляКоллекции": "RemoveEmptyCollectionFields", "Получить статистику постов": "Get post statistics", +"ДобавитьOAuthV1Авторизацию": "AddOAuthV1Authorization", +"ПолучитьПолныйСписокТестов": "GetFullTestList", +"ЗагрузкаИОбновлениеТоваров": "UploadingAndUpdatingProducts", +"Обработать серверный поток": "Process server stream", +"ОбновитьЗаписи (количество": "UpdateRecords (amount", +"Мой другой новый календарь": "My other new calendar", +"Получить описание контакта": "Get contact description", +"ВыполнитьЗапросСОбработкой": "ExecuteQueryWithProcessing", +"СоздатьДиректорию (двойная": "CreateDirectory (double", +"ОжидатьЗавершенияОбработки": "WaitForProcessingCompletion", +"Значение параметра запроса": "Request parameter value", +"Проверка_ТелеграмПереслать": "Check_TelegramForward", +"Получить сообщение системы": "Get system message", +"Чтение данных тела запроса": "Reading request body data", +"Dropbox_ЗагрузитьФайлПоURL": "Dropbox_UploadFileByURL", +"ЗагрузитьФайлВКаталог (хук": "UploadFileToFolder (wh", +"Bitrix24_ПолучитьХранилище": "Bitrix24_GetStorage", +"Получить шифрование бакета": "Get bucket encryption", +"%F0%9F%94%A5 *Новый релиз\\": "%F0%9F%94%A5 *New release\\", +"Код КЛАДР. Устаревшее поле": "CLADR code. Deprecated field", +"Телеграм_ОтправитьКартинку": "TelegramAPI_SendImage", +"ПодключитьРасширение (путь": "ConnectExtension (path", +"СлужебныеПроцедурыИфункции": "ServiceProceduresAndFunctions", +"Если вам необходим чат-бот": "If you need a chatbot", +"ИсключитьПользователейЧата": "RemoveChatMembers", +"Запись данных тела запроса": "Request body data writing", +"ОформитьОшибочныйОтветHTTP": "FormatHTTPErrorResponse", +"ДропБокс_СоздатьУдалитьТег": "DropboxAPI_CreateDeleteTag", +"ДобавитьКомментарийНовости": "AddPostComment", +"Число знаков после запятой": "Number of decimal places", +"Очищает значение в ячейках": "Clears the value in cells", +"Полужирный текст сообщения": "Bold text", +"Получаем список соединений": "Receive the list of connections", +"Удаляет набор тегов бакета": "Deletes the bucket tag set", "Приостановить учет времени": "Stop timekeeping", "УдалитьПустыеКлючиЗначения": "RemoveEmptyKeyValues", "УстановитьОтметкуПрочтения": "SetReadMark", @@ -7722,464 +7619,474 @@ "Массив объектов документов": "Array of docs objects", "Добавляет товар в подборку": "Adds a product to the selection", "Получить категории товаров": "Get product categories", -"СоздатьБакет (удаление, DB": "CreateBucket (deleting, DB", -"другие увед. будут удалены": "another notif. will be deleted", -"Ошибка удаления файла базы": "Database file deletion error", -"Bitrix24_КопироватьКаталог": "Bitrix24_CopyFolder", -"ИзменитьТрудозатратыЗадачи": "UpdateTaskTimeAccounting", -"Команда FTP: `RNFR + RNTO`": "FTP Command: `RNFR + RNTO`", -"Использовать \"../../yandex": "Use \"../../yandex", -"Этот календарь был изменен": "This calendar has been changed", -"Слак_ПолучитьСписокКаналов": "Slack_GetChannelList", -"Компоненты (служебный, ОПИ": "AddIns (Utility, OpenIntegrations", -"СоздатьРекламноеОбъявление": "CreateAd", -"ГринИсключениеПользователя": "GreenExcludeMember", -"Токен авторизации (Api-Key": "Authorization token (Api-Key", "Данные клиентского запроса": "Client request data", -"Удаляет набор тегов бакета": "Deletes the bucket tag set", -"Получаем список соединений": "Receive the list of connections", -"Полужирный текст сообщения": "Bold text", -"Dropbox_ЗагрузитьФайлПоURL": "Dropbox_UploadFileByURL", -"ДобавитьOAuthV1Авторизацию": "AddOAuthV1Authorization", -"ПолучитьПолныйСписокТестов": "GetFullTestList", -"УдалитьПустыеПоляКоллекции": "RemoveEmptyCollectionFields", -"ЗагрузкаИОбновлениеТоваров": "UploadingAndUpdatingProducts", -"Обработать серверный поток": "Process server stream", -"ОбновитьЗаписи (количество": "UpdateRecords (amount", -"Мой другой новый календарь": "My other new calendar", -"Получить описание контакта": "Get contact description", -"ВыполнитьЗапросСОбработкой": "ExecuteQueryWithProcessing", -"СоздатьДиректорию (двойная": "CreateDirectory (double", -"ОжидатьЗавершенияОбработки": "WaitForProcessingCompletion", -"Значение параметра запроса": "Request parameter value", -"Проверка_ТелеграмПереслать": "Check_TelegramForward", -"Получить сообщение системы": "Get system message", -"Чтение данных тела запроса": "Reading request body data", -"ЗагрузитьФайлВКаталог (хук": "UploadFileToFolder (wh", -"Очищает значение в ячейках": "Clears the value in cells", -"Bitrix24_ПолучитьХранилище": "Bitrix24_GetStorage", -"Получить шифрование бакета": "Get bucket encryption", -"%F0%9F%94%A5 *Новый релиз\\": "%F0%9F%94%A5 *New release\\", -"Код КЛАДР. Устаревшее поле": "CLADR code. Deprecated field", -"Телеграм_ОтправитьКартинку": "TelegramAPI_SendImage", -"ПодключитьРасширение (путь": "ConnectExtension (path", -"СлужебныеПроцедурыИфункции": "ServiceProceduresAndFunctions", -"Если вам необходим чат-бот": "If you need a chatbot", -"ИсключитьПользователейЧата": "RemoveChatMembers", -"Запись данных тела запроса": "Request body data writing", -"ОформитьОшибочныйОтветHTTP": "FormatHTTPErrorResponse", -"ДропБокс_СоздатьУдалитьТег": "DropboxAPI_CreateDeleteTag", -"ДобавитьКомментарийНовости": "AddPostComment", -"Добавить комментарий задачи": "Add comment to task", -"Проверка_БитриксСписокЗадач": "Check_BitrixTasksList", -"Создать товар со свойствами": "Create product with properties", -"ЗащищенноеСоединениеOpenSSL": "OpenSSLSecureConnection", -"URL для перехода в браузере": "URL for browser transition", -"Убрать задачу из избранного": "Remove task from favorites list", -"Telegram_ЗакрепитьСообщение": "Telegram_PinMessage", -"Загрузить по URL и получить": "Upload by URL and get", -"ПолучитьИнформациюОКаталоге": "GetFolderInformation", -"Не удалось заменить секреты": "Failed to replace the secrets!", -"Получить пользователей базы": "Get database users", -"Получить количество товаров": "Get products stocks", -"ПолучитьИнформациюОСтранице": "GetPageInfo", -"СформироватьТекстКоличества": "FormCountText", -"СформироватьНаборПараметров": "FormParameterSet", -"ЗакрепитьОткрепитьСообщение": "PinUnpinMessage", -"Получить комментарий задачи": "Get task comment", -"СоздатьИзменитьПользователя": "CreateOrUpdateUser", -"ОткрытьСоединение (закрытие": "CreateConnection (closing", -"ОписаниеЗначенияПоУмолчанию": "DefaultValueDescription", -"УправлениеЭлементомЧеклиста": "ChecklistElementManagement", -"ВернутьСтандартныеПараметры": "ReturnStandardParameters", -"УдалитьФайл (несуществующий": "DeleteFile (nonexistent", -"Получение финального ответа": "Getting the final response", -"ОтклонитьЗаявкуНаВступление": "DisapprovePending", -"цена товара с учётом скидок": "product price with discounts", -"ПереслатьГолосовоеСообщение": "ResendVoice", -"Слак_ПолучитьСписокОбластей": "Slack_GetRegionList", -"`УстановитьАлгоритмOAuthV1`": "`SetOAuthV1Algorithm`", -"Путь к удаляемой директории": "Path to directory to delete", -"Временная отметка сообщения": "Message timestamp", -"Изменить наименование книги": "Change spreadsheet name", -"ОбновлятьТокенКаждыеДваЧаса": "UpdateTokenEveryTwoHours", -"ПереименоватьОбъект (список": "RenameObject (list", -"УдалитьБазуДанных (открытие": "DeleteDatabase (open", -"Тестовый запрос для сервера": "Test request for server", -"CommonModule.OPI_ЗапросыSSH": "CommonModule.OPI_SSHRequests", -"OPI получение данных тестов": "OPI test data retrieval", -"ПолучитьДанныеФайла (размер": "GetFileData (size", -"Отправить/Удалить сообщение": "Send/Delete message", -"Получить пользователей чата": "Get chat members", -"СоздатьБазуДанных (удаление": "CreateDatabase (deleting", -"НоушнАпи_СоздатьУдалитьБлок": "NotionAPI_CreateDeleteBlock", -"ПолучитьХранилищеПриложения": "GetAppStorage", -"ПреобразоватьЗначениеПоТипу": "ConvertValueByType", -"НайтиЗначенияХарактеристики": "SearchAttributeValue", -"Bitrix24_ДелегироватьЗадачу": "Bitrix24_DelegateTask", -"ВК_СохранитьУдалитьКартинку": "VKAPI_SaveDeleteImage", -"ЗаписатьПараметрыМультипарт": "WriteMultipartParameters", -"Получить список результатов": "Get results list", -"URL для кнопки под историей": "URL for button under the story", -"Создать/Удалить тему форума": "Create/Delete forum topic", -"Получить информацию о файле": "Get information about file", -"Сохранить картинку в альбом": "Save image to album", -"ИзменитьМетаданныеКалендаря": "EditCalendarMetadata", -"ОсновноеУправляющееДействие": "PrimaryControlAction", -"!OInt ВыполнитьСборкуМусора": "!OInt RunGarbageCollection", -"Описание структур см. здесь": "Structure description at", -"Разархивирует выбранный чат": "Unarchives the selected chat", -"Bitrix24_СкопироватьКаталог": "Bitrix24_MakeFolderCopy", -"ПолучитьСодержимоеХранилища": "GetStorageObjects", -"Получить структуру счетчика": "Get counter structure", -"ДобавитьПараметрФлагКоманды": "AddCommandFlagParameter", -"ID чата источника сообщения": "Message source chat ID", -"Отправляем только \"data for": "Sending only \"data for", -"ОтветитьНаСобытиеКлавиатуры": "AnswerButtonEvent", -"ОтправитьТекстовоеСообщение": "SendTextMessage", -"Bitrix24_СоздатьКомментарий": "Bitrix24_CreateComment", -"ОбработатьСекретыPostgreSQL": "ProcessSecretsPostgreSQL", -"ПолучитьПроектыПользователя": "GetUserProjects", -"ТелеграмКлавиатураСообщения": "TelegramMessageKeyboard", -"Обновить изображения товара": "Update product images", -"Путь к файлу для скачивания": "Path to the file for downloading", -"CommonModule.OPI_Компоненты": "CommonModule.OPI_AddIns", -"ПолучитьСообщениеАссистента": "GetAssistantMessage", -"ОбработатьПараметрКоллекцию": "ProcessCollectionParameter", -"ПолучитьСписокВерсийОбъекта": "GetObjectVersionList", -"ДобавитьПолучателейКНовости": "AddPostRecipients", -"Код со страницы авторизации": "Code from the authorization page", -"Ключ > ID, Значение > Emoji": "Key > ID, Value > Emoji", -"ВК_ПолучитьКатегорииТоваров": "VKAPI_GetProductCategories", -"Получить список ассистентов": "Get assistants list", -"Код населенного пункта СДЭК": "CDEC locality code", -"Данные запроса для отправки": "Request data for sending", -"Удалить календарь из списка": "Remove calendar from list", -"Получает квитанцию к заказу": "Gets a receipt for the order", -"Отправляем ответ от сервера": "Send response from server", -"ДобавитьПользователейКПапке": "AddUsersToFolder", -"Удаляет сообщение в диалоге": "Deletes a dialog message", -"ПолучитьАдминистраторовЧата": "GetChatAdmins", -"Инструменты (служебный, ОПИ": "Tools (Utility, OpenIntegrations", -"color=Зеленый) Библиотека -": "color=Green) Library -", -"ДропБокс_ЗагрузитьФайлПоURL": "DropboxAPI_UploadFileByURL", -"Получить настройки инстанса": "Get instance settings", -"ВыгнатьПользователяИзКанала": "KickUserFromChannel", -"УдалитьДиректориюРекурсивно": "DeleteDirectoryRecursively", -"ПолучитьСписокПользователей": "GetUserList", -"СоздатьТвитВидео (одиночная": "CreateVideoTweet (single", -"ПолучитьСписокСообщенийЧата": "GetChatMessagesList", -"Удаляет подразделение по ID": "Delets department by ID", -"УправлениеПубличнымДоступом": "ManagePublicAccess", -"Конец периода в формате ISO": "Period end in ISO format", -"ОтправитьГолосовоеСообщение": "SendVoice", -"ИспользоватьАдаптивныйВывод": "UseAdaptiveOutput", -"Истина > BOM будет добавлен": "True > BOM will be added", -"Создать каталог в хранилище": "Create folder at the storage", -"Получает состояние инстанса": "Gets instance status", -"ID чата приемника сообщения": "Message receiver chat ID", -"Добавить участника в группу": "Add group member", -"УдалитьЗаявкуНаВызовКурьера": "DeleteCourierInvitation", -"Telegram_ПолучитьОбновления": "Telegram_GetUpdates", -"Заменить описание сообщения": "Replace message caption", -"ID стены расположения поста": "ID of the wall where the post is located", -"ПолучитьНастройкиСоединения": "GetConnectionSettings", -"СформироватьМассивИменЯчеек": "FormCellNameArray", -"Описание в документации API": "Description in the API documentation", -"УдалитьУведомлениеИзОчереди": "DeleteNotificationFromQueue", -"СформироватьОписаниеТаблицы": "GenerateTableDescription", -"Bitrix24_ПереместитьКаталог": "Bitrix24_MoveFolder", -"Получить информацию о диске": "Get disk information", -"ПереслатьСообщение (простое": "ForwardMessage (simple", -"ID альбома, если необходимо": "Album ID, if necessary", -"Отменить публикацию объекта": "Unpublish object", -"ЗагрузитьФайл (размер файла": "UploadFile (file size", -"Получить настройки кабинета": "Get business settings", -"Получает набор тегов бакета": "Gets the bucket tag set", -"Установить картинку профиля": "Set profile picture", -"Удаляет существующую модель": "Deletes an existing model", -"ДобавитьЗаписи (ошибка json": "AddRecords (json error", -"СоздатьТвитГифки (одиночная": "CreateGifTweet (single", -"ПолучитьСтруктуруЦеныТовара": "GetProductPriceStructure", -"ГарантироватьТаблицу (новая": "EnsureTable (new)", -"RPortal_УправлениеПроектами": "RPortal_ProjectManagement", -"важность: high, normal, low": "importance: high, normal, low", -"ДополнитьКомплексныйАтрибут": "CompleteComplexAttribute", -"ПолучитьМетаданныеКалендаря": "GetCalendarMetadata", -"УстановитьНастройкиИнстанса": "SetInstanceSettings", -"ПолучитьПараметрыСоединения": "GetConnectionParameters", -"Телеграм_ПолучитьОбновления": "TelegramAPI_GetUpdates", -"ПроверитьДоступКЗадаче (хук": "CheckTaskAccesses (wh", -"Разложить JSON на параметры": "Parse JSON to Parameters", -"Выполняет указанную команду": "Executes the specified command", -"Установить заголовки !NOCLI": "Set headers !NOCLI", -"Проверка_БитриксАвторизация": "Check_BitrixAuth", -"РаботаСВнешнимиКомпонентами": "AddinsManagement", -"Структура настроек инстанса": "Structure of instance settings", -"Создает новый групповой чат": "Creates a new group chat", -"ДобавитьИменованныйПараметр": "AddNamedParam", -"Новое наименование каталога": "New folders name", -"Признак использования HTTPS": "HTTPS usage flag", -"СоздатьСистемноеУведомление": "CreateSystemNotification", -"Изменить комментарий задачи": "Update task comment", -"разрешение на методы Sheets": "Sheets methods permission", -"ПринудительноНеИзолированно": "ForceNonIsolated", -"Создать черновик заявки FBO": "Create FBO draft", -"Телеграм_ПереслатьСообщение": "TelegramAPI_ForwardMessage", -"ПолучитьСписокФайлов (Отбор": "GetFilesList (Filter", -"ВК_СоздатьТоварСоСвойствами": "VKAPI_CreateProductWithProperties", -"Оформить клиентский возврат": "Create customer refund", -"Логин пользователя postgres": "Postgres user login", -"интервал между повторениями": "repetition interval", -"Путь к очищаемой директории": "Path to the directory to be cleaned", -"Обновить количество товаров": "Update products stocks", -"С неявным приведением типов": "With implicit type casting", -"ОбработатьДанныеДляОперации": "ProcessDataForOperation", -"ДобавитьПользователейКФайлу": "AddUsersToFile", -"НачатьВыполнениеЗадачи (хук": "StartTask (wh", -"Ноушн_ПолучитьПользователей": "Notion_GetUsers", -"ПолучитьСписокХранилищ (хук": "GetStoragesList (wh", -"ОжидатьЗавершенияВыполнения": "WaitForExecutionCompletion", -"Dropbox_ПолучитьСписокТегов": "Dropbox_GetTagList", -"ПроверитьКорректностьЗаписи": "CheckRecordCorrectness", -"Массив соответствий событий": "Array of event maps", -"Задача изменена, расходимся": "The task has been changed, let's split up", -"Удалить трудозатраты задачи": "Delete task time accounting", -"0 Или СтрНайти(нРег(Вариант": "0 Or StrFind(Lower(Option", -"Проверка_БитриксКомментарий": "Check_BitrixComment", -"СформироватьТекстСортировки": "FormSortingText", -"ОтозватьПраваАдминистратора": "RevokeAdminRights", -"Б24_УправленеПользователями": "B24_UsersManagement", -"Путь к публикуемому объекту": "Path to the object to be published", -"ЗаменитьКлавиатуруСообщения": "ReplaceMessageKeyboard", -"НастройкиСовместногоДоступа": "SharedAccessSettings", -"ID уведомления для удаления": "Notification ID", -"ПолучитьСтатусЗагрузкиПоURL": "GetUploadStatusByURL", -"Методы интеграции с VK (ОПИ": "VK integration methods (OpenIntegrations", -"ПодключитьсяИПолучитьДанные": "ConnectAndReceiveData", -"Создать/Удалить комментарий": "Create/Delete Comment", -"Проверка вставленных данных": "Check inserted data", -"УдалитьБазуДанных (закрытие": "DeleteDatabase (close", -"ИсключитьПользователяИзЧата": "DeleteUserFromChat", +"Токен авторизации (Api-Key": "Authorization token (Api-Key", +"ГринИсключениеПользователя": "GreenExcludeMember", +"СоздатьРекламноеОбъявление": "CreateAd", +"Компоненты (служебный, ОПИ": "AddIns (Utility, OpenIntegrations", +"Слак_ПолучитьСписокКаналов": "Slack_GetChannelList", +"Закрыть подключение !NOCLI": "Close connection !NOCLI", +"Этот календарь был изменен": "This calendar has been changed", +"Команда FTP: `RNFR + RNTO`": "FTP Command: `RNFR + RNTO`", +"ИзменитьТрудозатратыЗадачи": "UpdateTaskTimeAccounting", +"Bitrix24_КопироватьКаталог": "Bitrix24_CopyFolder", +"Ошибка удаления файла базы": "Database file deletion error", +"другие увед. будут удалены": "another notif. will be deleted", +"СоздатьБакет (удаление, DB": "CreateBucket (deleting, DB", +"Использовать \"../../yandex": "Use \"../../yandex", +"Описание тестового события": "TestEventDescription", +"Структура Из КлючИЗначение": "Structure Of KeyAndValue", +"ПолучитьТипыКолонокТаблицы": "GetTableColumnTypes", +"Получить ответ в контексте": "Get context response", +"ЯДиск_ПолучитьСписокФайлов": "YDisk_GetFileList", +"СоздатьБакет (Удаление, DB": "CreateBucket (Deleting, DB", +"Дата установки трудозатрат": "Date the record was set", +"ВывестиСообщениеИсключения": "DisplayExceptionMessage", +"Получить информацию о боте": "Get bot information", +"Отключает уведомлений чата": "Disable chat notifications", +"ПолучитьИнформациюОбУценке": "GetDiscountInformation", +"ПолучитьРезультатОбработки": "GetProcessingResult", +"ГК_СоздатьУдалитьКалендарь": "GC_CreateDeleteCalendar", +"Проверка_ТелеграмСообщение": "Check_TelegramMessage", +"ПолучитьТрудозатратыЗадачи": "GetTaskTimeAccounting", +"Проверка_ВККартинкаАльбома": "Check_VKAlbumPicture", +"ВыполнитьЗапросSQL (Insert": "ExecuteSQLQuery (Insert", +"Документация Neocities API": "Neocities API docs", +"Неподдерживаемое сообщение": "Unsupported message", +"ПолучитьДоступныеНастройки": "GetAvailableSettings", +"ИзменитьПодразделение (хук": "UpdateDepartment (wh", +"Получить информацию о базе": "Get database info", +"ЗакрытьПодключение (запрос": "CloseConnection (query", +"Локальный каталог источник": "Local source catalog", +"ДобавитьСтадиюКанбана (хук": "AddKanbanStage (wh", +"ДобавитьТрудозатратыЗадачи": "AddTaskTimeAccounting", +"ПолучитьСтадииКанбана (хук": "GetKanbanStages (wh", +"ПолучитьСтатусПользователя": "GetUserStatus", +"ПолучитьТокеныПользователя": "GetUserTokens", +"Фильтры для отбора товаров": "Product filters", +"ЗакрытьТемуФорума (главная": "CloseForumTopic (main", +"Неопределено, Произвольный": "Undefined, Arbitrary", +"Добавляет записи в таблицу": "Adds new rows to the table", +"Создать подключение !NOCLI": "Create connection !NOCLI", +"ЗапросТипУстановленВручную": "RequestTypeSetManualy", +"Modules/OPI_ЗапросыHTTP.os": "Modules/OPI_HTTPRequests.os", +"ПолучитьВходящиеСоединения": "GetIncomingConnections", +"Признак использования gzip": "Flag for gzip using", +"Создание таблицы для теста": "Create tables for test", +"Удаляет элемент лога по ID": "Deletes a log item by ID", +"ОткрытьКлиентскийПотокGRPC": "OpenClientGRPCStream", +"ПреобразоватьПользователей": "ConvertUsers", +"СформироватьЗначенияВыбора": "FormSelectionValues", +"Наименование новой таблицы": "New table name", +"Это сообщение было удалено": "This message was deleted", +"УстановитьШифрованиеБакета": "PutBucketEncryption", +"ЗагрузитьЧастьОбъекта (ЗЗЧ": "UploadObjectPart (FPU", +"ГТ_ЗаполнитьОчиститьЯчейки": "GT_FillClearCells", +"ВывестиСправкуПоПараметрам": "DisplayParameterHelp", +"ДобавитьПользователяКФайлу": "AddUserToFile", +"ИзменитьСтатусПользователя": "ChangeUserStatus", +"Получить информацию о чате": "Get information about the chat room", +"Не удалось заменить origin": "Cant replace origin", +"ИспользоватьПоляТелаВOAuth": "UseBodyFiledsAtOAuth", +"ОбработатьТабуляциюСправки": "HandleHelpTabulation", +"Получить очередь сообщений": "Get message queue", +"ПолучитьСписокКомментариев": "GetCommentList", +"Мне больше нравится желтый": "I like yellow more", +"Выгрузить модель из памяти": "Unload model from memory", +"РаботаССобытиямиКалендарей": "CalendarEventsManagement", +"ВыполнитьЗапросSQL (Create": "ExecuteSQLQuery (Create", +"Исключить участника группы": "Exclude group member", +"Telegram_СоздатьТемуФорума": "Telegram_CreateForumTopic", +"Получить список календарей": "Get list of calendars", +"СтруктураАдресаОтправления": "SendingAddressStructure", +"СлужебныеПроцедурыИФункции": "Private", +"ПолучитьСтатусУчетаВремени": "GetTimekeepingStatus", +"Возврат лога в виде строки": "Return the log as a string", +"Ожидать подключения !NOCLI": "Await connections !NOCLI", +"Ноушн_СоздатьСтраницуВБазу": "Notion_CreatePageInDatabase", +"ГарантироватьТелоКоллекцию": "GuaranteeBodyCollection", +"Получает список баз данных": "Gets the list of databases", +"Структура заполнения опции": "Data structure for option", +"Завершить получение !NOCLI": "Finish receiving !NOCLI", +"Телеграм_ОтправитьДокумент": "TelegramAPI_SendDocument", +"ПолучитьВнешнююСсылкуФайла": "GetFileExternalLink", +"Получить настройки запроса": "Get request settings", +"ПолучитьДанныеОСайте (Сайт": "GetSiteData (Site", +"УстановитьПараметрыЗапроса": "SetQueryParams", +"ЗаполнитьПоляЗапросаТовара": "FillProductRequestFields", +"ПолучитьИнформациюОТаблице": "GetTableInformation", +"Установить картинку группы": "Set group picture", +"ИмяФайла, Вид + Расширение": "FileName, View + Extension", +"1 (отправлено сообщений %2": "1 (sent messages %2", +"ВывестиСлужебнуюИнформацию": "LogServiceInformation", +"Создать рекламную кампанию": "Create advertising campaign", +"Получает список соединений": "Gets the list of connections", +"VK_СоздатьТоварСоСвойством": "VK_CreateProductWithProp", +"Создать/Архивировать канал": "Create/Archive channel", +"Имя команды для выполнения": "Command name to execute", +"Разрешен наложенный платеж": "Cash on delivery allowed", +"URL к видео для добавления": "URL of the video", +"Название компании контакта": "Name of the contact company", +"Отключить уведомления чата": "Disable chat notifications", +"Управление подразделениями": "Departments management", +"запись содержимого страниц": "page content recording", +"Получить структуру запуска": "Get launch structure", +"ЗагрузитьЧастьОбъекта (ИЗЧ": "UploadObjectPart (IPU", +"ОшибкаПараметрНеКомпонента": "NotAddinParameterError", +"МинимальныйРазмерДляПотока": "MinimumStreamSize", +"СоздатьПост (одна картинка": "CreatePost (one picture", +"ПолучитьСтруктуруКалендаря": "GetCalendarStructure", +"СледующийОбязательныйТокен": "NextRequiredToken", +"ЯДиск_ЗагрузитьУдалитьФайл": "YDisk_UploadDeleteFile", +"Content ID, если необходим": "Content ID, if required", +"Таймаут выполнения запроса": "Request execution timeout", +"УстановитьОбъектСоединения": "SetConnectionObject", +"ПроверитьДоступностьБакета": "HeadBucket", +"Получить событие календаря": "Get calendar event", +"Контекст = Новый Структура": "Context = New Structure", +"Наименование подразделения": "Department name", +"ТаблицаСправкаПоПараметрам": "ParamsHelpTable", +"Bitrix24_ВозобновитьЗадачу": "Bitrix24_RenewTask", +"уровень доступа к счетчику": "counter access level", +"Пассивный режим соединения": "Passive connection mode", +"ПолучитьИнформациюОТоварах": "GetProductsInformation", +"Запрос, приходящий на http": "Request coming to http", +"ТекущееЗначениеПоУмолчанию": "CurrentDefaultValue", +"Использовать \"../../google": "Use \"../../google", +"ID оригинального сообщения": "Original message ID", +"1: Типы коллекций не равны": "1: Collections types are not equal", +"ОтправитьМедиагруппу (доки": "SendMediaGroup (docs", +"ID сообщения для изменения": "ID of the message to be edited", +"ПолучитьСтруктуруЛида (хук": "GetLeadStructure (wh", +"ОдобритьЗаявкуНаВступление": "ApprovePending", +"ОтправитьСообщение (диалог": "SendMessage (dialog", +"Ожидать подключение !NOCLI": "Awaiting connection !NOCLI", +"ПолучитьЧеклистЗадачи (хук": "GetTasksChecklist (wh", +"ПреобразоватьВариантВыбора": "ConvertSelectionOption", +"ОткрытьТемуФорума (главная": "OpenForumTopic (main", +"ИзменитьЗаголовокЧата (хук": "ChangeChatTitle (wh", +"Загрузить файл в хранилище": "Upload file to a storage", +"разрешение на методы Drive": "Drive methods permission", +"ГринДобавлениеПользователя": "GreenAddMember", +"значение продолжительности": "duration value", +"Текст сообщения под файлом": "Message text below the file", "Оформить подписку на Boosty": "Subscribe on Boosty", -"СоздатьТаблицу (ошибка типа": "CreateTable (type error", +"ИсключитьПользователяИзЧата": "DeleteUserFromChat", +"ЗаменитьКлавиатуруСообщения": "ReplaceMessageKeyboard", +"УдалитьБазуДанных (закрытие": "DeleteDatabase (close", "Проверка_ДропБоксМетаданные": "Check_DropboxMetadata", +"СоздатьТаблицу (ошибка типа": "CreateTable (type error", +"Проверка вставленных данных": "Check inserted data", +"НастройкиСовместногоДоступа": "SharedAccessSettings", +"ПодключитьсяИПолучитьДанные": "ConnectAndReceiveData", +"Методы интеграции с VK (ОПИ": "VK integration methods (OpenIntegrations", +"ПолучитьСтатусЗагрузкиПоURL": "GetUploadStatusByURL", +"ID уведомления для удаления": "Notification ID", "СоздатьБазуДанных (открытие": "CreateDatabase (open", +"Создать/Удалить комментарий": "Create/Delete Comment", "Проверка_ВКСтатистикаПостов": "Check_VKPostsStatistic", -"Страница выборки результата": "Result page", -"ID задачи добавления товара": "Add product task ID", -"Bitrix24_УдалитьКомментарий": "Bitrix24_DeleteComment", -"Тип отправляемого сообщения": "TypeOfSentMessage", -"СоздатьЗаявкуНаВызовКурьера": "CreateCourierInvitation", -"дата публикации комментария": "comment publication date", -"НастройкиИАдминистрирование": "SettingsAndAdministartion", -"Получить план задач на день": "Get users daily tasks plan", -"Новый импортированный товар": "New imported product", -"ЗаписатьБуферДвоичныхДанных": "WriteBinaryDataBuffer", -"Методы работы с Notion (ОПИ": "Notion methods (OpenIntegrations", -"Начать наблюдать за задачей": "Start watching a task", -"СоздатьДиректорию (удаление": "CreateDirectory (delete", "ОтправитьЭфемерноеСообщение": "SendEphemeralMessage", +"ID задачи добавления товара": "Add product task ID", +"Путь к публикуемому объекту": "Path to the object to be published", "ПолучитьОтложенныеСообщения": "GetScheduledMessages", "!OInt МБайт = КБайт * КБайт": "!OInt MB = KB * KB", +"СоздатьДиректорию (удаление": "CreateDirectory (delete", +"Начать наблюдать за задачей": "Start watching a task", +"Методы работы с Notion (ОПИ": "Notion methods (OpenIntegrations", +"Страница выборки результата": "Result page", +"ЗаписатьБуферДвоичныхДанных": "WriteBinaryDataBuffer", +"Получить план задач на день": "Get users daily tasks plan", +"НастройкиИАдминистрирование": "SettingsAndAdministartion", +"дата публикации комментария": "comment publication date", +"СоздатьЗаявкуНаВызовКурьера": "CreateCourierInvitation", +"Тип отправляемого сообщения": "TypeOfSentMessage", +"Bitrix24_УдалитьКомментарий": "Bitrix24_DeleteComment", +"Новый импортированный товар": "New imported product", +"Б24_УправленеПользователями": "B24_UsersManagement", +"Создает новый групповой чат": "Creates a new group chat", +"СформироватьТекстСортировки": "FormSortingText", +"ВК_СоздатьТоварСоСвойствами": "VKAPI_CreateProductWithProperties", +"ПолучитьСписокФайлов (Отбор": "GetFilesList (Filter", +"Телеграм_ПереслатьСообщение": "TelegramAPI_ForwardMessage", +"Создать черновик заявки FBO": "Create FBO draft", +"ПринудительноНеИзолированно": "ForceNonIsolated", +"разрешение на методы Sheets": "Sheets methods permission", +"Оформить клиентский возврат": "Create customer refund", +"Изменить комментарий задачи": "Update task comment", +"Признак использования HTTPS": "HTTPS usage flag", +"Новое наименование каталога": "New folders name", +"ДобавитьИменованныйПараметр": "AddNamedParam", +"Структура настроек инстанса": "Structure of instance settings", +"РаботаСВнешнимиКомпонентами": "AddinsManagement", "Массив соответствий товаров": "Array of product maps", +"СоздатьСистемноеУведомление": "CreateSystemNotification", +"ОтозватьПраваАдминистратора": "RevokeAdminRights", +"Логин пользователя postgres": "Postgres user login", +"Путь к очищаемой директории": "Path to the directory to be cleaned", +"Проверка_БитриксКомментарий": "Check_BitrixComment", +"0 Или СтрНайти(нРег(Вариант": "0 Or StrFind(Lower(Option", +"Удалить трудозатраты задачи": "Delete task time accounting", +"Задача изменена, расходимся": "The task has been changed, let's split up", +"Массив соответствий событий": "Array of event maps", +"ПроверитьКорректностьЗаписи": "CheckRecordCorrectness", +"интервал между повторениями": "repetition interval", +"ОжидатьЗавершенияВыполнения": "WaitForExecutionCompletion", +"Ноушн_ПолучитьПользователей": "Notion_GetUsers", +"НачатьВыполнениеЗадачи (хук": "StartTask (wh", +"ДобавитьПользователейКФайлу": "AddUsersToFile", +"ОбработатьДанныеДляОперации": "ProcessDataForOperation", +"С неявным приведением типов": "With implicit type casting", +"Обновить количество товаров": "Update products stocks", +"ПолучитьСписокХранилищ (хук": "GetStoragesList (wh", "электронная почта заполнена": "email address is filled in", -"Получить состояние инстанса": "Get instance status", -"ПолучитьОбъект (большой, ДД": "GetObject (big, BD", -"Получить ссылку авторизации": "Get authorization link", -"ПолучитьОнлайнПользователей": "GetOnlineUsers", -"JWT: Неподдерживаемый метод": "JWT: Unsupported method", -"Массив каналов для отправки": "Array of channels for sending", -"Использовать \"../../../core": "Use \"../../../core", -"Очистить основной календарь": "Clear primary calendar", -"ID пользователя исполнителя": "ID of responsible user", -"ГК_ПолучитьСписокКалендарей": "GC_GetCalendarList", -"ВК_СоздатьРекламнуюКампанию": "VKAPI_CreateAdCampaign", -"Создает новое подразделение": "Creates a new department", -"Поместить каталог в корзину": "Mark folder as deleted", -"CommonModule.OPI_ЗапросыSQL": "CommonModule.OPI_SQLQueries", -"Получить события календарей": "Get calendar events", -"Обработать клиентский поток": "Process client stream", -"СоздатьЗаголовокАвторизации": "CreateAuthorizationHeader", -"ПолучитьСсылкуДляСкачивания": "GetDownloadLink", -"VK_СоздатьРекламнуюКампанию": "VK_CreateAdvertisingCampaign", -"Добавить задачу в избранное": "Add task to favorites list", -"Получает информацию о файле": "Gets information about the file", -"Установить Form тело !NOCLI": "Set Form body !NOCLI", -"ВК_ПолучитьСтатистикуПостов": "VKAPI_GetPostStatistics", -"ПолучитьИнформациюОКонтакте": "GetContactInformation", -"Кодировка получаемых данных": "Encoding of received data", -"Помечает новость как важную": "Mark post as important", -"Получить настройки магазина": "Get campaign settings", -"идентификатор соисполнителя": "co-executor identifier", -"Включает уведомления в чате": "Enable chat notifications", -"ДобавитьКолонкуТаблицы (TLS": "AddTableColumn (TLS", -"ОзонАПИ_ЦеныИОстаткиТоваров": "OzonAPI_PricesAndStocks", -"ЗакрытьПотокИПолучитьДанные": "CloseStreamReceiveData", -"Telegram_ИзменитьТемуФорума": "Telegram_EditForumTopic", -"ДобавитьЗаписи (ошибка поля": "AddRecords (field error", -"В канал, из двоичных данных": "To channel, from binary data", -"Компонента TCP-клиента (ОПИ": "TCP Client Component (OpenIntegrations", -"Создает нового пользователя": "Creates a new user", -"ОтправитьДокумент (с именем": "SendDocument (with name", -"Имя поля БД c обычным типом": "Name of field with regular type", -"Bitrix24_ВключитьЗвукЗадачи": "Bitrix24_UnmuteTask", -"Telegram_ПереслатьСообщение": "Telegram_ForwardMessage", -"Удаляет набор тегов объекта": "Deletes an objects tag set", -"ПолучитьИнформациюОбОбъекте": "GetObjectInformation", -"VK_ПолучитьСтатистикуПостов": "VK_GetPostStatistics", -"ПолучитьСсылкуЗагрузкиФайла": "GetFileUploadLink", -"VK_СохранитьКартинкуВАльбом": "VK_SaveImageToAlbum", -"СформироватьТестыАссертсCLI": "FormAssertsTestsCLI", -"Эта база была создана из 1С": "This base is from 1C", -"Удалить картинку из альбома": "Deletes an image from the album", -"ПолучитьСписокВнешнихФайлов": "GetExternalFileList", -"Отправить/Удалить эфемерное": "Send/Delete ephemeral", -"Забытый в прошлый раз текст": "The text I forgot last time", -"Получить структуру элемента": "Get item structure", -"Добавить календарь в список": "Add calendar to list", -"Обсуждаем: какой цвет лучше": "Discussing: Which color is better?", -"ЗакрытьСоединение (открытие": "CloseConnection (creation", -"Удаляет документы коллекции": "Deletes collection documents", -"ID целевой стены или группы": "ID of the target wall or group", -"ВыполнитьЗапрос (выполнение": "ExecuteRequest (execution", -"Получает QR-код авторизации": "Receives authorization QR code", -"Telegram_ОткрепитьСообщение": "Telegram_UnpinMessage", -"ОчиститьКоллекциюРекурсивно": "ClearCollectionRecursively", -"СохранитьФайл (размер файла": "SaveFile (file size", -"Структура JSON данных ячеек": "The structure of the JSON cells data", -"Установить JSON тело !NOCLI": "Set JSON body !NOCLI", -"Создает историю из картинки": "Creates a story from an image", "ID участника для добавления": "Member ID for addition", -"Твиттер_СоздатьТвитСОпросом": "Twitter_CreateTweetWithPoll", -"ПодключитьВнешнююКомпоненту": "AttachAddIn", +"ПолучитьОбъект (большой, ДД": "GetObject (big, BD", +"Забытый в прошлый раз текст": "The text I forgot last time", +"Отправить/Удалить эфемерное": "Send/Delete ephemeral", +"ПолучитьСписокВнешнихФайлов": "GetExternalFileList", +"Удалить картинку из альбома": "Deletes an image from the album", +"Эта база была создана из 1С": "This base is from 1C", +"СформироватьТестыАссертсCLI": "FormAssertsTestsCLI", +"Получить структуру элемента": "Get item structure", +"VK_СохранитьКартинкуВАльбом": "VK_SaveImageToAlbum", +"VK_ПолучитьСтатистикуПостов": "VK_GetPostStatistics", +"ПолучитьИнформациюОбОбъекте": "GetObjectInformation", +"Удаляет набор тегов объекта": "Deletes an objects tag set", +"Telegram_ПереслатьСообщение": "Telegram_ForwardMessage", +"Bitrix24_ВключитьЗвукЗадачи": "Bitrix24_UnmuteTask", +"Имя поля БД c обычным типом": "Name of field with regular type", +"ПолучитьСсылкуЗагрузкиФайла": "GetFileUploadLink", +"ОтправитьДокумент (с именем": "SendDocument (with name", +"Добавить календарь в список": "Add calendar to list", +"ЗакрытьСоединение (открытие": "CloseConnection (creation", +"Проверка_БитриксАвторизация": "Check_BitrixAuth", "ПодключитьКомпонентуВРежиме": "AttachAddInWithMode", -"ВернутьЗапрос (принудительно": "ReturnRequest (forced", -"Bitrix24_ДобавитьКомментарий": "Bitrix24_CreateComment", -"Изменяет существующую задачу": "Update a task", -"Изменить трудозатраты задачи": "Update task time accounting", -"ОтветитьНаЗаявкуНаВступление": "ResolvePending", -"ПолучитьНастройкиЛогирования": "GetLoggingSettings", -"Методы работы с Twitter (ОПИ": "Twitter methods (OpenIntegrations", -"УстановитьСтатусПользователя": "SetUserStatus", -"ЗагрузитьФайл (множественный": "UploadFile (multiple", -"ПолучитьСтруктуруСделки (хук": "GetDealStructure (wh", -"C:\\GDrive\\Мой диск\\data.json": "C:\\GDrive\\My Drive\\data.json", -"НормализоватьНаборПараметров": "NormaliseParameterSet", -"Добавляет новый внешний файл": "Adds a new external file", -"Получить список внеш. файлов": "Get external file list", -"Пароль пользователя postgres": "Postgres user password", -"ПереименоватьОбъект (обратно": "RenameObject (back", -"Таймаут ожидания подключений": "Connection timeout", -"Эти токены обновлять не надо": "These tokens do not need to be updated", -"Получает информацию о методе": "Get method information", -"СледующийПозиционныйПараметр": "NextPositionParam", -"ПолучитьТекущегоПользователя": "GetCurrentUser", -"НазначитьПраваАдминистратора": "SetAdminRights", -"Создать рекламное объявление": "Create advertising post", -"Адрес и порт для подключения": "Address and port", -"JSON файлов или путь к .json": "File JSON or path to .json", -"МассивОшибок,СчетчикУспешных": "ErrorsArray,SuccessCount", -"Добавить параметр URL !NOCLI": "Add URL parameter !NOCLI", -"БитриксНастройкиУчетаВремени": "BitrixTimekeepingSettings", -"Ожидается значение параметра": "Expected parameter value", -"Получить статус пользователя": "Get user status", -"показывать номер недель: Y,N": "show week number: Y,N", -"ПолучитьНаборыЛокальныхПутей": "GetLocalPathsSets", -"Идентификатор/артикул товара": "Product ID/article", -"Параметры в оригинальном URL": "Parameters in the original URL", -"Получить черновик заявки FBO": "Get FBO draft", -"HEX цвет кнопок с # в начале": "HEX color of buttons with # at the beginning", -"Получить список комментариев": "Get list of comments", -"Получить информацию о группе": "Get group information", -"ПРЕОБРАЗОВАТЬBASE64ВДВОИЧНЫЕ": "CONVERTBASE64TOBINARY", -"последний IP-адрес диапазона": "last IP address of the range", -"Mime тип записываемых данных": "MIME type of data", -"Один или массив UUID заказов": "One or an array of order UUIDs", -"Bitrix24_ОтключитьЗвукЗадачи": "Bitrix24_MuteTask", -"ОткрытьСоединение (TLS игнор": "CreateConnection (TLS ignore", -"Добавить видеообложку товара": "Add product video cover", -"Bitrix24_ВосстановитьКаталог": "Bitrix24_RestoreFolder", -"УдалитьСообщение (отложенное": "DeleteMessage (scheduled", -"УдалитьТегиБакета (получение": "DeleteBucketTagging", -"Удалять только у отправителя": "Delete for sender only", -"Установить шифрование бакета": "Put bucket encryption", -"Установить отметку прочтения": "Set read mark", -"Получить структуру сообщения": "Get message structure", -"Тестовый товар (со свойством": "Test product (with prop", -"ПолучитьПланЗадачНаДень (хук": "GetDailyPlan (wh", -"Проверка_ТелеграмМедиагруппа": "Check_TelegramMediaGroup", -"Результат выполнения команды": "Result of command execution", -"ПолучитьСтандартныеПараметры": "GetStandardParameters", -"Другой комментарий к новости": "Another comment", -"страницу создания приложения": "app creation page", -"Проверка_ТелеграмПриглашение": "Check_TelegramInvitation", -"ПрекратитьНаблюдатьЗаЗадачей": "StopWatchingTask", -"Получить ссылку на сообщение": "Get message link", -"Установить тип данных !NOCLI": "Set data type !NOCLI", -"СформироватьТекстTableSchema": "FormTextTableSchema", -"идентификатор рабочей группы": "workgroup identifier", -"Добавляет новый лист в книгу": "Adds a new sheet to the spreadsheet", -"Получить список файлов папки": "Get list of folder files", -"Путь к файлу публичного ключ": "Path to public key file", -"ВключитьУведомленияЧата (хук": "EnableChatNotifications (wh", -"Скрывает главную тему форума": "Hides the main forum topic", -"SHA256 дайджест нужного BLOB": "SHA256 BLOB digest", -"ПолучитьСписокИконокАватаров": "GetAvatarIconList", -"идентификатор ответственного": "responsible person identifier", -"Результат выполнения запроса": "Result of query execution", -"Bitrix24_ДобавитьФайлВЗадачу": "Bitrix24_AttachFileToTopic", -"CommonTemplate.OPI_TCPКлиент": "CommonTemplate.OPI_TCPClient", -"Добавить комментарий новости": "Add comment to post", -"НачальноеПодключениеСкриптов": "InitialScriptLoading", -"CommonModule.OPI_Инструменты": "CommonModule.OPI_Tools", -"ИзменитьИмяГлавнойТемыФорума": "EditMainForumTopicName", -"Восстановить объект к версии": "Restore object to version", -"Стабильный шлюз WhatsApp API": "Stable WhatsApp API Gateway", -"Время ожидания новых событий": "Waiting time for new events", -"URL для отправки уведомлений": "URL for notification sending", -"JSON массива описаний блоков": "JSON array of block descriptions", -"Добавить пользователей в чат": "Add users to chat", -"Получить информацию о канале": "Get channel information", -"идентификатор характеристики": "attribute ID", -"CommonModule.OPI_ЗапросыHTTP": "CommonModule.OPI_HTTPRequests", -"ИспользоватьАутентификациюОС": "UseOSAuthentication", -"Новый текст пункта чек-листа": "New elements text", -"Выполняет команду на сервере": "Executes the command on the server", -"ПолучитьСтруктуруКомментария": "GetCommentStructure", -"HEX основного цвета (#ffffff": "HEX primary color (#ffffff", -"%%1 = ЗагрузитьСценарий(\"\"%1": "%%1 = LoadScript(\"\"%1", -"Загрузить/Удалить внеш. файл": "Upload/Delete external file", -"Некорректное имя команды: %1": "Invalid command name: %1", -"Твиттер_СоздатьТекстовыйТвит": "Twitter_CreateTextTweet", -"ПолучитьСоответствиеКартинки": "GetImageMap", -"шаблон промптов новой модели": "new model prompt template", -"ГВ_ПолучитьСсылкуАвторизации": "GV_GetAuthorizationLink", -"ОчиститьДиректорию (проверка": "ClearDirectory (check", -"ПолучитьЗаголовокАвторизации": "GetAuthorizationHeader", -"ПредыдущееЗначениеЦветаТекта": "PreviousTextColorValue", -"ПодключитьМодульИнструментов": "AttachToolsModule", -"УдалитьПустыеЭлементыМассива": "RemoveEmptyArrayElements", -"Получает описание поля с URL": "Gets the description of a URL field", -"ПолучитьНастройкиЧерезАгента": "GetSettingsViaAgent", -"ЗагрузитьФайлНаСерверЧастями": "UploadFileToServerInParts", -"ДобавлятьГлобальныеПараметры": "AddGlobalParams", -"Показать главную тему форума": "Show main forum topic", -"Получить доступные настройки": "Get available settings", -"Отправить данные GRPC !NOCLI": "Send GRPC data !NOCLI", -"Получить данные пользователя": "Get user data", -"URL картинки иконки страницы": "URL of the page icon image", -"ПолучитьСписокВерсийОбъектов": "ListObjectVersions", -"Структура параметров доступа": "Structure of access parameters", -"ДобавитьПользователейВПроект": "AddUsersToProject", -"Компонента Websocket-клиента": "WebSocket-client Component", -"DataProcessor.OPI_HTTPКлиент": "DataProcessor.OPI_HTTPClient", -"ПолучитьСписокОтправленийFBO": "GetFBOShipmentsList", -"Метод в документации MongoDB": "Method in MongoDB documentation", -"Создает новую таблицу в базе": "Creates a new table in the base", -"ОтправитьСообщение (картинка": "SendMessage (picture", -"Получить информацию о товаре": "Get product information", +"ПодключитьВнешнююКомпоненту": "AttachAddIn", +"Твиттер_СоздатьТвитСОпросом": "Twitter_CreateTweetWithPoll", +"Создает историю из картинки": "Creates a story from an image", +"Установить JSON тело !NOCLI": "Set JSON body !NOCLI", +"Обсуждаем: какой цвет лучше": "Discussing: Which color is better?", +"Структура JSON данных ячеек": "The structure of the JSON cells data", +"ОчиститьКоллекциюРекурсивно": "ClearCollectionRecursively", +"Telegram_ОткрепитьСообщение": "Telegram_UnpinMessage", +"Получает QR-код авторизации": "Receives authorization QR code", +"ВыполнитьЗапрос (выполнение": "ExecuteRequest (execution", +"ID целевой стены или группы": "ID of the target wall or group", +"Удаляет документы коллекции": "Deletes collection documents", +"СохранитьФайл (размер файла": "SaveFile (file size", +"Получить состояние инстанса": "Get instance status", +"Создает нового пользователя": "Creates a new user", +"В канал, из двоичных данных": "To channel, from binary data", +"Обработать клиентский поток": "Process client stream", +"Получить события календарей": "Get calendar events", +"CommonModule.OPI_ЗапросыSQL": "CommonModule.OPI_SQLQueries", +"Поместить каталог в корзину": "Mark folder as deleted", +"Создает новое подразделение": "Creates a new department", +"ВК_СоздатьРекламнуюКампанию": "VKAPI_CreateAdCampaign", +"СоздатьЗаголовокАвторизации": "CreateAuthorizationHeader", +"ГК_ПолучитьСписокКалендарей": "GC_GetCalendarList", +"Очистить основной календарь": "Clear primary calendar", +"Использовать \"../../../core": "Use \"../../../core", +"Массив каналов для отправки": "Array of channels for sending", +"JWT: Неподдерживаемый метод": "JWT: Unsupported method", +"ПолучитьОнлайнПользователей": "GetOnlineUsers", +"Получить ссылку авторизации": "Get authorization link", +"ID пользователя исполнителя": "ID of responsible user", +"Компонента TCP-клиента (ОПИ": "TCP Client Component (OpenIntegrations", +"ПолучитьСсылкуДляСкачивания": "GetDownloadLink", +"Добавить задачу в избранное": "Add task to favorites list", +"ДобавитьЗаписи (ошибка поля": "AddRecords (field error", +"Telegram_ИзменитьТемуФорума": "Telegram_EditForumTopic", +"ЗакрытьПотокИПолучитьДанные": "CloseStreamReceiveData", +"ОзонАПИ_ЦеныИОстаткиТоваров": "OzonAPI_PricesAndStocks", +"ДобавитьКолонкуТаблицы (TLS": "AddTableColumn (TLS", +"Включает уведомления в чате": "Enable chat notifications", +"VK_СоздатьРекламнуюКампанию": "VK_CreateAdvertisingCampaign", +"идентификатор соисполнителя": "co-executor identifier", +"Помечает новость как важную": "Mark post as important", +"Кодировка получаемых данных": "Encoding of received data", +"ПолучитьИнформациюОКонтакте": "GetContactInformation", +"ВК_ПолучитьСтатистикуПостов": "VKAPI_GetPostStatistics", +"Установить Form тело !NOCLI": "Set Form body !NOCLI", +"Получает информацию о файле": "Gets information about the file", +"Получить настройки магазина": "Get campaign settings", +"Установить заголовки !NOCLI": "Set headers !NOCLI", +"Dropbox_ПолучитьСписокТегов": "Dropbox_GetTagList", +"Разложить JSON на параметры": "Parse JSON to Parameters", +"URL для кнопки под историей": "URL for button under the story", +"Получить список результатов": "Get results list", +"ЗаписатьПараметрыМультипарт": "WriteMultipartParameters", +"ВК_СохранитьУдалитьКартинку": "VKAPI_SaveDeleteImage", +"Bitrix24_ДелегироватьЗадачу": "Bitrix24_DelegateTask", +"НайтиЗначенияХарактеристики": "SearchAttributeValue", +"Создать/Удалить тему форума": "Create/Delete forum topic", +"ПреобразоватьЗначениеПоТипу": "ConvertValueByType", +"НоушнАпи_СоздатьУдалитьБлок": "NotionAPI_CreateDeleteBlock", +"СоздатьБазуДанных (удаление": "CreateDatabase (deleting", +"Получить пользователей чата": "Get chat members", +"Отправить/Удалить сообщение": "Send/Delete message", +"ПолучитьДанныеФайла (размер": "GetFileData (size", +"OPI получение данных тестов": "OPI test data retrieval", +"ПолучитьХранилищеПриложения": "GetAppStorage", +"CommonModule.OPI_ЗапросыSSH": "CommonModule.OPI_SSHRequests", +"Получить информацию о файле": "Get information about file", +"ИзменитьМетаданныеКалендаря": "EditCalendarMetadata", +"ОбработатьСекретыPostgreSQL": "ProcessSecretsPostgreSQL", +"Bitrix24_СоздатьКомментарий": "Bitrix24_CreateComment", +"ОтправитьТекстовоеСообщение": "SendTextMessage", +"ОтветитьНаСобытиеКлавиатуры": "AnswerButtonEvent", +"Отправляем только \"data for": "Sending only \"data for", +"ID чата источника сообщения": "Message source chat ID", +"Сохранить картинку в альбом": "Save image to album", +"ДобавитьПараметрФлагКоманды": "AddCommandFlagParameter", +"ПолучитьСодержимоеХранилища": "GetStorageObjects", +"Bitrix24_СкопироватьКаталог": "Bitrix24_MakeFolderCopy", +"Разархивирует выбранный чат": "Unarchives the selected chat", +"Описание структур см. здесь": "Structure description at", +"!OInt ВыполнитьСборкуМусора": "!OInt RunGarbageCollection", +"ОсновноеУправляющееДействие": "PrimaryControlAction", +"Получить структуру счетчика": "Get counter structure", +"ПолучитьПроектыПользователя": "GetUserProjects", +"Тестовый запрос для сервера": "Test request for server", +"ПереименоватьОбъект (список": "RenameObject (list", +"СформироватьНаборПараметров": "FormParameterSet", +"СформироватьТекстКоличества": "FormCountText", +"ПолучитьИнформациюОСтранице": "GetPageInfo", +"Получить количество товаров": "Get products stocks", +"Не удалось заменить секреты": "Failed to replace the secrets!", +"ПолучитьИнформациюОКаталоге": "GetFolderInformation", +"ЗакрепитьОткрепитьСообщение": "PinUnpinMessage", +"Загрузить по URL и получить": "Upload by URL and get", +"Убрать задачу из избранного": "Remove task from favorites list", +"URL для перехода в браузере": "URL for browser transition", +"ЗащищенноеСоединениеOpenSSL": "OpenSSLSecureConnection", +"Создать товар со свойствами": "Create product with properties", +"Проверка_БитриксСписокЗадач": "Check_BitrixTasksList", +"Добавить комментарий задачи": "Add comment to task", +"Telegram_ЗакрепитьСообщение": "Telegram_PinMessage", +"УдалитьБазуДанных (открытие": "DeleteDatabase (open", +"Получить комментарий задачи": "Get task comment", +"ОткрытьСоединение (закрытие": "CreateConnection (closing", +"ОбновлятьТокенКаждыеДваЧаса": "UpdateTokenEveryTwoHours", +"Изменить наименование книги": "Change spreadsheet name", +"Временная отметка сообщения": "Message timestamp", +"Путь к удаляемой директории": "Path to directory to delete", +"`УстановитьАлгоритмOAuthV1`": "`SetOAuthV1Algorithm`", +"Слак_ПолучитьСписокОбластей": "Slack_GetRegionList", +"СоздатьИзменитьПользователя": "CreateOrUpdateUser", +"ПереслатьГолосовоеСообщение": "ResendVoice", +"ОтклонитьЗаявкуНаВступление": "DisapprovePending", +"Получение финального ответа": "Getting the final response", +"УдалитьФайл (несуществующий": "DeleteFile (nonexistent", +"ВернутьСтандартныеПараметры": "ReturnStandardParameters", +"УправлениеЭлементомЧеклиста": "ChecklistElementManagement", +"ОписаниеЗначенияПоУмолчанию": "DefaultValueDescription", +"цена товара с учётом скидок": "product price with discounts", +"ТелеграмКлавиатураСообщения": "TelegramMessageKeyboard", +"Получить пользователей базы": "Get database users", +"Путь к файлу для скачивания": "Path to the file for downloading", +"ID альбома, если необходимо": "Album ID, if necessary", +"ПереслатьСообщение (простое": "ForwardMessage (simple", +"Получить информацию о диске": "Get disk information", +"Bitrix24_ПереместитьКаталог": "Bitrix24_MoveFolder", +"СформироватьОписаниеТаблицы": "GenerateTableDescription", +"УдалитьУведомлениеИзОчереди": "DeleteNotificationFromQueue", +"Отменить публикацию объекта": "Unpublish object", +"Описание в документации API": "Description in the API documentation", +"ПолучитьНастройкиСоединения": "GetConnectionSettings", +"Выполняет указанную команду": "Executes the specified command", +"ID стены расположения поста": "ID of the wall where the post is located", +"Заменить описание сообщения": "Replace message caption", +"Telegram_ПолучитьОбновления": "Telegram_GetUpdates", +"УдалитьЗаявкуНаВызовКурьера": "DeleteCourierInvitation", +"СформироватьМассивИменЯчеек": "FormCellNameArray", +"Добавить участника в группу": "Add group member", +"ЗагрузитьФайл (размер файла": "UploadFile (file size", +"Получает набор тегов бакета": "Gets the bucket tag set", +"Обновить изображения товара": "Update product images", +"ПроверитьДоступКЗадаче (хук": "CheckTaskAccesses (wh", +"Телеграм_ПолучитьОбновления": "TelegramAPI_GetUpdates", +"ПолучитьПараметрыСоединения": "GetConnectionParameters", +"УстановитьНастройкиИнстанса": "SetInstanceSettings", +"ПолучитьМетаданныеКалендаря": "GetCalendarMetadata", +"Получить настройки кабинета": "Get business settings", +"важность: high, normal, low": "importance: high, normal, low", +"ГарантироватьТаблицу (новая": "EnsureTable (new)", +"ПолучитьСтруктуруЦеныТовара": "GetProductPriceStructure", +"СоздатьТвитГифки (одиночная": "CreateGifTweet (single", +"ДобавитьЗаписи (ошибка json": "AddRecords (json error", +"Удаляет существующую модель": "Deletes an existing model", +"Установить картинку профиля": "Set profile picture", +"RPortal_УправлениеПроектами": "RPortal_ProjectManagement", +"ID чата приемника сообщения": "Message receiver chat ID", +"ДополнитьКомплексныйАтрибут": "CompleteComplexAttribute", +"Создать каталог в хранилище": "Create folder at the storage", +"Отправляем ответ от сервера": "Send response from server", +"Получает квитанцию к заказу": "Gets a receipt for the order", +"Удалить календарь из списка": "Remove calendar from list", +"Данные запроса для отправки": "Request data for sending", +"Код населенного пункта СДЭК": "CDEC locality code", +"Получить список ассистентов": "Get assistants list", +"ДобавитьПользователейКПапке": "AddUsersToFolder", +"ВК_ПолучитьКатегорииТоваров": "VKAPI_GetProductCategories", +"Код со страницы авторизации": "Code from the authorization page", +"ДобавитьПолучателейКНовости": "AddPostRecipients", +"ОбработатьПараметрКоллекцию": "ProcessCollectionParameter", +"ПолучитьСообщениеАссистента": "GetAssistantMessage", +"Получает состояние инстанса": "Gets instance status", +"CommonModule.OPI_Компоненты": "CommonModule.OPI_AddIns", +"Ключ > ID, Значение > Emoji": "Key > ID, Value > Emoji", +"Удаляет сообщение в диалоге": "Deletes a dialog message", +"ПолучитьСписокВерсийОбъекта": "GetObjectVersionList", +"Инструменты (служебный, ОПИ": "Tools (Utility, OpenIntegrations", +"ПолучитьАдминистраторовЧата": "GetChatAdmins", +"ОтправитьГолосовоеСообщение": "SendVoice", +"УправлениеПубличнымДоступом": "ManagePublicAccess", +"Удаляет подразделение по ID": "Delets department by ID", +"Истина > BOM будет добавлен": "True > BOM will be added", +"ПолучитьСписокСообщенийЧата": "GetChatMessagesList", +"СоздатьТвитВидео (одиночная": "CreateVideoTweet (single", +"Конец периода в формате ISO": "Period end in ISO format", +"УдалитьДиректориюРекурсивно": "DeleteDirectoryRecursively", +"color=Зеленый) Библиотека -": "color=Green) Library -", +"ПолучитьСписокПользователей": "GetUserList", +"ДропБокс_ЗагрузитьФайлПоURL": "DropboxAPI_UploadFileByURL", +"ИспользоватьАдаптивныйВывод": "UseAdaptiveOutput", +"Получить настройки инстанса": "Get instance settings", +"ВыгнатьПользователяИзКанала": "KickUserFromChannel", +"Сформировать кнопку действия": "Make action button", +"Имя пользователя авторизации": "Username for authorization", +"ПолучитьИсториюСообщенийЧата": "GetChatMessageHistory", +"ПреобразоватьПараметрВСтроку": "ConvertParameterToString", +"Компонента криптографии (ОПИ": "Cryptography Component (OpenIntegrations", +"ПолучитьПараметрыАвторизации": "GetAuthParameters", +"Установить алгоритм OAuth V1": "Set OAuth V1 algorithm", +"Слак_ПолучитьИнформациюОБоте": "Slack_GetBotInfo", +"Получает URL к картинке чата": "Gets chat image URL", +"Массив сформированных кнопок": "Array of formed buttons", +"УстановитьРеакциюНаСообщение": "SetMessageReaction", +"ПолучитьИнформациюОбАккаунте": "GetAccountInformation", +"УстановитьВнешниеТаблицыGRPC": "SetGRPCExternalTables", +"СледующаяВложенностьДоступна": "NextNestingAvailable", +"Получить структуру календаря": "Get calendar structure", +"Аватар чата в base64 формате": "Base64 chat picture", +"Добро пожаловать в новый чат": "Welcome to new chat", +"описание/содержимое элемента": "item description/content", +"Получить трудозатраты задачи": "Get task time accounting", +"УстановитьВнешниеТаблицыHTTP": "SetHTTPExternalTables", +"РаботаСМетаданнымиКалендарей": "CalendarMetadataManagement", +"ГД_СоздатьУдалитьКомментарий": "GD_CreateDeleteComment", +"Затраченное время в секундах": "Time spent in seconds", +"ПолучитьСтандартныеЗаголовки": "GetDefaultHeaders", +"ВыполнитьПроизвольнуюКоманду": "ExecuteArbitraryCommand", +"Использовать \"../../../tools": "Use \"../../../tools", +"СоздатьДиректорию (вложенная": "CreateDirectory (nested", +"УдалитьЭлементЧеклистаЗадачи": "DeleteTasksChecklistElement", +"ВыполнитьЗапросSQL (удаление": "ExecuteSQLQuery (deleting", +"Копирует существующую модель": "Copies an existing model", +"Три платформы - одно решение": "Three Platforms — One Solution", "ПолучитьЗаявкуНаВызовКурьера": "GetCourierInvitation", +"Создает новое поле в таблице": "Creates a new field in the table", "Специальный товар из массива": "Special item from array", "СоздатьТаблицу (существующая": "CreateTable (exists", "Б24_УправлениеПользователями": "B2_UsersManagement", @@ -8192,7 +8099,6 @@ "СоздатьСсылкуПолученияТокена": "CreateTokenRetrievalLink", "ПреобразоватьBase64ВДвоичные": "ConvertBase64ToBinary", "ПолучитьНастройкиЛогинПароль": "GetSettingsLoginPassword", -"Копирует существующую модель": "Copies an existing model", "Bitrix24_ПолучитьСписокЗадач": "Bitrix24_GetTasksList", "Получить информацию о модели": "Get model information", "Consumer key для авторизации": "Consumer key for authorization", @@ -8206,41 +8112,41 @@ "Изменяет параметры календаря": "Changes the calendar settings", "УдалитьВариантСвойстваТовара": "DeleteProductPropertyVariant", "ПереименоватьОбъект (каталог": "RenameObject (directory", -"Три платформы - одно решение": "Three Platforms — One Solution", "и OpenSSL версии 1.1 или 3.x": "and OpenSSL version 1.1 or 3.x", -"ВыполнитьЗапросSQL (удаление": "ExecuteSQLQuery (deleting", -"ВыполнитьПроизвольнуюКоманду": "ExecuteArbitraryCommand", -"Установить алгоритм OAuth V1": "Set OAuth V1 algorithm", -"ПолучитьИнформациюОбАккаунте": "GetAccountInformation", -"Имя пользователя авторизации": "Username for authorization", -"ПолучитьИсториюСообщенийЧата": "GetChatMessageHistory", -"УстановитьВнешниеТаблицыGRPC": "SetGRPCExternalTables", -"ПреобразоватьПараметрВСтроку": "ConvertParameterToString", -"Компонента криптографии (ОПИ": "Cryptography Component (OpenIntegrations", -"ПолучитьПараметрыАвторизации": "GetAuthParameters", -"Слак_ПолучитьИнформациюОБоте": "Slack_GetBotInfo", -"Получает URL к картинке чата": "Gets chat image URL", -"Массив сформированных кнопок": "Array of formed buttons", -"УстановитьРеакциюНаСообщение": "SetMessageReaction", -"Сформировать кнопку действия": "Make action button", -"УдалитьЭлементЧеклистаЗадачи": "DeleteTasksChecklistElement", -"Получить структуру календаря": "Get calendar structure", -"Аватар чата в base64 формате": "Base64 chat picture", -"Добро пожаловать в новый чат": "Welcome to new chat", -"описание/содержимое элемента": "item description/content", -"СледующаяВложенностьДоступна": "NextNestingAvailable", -"Получить трудозатраты задачи": "Get task time accounting", -"УстановитьВнешниеТаблицыHTTP": "SetHTTPExternalTables", -"РаботаСМетаданнымиКалендарей": "CalendarMetadataManagement", -"ГД_СоздатьУдалитьКомментарий": "GD_CreateDeleteComment", -"Затраченное время в секундах": "Time spent in seconds", -"ПолучитьСтандартныеЗаголовки": "GetDefaultHeaders", -"Использовать \"../../../tools": "Use \"../../../tools", -"СоздатьДиректорию (вложенная": "CreateDirectory (nested", -"Создает новое поле в таблице": "Creates a new field in the table", "ПолучитьСписокОбъектов (файл": "ListObjects (file", -"ПереместитьФайлВКаталог (хук": "MoveFileToFolder (wh", +"ID каталога размещения копии": "ID of copy destination folder", "ДобавитьЗаголовок (с заменой": "AddHeader (replace", +"Исключить пользователей чата": "Remove chat members", +"Удаляет событие из календаря": "Deletes an event from the calendar", +"Изменяет имя группового чата": "Change group chat name", +"Добавить трудозатраты задачи": "Add task time accounting", +"ID сообщения для открепления": "ID of the message to be unpinned", +"Получает информацию о канале": "Gets information about the channel", +"Наименование нового каталога": "Name of new folder", +"Получает документы коллекции": "Gets collection documents", +"СоздатьТаблицу (ошибка имени": "CreateTable (name error", +"Проверка_БитриксНеопределено": "Check_BitrixUndefined", +"Отправить группу медиафайлов": "Send media group", +"Получить каталог файлов чата": "Get chat files folder", +"Получает набор тегов объекта": "Gets the tag set of the object", +"ВернутьОтветКакJSONКоллекцию": "ReturnResponseAsJSONObject", +"Наименование группового чата": "Name of the group chat", +"ПолучитьСписокАватаровФорума": "GetForumAvatarsList", +"Проверить доступность бакета": "Head bucket", +"СоздатьСобытиеКалендаря (хук": "CreateCalendarEvent (wh", +"ID сообщения для закрепления": "ID of the message to be pinned", +"Изменяет данные пользователя": "Updates user data", +"Получить данные файла !NOCLI": "Get file data !NOCLI", +"Mongo_УправлениеБазамиДанных": "Mongo_DatabaseManagement", +"Объявленная стоимость товара": "Declared product price", +"Изменяет сообщение в диалоге": "Edit dialog message content", +"Номер страницы выдачи списка": "Issue page number of the list", +"Массив соответствий подборок": "Array of selection maps", +"Получить информацию о товаре": "Get product information", +"ПолучитьВариантыПараметровS3": "GetS3ParameterOptions", +"ПереместитьФайлВКаталог (хук": "MoveFileToFolder (wh", +"НоушнАпи_СоздатьИзменитьБазу": "NotionAPI_CreateUpdateBase", +"Начало периода в формате ISO": "Period start in ISO format", "ПолучитьСписокОпубликованных": "GetPublishedList", "MIME тип записываемых данных": "MIME type of data", "СоздатьЗависимостьЗадач (хук": "CreateTasksDependencies (wh", @@ -8268,146 +8174,160 @@ "Компонента Websocket-сервера": "WebSocket-server Component", "Изменяет существующую сделку": "Modifies an existing deal", "ПолучитьДоступныеТоварыАкции": "GetAvailablePromoProducts", -"Начало периода в формате ISO": "Period start in ISO format", "Подробнее в документации API": "More details in the API documentation", -"НоушнАпи_СоздатьИзменитьБазу": "NotionAPI_CreateUpdateBase", -"ПолучитьВариантыПараметровS3": "GetS3ParameterOptions", -"Исключить пользователей чата": "Remove chat members", -"ID каталога размещения копии": "ID of copy destination folder", -"Удаляет событие из календаря": "Deletes an event from the calendar", -"Изменяет имя группового чата": "Change group chat name", -"Добавить трудозатраты задачи": "Add task time accounting", -"ID сообщения для открепления": "ID of the message to be unpinned", -"Получает информацию о канале": "Gets information about the channel", -"Наименование нового каталога": "Name of new folder", -"Получает документы коллекции": "Gets collection documents", -"СоздатьТаблицу (ошибка имени": "CreateTable (name error", -"Проверка_БитриксНеопределено": "Check_BitrixUndefined", -"Отправить группу медиафайлов": "Send media group", -"Получить каталог файлов чата": "Get chat files folder", -"Получает набор тегов объекта": "Gets the tag set of the object", -"ВернутьОтветКакJSONКоллекцию": "ReturnResponseAsJSONObject", -"Наименование группового чата": "Name of the group chat", -"ПолучитьСписокАватаровФорума": "GetForumAvatarsList", -"Проверить доступность бакета": "Head bucket", -"СоздатьСобытиеКалендаря (хук": "CreateCalendarEvent (wh", -"ID сообщения для закрепления": "ID of the message to be pinned", -"Изменяет данные пользователя": "Updates user data", -"Получить данные файла !NOCLI": "Get file data !NOCLI", -"Mongo_УправлениеБазамиДанных": "Mongo_DatabaseManagement", -"Объявленная стоимость товара": "Declared product price", -"Изменяет сообщение в диалоге": "Edit dialog message content", -"Номер страницы выдачи списка": "Issue page number of the list", -"Массив соответствий подборок": "Array of selection maps", -"ПригласитьПользователейВКанал": "InviteUsersToChannel", -"TCP сервер. См. СоздатьСервер": "TCP server. See CreateServer", -"ПолучитьСписокРабочихОбластей": "GetWorkspaceList", -"ПолучитьСписокКалендарей (хук": "GetCalendarList (wh", -"Отправить голосовое сообщение": "Send voice", -"ЗавершитьЗагрузкуЧастями (ЗЧО": "FinishPartsUpload (UOP", -"ID подборки, если нужен отбор": "Selection ID, if filtering is needed", -"ПолучитьОписаниеЗаявкиКурьера": "GetCourierInvitationsDescription", -"ОтправитьКартинку (клавиатура": "SendImage (keyboard", -"Исполнители с ID не равным 10": "Performers with ID not equal to 10", -"УдалитьБазуДанных (отключение": "DeleteDatabase (Shutdown", -"УбратьЗадачуИзИзбранного (хук": "RemoveTaskFromFavorites (wh", -"Получаем сообщение на сервере": "Receive message on server", -"Переслать голосовое сообщение": "Resend voice", -"ПриостановитьУчетВремени (хук": "StopTimekeeping (wh", -"Есть ли в офисе приём заказов": "Is there an office to take orders", -"ДобавитьПолеMultipartFormData": "AddMultipartFormDataField", -"Необходим прозвон отправителя": "Need to call the sender", -"Закрывает существующий диалог": "Closes an existing dialog", -"скрывать нерабочее время: Y,N": "hide off hours: Y,N", -"УдалитьКомментарийЗадачи (хук": "DeleteTaskComment (wh", -"Б24_УправлениеПодразделениями": "B24_DepartmentsManagement", -"СоздатьТоварыПоOzonID (статус": "CreateProductByOzonID (status", -"ПолучитьСтруктуруФильтраЛидов": "GetLeadFilterStructure", -"Получить администраторов чата": "Get chat admins", -"ПривестиКлючиКНижнемуРегистру": "ConvertKeysToLowerCase", -"Массив соответствий каталогов": "Array of directory mappings", -"мПозицияПозиционныхПараметров": "mPositionParamsPosition", -"Отправить уведомление о вводе": "Send write notification", -"Проверка_ТелеграмСозданиеТемы": "Check_TelegramCreateTopic", -"Создает пустую таблицу в базе": "Creates an empty table in the database", -"Получить информацию об уценке": "Get discount information", -"Описания полей в документации": "Field descriptions in the documentation", -"Дополнить комплексный атрибут": "Complete the complex attribute", -"Отозвать права администратора": "Revoke admin rights", -"СоздатьЗаголовокАвторизацииV2": "CreateAuthorizationHeaderV2", -"разрешение на методы Calendar": "Calendar methods permission", -"ДобавитьВариантСвойстваТовара": "AddProductPropertyVariant", -"ПеренестиЗадачуВСтадиюКанбана": "MoveTaskToKanbanStage", -"ОпределитьТекущуюКомандуМетод": "DetermineCurrentCommandMethod", -"ПолучитьКонтентРейтингТоваров": "GetProductsContentRating", -"Путь к файлу приватного ключа": "Path to private key file", -"Bitrix24_ПереименоватьКаталог": "Bitrix24_RenameFolder", -"ПолучитьСписокСкладовОтгрузки": "GetShippingWarehousesList", -"ТекстСообщенияБезЦветныхПолей": "TextColorWithoutColoredFields", -"Получает список доступных баз": "Gets the list of available bases", -"ПодключитьКомпонентуНаСервере": "AttachAddInOnServer", -"Приостанавливает задачу по ID": "Pause a task by ID", -"СформироватьМассивДанныхЯчеек": "FormCellDataArray", -"ИзменитьПуть (проверка, новый": "UpdatePath (check, new", -"ПолучитьСтруктуруФильтраЗадач": "GetTasksFilterStructure", -"Имя пользователя (опционально": "Users name (optional", -"ID Файла голосового сообщения": "File ID of voice message", -"ПолучитьТелоКакДвоичныеДанные": "GetBodyAsBinaryData", -"Получает информацию о таблице": "Gets information about the table", -"CommonModule.OPI_Криптография": "CommonModule.OPI_Cryptography", -"ПолучитьЛимитыРаботыСТоварами": "GetProductsRequestsLimits", -"ДобавитьЗадачуВИзбранное (хук": "StopWatchingTask (wh", -"Получить отложенные сообщения": "Get scheduled messages", -"Время жизни токена в секундах": "Token lifetime in seconds", -"Структура JSON данных события": "The structure of the JSON event data", -"Использовать кодировку !NOCLI": "Use encoding !NOCLI", -"Вызвать функцию с настройками": "Call function with settings", -"Отправить эфемерное сообщение": "Send ephemeral message", -"ПолучитьЭлементЧеклистаЗадачи": "GetTasksChecklistElement", -"Нельзя замешивать разные типы": "Different types cannot be mixed!", -"ПолучитьОписаниеФильтраОфисов": "GetOfficeFilterDescription", -"Описание тестового RSS канала": "Test RSS channel description", -"РаботаСЗаявкамиНаВызовКурьера": "CourierInvitationsManagement", -"ID подразделения для удаления": "Department ID for deletion", -"Строка: `имя пользователя`": "String: `username`", -"Путь (имя) в бакете источнике": "Path (name) in the source bucket", -"Добавить пользователя к файлу": "Add user to file", -"ПолучитьЗапросыВступленияЧата": "GetChatJoinRequests", -"Отправляет сообщение в диалог": "Send message to dialog", -"Получить содержимое хранилища": "Get a list of child storage objects", -"ID пользователя для получения": "User ID", -"Telegram_ОтправитьМеидагруппу": "Telegram_SendMediaGroup", -"ОбновитьХарактеристикиТоваров": "UpdateProductsAttributes", -"Получить информацию о товарах": "Get products informations", -"Удаляет пользователя по имени": "Deletes user by name", -"Создать системное уведомление": "Create system notification", -"ID каталога нового размещения": "ID of new destination folder", -"Установить файл ответа !NOCLI": "Set response file", -"JSON описание товара или путь": "JSON description of the product or path", -"ПолучитьСтатусДобавленияКодов": "GetCodesUploadStatus", -"РазделитьМассивНаПараметрыURL": "SplitArrayAsURLParameters", -"Проверка_ВКИНформацияОТоварах": "Check_VKProductData", -"Получить список пользователей": "Get user list", -"Изменяет существующее событие": "Edits an existing event", -"ЯМетрика_УправлениеСчетчиками": "YaMetrika_CountersManagement", -"Слак_СоздатьАрхивироватьКанал": "Slack_CreateArchiveChannel", -"Время начала ожидания курьера": "Start time of waiting for the courier", -"От лица группы. Должен быть 1": "On behalf of the group. It should be set to 1", -"Загрузка и обновление товаров": "Uploading and updating products", -"Удаляет внешний файл из Slack": "Deletes an external file from Slack", -"ИзменитьСобытиеКалендаря (хук": "UpdateCalendarEvent (wh", -"Получить статус учета времени": "Get timekeeping status", -"Формат отчета: pdf, xls, html": "Report format: pdf, xls, html", -"Позиция начала в теле запроса": "Start position in request body", -"Закрепить/Открепить сообщение": "Pin/Unpin message", -"Одобрить заявку на вступление": "Approve pending", -"Проверка_ДропбоксПространство": "Check_DropboxSpace", -"ПолучитьНастройкиУчетаВремени": "GetTimekeepingSettings", -"ПолучитьСобытиеКалендаря (хук": "GetCalendarEvent (wh", -"Соответствие Из КлючИЗначение": "Map Of KeyAndValue", -"Ноушн_ПолучитьИнформациюОБазе": "Notion_GetDatabaseInfo", -"СоздатьДиректорию (проверка 1": "CreateDirectory (check 1", +"ОтправитьСообщение (картинка": "SendMessage (picture", +"ПодключитьМодульИнструментов": "AttachToolsModule", +"Метод в документации MongoDB": "Method in MongoDB documentation", +"ПолучитьНаборыЛокальныхПутей": "GetLocalPathsSets", +"Идентификатор/артикул товара": "Product ID/article", +"Параметры в оригинальном URL": "Parameters in the original URL", +"Получить черновик заявки FBO": "Get FBO draft", +"HEX цвет кнопок с # в начале": "HEX color of buttons with # at the beginning", +"Получить список комментариев": "Get list of comments", +"Получить информацию о группе": "Get group information", +"ПРЕОБРАЗОВАТЬBASE64ВДВОИЧНЫЕ": "CONVERTBASE64TOBINARY", +"последний IP-адрес диапазона": "last IP address of the range", +"Mime тип записываемых данных": "MIME type of data", +"Один или массив UUID заказов": "One or an array of order UUIDs", +"Bitrix24_ОтключитьЗвукЗадачи": "Bitrix24_MuteTask", +"ОткрытьСоединение (TLS игнор": "CreateConnection (TLS ignore", +"Добавить видеообложку товара": "Add product video cover", +"Bitrix24_ВосстановитьКаталог": "Bitrix24_RestoreFolder", +"УдалитьСообщение (отложенное": "DeleteMessage (scheduled", +"УдалитьТегиБакета (получение": "DeleteBucketTagging", +"Удалять только у отправителя": "Delete for sender only", +"Установить шифрование бакета": "Put bucket encryption", +"Установить отметку прочтения": "Set read mark", +"Получить структуру сообщения": "Get message structure", +"Тестовый товар (со свойством": "Test product (with prop", +"ПолучитьПланЗадачНаДень (хук": "GetDailyPlan (wh", +"Проверка_ТелеграмМедиагруппа": "Check_TelegramMediaGroup", +"Результат выполнения команды": "Result of command execution", +"ПолучитьСтандартныеПараметры": "GetStandardParameters", +"Другой комментарий к новости": "Another comment", +"показывать номер недель: Y,N": "show week number: Y,N", +"страницу создания приложения": "app creation page", +"Получить статус пользователя": "Get user status", +"БитриксНастройкиУчетаВремени": "BitrixTimekeepingSettings", +"ВернутьЗапрос (принудительно": "ReturnRequest (forced", +"Bitrix24_ДобавитьКомментарий": "Bitrix24_CreateComment", +"Изменяет существующую задачу": "Update a task", +"Изменить трудозатраты задачи": "Update task time accounting", +"ОтветитьНаЗаявкуНаВступление": "ResolvePending", +"ПолучитьНастройкиЛогирования": "GetLoggingSettings", +"Методы работы с Twitter (ОПИ": "Twitter methods (OpenIntegrations", +"УстановитьСтатусПользователя": "SetUserStatus", +"Создает новую таблицу в базе": "Creates a new table in the base", +"ПолучитьСтруктуруСделки (хук": "GetDealStructure (wh", +"C:\\GDrive\\Мой диск\\data.json": "C:\\GDrive\\My Drive\\data.json", +"НормализоватьНаборПараметров": "NormaliseParameterSet", +"Добавляет новый внешний файл": "Adds a new external file", +"Получить список внеш. файлов": "Get external file list", +"Пароль пользователя postgres": "Postgres user password", +"ПереименоватьОбъект (обратно": "RenameObject (back", +"Таймаут ожидания подключений": "Connection timeout", +"Эти токены обновлять не надо": "These tokens do not need to be updated", +"Получает информацию о методе": "Get method information", +"СледующийПозиционныйПараметр": "NextPositionParam", +"ПолучитьТекущегоПользователя": "GetCurrentUser", +"НазначитьПраваАдминистратора": "SetAdminRights", +"Создать рекламное объявление": "Create advertising post", +"Адрес и порт для подключения": "Address and port", +"JSON файлов или путь к .json": "File JSON or path to .json", +"МассивОшибок,СчетчикУспешных": "ErrorsArray,SuccessCount", +"Добавить параметр URL !NOCLI": "Add URL parameter !NOCLI", +"Ожидается значение параметра": "Expected parameter value", +"Проверка_ТелеграмПриглашение": "Check_TelegramInvitation", +"ЗагрузитьФайл (множественный": "UploadFile (multiple", +"Получить ссылку на сообщение": "Get message link", +"HEX основного цвета (#ffffff": "HEX primary color (#ffffff", +"%%1 = ЗагрузитьСценарий(\"\"%1": "%%1 = LoadScript(\"\"%1", +"Загрузить/Удалить внеш. файл": "Upload/Delete external file", +"Некорректное имя команды: %1": "Invalid command name: %1", +"Твиттер_СоздатьТекстовыйТвит": "Twitter_CreateTextTweet", +"ПолучитьСоответствиеКартинки": "GetImageMap", +"шаблон промптов новой модели": "new model prompt template", +"ГВ_ПолучитьСсылкуАвторизации": "GV_GetAuthorizationLink", +"ОчиститьДиректорию (проверка": "ClearDirectory (check", +"ПолучитьЗаголовокАвторизации": "GetAuthorizationHeader", +"ПредыдущееЗначениеЦветаТекта": "PreviousTextColorValue", +"УдалитьПустыеЭлементыМассива": "RemoveEmptyArrayElements", +"Получает описание поля с URL": "Gets the description of a URL field", +"ПолучитьНастройкиЧерезАгента": "GetSettingsViaAgent", +"ЗагрузитьФайлНаСерверЧастями": "UploadFileToServerInParts", +"ДобавлятьГлобальныеПараметры": "AddGlobalParams", +"Показать главную тему форума": "Show main forum topic", +"Получить доступные настройки": "Get available settings", +"Отправить данные GRPC !NOCLI": "Send GRPC data !NOCLI", +"Получить данные пользователя": "Get user data", +"URL картинки иконки страницы": "URL of the page icon image", +"ПолучитьСписокВерсийОбъектов": "ListObjectVersions", +"ДобавитьПользователейВПроект": "AddUsersToProject", +"Компонента Websocket-клиента": "WebSocket-client Component", +"DataProcessor.OPI_HTTPКлиент": "DataProcessor.OPI_HTTPClient", +"ПолучитьСписокОтправленийFBO": "GetFBOShipmentsList", +"ПрекратитьНаблюдатьЗаЗадачей": "StopWatchingTask", +"ПолучитьСтруктуруКомментария": "GetCommentStructure", +"Выполняет команду на сервере": "Executes the command on the server", +"Структура параметров доступа": "Structure of access parameters", +"ИспользоватьАутентификациюОС": "UseOSAuthentication", +"Установить тип данных !NOCLI": "Set data type !NOCLI", +"Новый текст пункта чек-листа": "New elements text", +"СформироватьТекстTableSchema": "FormTextTableSchema", +"идентификатор рабочей группы": "workgroup identifier", +"Получить список файлов папки": "Get list of folder files", +"Путь к файлу публичного ключ": "Path to public key file", +"ВключитьУведомленияЧата (хук": "EnableChatNotifications (wh", +"Скрывает главную тему форума": "Hides the main forum topic", +"SHA256 дайджест нужного BLOB": "SHA256 BLOB digest", +"ПолучитьСписокИконокАватаров": "GetAvatarIconList", +"идентификатор ответственного": "responsible person identifier", +"Результат выполнения запроса": "Result of query execution", +"Bitrix24_ДобавитьФайлВЗадачу": "Bitrix24_AttachFileToTopic", +"CommonTemplate.OPI_TCPКлиент": "CommonTemplate.OPI_TCPClient", +"Добавляет новый лист в книгу": "Adds a new sheet to the spreadsheet", +"НачальноеПодключениеСкриптов": "InitialScriptLoading", +"Добавить комментарий новости": "Add comment to post", +"Получить информацию о канале": "Get channel information", +"JSON массива описаний блоков": "JSON array of block descriptions", +"URL для отправки уведомлений": "URL for notification sending", +"Время ожидания новых событий": "Waiting time for new events", +"Добавить пользователей в чат": "Add users to chat", +"Восстановить объект к версии": "Restore object to version", +"ИзменитьИмяГлавнойТемыФорума": "EditMainForumTopicName", +"CommonModule.OPI_Инструменты": "CommonModule.OPI_Tools", +"CommonModule.OPI_ЗапросыHTTP": "CommonModule.OPI_HTTPRequests", +"Стабильный шлюз WhatsApp API": "Stable WhatsApp API Gateway", +"идентификатор характеристики": "attribute ID", +"Тип офиса: PVZ, POSTAMAT, ALL": "Office type: PVZ, POSTAMAT, ALL", +"СформироватьТекстDropDatabase": "FormTextDropDatabase", +"Изменяет картинку аватар чата": "Changes the chat avatar picture", +"ВыполнитьНестандартнуюКоманду": "ExecuteCustomCommand", +"ОткрытьСтандартныйПотокВывода": "OpenStandardOutput", +"Получить онлайн пользователей": "Get online users", +"Отправить текстовое сообщение": "Send text message", +"НачатьНаблюдатьЗаЗадачей (хук": "StartWatchingTask (wh", +"!OInt Сообщить(ОписаниеОшибки": "!OInt Message(ErrorDescription", +"СоздатьЗаголовокАвторизацииV1": "CreateAuthorizationHeaderV1", +"Заменить клавиатуру сообщения": "Replace message keyboard", +"ПолучитьОбъект (большой, файл": "GetObject (big, file", +"Наименование объекта в бакете": "Name of the object in the bucket", +"Получить данные о базе данных": "Get database information", +"**Открытый пакет интеграций**": "**Open Integrations Package**", +"ЯМетрика_УправлениеОперациями": "YaMetrika_ActionsManagement", +"Результат выполнения операции": "Operation result", +"Набор изменяемых полей заказа": "Set of changing order fields", +"Получить типы колонок таблицы": "Get table column types", +"Получить ссылку на скачивание": "Get download link", +"ИзменитьПуть (список, обратно": "UpdatePath (list, back", +"СохранитьНастройкиВКомпоненте": "SaveSettingsAtAddIn", +"Отбор по ID каталога родителя": "Filter by parent directory ID", +"Результат закрытия соединения": "Result of connection termination", +"Соответствие из КлючИЗначение": "Map of KeyAndValue", +"Получить статистику по постам": "Get post statistics", +"VK_СоздатьРекламноеОбъявление": "VK_CreateAd", "ПолучитьИнформациюОФайле (хук": "GetFileInformation (wh", +"Получить параметры соединения": "Get connection parameters", "Получить настройки соединения": "Get connection settings", "Получает структуру полей чата": "Get chat fields structure", "Некорректная структура сессии": "Incorrect session structure", @@ -8419,7 +8339,6 @@ "СоздатьДиректорию (проверка 2": "CreateDirectory (check 2", "Не удалось создать Соединение": "Failed to create Connection", "Проверка_ВКИнформацияОТоварах": "Check_VKProductData", -"Получить статистику по постам": "Get post statistics", "Создает твит с видеовложением": "Creates a tweet with a video attachment", "ЗаблокироватьПользователяЧата": "BlockChatUser", "ДополнитьЗаголовкиАвторизации": "CompleteAuthHeaders", @@ -8430,37 +8349,37 @@ "Подключаем несколько клиентов": "Connect multiple clients", "ЗавершитьЗагрузкуЧастями (ИЗЧ": "FinishPartsUpload (IPU", "Найти значения характеристики": "Search attribute value", -"VK_СоздатьРекламноеОбъявление": "VK_CreateAd", "Уникальный идентификатор ФИАС": "Unique FIAS identifier", -"Соответствие из КлючИЗначение": "Map of KeyAndValue", -"ИзменитьПуть (список, обратно": "UpdatePath (list, back", -"Тип офиса: PVZ, POSTAMAT, ALL": "Office type: PVZ, POSTAMAT, ALL", -"СформироватьТекстDropDatabase": "FormTextDropDatabase", -"ВыполнитьНестандартнуюКоманду": "ExecuteCustomCommand", -"ОткрытьСтандартныйПотокВывода": "OpenStandardOutput", -"Получить онлайн пользователей": "Get online users", -"Отправить текстовое сообщение": "Send text message", -"НачатьНаблюдатьЗаЗадачей (хук": "StartWatchingTask (wh", -"!OInt Сообщить(ОписаниеОшибки": "!OInt Message(ErrorDescription", -"СоздатьЗаголовокАвторизацииV1": "CreateAuthorizationHeaderV1", -"Изменяет картинку аватар чата": "Changes the chat avatar picture", -"Результат закрытия соединения": "Result of connection termination", -"ПолучитьОбъект (большой, файл": "GetObject (big, file", -"Наименование объекта в бакете": "Name of the object in the bucket", -"Получить данные о базе данных": "Get database information", -"**Открытый пакет интеграций**": "**Open Integrations Package**", -"Заменить клавиатуру сообщения": "Replace message keyboard", -"ЯМетрика_УправлениеОперациями": "YaMetrika_ActionsManagement", -"Результат выполнения операции": "Operation result", -"Набор изменяемых полей заказа": "Set of changing order fields", -"Получить типы колонок таблицы": "Get table column types", -"Получить ссылку на скачивание": "Get download link", -"СохранитьНастройкиВКомпоненте": "SaveSettingsAtAddIn", -"Отбор по ID каталога родителя": "Filter by parent directory ID", -"Получить параметры соединения": "Get connection parameters", "ОтключитьПроверкуСертификатов": "DisableCertVerification", -"Структура JSON данных объекта": "The structure of the JSON object data", +"ПоместитьКаталогВКорзину (хук": "MarkFolderAsDeleted (wh", "ПолучитьВариантыПараметровFTP": "GetFTPParameterOptions", +"URL картинки обложки страницы": "URL of the page cover image", +"Получить настройки TLS !NOCLI": "Get TLS settings !NOCLI", +"Получить внешнюю ссылку файла": "Get external link for a file", +"ID товаров для восстановления": "Product IDs for recovery", +"ОтключитьУведомленияЧата (хук": "DisableChatNotifications (wh", +"Установить настройки инстанса": "Set instance settings", +"Email для оповещений RFC 2822": "Email for alerts as RFC 2822", +"Идентификатор группового чата": "Group chat identifier", +"ВыполнитьЗапросSQL (test_data": "ExecuteSQLQuery (test_data", +"СлужебныйПрограммныйИнтерфейс": "Internal", +"ID блока или сам блок образец": "Block ID or block sample itself", +"Получить сообщение ассистента": "Get assistant message", +"ID пользователя для изменения": "User ID", +"ДобавитьФайлMultipartFormData": "AddMultipartFormDataFile", +"Время жизни сессии в секундах": "Session lifetime in seconds", +"ПолучитьСтруктуруПользователя": "GetUserFieldsStructure", +"ВернутьОтветКакДвоичныеДанные": "ReturnResponseAsBinaryData", +"КодУспеха И ОтветКодСостояния": "SuccessCode And ResponseStatusCode", +"Создает новую новость в ленте": "Create a new post at news feed", +"ПараметрыЗапросаВСоответствие": "RequestParametersToMap", +"Твиттер_СоздатьТвитСКартинкой": "Twitter_CreateTweetWithImage", +"ПолучитьВариантыПараметровSSH": "GetSSHParameterOptions", +"СоздатьДиректорию (проверка 1": "CreateDirectory (check 1", +"Максимум переадресаций !NOCLI": "Max redirects !NOCLI", +"Структура JSON данных объекта": "The structure of the JSON object data", +"Не удалось записать файл лога": "Failed to write log file", +"Получить хранилище приложения": "Get storage for application data", "СоздатьКаталогВХранилище (хук": "CreateStorageFolder (wh", "Название компании отправителя": "Name of senders company", "ПолучитьВнешнююСсылкуКаталога": "GetFolderExternalLink", @@ -8484,58 +8403,214 @@ "СформироватьСтрокуПодключения": "GenerateConnectionString", "УдалитьРезультатИзКомментария": "DeleteResultFromComment", "Удаляет ранее созданный товар": "Deletes a previously created product", -"Получить хранилище приложения": "Get storage for application data", "Получить проекты пользователя": "Get user projects", -"Не удалось записать файл лога": "Failed to write log file", -"Максимум переадресаций !NOCLI": "Max redirects !NOCLI", -"ПоместитьКаталогВКорзину (хук": "MarkFolderAsDeleted (wh", -"URL картинки обложки страницы": "URL of the page cover image", -"Получить настройки TLS !NOCLI": "Get TLS settings !NOCLI", -"Получить внешнюю ссылку файла": "Get external link for a file", -"ID товаров для восстановления": "Product IDs for recovery", -"ОтключитьУведомленияЧата (хук": "DisableChatNotifications (wh", -"Установить настройки инстанса": "Set instance settings", -"Email для оповещений RFC 2822": "Email for alerts as RFC 2822", -"Идентификатор группового чата": "Group chat identifier", -"ВыполнитьЗапросSQL (test_data": "ExecuteSQLQuery (test_data", -"СлужебныйПрограммныйИнтерфейс": "Internal", -"ID блока или сам блок образец": "Block ID or block sample itself", -"Получить сообщение ассистента": "Get assistant message", -"ID пользователя для изменения": "User ID", -"ДобавитьФайлMultipartFormData": "AddMultipartFormDataFile", -"Время жизни сессии в секундах": "Session lifetime in seconds", -"ПолучитьСтруктуруПользователя": "GetUserFieldsStructure", -"ВернутьОтветКакДвоичныеДанные": "ReturnResponseAsBinaryData", -"КодУспеха И ОтветКодСостояния": "SuccessCode And ResponseStatusCode", -"Создает новую новость в ленте": "Create a new post at news feed", -"ПараметрыЗапросаВСоответствие": "RequestParametersToMap", -"Твиттер_СоздатьТвитСКартинкой": "Twitter_CreateTweetWithImage", -"ПолучитьВариантыПараметровSSH": "GetSSHParameterOptions", -"ДропБокс_ПолучитьОбновитьТокен": "DropboxAPI_GetUpdateToken", -"Отклонить заявку на вступление": "Disapprove pending", -"ОбработатьКоллекциюДляОперации": "ProcessCollectionForOperation", -"ИзменитьПуть (каталог, обратно": "UpdatePath (directory, back", -"ПреобразоватьИсточникВЗначение": "ConvertSourceToValue", -"ПолучитьКаталогФайловЧата (хук": "GetChatFilesFolder", -"Проверяем получение на клиенте": "Check receiving on client", -"Ошибка удаления файла картинки": "Error deleting a picture file", -"Получить сообщение GRPC !NOCLI": "Get GRPC message !NOCLI", -"Получить структуру цены товара": "Get product price structure", -"Получить информацию об объекте": "Get object information", -"Удаляет существующий календарь": "Deletes an existing calendar", -"МаксимальныйУровеньВложенности": "MaximumNestingLevel", -"ПолучитьСписокТегов (одиночный": "GetTagList (single", -"Добавить получателей к новости": "Add new recipients to a post", -"ИнициализироватьОсновныеСписки": "InitializeCommonLists", -"ПодключитьРасширение (проверка": "ConnectExtension (check", -"единица измерения: YEAR, MONTH": "unit: YEAR, MONTH", -"Пароль для базовой авторизации": "Password for basic authorization", -"ОбработкаОбъект.OPI_HTTPКлиент": "DataProcessorObject.OPI_HTTPClient", -"Целевой путь создания каталога": "Target path for creating the directory", -"Адрес и экземпляр сервера СУБД": "Database server address and instance", -"УстановитьТелоИзДвоичныхДанных": "SetBodyFromBinaryData", -"ПолучитьСтатусПаспортныхДанных": "GetPassportDataStatus", -"JSON описания или путь к .json": "JSON description or path to .json", +"Ноушн_ПолучитьИнформациюОБазе": "Notion_GetDatabaseInfo", +"ПолучитьОписаниеФильтраОфисов": "GetOfficeFilterDescription", +"ПолучитьСобытиеКалендаря (хук": "GetCalendarEvent (wh", +"мПозицияПозиционныхПараметров": "mPositionParamsPosition", +"Отправить уведомление о вводе": "Send write notification", +"Проверка_ТелеграмСозданиеТемы": "Check_TelegramCreateTopic", +"Создает пустую таблицу в базе": "Creates an empty table in the database", +"Получить информацию об уценке": "Get discount information", +"Описания полей в документации": "Field descriptions in the documentation", +"Дополнить комплексный атрибут": "Complete the complex attribute", +"Отозвать права администратора": "Revoke admin rights", +"СоздатьЗаголовокАвторизацииV2": "CreateAuthorizationHeaderV2", +"разрешение на методы Calendar": "Calendar methods permission", +"ДобавитьВариантСвойстваТовара": "AddProductPropertyVariant", +"ПеренестиЗадачуВСтадиюКанбана": "MoveTaskToKanbanStage", +"ОпределитьТекущуюКомандуМетод": "DetermineCurrentCommandMethod", +"ПолучитьКонтентРейтингТоваров": "GetProductsContentRating", +"Путь к файлу приватного ключа": "Path to private key file", +"Bitrix24_ПереименоватьКаталог": "Bitrix24_RenameFolder", +"ПолучитьСписокСкладовОтгрузки": "GetShippingWarehousesList", +"ТекстСообщенияБезЦветныхПолей": "TextColorWithoutColoredFields", +"Получает список доступных баз": "Gets the list of available bases", +"ПодключитьКомпонентуНаСервере": "AttachAddInOnServer", +"Приостанавливает задачу по ID": "Pause a task by ID", +"СформироватьМассивДанныхЯчеек": "FormCellDataArray", +"ИзменитьПуть (проверка, новый": "UpdatePath (check, new", +"Массив соответствий каталогов": "Array of directory mappings", +"ПолучитьСтруктуруФильтраЗадач": "GetTasksFilterStructure", +"ПривестиКлючиКНижнемуРегистру": "ConvertKeysToLowerCase", +"ПолучитьСтруктуруФильтраЛидов": "GetLeadFilterStructure", +"Соответствие Из КлючИЗначение": "Map Of KeyAndValue", +"ПригласитьПользователейВКанал": "InviteUsersToChannel", +"TCP сервер. См. СоздатьСервер": "TCP server. See CreateServer", +"ПолучитьСписокРабочихОбластей": "GetWorkspaceList", +"Отправить голосовое сообщение": "Send voice", +"ЗавершитьЗагрузкуЧастями (ЗЧО": "FinishPartsUpload (UOP", +"ID подборки, если нужен отбор": "Selection ID, if filtering is needed", +"ПолучитьОписаниеЗаявкиКурьера": "GetCourierInvitationsDescription", +"ОтправитьКартинку (клавиатура": "SendImage (keyboard", +"Исполнители с ID не равным 10": "Performers with ID not equal to 10", +"УдалитьБазуДанных (отключение": "DeleteDatabase (Shutdown", +"УбратьЗадачуИзИзбранного (хук": "RemoveTaskFromFavorites (wh", +"Получаем сообщение на сервере": "Receive message on server", +"Переслать голосовое сообщение": "Resend voice", +"ПриостановитьУчетВремени (хук": "StopTimekeeping (wh", +"Есть ли в офисе приём заказов": "Is there an office to take orders", +"ДобавитьПолеMultipartFormData": "AddMultipartFormDataField", +"Необходим прозвон отправителя": "Need to call the sender", +"Закрывает существующий диалог": "Closes an existing dialog", +"скрывать нерабочее время: Y,N": "hide off hours: Y,N", +"УдалитьКомментарийЗадачи (хук": "DeleteTaskComment (wh", +"Б24_УправлениеПодразделениями": "B24_DepartmentsManagement", +"СоздатьТоварыПоOzonID (статус": "CreateProductByOzonID (status", +"Получить администраторов чата": "Get chat admins", +"Имя пользователя (опционально": "Users name (optional", +"ПолучитьСписокКалендарей (хук": "GetCalendarList (wh", +"ПолучитьТелоКакДвоичныеДанные": "GetBodyAsBinaryData", +"Создать системное уведомление": "Create system notification", +"ID каталога нового размещения": "ID of new destination folder", +"Установить файл ответа !NOCLI": "Set response file", +"JSON описание товара или путь": "JSON description of the product or path", +"ПолучитьСтатусДобавленияКодов": "GetCodesUploadStatus", +"РазделитьМассивНаПараметрыURL": "SplitArrayAsURLParameters", +"Проверка_ВКИНформацияОТоварах": "Check_VKProductData", +"Получить список пользователей": "Get user list", +"Изменяет существующее событие": "Edits an existing event", +"ЯМетрика_УправлениеСчетчиками": "YaMetrika_CountersManagement", +"Удаляет пользователя по имени": "Deletes user by name", +"Слак_СоздатьАрхивироватьКанал": "Slack_CreateArchiveChannel", +"От лица группы. Должен быть 1": "On behalf of the group. It should be set to 1", +"Загрузка и обновление товаров": "Uploading and updating products", +"Удаляет внешний файл из Slack": "Deletes an external file from Slack", +"ИзменитьСобытиеКалендаря (хук": "UpdateCalendarEvent (wh", +"Получить статус учета времени": "Get timekeeping status", +"Формат отчета: pdf, xls, html": "Report format: pdf, xls, html", +"Позиция начала в теле запроса": "Start position in request body", +"Одобрить заявку на вступление": "Approve pending", +"Проверка_ДропбоксПространство": "Check_DropboxSpace", +"ID Файла голосового сообщения": "File ID of voice message", +"Время начала ожидания курьера": "Start time of waiting for the courier", +"Получить информацию о товарах": "Get products informations", +"Закрепить/Открепить сообщение": "Pin/Unpin message", +"Telegram_ОтправитьМеидагруппу": "Telegram_SendMediaGroup", +"ОбновитьХарактеристикиТоваров": "UpdateProductsAttributes", +"CommonModule.OPI_Криптография": "CommonModule.OPI_Cryptography", +"Получает информацию о таблице": "Gets information about the table", +"ДобавитьЗадачуВИзбранное (хук": "StopWatchingTask (wh", +"Получить отложенные сообщения": "Get scheduled messages", +"Время жизни токена в секундах": "Token lifetime in seconds", +"Структура JSON данных события": "The structure of the JSON event data", +"Использовать кодировку !NOCLI": "Use encoding !NOCLI", +"Вызвать функцию с настройками": "Call function with settings", +"Отправить эфемерное сообщение": "Send ephemeral message", +"ПолучитьЭлементЧеклистаЗадачи": "GetTasksChecklistElement", +"ПолучитьЛимитыРаботыСТоварами": "GetProductsRequestsLimits", +"ПолучитьНастройкиУчетаВремени": "GetTimekeepingSettings", +"Нельзя замешивать разные типы": "Different types cannot be mixed!", +"Получить содержимое хранилища": "Get a list of child storage objects", +"ПолучитьЗапросыВступленияЧата": "GetChatJoinRequests", +"Добавить пользователя к файлу": "Add user to file", +"Отправляет сообщение в диалог": "Send message to dialog", +"Строка: `имя пользователя`": "String: `username`", +"ID подразделения для удаления": "Department ID for deletion", +"РаботаСЗаявкамиНаВызовКурьера": "CourierInvitationsManagement", +"Описание тестового RSS канала": "Test RSS channel description", +"Путь (имя) в бакете источнике": "Path (name) in the source bucket", +"ID пользователя для получения": "User ID", +"file\"\" + ИспользуемоеИмя, Файл": "file\"\" + DisplayedName, File", +"Удаляет ранее созданный альбом": "Deletes a previously created album", +"Получить структуру комментария": "Get comment structure", +"Удаляет тестовый элемент по ID": "Deletes a test item by ID", +"Bitrix24_ПоместитьФайлВКорзину": "Bitrix24_MarkFileAsDeleted", +"Имя поля БД с выбором значения": "Name of field with a value selection", +"Получить параметры авторизации": "Get auth parameters", +"ОткрытьСоединение (перед базой": "CreateConnection (before base", +"Копирует один каталог в другой": "Copy one folder to another", +"Явно завершает процесс сервера": "Explicitly terminates the server process", +"ПолучитьСписокРезультатов (хук": "GetResultsList (wh", +"ВыполнитьЗапросSQL (удаление 1": "ExecuteSQLQuery (deleting 1", +"ПолучитьОписаниеДоговоренности": "GetAppointmentDescription", +"Bitrix24_ЗагрузитьФайлВКаталог": "Bitrix24_UploadFileToFolder", +"СформироватьТекстAlterTableAdd": "FormTextAlterTableAdd", +"Идентификатор клиента (Account": "Client identifier (Account", +"Методы интеграции с Viber (ОПИ": "Viber integration methods (OpenIntegrations", +"тип: employee, extranet, email": "type: employee, extranet, email", +"Удалить уведомление из очереди": "Delete notification from queue", +"ПолучитьСтрокуИзДвоичныхДанных": "GetStringFromBinaryData", +"физическое расположение тестов": "physical location of tests", +"ID счетчика для восстановления": "Counter ID for restoring", +"ЗаполнитьПараметрыЗагрузкиФото": "FillPhotoUploadParameters", +"ПолучитьКоллекциюКлючИЗначение": "GetKeyValueCollection", +"ПолучитьСписокКатегорийТоваров": "GetProductCategoryList", +"УдалитьТрудозатратыЗадачи (хук": "DeleteTaskTimeAccounting (wh", +"ПроверитьОбязательныеПоляСхемы": "CheckSchemeRequiredFields", +"КоличествоПараметров - 1 Тогда": "NumberOfParameters - 1 Then", +"ПолучитьПереводыПлатежейНаДату": "GetDeliveryCashTransfers", +"ПолучитьДвоичныеДанныеИзСтроки": "GetBinaryDataFromString", +"Проверка_БитриксМассивОбъектов": "Check_BitrixObjectsArray", +"Техническое наименование видео": "Technical name of the video", +"Задача невыполнима, расходимся": "Task impossible, let's split up", +"Получить ссылку загрузки файла": "Get file upload link", +"УправлениеСостояниемТемыФорума": "ManageForumTopicState", +"Добавить пользователей к файлу": "Add users to file", +"Краткое описание второй записи": "Second record summary", +"Завершить отправку GRPC !NOCLI": "Complete GRPC sending !NOCLI", +"УдалитьУведомление (приложение": "DeleteNotification (app", +"Получить список версий объекта": "Get list of object versions", +"Ограничение выборки результата": "Limiting the result selection", +"ИзменитьПуть (проверка, старый": "UpdatePath (check, old", +"ПолучитьЗанятостьПользователей": "GetUserBusy", +"показывать отклоненные события": "show rejected events", +"Пакет библиотеки для OneScript": "Library package for OneScript", +"Добавить данные Related !NOCLI": "Add data as Related !NOCLI", +"ПолучитьКомменатрийЗадачи (хук": "GetTaskComment (wh", +"Сформировать параметры доступа": "Form access parameters", +"Краткое описание первой записи": "First record summary", +"Использовать \"../../../../core": "Use \"../../../../core", +"Отметить пункт как выполненный": "Mark as completed", +"Получить список сообщений чата": "Get chat messages list", +"ОбработатьДвунаправленныйПоток": "ProcessBidirectionalStream", +"СоздатьТвитКартинки (одиночная": "CreateImageTweet (single", +"ДобавитьКомментарийЗадачи (хук": "AddTaskComment (wh", +"включение автоматических целей": "auto-targeting", +"Добавить файл multipart !NOCLI": "Add Multipart file !NOCLI", +"Получить информацию о странице": "Get page info", +"Структура JSON данных страницы": "The structure of the JSON page data", +"Путь или набору путей к файлам": "Path or set of paths to the files", +"ЗаменитьСтандартныеОсобенности": "ReplaceDefaultFeatures", +"file|\" + ИспользуемоеИмя, Файл": "file|\" + DisplayedName, File", +"Удаляет файл или каталог по ID": "Deletes file or directory by ID", +"ID пользователя для блокировки": "User ID to be blocked", +"Идентификатор удаляемого листа": "IdentifierOfSheetToDelete", +"Создает новый тестовый элемент": "Creates a new test item", +"Назначить права администратора": "Set admin rights", +"Ответить на событие клавиатуры": "Answer button event", +"Получить описание файла !NOCLI": "Get file description !NOCLI", +"RPortal_УправлениеРезультатами": "RPortal_ResultsManagement", +"ЯДиск_ПолучитьИнформациюОДиске": "YDisk_GetDiskInfo", +"ПодключитьРасширение (закрытие": "ConnectExtension (closing", +"ПолучитьСтруктуруФильтраСделок": "GetDealsFilterStructure", +"Открыть соединение GRPC !NOCLI": "Create GRPC connection !NOCLI", +"ГарантироватьТаблицу (проверка": "EnsureTable (check", +"■|#color=Зеленый) Библиотека -": "■|#color=Green) Library -", +"Текст комментария трудозатраты": "Comment text", +"ВызватьМетод: отправка запроса": "ExecuteMethod: sending request", +"ПолучитьЗаписи (без параметров": "GetRecords (no params", +"СохранитьКартинкуВАльбом (путь": "SaveImageToAlbum (path", +"Mongo_УправлениеПользователями": "Mongo_UserManagement", +"НоушнАпи_ПолучитьПользователей": "NotionAPI_GetUsers", +"ID пользователя для добавления": "User ID to add", +"Создать/Удалить составной пост": "Create/Delete composite post", +"Файл на диске или данные файла": "File on disk or file data", +"Подключиться и получить данные": "Connect and receive data", +"Добавить пользователей к папке": "Add users to folder", +"Bitrix24_ПолучитьИсториюЗадачи": "Bitrix24_GetTaskHistory", +"Идентификатор заказа в ИС СДЭК": "Order identifier in CDEK system", +"Удаляет пользователя по логину": "Deletes a user by login", +"РазблокироватьПользователяЧата": "UnblockChatUser", +"ВыполнитьЭлементЧеклистаЗадачи": "CompleteTasksChecklistElement", +"Буквенно-цифровой код ПВЗ СДЭК": "Alphanumeric code of CDEK POZ", +"О механизме в документации AWS": "Process at AWS documentation", +"УдалитьБазуДанных (подключение": "DeleteDatabase (connect", +"ИзменитьКомментарийЗадачи (хук": "UpdateTaskComment (wh", +"МаксимальноеЧислоПереадресаций": "MaximumNumberOfRedirects", +"Получить список опубликованных": "Get published list", +"Выгнать пользователя из канала": "Kick user from channel", +"Проверка_БитриксМассивНовостей": "Check_BitrixPostsArray", "Структура, Массив Из Структура": "Structure, Array of Structure", "Получить информацию о каталоге": "Get information about folder", "УстановитьСтандартныеНастройки": "SetDefaultSettings", @@ -8557,36 +8632,35 @@ "ID родительского подразделения": "ID of parent department", "Нормализовать набор параметров": "Normalise parameter set", "ДополнитьНастройкиАвторизацией": "CompleteAuthorizationSettings", +"JSON описания или путь к .json": "JSON description or path to .json", "ID чата для отправки сообщения": "Chat ID for message sending", +"ПолучитьСтатусПаспортныхДанных": "GetPassportDataStatus", +"Целевой путь создания каталога": "Target path for creating the directory", +"ПолучитьОписаниеЗаказа (Пустая": "GetOrderDescription (Empty", +"ДропБокс_ПолучитьОбновитьТокен": "DropboxAPI_GetUpdateToken", +"Отклонить заявку на вступление": "Disapprove pending", +"ОбработатьКоллекциюДляОперации": "ProcessCollectionForOperation", +"ИзменитьПуть (каталог, обратно": "UpdatePath (directory, back", +"ПреобразоватьИсточникВЗначение": "ConvertSourceToValue", +"ПолучитьКаталогФайловЧата (хук": "GetChatFilesFolder", +"Проверяем получение на клиенте": "Check receiving on client", +"Ошибка удаления файла картинки": "Error deleting a picture file", +"Получить сообщение GRPC !NOCLI": "Get GRPC message !NOCLI", +"Получить структуру цены товара": "Get product price structure", +"Получить информацию об объекте": "Get object information", +"Удаляет существующий календарь": "Deletes an existing calendar", +"МаксимальныйУровеньВложенности": "MaximumNestingLevel", +"ПолучитьСписокТегов (одиночный": "GetTagList (single", +"Добавить получателей к новости": "Add new recipients to a post", +"ИнициализироватьОсновныеСписки": "InitializeCommonLists", +"ПодключитьРасширение (проверка": "ConnectExtension (check", +"единица измерения: YEAR, MONTH": "unit: YEAR, MONTH", +"Пароль для базовой авторизации": "Password for basic authorization", +"ОбработкаОбъект.OPI_HTTPКлиент": "DataProcessorObject.OPI_HTTPClient", +"УстановитьТелоИзДвоичныхДанных": "SetBodyFromBinaryData", "Выполнить произвольную команду": "Execute arbitrary command", -"Получить информацию о контакте": "Get contact information", +"Адрес и экземпляр сервера СУБД": "Database server address and instance", "Установить статус пользователя": "Set user status", -"Получить список внешних файлов": "Get list of external files", -"Структура, Массив из Структура": "Structure, Array of Structure", -"ПолучитьСтатусДобавленияТовара": "GetProductCreationStatus", -"Получает информацию о каталоге": "Get folder information", -"ПолучитьНастройкиПриватныйКлюч": "GetSettingsPrivateKey", -"СформироватьСтрокуВызоваМетода": "FormMethodCallString", -"Задача изменена, не расходимся": "The task has been changed, do not split up", -"ДобавитьПользователейВЧат (хук": "AddUsersToChat (wh", -"Изменяет ранее созданный товар": "Edits a previously created product", -"Параметр дополнительной услуги": "Additional service parameter", -"Слак_ОтправитьУдалитьЭфемерное": "Slack_SendDeleteEphemeral", -"ПолучитьКонфигурациюСоединения": "GetConnectionConfiguration", -"ПолучитьЗначенияХарактеристики": "GetAttributeValues", -"Дополнительный текст сообщения": "Additional message text", -"ОтправитьМестоположение (канал": "SendLocation (channel", -"ВыполнитьЗапросSQL (удаление 2": "ExecuteSQLQuery (deleting 2", -"Слак_ОтправитьУдалитьСообщение": "Slack_SendDeleteMessage", -"ОбработатьЗапросПередОтправкой": "ProcessRequestBeforeSending", -"СоздатьПерсональноеУведомление": "CreatePersonalNotification", -"ПолучитьСобытияКалендарей (хук": "GetCalendarEvents (wh", -"ИнициализироватьСерверныйПоток": "InitializeServerStream", -"ПолучитьСтрокуКлючейЗаголовков": "GetHeadersKeysString", -"Ноушн_ИзменитьСвойстваСтраницы": "Notion_EditPageProperties", -"Добавить поле multipart !NOCLI": "Add Multipart field !NOCLI", -"Отправляет http запрос с телом": "Send http request with body", -"СохранитьПубличныйОбъектНаДиск": "SavePublicObjectToDisk", "Использовать \"../../tools/http": "Use \"../../tools/http", "признак доступен для всех (Y|N": "feature is available for all (Y|N", "ID события календаря источника": "ID of the source calendar event", @@ -8596,7 +8670,6 @@ "Разделять массивы в URL !NOCLI": "Split arrays in URL", "ОбработатьВыполнениеКомандыSSH": "ProcessSSHCommandExecution", "ДобавитьЗаписи (без транзакции": "AddRecords (no tr", -"Некорректная структура запроса": "Incorrect request structure", "ТолстыйКлиентОбычноеПриложение": "ThickClientOrdinaryApplication", "ВыполнитьЗапросSQL (соединение": "ExecuteSQLQuery (connect", "Исключить пользователя из чата": "Delete user from chat", @@ -8607,225 +8680,67 @@ "ОтправитьСообщение (отложенное": "SendMessage (scheduled", "Успешность обращения к серверу": "Success of server access", "ПолучитьУчаствующиеТоварыАкции": "GetCurrentPromoProducts", +"Получить информацию о контакте": "Get contact information", "Размер файла в случае отправке": "File size in case of sending", -"Проверка_БитриксМассивНовостей": "Check_BitrixPostsArray", -"ПолучитьОписаниеЗаказа (Пустая": "GetOrderDescription (Empty", -"Получить список опубликованных": "Get published list", -"Получить описание файла !NOCLI": "Get file description !NOCLI", -"Выгнать пользователя из канала": "Kick user from channel", -"ПолучитьСписокКатегорийТоваров": "GetProductCategoryList", -"ПроверитьОбязательныеПоляСхемы": "CheckSchemeRequiredFields", -"КоличествоПараметров - 1 Тогда": "NumberOfParameters - 1 Then", -"ПолучитьПереводыПлатежейНаДату": "GetDeliveryCashTransfers", -"ПолучитьДвоичныеДанныеИзСтроки": "GetBinaryDataFromString", -"Проверка_БитриксМассивОбъектов": "Check_BitrixObjectsArray", -"Техническое наименование видео": "Technical name of the video", -"Задача невыполнима, расходимся": "Task impossible, let's split up", -"Получить ссылку загрузки файла": "Get file upload link", -"УправлениеСостояниемТемыФорума": "ManageForumTopicState", -"Добавить пользователей к файлу": "Add users to file", -"ЗаполнитьПараметрыЗагрузкиФото": "FillPhotoUploadParameters", -"Краткое описание второй записи": "Second record summary", -"Завершить отправку GRPC !NOCLI": "Complete GRPC sending !NOCLI", -"УдалитьУведомление (приложение": "DeleteNotification (app", -"Получить список версий объекта": "Get list of object versions", -"Ограничение выборки результата": "Limiting the result selection", -"ИзменитьПуть (проверка, старый": "UpdatePath (check, old", -"ПолучитьЗанятостьПользователей": "GetUserBusy", -"показывать отклоненные события": "show rejected events", -"Пакет библиотеки для OneScript": "Library package for OneScript", -"ПолучитьКоллекциюКлючИЗначение": "GetKeyValueCollection", -"Добавить данные Related !NOCLI": "Add data as Related !NOCLI", -"ID счетчика для восстановления": "Counter ID for restoring", -"file\"\" + ИспользуемоеИмя, Файл": "file\"\" + DisplayedName, File", -"Удаляет ранее созданный альбом": "Deletes a previously created album", -"Удаляет тестовый элемент по ID": "Deletes a test item by ID", -"Bitrix24_ПоместитьФайлВКорзину": "Bitrix24_MarkFileAsDeleted", -"Имя поля БД с выбором значения": "Name of field with a value selection", -"Получить параметры авторизации": "Get auth parameters", -"ОткрытьСоединение (перед базой": "CreateConnection (before base", -"Копирует один каталог в другой": "Copy one folder to another", -"Получить структуру комментария": "Get comment structure", -"физическое расположение тестов": "physical location of tests", -"ПолучитьСписокРезультатов (хук": "GetResultsList (wh", -"ВыполнитьЗапросSQL (удаление 1": "ExecuteSQLQuery (deleting 1", -"ПолучитьОписаниеДоговоренности": "GetAppointmentDescription", -"Bitrix24_ЗагрузитьФайлВКаталог": "Bitrix24_UploadFileToFolder", -"Явно завершает процесс сервера": "Explicitly terminates the server process", -"СформироватьТекстAlterTableAdd": "FormTextAlterTableAdd", -"Идентификатор клиента (Account": "Client identifier (Account", -"Методы интеграции с Viber (ОПИ": "Viber integration methods (OpenIntegrations", -"тип: employee, extranet, email": "type: employee, extranet, email", -"Удалить уведомление из очереди": "Delete notification from queue", -"ПолучитьСтрокуИзДвоичныхДанных": "GetStringFromBinaryData", -"УдалитьТрудозатратыЗадачи (хук": "DeleteTaskTimeAccounting (wh", -"ПолучитьКомменатрийЗадачи (хук": "GetTaskComment (wh", -"Файл на диске или данные файла": "File on disk or file data", -"Краткое описание первой записи": "First record summary", -"ГарантироватьТаблицу (проверка": "EnsureTable (check", -"■|#color=Зеленый) Библиотека -": "■|#color=Green) Library -", -"Текст комментария трудозатраты": "Comment text", -"ВызватьМетод: отправка запроса": "ExecuteMethod: sending request", -"ПолучитьЗаписи (без параметров": "GetRecords (no params", -"СохранитьКартинкуВАльбом (путь": "SaveImageToAlbum (path", -"Mongo_УправлениеПользователями": "Mongo_UserManagement", -"НоушнАпи_ПолучитьПользователей": "NotionAPI_GetUsers", -"ID пользователя для добавления": "User ID to add", -"Создать/Удалить составной пост": "Create/Delete composite post", -"Подключиться и получить данные": "Connect and receive data", -"МаксимальноеЧислоПереадресаций": "MaximumNumberOfRedirects", -"Добавить пользователей к папке": "Add users to folder", -"Bitrix24_ПолучитьИсториюЗадачи": "Bitrix24_GetTaskHistory", -"Идентификатор заказа в ИС СДЭК": "Order identifier in CDEK system", -"Удаляет пользователя по логину": "Deletes a user by login", -"РазблокироватьПользователяЧата": "UnblockChatUser", -"ВыполнитьЭлементЧеклистаЗадачи": "CompleteTasksChecklistElement", -"Буквенно-цифровой код ПВЗ СДЭК": "Alphanumeric code of CDEK POZ", -"О механизме в документации AWS": "Process at AWS documentation", -"УдалитьБазуДанных (подключение": "DeleteDatabase (connect", -"ИзменитьКомментарийЗадачи (хук": "UpdateTaskComment (wh", -"Сформировать параметры доступа": "Form access parameters", -"Открыть соединение GRPC !NOCLI": "Create GRPC connection !NOCLI", -"ПолучитьСтруктуруФильтраСделок": "GetDealsFilterStructure", -"ПодключитьРасширение (закрытие": "ConnectExtension (closing", -"ЯДиск_ПолучитьИнформациюОДиске": "YDisk_GetDiskInfo", -"Использовать \"../../../../core": "Use \"../../../../core", -"Отметить пункт как выполненный": "Mark as completed", -"Получить список сообщений чата": "Get chat messages list", -"ОбработатьДвунаправленныйПоток": "ProcessBidirectionalStream", -"СоздатьТвитКартинки (одиночная": "CreateImageTweet (single", -"ДобавитьКомментарийЗадачи (хук": "AddTaskComment (wh", -"включение автоматических целей": "auto-targeting", -"Добавить файл multipart !NOCLI": "Add Multipart file !NOCLI", -"Получить информацию о странице": "Get page info", -"Структура JSON данных страницы": "The structure of the JSON page data", -"Путь или набору путей к файлам": "Path or set of paths to the files", -"ЗаменитьСтандартныеОсобенности": "ReplaceDefaultFeatures", -"file|\" + ИспользуемоеИмя, Файл": "file|\" + DisplayedName, File", -"Удаляет файл или каталог по ID": "Deletes file or directory by ID", -"ID пользователя для блокировки": "User ID to be blocked", -"Идентификатор удаляемого листа": "IdentifierOfSheetToDelete", -"Создает новый тестовый элемент": "Creates a new test item", -"Назначить права администратора": "Set admin rights", -"Ответить на событие клавиатуры": "Answer button event", -"RPortal_УправлениеРезультатами": "RPortal_ResultsManagement", -"ОткрытьСоединение (прокси + tls": "CreateConnection (proxy + tls", -"ЗакончилисьПозиционныеПараметры": "PositionParamsEnded", -"Получить информацию об аккаунте": "Get account information", -"Восстанавливает файл из корзины": "Restore file from recycle bin", -"СформироватьПараметрыСоединения": "FormConnectionParameters", -"Удалить заявку на вызов курьера": "Delete courier invitation", -"Файл.Размер() + 2).Равно(Истина": "File.Size() + 2).Equal(True", -"VK_СоздатьСсылкуПолученияТокена": "VK_CreateTokenRetrievalLink", -"Размер одной части при загрузке": "Part size when uploading", -"ОзонАПИ_АтрибутыИХарактеристики": "OzonAPI_AttributesAndFeatures", -"ИспользоватьMultipartПоляВOAuth": "UseMultipartFieldsAtOAuth", -"Двоичные данные или пути к фото": "Binary Data or Photo Paths", -"в виде `{'blob':Base64 строка}`": "as `{'blob':Base64 string}`", -"ОткрытьДвунаправленныйПотокGRPC": "OpenBidirectionalGRPCStream", -"Количество переадресаций !NOCLI": "Redirect count !NOCLI", -"ДобавитьТрудозатратыЗадачи (хук": "AddTaskTimeAccounting (wh", -"ПолучитьСписокВыполненныхТестов": "GetExecutedTestsList", -"ПолучитьСтруктуруОстатковТовара": "GetProductStocksStructure", -"Удалить вариант свойства товара": "Delete product property variant", -"Целевой путь файла на Neocities": "File path on Neocities", -"Путь назначение для перемещения": "Destination path for moving", -"СформироватьТекстCreateDatabase": "FormTextCreateDatabase", -"Modules/OPI_РасширенныйВызов.os": "Modules/OPI_AdvancedCall.os", -"ПолучитьОтветВКонтексте (сид, 3": "GetContextResponse (seed, 3", -"ИнициализироватьЗагрузкуЧастями": "InitPartsUpload", -"Установить параметры URL !NOCLI": "Set URL params !NOCLI", -"дата окончания события (строкой": "event end date (as string", -"ПарсерАргументовКоманднойСтроки": "CommandLineArgumentParser", -"ЯДиск_ДействияПубличныхОбъектов": "YDisk_PublicObjectActions", -"color=Зеленый) Доступные методы": "color=Green) Available methods", -"Отправить данные частями !NOCLI": "Send data in parts !NOCLI", -"Курьеру необходима доверенность": "The courier needs a letter of attorney", -"Обновить характеристики товаров": "Update products attributes", -"Создать ссылку получения токена": "Create token retrieval link", -"ПолучитьСписокТрудозатратЗадачи": "GetTaskTimeAccountingList", -"ОтправитьУведомлениеОВводе (хук": "SendWritingNotification (wh", -"МинимальныйРазмер).Равно(Истина": "MinimumSize).Equal(True", -"Удаляет текущего бота из канала": "Removes the current bot from the channel", -"Задача выполнима, не расходимся": "Task uninpossible, don't split up", -"Получить сообщение пользователя": "Get user message", -"ПолучитьХарактеристикиКатегории": "GetCategoryAttributes", -"Строка подключения к базе MSSQL": "MSSQL connection string", -"Проверка_ДропБоксПубличнаяПапка": "Check_DropboxPublicFolder", -"ПолучитьСтруктуруФильтраТоваров": "GetProductsFilterStructure", -"ПолучитьСтруктуруВнешнейТаблицы": "GetExternalTableStructure", -"Получает историю сообщений чата": "Retrieves the chat message history", -"Получает значения ячеек таблицы": "Gets cell values of the table", -"Заблокировать пользователя чата": "Block chat user", -"Останавливает запущенный сервер": "Stops a running server", -"Вид сервиса, если отличен от s3": "Type of service, if different from s3", -"Строка подключения к базе MySQL": "MySQL database connection string", -"Соответствие заголовков запроса": "Request headers mapping", -"Создает новое событие календаря": "Creates a new calendar event", -"b>Полужирный текст сообщенияBold textПолужирный текст сообщенияBold textТекст html %F0%9F%93%9E 10%Text html %F0%9F%93%9E 10%Новый полужирный текст сообщенияNew bold message textНовый полужирный текст сообщенияNew bold message text SKU товара, Значение > Штрихкод": "Key > product SKU, Value > barcode", +"Структура параметров не содержит адрес": "The parameter structure does not contain an address", +"Является ли офис только пунктом выдачи": "Is the office only a delivery point", +"Дополнительные query параметры запроса": "Additional query parameters of the request", +"Статус пользователя: online, dnd, away": "Status value: online, dnd, away", +"Проверка_ОзонДобавлениеКодов(Результат": "Check_OzonCodesUpload(Result", +"Создает твит с произвольным содержимым": "Creates a tweet with custom content", +"сериализованный JSON ответа от Dropbox": "serialized JSON response from Dropbox", +"Уникальный ID запроса, если необходимо": "Unique request ID, if necessary", +"Признак использования AWS4 авторизации": "Flag to use AWS4 authorization", +"Установить статус участия пользователя": "Set user participation status", +"Некорректный статус управления форумом": "Incorrect forum management status", +"Формирует клавиатуру по массиву кнопок": "Forms a keyboard from an array of buttons", +"Bitrix24_СоздатьРезультатИзКомментария": "Bitrix24_CreateResultFromComment", +"Получить структуру завершения элемента": "Get item completion structure", +"Генерирует новые штрихкоды для товаров": "Generates new barcodes for products", +"ОбработатьЗапрос: Формирование запроса": "ProcessRequest: Forming a request", +"Модуль для работы с RCON из набора ОПИ": "RCON Module of OpenIntegrations", +"Получает события бота в Polling режиме": "Receives bot events in Polling mode", +"фильтр по содержанию подстроки в полях": "filter by substring content in fields", +"Удалить полностью (Истина) или закрыть": "Delete completely (True) or close", +"ПолучитьНастройкиВерсионированияБакета": "GetBucketVersioning", +"Проверка_ОзонЗаданиеЗагрузки(Результат": "Check_OzonUploadTask(Result", +"ID последнего непрочитанного сообщения": "ID of last unreaded message", +"Признак удаления отложенного сообщения": "Indicator of deleting a delayed message", +"Читает данные из указанного соединения": "Reads data from the specified connection", +"Bitrix24_ПолучитьВнешнююСсылкуКаталога": "Bitrix24_GetFolderExternalLink", +"Создает комментарий к записи в таблице": "Creates a comment for a record in the table", +"Новые данные документов для обновления": "New document data for update", +"Таймаут по умолчанию равен 3600 секунд": "Default timeout is 3600 seconds", +"Получить структуру фильтра отправлений": "Get shipments filter structure", +"сериализованный JSON ответа от Twitter": "serialized JSON response from Twitter", "Проверить загрузку изображений товаров": "Check products images upload", -"ID версии (ревизии) для восстановления": "ID of the version (revision) for restoration", -"Получает очередное сообщение из потока": "Gets the next message from the stream", -"Строка, Число, Массив из Строка, Число": "String, Number, Array of String, Number", -"Получить структуру элемента фида (Atom": "Get feed item structure (Atom", -"ПолучитьОписаниеДоговоренности (Пустая": "GetAppointmentDescription (empty", -"CLI_GreenAPI_ПолучитьQR(ПараметрыТеста": "CLI_GreenAPI_GetQR(TestParameters", -"Модуль для работы с SFTP из набора ОПИ": "Module for working with SFTP from the OpenIntegrations package", -"Установка адаптивной ширины невозможна": "Adaptive width unavailable", -"CLI версия Открытого пакета интеграций": "CLI version of OpenIntegrations", -"Создает новый бакет с выбранным именем": "Creates a new bucket with the specified name", -"единица измерения для веса, например g": "unit of measurement for weight, e.g. g", -"Общие модули проекта бывают двух видов": "The project's common modules come in two types", -"строка с системным промптом для модели": "system prompt for the model", -"Перемещает один каталог внутрь другого": "Moves one folder inside another", -"Отправляет файл по URL в выбранный чат": "Sends a file from web to the selected chat room", -"В чат, по URL, с указанием имени файла": "In chat, by URL, with file name", -"Устанавливает коллекцию параметров URL": "Sets a collection of URL parameters", -"Структура авторизации или путь к .json": "Auth data or path to .json file", -"Получить app_id на странице приложения": "Get app_id at the application page", -"Модуль для работы с Ozon из набора ОПИ": "Ozon Module of OpenIntegrations", -"Прекращает наблюдение за задачей по ID": "Stop watching a task by ID", +"Удаляет конфигурацию шифрования бакета": "Deletes the bucket encryption configuration", "Изменяет значения полей счетчика по ID": "Changes counter field values by ID", +"Прекращает наблюдение за задачей по ID": "Stop watching a task by ID", +"Модуль для работы с Ozon из набора ОПИ": "Ozon Module of OpenIntegrations", +"Получить app_id на странице приложения": "Get app_id at the application page", +"Структура авторизации или путь к .json": "Auth data or path to .json file", +"Устанавливает коллекцию параметров URL": "Sets a collection of URL parameters", +"В чат, по URL, с указанием имени файла": "In chat, by URL, with file name", +"Отправляет файл по URL в выбранный чат": "Sends a file from web to the selected chat room", +"Перемещает один каталог внутрь другого": "Moves one folder inside another", +"строка с системным промптом для модели": "system prompt for the model", +"Общие модули проекта бывают двух видов": "The project's common modules come in two types", "ОжидатьВходящиеСоединения (подключение": "WaitIncomingConnections (connection", +"единица измерения для веса, например g": "unit of measurement for weight, e.g. g", +"CLI версия Открытого пакета интеграций": "CLI version of OpenIntegrations", +"Установка адаптивной ширины невозможна": "Adaptive width unavailable", +"Модуль для работы с SFTP из набора ОПИ": "Module for working with SFTP from the OpenIntegrations package", +"CLI_GreenAPI_ПолучитьQR(ПараметрыТеста": "CLI_GreenAPI_GetQR(TestParameters", +"ПолучитьОписаниеДоговоренности (Пустая": "GetAppointmentDescription (empty", +"Получить структуру элемента фида (Atom": "Get feed item structure (Atom", +"Строка, Число, Массив из Строка, Число": "String, Number, Array of String, Number", +"Получает очередное сообщение из потока": "Gets the next message from the stream", +"Получает список всех событий календаря": "Gets the list of all calendar events", +"настройки предустановленных календарей": "preset calendar settings", +"Имя бакета, в котором находится объект": "Name of the bucket in which the object is stored", +"Создает новый бакет с выбранным именем": "Creates a new bucket with the specified name", "Получает информацию об указанных полях": "Gets information about the specified fields", -"Двоичное тело запроса или путь к файлу": "Binary data or file of request body data", +"ID версии (ревизии) для восстановления": "ID of the version (revision) for restoration", "Возвращает объект текущего HTTP ответа": "Returns the object of the current HTTP response", +"УдалитьПользовательскоеПолеЗадачи (хук": "DeleteCustomTaskField (wh", +"Сохраняет публичный объект на ваш диск": "Saves the public object to your disk", +"дни недели: SU, MO, TU, WE, TH, FR, SA": "days of the week: SU, MO, TU, WE, TH, FR, SA", +"Завершаем получение со стороны сервера": "Completing server-side reception", +"Получить список подборок по массиву ID": "Gets the list of selections by array of IDs", +"Сохраняет картинку в альбом сообщества": "Saves an image to the community album", +"Передавайте до 200 SKU в одном запросе": "Send up to 200 SKUs in a single request", +"Истина > Деактивация, Ложь > Активация": "True > Deactivation, False > Activation", +"Получить ссылку авторизации приложения": "Get app authentication link", +"ПолучитьСписокПросмотревшихВажное (хук": "GetImportantPostViewers (wh", +"Получает список тегов выбранных файлов": "Gets the list of tags of the selected files", +"название лида (можно искать по шаблону": "lead name (can be searched using the template [%", +"НачалоКодовОшибок И Ответ.КодСостояния": "StartOfErrorCodes And Response.StatusCode", +"ПроверитьСоответствиеИБПоследнейСборке": "CheckIBToLastBuildCompliance", "Создает базу данных с указанным именем": "Creates a database with the specified name", "Первое приветственное сообщение в чате": "First chat message", -"параметры для параметризованных тестов": "parameters for parameterized tests", +"ОтметитьСообщениеКакНепрочитанное (хук": "MarkMessageAsUnreaded", "Строка, Число, Массив Из Строка, Число": "String, Number, Array of String, Number", "Объект сервера или сообщение об ошибке": "Server object or error message", -"CommonModule.OPI_ПолучениеДанныхТестов": "CommonModule.OPI_TestDataRetrieval", +"параметры для параметризованных тестов": "parameters for parameterized tests", "Доп заголовки запроса, если необходимо": "Additional request headers, if necessary", "Получить статус асинхронного изменения": "Get asynchronous change status", "РаботаСКомментариямиИРезультатамиЗадач": "CommentsAndResultsManagement", "Bitrix24_УдалитьРезультатИзКомментария": "Bitrix24_DeleteResultFromComment", -"ПроверитьСоответствиеИБПоследнейСборке": "CheckIBToLastBuildCompliance", -"ОтметитьСообщениеКакНепрочитанное (хук": "MarkMessageAsUnreaded", -"название лида (можно искать по шаблону": "lead name (can be searched using the template [%", -"Получает список тегов выбранных файлов": "Gets the list of tags of the selected files", -"ПолучитьСписокПросмотревшихВажное (хук": "GetImportantPostViewers (wh", -"Получить ссылку авторизации приложения": "Get app authentication link", -"Истина > Деактивация, Ложь > Активация": "True > Deactivation, False > Activation", -"НачалоКодовОшибок И Ответ.КодСостояния": "StartOfErrorCodes And Response.StatusCode", -"Передавайте до 200 SKU в одном запросе": "Send up to 200 SKUs in a single request", -"Сохраняет картинку в альбом сообщества": "Saves an image to the community album", -"Получить список подборок по массиву ID": "Gets the list of selections by array of IDs", -"Завершаем получение со стороны сервера": "Completing server-side reception", -"дни недели: SU, MO, TU, WE, TH, FR, SA": "days of the week: SU, MO, TU, WE, TH, FR, SA", -"Сохраняет публичный объект на ваш диск": "Saves the public object to your disk", -"УдалитьПользовательскоеПолеЗадачи (хук": "DeleteCustomTaskField (wh", -"Удаляет конфигурацию шифрования бакета": "Deletes the bucket encryption configuration", -"Имя бакета, в котором находится объект": "Name of the bucket in which the object is stored", -"сериализованный JSON ответа от Twitter": "serialized JSON response from Twitter", -"Проверка_ОзонДобавлениеКодов(Результат": "Check_OzonCodesUpload(Result", -"Ссылка на хост API для отправки файлов": "Link to host API for sending files", -"Заменяет клавиатуру сообщения на новую": "Replaces the message keyboard with a new one", -"Получает информацию о выбранной модели": "Gets information about the model", -"Массив файлов с диска для прикрепления": "Array of files from disk to attach", -"Отбор по началу имени, если необходимо": "Filtering by the beginning of the name, if necessary", -"Адрес битрикс вида portal.bitrix24.com": "Current Bitrix URL (like 'portal.bitrix24.com')", -"Ozon_ПривязатьШтрихкоды(ПараметрыТеста": "Ozon_BindBarcodes(TestParameters", -"Создает новый объект для работы с HTTP": "Creates a new object to work with HTTP", -"Изменяет текст существующего сообщения": "Changes the text of an existing message", -"Получает описание поля строкового типа": "Gets the description of a string field", -"Получает список свойств товаров группы": "Gets the list of properties of group products", -"Структура параметров не содержит адрес": "The parameter structure does not contain an address", -"СтрПараметр.Имя, СтрПараметр.Пояснение": "StrParam.Name, StrParam.Explanation", -"ПолучитьСтатусУчастияПользователя (хук": "GetUserParticipationStatus (wh", -"Получает список файлов бота или канала": "Gets a list of files of the bot or channel", -"tests/Modules/internal/OPI_ТестыCLI.os": "tests/Modules/internal/OPI_TestsCLI.os", -"Получить структуру удаления документов": "Get document deletion structure", -"Устанавливает картинку группового чата": "Sets the group chat picture", -"Смещение в списке получаемых сообщений": "Offset in the list of received messages", -"Получить элемент чеклиста задачи по ID": "Gets tasks checklist element by ID", -"Код тарифа (подробнее см. приложение 1": "Tariff code", -"Получить структуру сообщения контекста": "Get context message structure", -"Изменяет артикулы существующих товаров": "Modifies articles of existing products", -"ПолучитьБуферДвоичныхДанныхИзHexСтроки": "GetBinaryDataBufferFromHexString", -"Ключ > SKU товара, Значение > Штрихкод": "Key > product SKU, Value > barcode", -"Является ли офис только пунктом выдачи": "Is the office only a delivery point", -"Получить структуру фильтра отправлений": "Get shipments filter structure", -"Статус пользователя: online, dnd, away": "Status value: online, dnd, away", -"Таймаут по умолчанию равен 3600 секунд": "Default timeout is 3600 seconds", -"Новые данные документов для обновления": "New document data for update", -"Создает комментарий к записи в таблице": "Creates a comment for a record in the table", -"Bitrix24_ПолучитьВнешнююСсылкуКаталога": "Bitrix24_GetFolderExternalLink", -"Читает данные из указанного соединения": "Reads data from the specified connection", -"Признак удаления отложенного сообщения": "Indicator of deleting a delayed message", -"ID последнего непрочитанного сообщения": "ID of last unreaded message", -"Проверка_ОзонЗаданиеЗагрузки(Результат": "Check_OzonUploadTask(Result", -"ПолучитьНастройкиВерсионированияБакета": "GetBucketVersioning", -"Удалить полностью (Истина) или закрыть": "Delete completely (True) or close", -"фильтр по содержанию подстроки в полях": "filter by substring content in fields", -"Получает события бота в Polling режиме": "Receives bot events in Polling mode", -"Модуль для работы с RCON из набора ОПИ": "RCON Module of OpenIntegrations", -"Дополнительные query параметры запроса": "Additional query parameters of the request", -"ОбработатьЗапрос: Формирование запроса": "ProcessRequest: Forming a request", -"Генерирует новые штрихкоды для товаров": "Generates new barcodes for products", -"Получить структуру завершения элемента": "Get item completion structure", -"Bitrix24_СоздатьРезультатИзКомментария": "Bitrix24_CreateResultFromComment", -"Формирует клавиатуру по массиву кнопок": "Forms a keyboard from an array of buttons", -"Некорректный статус управления форумом": "Incorrect forum management status", -"Установить статус участия пользователя": "Set user participation status", -"Признак использования AWS4 авторизации": "Flag to use AWS4 authorization", -"Уникальный ID запроса, если необходимо": "Unique request ID, if necessary", -"сериализованный JSON ответа от Dropbox": "serialized JSON response from Dropbox", -"Создает твит с произвольным содержимым": "Creates a tweet with custom content", -"Точка входа расширения, если необходима": "Expansion entry point, if required", -"Доп. параметры запроса, если необходимо": "Additional request parameters, if necessary", -"Инициализировать серверный поток !NOCLI": "Initialize server stream !NOCLI", -"Хеш функция для сигнатуры: SHA1, SHA256": "Hash function for signature: SHA1, SHA256", -"Изменяет выбранные настройки группового": "Changes selected group chat settings", -"Зафиксировать договоренность о доставке": "Register delivery appointment", -"Изменяет свойства существующей страницы": "Changes the properties of an existing page", -"ПолучитьПользовательскоеПолеЗадачи (хук": "GetCustomTaskField (wh", -"HTTPОтвет, Произвольный, ДвоичныеДанные": "HTTPResponse, Arbitrary, BinaryData", -"Существующее соединение или путь к базе": "Existing connection or database path", -"Сохраните **ключ** и **код** приложения": "Save the **application key** and **application code**", -"ID существующей группы, если необходимо": "ID of the existing group, if needed", -"Изменяет состав существующего сообщения": "Edits the content of an existing message", -"Создает каталог внутри другого каталога": "Create new folder inside another folder", -"UPD: В неизолированном режиме не падает": "UPD: NoIsolated works", -"Изменяет текст элемента чеклиста задачи": "Updates text of element of tasks checklist", -"Отправляет простой http запрос без тела": "Sends a simple http request without a body", -"Доп. заголовки запроса, если необходимо": "Additional request headers, if necessary", -"Обновляет данные документов в коллекции": "Updates document data in the collection", -"URL = ПараметрыФункции[\"Bitrix24_URL": "URL = FunctionParameters[\"Bitrix24_URL", +"CommonModule.OPI_ПолучениеДанныхТестов": "CommonModule.OPI_TestDataRetrieval", +"Двоичное тело запроса или путь к файлу": "Binary data or file of request body data", +"ПолучитьСтруктуруНастроекКалендаря (хук": "GetCalendarSettingsStructure (wh", +"Ограничение количества получаемых строк": "Limiting the number of received strings", +"URL, путь или данные файла для загрузки": "URL, path or file data", +"Путь к оригинальному файлу или каталогу": "Path to the original file or directory", +"сериализованный JSON ответа от Bitrix24": "serialized JSON of answer from Bitrix24 API", +"ПолучитьДанныеИспользованияПространства": "GetSpaceUsageData", +"Получение данных тестов (служебный, ОПИ": "Test Data Retrieval (Utility, OpenIntegrations", +"ПроверитьНеобходимостьПовторнойОтправки": "CheckResendNecessity", +"Возвращает объект текущего HTTP запроса": "Returns the object of the current HTTP request", +"Закрываем соединение со стороны сервера": "Close connection from server side", +"ИзменитьПользовательскоеПолеЗадачи (хук": "UpdateCustomTaskField (wh", +"Пароль для авторизации, если необходимо": "Authorization password, if required", +"Имя базы. Текущая база, если не указано": "Database name. Current database if not specified", +"Создает новую задачу по структуре полей": "Create new task by fields structure", +"device_code из ПолучитьКодПодтверждения": "device_code from GetConfirmationCode", +"Соединение или этот же объект обработки": "Connection or the same processor object", +"или описание существующего поля таблицы": "or description of an existing table field", +"Настройки TLS. См. ПолучитьНастройкиTls": "TLS settings. See GetTlsSettings", +"ПолучитьСтруктуруФильтраЗаписей (пустая": "GetRecordsFilterStructure (empty", +"Скопируйте код из URL после авторизации": "Copy the code from the URL after authorization", +"ДобавитьФайлRelated: Запись шапки блока": "AddFileAsRelated: Writing the block header", +"числовое значение временного промежутка": "numeric value of the time interval", +"Основной модуль инструментов набора ОПИ": "Main Tools Module of OpenIntegrations", +"Исключает текущего пользователя из чата": "Removes the current user from the chat room", +"Получает информацию об ассистенте по ID": "Retrieves information about an assistant by ID", +"Габариты упаковки. Длина (в сантиметрах": "Package Dimensions. Length (cm", +"Запускает новый сеанс выполнения тестов": "Starts a new test execution session", +"Создает новую сделку по структуре полей": "Creates a new deal by field structure", +"Bitrix24_ОтклонитьЗадачу(ПараметрыТеста": "Bitrix24_DisapproveTask(TestParameters", +"Перезаписывать файл при конфликте путей": "Overwrite file in case of path conflicts", +"УстановитьFormТело: Нет данных, пропуск": "SetFormBody: No data, skip", +"ОчиститьСписокЗакрепленныхСообщенийТемы": "ClearTopicPinnedMessagesList", +"МассивВариантов.Добавить(ПараметрыТеста": "OptionArray.Add(TestParameters", +"использование системы управления тегами": "use of a tag management system", +"идентификатор значения для перечислений": "enum ID", +"Зайти в раздел \"Управление\" в группе ВК": "Go to the 'Manage' section in the VK group", +"УстановитьТипДанных: установка значения": "SetDataType: setting the value", +"Создает результат задачи из комментария": "Create task result from comment", +"Получить количество подписчиков товаров": "Get product subscribers count", +"Вернуть ответ как JSON коллекцию !NOCLI": "Return response as JSON object !NOCLI", +"УстановитьТипДанных: Установка значения": "SetDataType: Setting the value", +"ПолучитьСтруктуруНастроекМодели (пустая": "GetModelSettingsStructure (empty", +"ПолучитьКонфигурациюСоединения (простой": "GetConnectionConfiguration (simple", +"Модуль для работы с Viber из набора ОПИ": "Viber Module of OpenIntegrations", +"Добавляет новый элемент чеклиста задачи": "Adds new element of tasks checklist", +"Изменяет данные выбранного пользователя": "Changes the data of the selected user", +"Модуль для работы со СДЭК из набора ОПИ": "CDEK Module of OpenIntegrations", +"параметр включает для товара пометку 18": "parameter includes mark for the product 18", +"идентификатор товара в системе продавца": "product identifier in the sellers system", +"Адрес подключения с протоколом и портом": "Connection address with protocol and port", "УстановитьJsonТело: Нет данных, пропуск": "SetJsonBody: No data, skip", +"URL = ПараметрыФункции[\"Bitrix24_URL": "URL = FunctionParameters[\"Bitrix24_URL", +"Обновляет данные документов в коллекции": "Updates document data in the collection", +"Доп. заголовки запроса, если необходимо": "Additional request headers, if necessary", +"Отправляет простой http запрос без тела": "Sends a simple http request without a body", +"Изменяет текст элемента чеклиста задачи": "Updates text of element of tasks checklist", +"UPD: В неизолированном режиме не падает": "UPD: NoIsolated works", +"Создает каталог внутри другого каталога": "Create new folder inside another folder", +"Изменяет состав существующего сообщения": "Edits the content of an existing message", +"ID существующей группы, если необходимо": "ID of the existing group, if needed", +"Сохраните **ключ** и **код** приложения": "Save the **application key** and **application code**", +"Существующее соединение или путь к базе": "Existing connection or database path", +"HTTPОтвет, Произвольный, ДвоичныеДанные": "HTTPResponse, Arbitrary, BinaryData", +"ПолучитьПользовательскоеПолеЗадачи (хук": "GetCustomTaskField (wh", +"Изменяет свойства существующей страницы": "Changes the properties of an existing page", +"Зафиксировать договоренность о доставке": "Register delivery appointment", +"Изменяет выбранные настройки группового": "Changes selected group chat settings", +"Хеш функция для сигнатуры: SHA1, SHA256": "Hash function for signature: SHA1, SHA256", +"Инициализировать серверный поток !NOCLI": "Initialize server stream !NOCLI", +"Доп. параметры запроса, если необходимо": "Additional request parameters, if necessary", +"Проверяет работоспособность токена бота": "Checks if the bot token is functional", "Фильтрация по категории и диапазону цен": "Category and price range filter", "сериализованный JSON ответа от VK Teams": "serialized JSON response from VK Teams", -"сериализованный JSON ответа от Airtable": "serialized JSON response from Airtable", +"Точка входа расширения, если необходима": "Expansion entry point, if required", "Получить список опубликованных объектов": "Get list of published objects", -"Получает список опубликованных объектов": "Gets a list of published objects", -"Для этой функции нет доступных настроек": "There are no available settings for this function", -"Тип поля: string, double, date, boolean": "Field type: string, double, date, boolean", -"ПолучитьСписокПользователейДиалога (хук": "GetChatMembersList", -"Выберите пункт **Локальное приложение**": "Select **Local Application**", -"Заменяет текст в сообщении с вложениями": "Replaces text in a message with media attachments", -"`{\"main.proto\": <переданное значение>}`": "`{\"main.proto\": }`", -"сбор статистики для работы Карты кликов": "collection of statistics for Click Map operation", -"дата перемещения лида на текущую стадию": "date of moving the lead to the current stage", -"Создает новый проект с указанным именем": "Creates a new project with the specified name", -"сериализованный JSON ответа от Telegram": "serialized JSON response from Telegram", -"Дата отправки для отложенного сообщения": "Sending date for delayed message", -"Запускает TCP сервер на указанном порту": "Starts a TCP server on the specified port", -"Код страны в формате ISO_3166-1_alpha-2": "Country code in ISO_3166-1_alpha-2 format", -"ДобавитьПользовательскоеПолеЗадачи (хук": "AddCustomTaskField (wh", -"Получить структуру фильтра комментариев": "Get structure of comments filter", -"ПолучитьИнформациюОбАккаунте (сторонний": "GetAccountInformation (third-party", -"Получает контент рейтинг товаров по SKU": "Gets products content rating by SKU", -"Массив ID участников группы или один ID": "Array of group member IDs or a single ID", -"Удаляет существующий комментарий задачи": "Delete task comment by ID", -"Получить описания харакетристик товаров": "Get products attributes data", "ДобавитьФайлRelated: запись шапки блока": "AddFileAsRelated: writing the block header", -"Адрес подключения с протоколом и портом": "Connection address with protocol and port", -"Проверяет работоспособность токена бота": "Checks if the bot token is functional", -"параметр включает для товара пометку 18": "parameter includes mark for the product 18", -"Габариты упаковки. Длина (в сантиметрах": "Package Dimensions. Length (cm", -"ДобавитьФайлRelated: Запись шапки блока": "AddFileAsRelated: Writing the block header", -"ИзменитьПользовательскоеПолеЗадачи (хук": "UpdateCustomTaskField (wh", -"ПолучитьСтруктуруФильтраЗаписей (пустая": "GetRecordsFilterStructure (empty", -"Настройки TLS. См. ПолучитьНастройкиTls": "TLS settings. See GetTlsSettings", -"или описание существующего поля таблицы": "or description of an existing table field", -"Соединение или этот же объект обработки": "Connection or the same processor object", -"device_code из ПолучитьКодПодтверждения": "device_code from GetConfirmationCode", -"Создает новую задачу по структуре полей": "Create new task by fields structure", -"Имя базы. Текущая база, если не указано": "Database name. Current database if not specified", -"Пароль для авторизации, если необходимо": "Authorization password, if required", -"числовое значение временного промежутка": "numeric value of the time interval", -"ПолучитьСтруктуруНастроекКалендаря (хук": "GetCalendarSettingsStructure (wh", -"Закрываем соединение со стороны сервера": "Close connection from server side", -"Возвращает объект текущего HTTP запроса": "Returns the object of the current HTTP request", -"ПроверитьНеобходимостьПовторнойОтправки": "CheckResendNecessity", -"Получение данных тестов (служебный, ОПИ": "Test Data Retrieval (Utility, OpenIntegrations", -"ПолучитьДанныеИспользованияПространства": "GetSpaceUsageData", -"сериализованный JSON ответа от Bitrix24": "serialized JSON of answer from Bitrix24 API", -"Путь к оригинальному файлу или каталогу": "Path to the original file or directory", -"URL, путь или данные файла для загрузки": "URL, path or file data", -"Ограничение количества получаемых строк": "Limiting the number of received strings", -"Скопируйте код из URL после авторизации": "Copy the code from the URL after authorization", -"Основной модуль инструментов набора ОПИ": "Main Tools Module of OpenIntegrations", -"Модуль для работы со СДЭК из набора ОПИ": "CDEK Module of OpenIntegrations", -"Получает информацию об ассистенте по ID": "Retrieves information about an assistant by ID", -"Изменяет данные выбранного пользователя": "Changes the data of the selected user", -"Добавляет новый элемент чеклиста задачи": "Adds new element of tasks checklist", -"Модуль для работы с Viber из набора ОПИ": "Viber Module of OpenIntegrations", -"ПолучитьКонфигурациюСоединения (простой": "GetConnectionConfiguration (simple", -"ПолучитьСтруктуруНастроекМодели (пустая": "GetModelSettingsStructure (empty", -"УстановитьТипДанных: Установка значения": "SetDataType: Setting the value", -"Вернуть ответ как JSON коллекцию !NOCLI": "Return response as JSON object !NOCLI", -"Получить количество подписчиков товаров": "Get product subscribers count", -"Создает результат задачи из комментария": "Create task result from comment", -"УстановитьТипДанных: установка значения": "SetDataType: setting the value", -"Исключает текущего пользователя из чата": "Removes the current user from the chat room", -"Зайти в раздел \"Управление\" в группе ВК": "Go to the 'Manage' section in the VK group", -"идентификатор значения для перечислений": "enum ID", -"использование системы управления тегами": "use of a tag management system", -"МассивВариантов.Добавить(ПараметрыТеста": "OptionArray.Add(TestParameters", -"ОчиститьСписокЗакрепленныхСообщенийТемы": "ClearTopicPinnedMessagesList", -"УстановитьFormТело: Нет данных, пропуск": "SetFormBody: No data, skip", -"Перезаписывать файл при конфликте путей": "Overwrite file in case of path conflicts", -"Bitrix24_ОтклонитьЗадачу(ПараметрыТеста": "Bitrix24_DisapproveTask(TestParameters", -"Создает новую сделку по структуре полей": "Creates a new deal by field structure", -"идентификатор товара в системе продавца": "product identifier in the sellers system", -"Запускает новый сеанс выполнения тестов": "Starts a new test execution session", -"Планируемая дата передачи заказов в СДЭК": "Planned date of transfer of orders to CDEK", -"Инициализировать клиентский поток !NOCLI": "Initialize client stream !NOCLI", -"Статус = Результат[\"requests\"][0][\"state": "Status = Result[\"requests\"][0][\"state", -"Получает информацию о пользователе по ID": "Gets user information by ID", -"Получить настройки (keyboard-interactive": "Get settings (keyboard-interactive)", -"РазделятьМассивыВURL: установка значения": "SplitArraysInURL: setting the value", -"Идентификатор товара в системе Ozon (SKU": "Product identifier in the Ozon system (SKU", -"Вернуть ответ как двоичные данные !NOCLI": "Return response as binary data", -"Удаляет календарь из списка пользователя": "Removes a calendar from the user's list", -"Максимальный размер данных для получения": "Maximum size of data to receive", -"Получает список файлов с отбором или без": "Get a list of files with or without filtering", -"Объект компоненты с открытым соединением": "AddIn object with open connection", -"ОтправитьКартинку (клавиатура, коллекция": "SendImage (keyboard, collection", -"УстановитьСтатусУчастияПользователя (хук": "GetUserParticipationStatus (wh", -"Получить структуру обновления документов": "Get document update structure", -"сериализованный JSON ответа от Green API": "serialized JSON response from Green API", -"Введите имя нового приложения и выберите": "Enter a name for the new application and select", -"Строка, файл или двоичные данные таблицы": "String, file, or binary data of the table", -"Получить количество входящих уведомлений": "Get incoming notification count", -"Код страны в формате ISO_3166-1_alpha-2": "Country code in the ISO_3166-1_alpha-2 format", -"ID пользователя для отправки уведомления": "User ID for sending the notification", -"Проверка_БитриксСтрока(Результат); SKIP": "Check_BitrixString(Result); SKIP", -"Отбор по региону бакета, если необходимо": "Selection by bucket region, if necessary", -"Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", -"Структура Из КлючИЗначение, Неопределено": "Structure Of KeyAndValue, Undefined", -"ID пользователей или одного пользователя": "IDs of users or a single user", -"УстановитьНастройкиВерсионированияБакета": "PutBucketVersioning", -"ID публичного каталога (shared folder ID": "ID of the public catalog (shared folder ID", -"УстановитьФайлОтвета: установка значения": "SetResponseFile: setting the value", -"Изменяет текст существующего комментария": "Changes the text of an existing comment", -"ОбработатьЗапрос: Установка тела запроса": "ProcessRequest: Setting the request body", -"Модуль для работы с Notion из набора ОПИ": "Notion Module of OpenIntegrations", -"Получает список версий (ревизий) объекта": "Gets the list of versions (revisions) of the object", -"название сделки (можно искать по шаблону": "deal name (can be searched using the template [%", -"Блокирует выбранного пользователя в чате": "Blocks the selected user in chat", -"Удаляет текстовый тег файла или каталога": "Deletes the text tag of a file or directory", -"тип данных, к которым применяется фильтр": "type of data to which the filter is applied", -"сериализованный JSON ответа от Neocities": "serialized JSON response from Neocities", -"Загружает файл на диск по заданному пути": "Uploads a file to disk at the specified path", -"УстановитьFormТело: нет данных - пропуск": "SetFormBody: no data - skip", -"Получает информацию о файле или каталоге": "Gets information about a file or directory", -"Удаляет ранее созданный вариант свойства": "Deletes the previously created product property variant", -"ПолучитьСтруктуруПараметровПредставлений": "GetEmbeddingsParameterStructure", -"ПолучитьОтветВКонтексте (предварительный": "GetContextResponse (preliminary", -"ПолучитьСтруктуруОбновленияХарактеристик": "GetAttributesUpdateStructure", -"Удаляет запись о трудозатратах из задачи": "Deletes record of time accounting", -"Ответ на запрос или информация об ошибке": "Response or error information", -"согласие с Договором об обработке данных": "consent to the Data Processing Agreement", -"ПолучитьКонфигурациюСоединиения (простой": "GetConnectionConfiguration (simple", -"Создает комментарий к файлу или каталогу": "Creates a comment for a file or directory", -"Строка, файл или двоичные данные запроса": "String, file, or binary data of the request", -"Некорректный набор данных для обновления": "Incorrect data set for updating", -"Получить количество сообщений к отправке": "Get outgoing message count", -"использовать доп. настройки отслеживания": "use advanced tracking settings", -"Изменяет данные тестового элемента по ID": "Updates data of a test item by ID", -"Габариты упаковки. Ширина (в сантиметрах": "Package Dimensions. Width (cm", -"ID характеристики для получения значений": "Attribute IDs for obtaining values", -"Массив идентификаторов вида photo123_123": "Array of identifiers like photo123_123", -"расширенный период учета оффлайн-заходов": "extended accounting period for offline visits", -"Добавляет список файлов к полям каталога": "Adds a list of files to the directory fields", +"Получить описания харакетристик товаров": "Get products attributes data", +"Удаляет существующий комментарий задачи": "Delete task comment by ID", +"Массив ID участников группы или один ID": "Array of group member IDs or a single ID", +"Получает контент рейтинг товаров по SKU": "Gets products content rating by SKU", +"ПолучитьИнформациюОбАккаунте (сторонний": "GetAccountInformation (third-party", +"сериализованный JSON ответа от Airtable": "serialized JSON response from Airtable", +"ДобавитьПользовательскоеПолеЗадачи (хук": "AddCustomTaskField (wh", +"Код страны в формате ISO_3166-1_alpha-2": "Country code in ISO_3166-1_alpha-2 format", +"Запускает TCP сервер на указанном порту": "Starts a TCP server on the specified port", +"Дата отправки для отложенного сообщения": "Sending date for delayed message", +"Получить структуру фильтра комментариев": "Get structure of comments filter", +"Создает новый проект с указанным именем": "Creates a new project with the specified name", +"дата перемещения лида на текущую стадию": "date of moving the lead to the current stage", +"сбор статистики для работы Карты кликов": "collection of statistics for Click Map operation", +"`{\"main.proto\": <переданное значение>}`": "`{\"main.proto\": }`", +"Заменяет текст в сообщении с вложениями": "Replaces text in a message with media attachments", +"Выберите пункт **Локальное приложение**": "Select **Local Application**", +"ПолучитьСписокПользователейДиалога (хук": "GetChatMembersList", +"Тип поля: string, double, date, boolean": "Field type: string, double, date, boolean", +"Для этой функции нет доступных настроек": "There are no available settings for this function", +"сериализованный JSON ответа от Telegram": "serialized JSON response from Telegram", +"Получает список опубликованных объектов": "Gets a list of published objects", "сериализованный JSON ответа от хранилища": "serialized JSON response from storage", "Получает информацию о выбранном контакте": "Gets information about the selected contact", "Модуль для работы со Slack из набора ОПИ": "Slack Module of OpenIntegrations", -"tools/Modules/OPI_ПреобразованиеТипов.os": "tools/Modules/OPI_TypeConversion.os", +"Удаляет указанное уведомление из очереди": "Deletes the specified notification from the queue", "Получает цены товаров с фильтром или без": "Gets products prices with or without filter", "БезРазделения, Разделение, РазделениеPhp": "NoSeparation, Separation, SeparationPhp", "// #Использовать \"../../../../../../http": "//#Use \"../../../../../../http", -"Удаляет указанное уведомление из очереди": "Deletes the specified notification from the queue", +"tools/Modules/OPI_ПреобразованиеТипов.os": "tools/Modules/OPI_TypeConversion.os", +"Добавляет список файлов к полям каталога": "Adds a list of files to the directory fields", +"ПолучитьКонфигурациюСоединиения (простой": "GetConnectionConfiguration (simple", +"Массив идентификаторов вида photo123_123": "Array of identifiers like photo123_123", +"ID характеристики для получения значений": "Attribute IDs for obtaining values", +"Габариты упаковки. Ширина (в сантиметрах": "Package Dimensions. Width (cm", +"Изменяет данные тестового элемента по ID": "Updates data of a test item by ID", +"использовать доп. настройки отслеживания": "use advanced tracking settings", +"Получить количество сообщений к отправке": "Get outgoing message count", +"Некорректный набор данных для обновления": "Incorrect data set for updating", +"Создает комментарий к файлу или каталогу": "Creates a comment for a file or directory", "Устанавливает режим Без звука для задачи": "Mute task by ID", +"расширенный период учета оффлайн-заходов": "extended accounting period for offline visits", "Изменяет наименование существующей книги": "Changes the name of the existing spreadsheet", -"Ошибка валидации JSON массива параметров": "JSON parameter array validation error!", -"Произвольный, Структура Из КлючИЗначение": "Arbitrary, Structure Of KeyAndValue", -"E-mail для отправки почтовых приглашений": "E-mail for sending invitations", -"УстановитьJsonТело: нет данных - пропуск": "SetJsonBody: no data - skip", -"ПолучитьОписаниеОбъекта (Ссылка загрузки": "HeadObject (Upload link", -"Добавляет стадию канбана или Моего плана": "Add new stage of kanban or My Plan", -"Модуль для работы с Ollama из набора ОПИ": "Ollama Module of OpenIntegrations", -"ПолучитьЗаблокированныхПользователейЧата": "GetChatBlockedUsers", -"Получает заявку на вызов курьера по UUID": "Gets сourier invitation by UUID", -"Модуль работы с криптографией набора ОПИ": "Cryptography Module of OpenIntegrations", -"Скачивает файл по указанному пути или ID": "Downloads a file by the specified path or ID", "Список позиций имеет некорректный формат": "The list of items has an incorrect format", -"Отправляет данные в указанное соединение": "Sends data to the specified connection", -"Кодировка преобразования данных в строку": "Encoding of data conversion to string", -"Получение сообщений из серверного потока": "Receiving messages from the server stream", -"ПолучитьСоответствиеРазделовТестирования": "GetTestingSectionMapping", -"Габариты упаковки. Высота (в сантиметрах": "Package Dimensions. Height (cm", -"Получает список пользователей чата по ID": "Gets the list of chat users by ID", -"Получить структуру фильтра пользователей": "Get user filter structure", -"ПолучитьДеревоКатегорийИТиповТоваров (EN": "GetCategoriesAndProductTypesTree (EN", -"IDЗадания = Результат[\"result\"][\"task_id": "TaskID = Result[\"result\"][\"task_id", -"Массив вариантов опроса, если необходимо": "Array of poll options, if necessary", +"Произвольный, Структура Из КлючИЗначение": "Arbitrary, Structure Of KeyAndValue", +"согласие с Договором об обработке данных": "consent to the Data Processing Agreement", "название задачи (можно искать по шаблону": "task name (can be searched using the template [%", -"отсутствуют основные параметры соединения": "missing main connection parameters", -"Получает последнее уведомление из очереди": "Gets the latest notification from the queue", -"ДобавитьПолеMultipart: Запись шапки блока": "AddMultipartFormDataField: Writing the block header", -"Получить структуру параметров в контексте": "Get context parameter structure", -"Авторизует инстанс по коду доступа из SMS": "Authorizes the instance using the access code from SMS", -"Bitrix24_ПолучитьСписокКомментариевЗадачи": "Bitrix24_GetTaskCommentsList", -"Удаляет указанного пользователя из канала": "Removes specified user from channel", -"Модуль для работы с Dropbox из набора ОПИ": "Dropbox Module of OpenIntegrations", -"Структура или соответствие параметров URL": "Structure or map of URL parameters", -"Создает комментарий под выбранной записью": "Creates a comment under the selected record", -"Получает информацию о кластерах и складах": "Gets information about clusters and warehouses", -"'Имя поля 2': {'Тип данных': 'Значение'},": "'Field name 2': {'Type': 'Value'},", -"ИспользоватьКодировку: Установка значения": "UseEncoding: Setting the value", -"Устанавливает новые метаданные соединения": "Sets new connection metadata", -"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_URL", -"Кодировка, в которой записаны JSON данные": "Encoding of JSON Data", -"Формирует структуру данных для обновления": "Forms data structure for update", -"ПолучитьСтруктуруНастроекИнстанса (пустая": "GetInstanceSettingsStructure (empty", -"Исключает выбранного пользователя из чата": "Deletes user from chat", -"УстановитьFormТело: начало установки тела": "SetFormBody: beginning of body setting", -"Не удалось сохранить ошибку в файл вывода": "Failed to save the error to the output file", -"Bitrix24_ПолучитьДочерниеЭлементыКаталога": "Bitrix24_GetFolderItems", -"Удаляет новость из ленты по выбранному ID": "Remove post from a news feed", -"'Имя поля 1': {'Тип данных': 'Значение'},": "'Field name 1': {'Type': 'Value'},", -"Bitrix24_ПолучитьСписокХранилищПриложения": "Bitrix24_GetAppStoragesList", -"Истина > сразу запускает созданный сервер": "True > immediately starts the created server", -"СформироватьЗапрос: Добавление параметров": "FormRequest: Adding parameters", -"Отправляет внешний файл по списку каналов": "Sends an external file to a list of channels", -"действия будут выполняться от лица группы": "actions will be performed on behalf of the group", -"ПолучитьСтруктуруФильтраСобытийКалендарей": "GetCalendarEventsFilterStructure", -"Инициализирует загрузку объекта по частям": "Initializes the multipart object uploading", -"Публикует объект диска в публичный доступ": "Publishes the disk object for public access", -"ПолучитьСтруктуруСобытияКалендаря (пустая": "GetCalendarEventsStructure (empty", -"Сформировать клавиатуру по массиву кнопок": "Generate keyboard from array of buttons", -"Уникальный идентификатор фида (обычно URL": "Feed unique identifier (usually a URL", -"Получает список элементов чеклиста задачи": "Gets the list of elements on the task checklist", -"Текстовое описание картинки для генерации": "Text description of the image for generation", -"Истина > возвращает поля как соответствие": "True > returns fields as map", -"Получает список всех комментариев объекта": "Gets the list of all comments of the object", -"Изменяет свойства существующего календаря": "Edits properties of an existing calendar", -"расширенный период учета офлайн-конверсий": "extended accounting period for offline conversions", -"ОтменитьЗаписьMultipart: Файл тела удален": "CancelMultipartBody: The body file has been deleted", -"Получает список записей выбранной таблицы": "Gets the list of records of the selected table", -"и пройдите процедуру создания нового бота": "and follow the procedure to create a new bot", -"Путь к базе. In memory, если не заполнено": "Path to database. In memory, if not filled", -"Открыть двунаправленный поток GRPC !NOCLI": "Open bidirectional GRPC stream !NOCLI", -"Перейдите в **[основной интерфейс Notion]": "Go to the **[main interface of Notion]", -"Возвращает URL для авторизации в браузере": "Returns URL for browser authorization", -"Получить структуру доп. полей отправления": "Get shipment additional fields", -"дата перемещения сделки на текущую стадию": "date of moving the deal to the current stage", -"Формирует коллекцию параметров соединения": "Forms a collection of connection parameters", -"Явно закрывает созданное ранее соединение": "Explicitly closes a previously created connection", -"Получает описание поля с номером телефона": "Gets the description of a phone number field", -"идентификатор автора последнего изменения": "author ID of the last change", -"Модуль для работы с Twitter из набора ОПИ": "Twitter Module of OpenIntegrations", -"Добавляет данные для OAuth v1 авторизации": "Adds data for OAuth v1 authorization", -"УстановитьFormТело: Начало установки тела": "SetFormBody: Beginning of body setting", -"Путь или несколько путей удаляемых файлов": "Path or multiple paths of the files to be deleted", -"// #Использовать \"../../../../../../http\"": "//#Use \"../../../../../../http\"", -"Получить настройки версионирования бакета": "Get bucket versioning", -"МаксимумПереадресаций: установка значения": "MaxRedirects: setting the value", -"ИспользоватьКодировку: установка значения": "UseEncoding: setting the value", -"связь со следующим условием: AND, OR и пр": "connection with the following condition: AND, OR, etc.", -"ДобавитьФайлMultipart: запись шапки блока": "AddMultipartFile: writing the block header", -"Сформировать клавиатуру из массива кнопок": "Create a keyboard from an array of buttons", -"Изменяет значения полей выбранного заказа": "Changes the field values of the selected order", -"Получает список доступных хранилищ файлов": "Get list of available files storages", -"Инициализирует серверный поток для обмена": "Initializes a server stream for exchange", -"ДобавитьФайлMultipart: Запись шапки блока": "AddMultipartFormDataFile: Writing the block header", -"Получает каталог для хранения файлов чата": "Get information about folder for chat files", -"Использовать \"./internal/Modules/internal": "Use \"./internal/Modules/internal", -"Создает ассистента по модели и инструкции": "Creates an assistant based on the model and instruction", -"Интервал между попытками получения данных": "Interval between data retrieval attempts", -"Добавляет данные в multipart/related тело": "Adds data to the multipart/related body", -"Изменяет наименование и|или описание базы": "Changes the name and/or description of the base", -"ID цитируемого сообщения, если необходимо": "Replying message id if necessary", +"Массив вариантов опроса, если необходимо": "Array of poll options, if necessary", +"IDЗадания = Результат[\"result\"][\"task_id": "TaskID = Result[\"result\"][\"task_id", +"ПолучитьДеревоКатегорийИТиповТоваров (EN": "GetCategoriesAndProductTypesTree (EN", +"Получить структуру фильтра пользователей": "Get user filter structure", +"Получает список пользователей чата по ID": "Gets the list of chat users by ID", +"Габариты упаковки. Высота (в сантиметрах": "Package Dimensions. Height (cm", +"ПолучитьСоответствиеРазделовТестирования": "GetTestingSectionMapping", +"Получение сообщений из серверного потока": "Receiving messages from the server stream", +"Кодировка преобразования данных в строку": "Encoding of data conversion to string", +"Отправляет данные в указанное соединение": "Sends data to the specified connection", +"Скачивает файл по указанному пути или ID": "Downloads a file by the specified path or ID", +"Модуль работы с криптографией набора ОПИ": "Cryptography Module of OpenIntegrations", +"Получает заявку на вызов курьера по UUID": "Gets сourier invitation by UUID", +"ПолучитьЗаблокированныхПользователейЧата": "GetChatBlockedUsers", +"Модуль для работы с Ollama из набора ОПИ": "Ollama Module of OpenIntegrations", +"Добавляет стадию канбана или Моего плана": "Add new stage of kanban or My Plan", +"ПолучитьОписаниеОбъекта (Ссылка загрузки": "HeadObject (Upload link", +"УстановитьJsonТело: нет данных - пропуск": "SetJsonBody: no data - skip", +"E-mail для отправки почтовых приглашений": "E-mail for sending invitations", +"Ошибка валидации JSON массива параметров": "JSON parameter array validation error!", +"Ответ на запрос или информация об ошибке": "Response or error information", +"Строка, файл или двоичные данные запроса": "String, file, or binary data of the request", +"ПолучитьСтруктуруОбновленияХарактеристик": "GetAttributesUpdateStructure", +"Код страны в формате ISO_3166-1_alpha-2": "Country code in the ISO_3166-1_alpha-2 format", +"Получить количество входящих уведомлений": "Get incoming notification count", +"Строка, файл или двоичные данные таблицы": "String, file, or binary data of the table", +"Введите имя нового приложения и выберите": "Enter a name for the new application and select", +"сериализованный JSON ответа от Green API": "serialized JSON response from Green API", +"Получить структуру обновления документов": "Get document update structure", +"УстановитьСтатусУчастияПользователя (хук": "GetUserParticipationStatus (wh", +"ОтправитьКартинку (клавиатура, коллекция": "SendImage (keyboard, collection", +"Объект компоненты с открытым соединением": "AddIn object with open connection", +"ID пользователя для отправки уведомления": "User ID for sending the notification", +"Получает список файлов с отбором или без": "Get a list of files with or without filtering", +"Вернуть ответ как двоичные данные !NOCLI": "Return response as binary data", +"Идентификатор товара в системе Ozon (SKU": "Product identifier in the Ozon system (SKU", +"РазделятьМассивыВURL: установка значения": "SplitArraysInURL: setting the value", +"Получить настройки (keyboard-interactive": "Get settings (keyboard-interactive)", +"Получает информацию о пользователе по ID": "Gets user information by ID", +"Статус = Результат[\"requests\"][0][\"state": "Status = Result[\"requests\"][0][\"state", +"Инициализировать клиентский поток !NOCLI": "Initialize client stream !NOCLI", +"Планируемая дата передачи заказов в СДЭК": "Planned date of transfer of orders to CDEK", +"Удаляет запись о трудозатратах из задачи": "Deletes record of time accounting", +"Максимальный размер данных для получения": "Maximum size of data to receive", +"Проверка_БитриксСтрока(Результат); SKIP": "Check_BitrixString(Result); SKIP", +"Удаляет календарь из списка пользователя": "Removes a calendar from the user's list", +"Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", +"ПолучитьОтветВКонтексте (предварительный": "GetContextResponse (preliminary", +"Отбор по региону бакета, если необходимо": "Selection by bucket region, if necessary", +"ПолучитьСтруктуруПараметровПредставлений": "GetEmbeddingsParameterStructure", +"Удаляет ранее созданный вариант свойства": "Deletes the previously created product property variant", +"Получает информацию о файле или каталоге": "Gets information about a file or directory", +"Загружает файл на диск по заданному пути": "Uploads a file to disk at the specified path", +"сериализованный JSON ответа от Neocities": "serialized JSON response from Neocities", +"тип данных, к которым применяется фильтр": "type of data to which the filter is applied", +"Удаляет текстовый тег файла или каталога": "Deletes the text tag of a file or directory", +"Блокирует выбранного пользователя в чате": "Blocks the selected user in chat", +"УстановитьFormТело: нет данных - пропуск": "SetFormBody: no data - skip", +"Получает список версий (ревизий) объекта": "Gets the list of versions (revisions) of the object", +"Модуль для работы с Notion из набора ОПИ": "Notion Module of OpenIntegrations", +"ОбработатьЗапрос: Установка тела запроса": "ProcessRequest: Setting the request body", +"Изменяет текст существующего комментария": "Changes the text of an existing comment", +"УстановитьФайлОтвета: установка значения": "SetResponseFile: setting the value", +"ID публичного каталога (shared folder ID": "ID of the public catalog (shared folder ID", +"УстановитьНастройкиВерсионированияБакета": "PutBucketVersioning", +"название сделки (можно искать по шаблону": "deal name (can be searched using the template [%", +"ID пользователей или одного пользователя": "IDs of users or a single user", +"Структура Из КлючИЗначение, Неопределено": "Structure Of KeyAndValue, Undefined", +"Проверяем, что данные вставлены корректно": "Check that the data is inserted correctly", "ДобавитьПолеMultipart: запись шапки блока": "AddMultipartField: writing the block header", "Сообщения или одно сообщения для отправки": "Messages or a single message to be sent", "Bitrix24_ПолучитьСтруктуруФильтраКаталога": "Bitrix24_GetFolderFilterStructure", "Пользователи: Ключ > имя, Значение > роль": "Users: Key > name, Value > role", "истина > отключить форматирование промпта": "true > disable prompt formatting", -"Выполняет запрос с указанными параметрами": "Executes a request with the specified parameters", -"Как отдельный файл расширения формата cfe": "As a standalone extension file in cfe format", "|--------[через 2 ч.]-------------------|": "|--------[after 2 hrs.]-------------------|", -"Снимает пометку элемента как выполненного": "Unmark an element as completed", +"Как отдельный файл расширения формата cfe": "As a standalone extension file in cfe format", "ПолучитьСсылкуСкачиванияПубличногоОбъекта": "GetDownloadLinkForPublicObject", "Стиль кнопки: primary, attention или base": "Button style: primary, attention or base", -"Проверяем, что данные вставлены корректно": "Check that the data is inserted correctly", +"ID цитируемого сообщения, если необходимо": "Replying message id if necessary", +"Выполняет запрос с указанными параметрами": "Executes a request with the specified parameters", +"Изменяет наименование и|или описание базы": "Changes the name and/or description of the base", +"Сформировать клавиатуру из массива кнопок": "Create a keyboard from an array of buttons", +"Интервал между попытками получения данных": "Interval between data retrieval attempts", +"Создает ассистента по модели и инструкции": "Creates an assistant based on the model and instruction", +"Использовать \"./internal/Modules/internal": "Use \"./internal/Modules/internal", +"Получает каталог для хранения файлов чата": "Get information about folder for chat files", +"ДобавитьФайлMultipart: Запись шапки блока": "AddMultipartFormDataFile: Writing the block header", +"Инициализирует серверный поток для обмена": "Initializes a server stream for exchange", +"Получает список доступных хранилищ файлов": "Get list of available files storages", +"Изменяет значения полей выбранного заказа": "Changes the field values of the selected order", +"ДобавитьФайлMultipart: запись шапки блока": "AddMultipartFile: writing the block header", +"связь со следующим условием: AND, OR и пр": "connection with the following condition: AND, OR, etc.", +"ИспользоватьКодировку: установка значения": "UseEncoding: setting the value", "УстановитьJsonТело: начало установки тела": "SetJsonBody: beginning of body setting", +"Добавляет данные в multipart/related тело": "Adds data to the multipart/related body", "См. СформироватьКлавиатуруИзМассиваКнопок": "See CreateKeyboardFromArrayButton", -"ОбработкаВходящегоЗапросаПослеАвторизации": "HandleIncomingRequestAfterAuthorization", -"Добавляет видеообложку к атрибутам товара": "Adds a video cover to the product attributes", -"Артикулы: Ключ > старый, Значение > новый": "Articles: Key > current, Value > new", -"ID чата источника оригинального сообщения": "Source chat ID", -"ИспользоватьMultipartПоляВOAuth (включено": "UseMultipartFieldsAtOAuth (enable", -"Тип отправителя: LEGAL_ENTITY, INDIVIDUAL": "Sender type: LEGAL_ENTITY, INDIVIDUAL", -"Получает список офисов с фильтром или без": "Gets a list of offices with or without a filter", -"Добавляет указанных пользователей в канал": "Adds specified users to the channel", -"временной тип напоминания: min, hour, day": "reminder time type: min, hour, day", -"Получает структуру параметров авторизации": "Gets the structure of authorization parameters", -"Новые или изменяемые свойства базы данных": "New or modified database properties", -"Получить дерево категорий и типов товаров": "Get categories and product types tree", -"Признак исключения архивированных каналов": "Indicator of excluding archived channels", -"Массив двоичных данных или путей к файлам": "Array of binary data or file paths", -"Полную документацию можно найти по адресу": "Full documentation can be found at", -"Необходимость сформировать печатную форму": "Need to generate a document", -"Выполняет запрос сразу после формирования": "Executes the request immediately after it is generated", -"Настройки или объект соединения (для gRPC": "Connection settings or object (for gRPC", -"С вложениями (в примере: блок с картинкой": "With attachments (picture block in the example", -"Создает пустой каталог по выбранному пути": "Creates an empty directory at the selected path", -"ПолучитьСписокПользовательскихПолейЗадачи": "GetCustomTaskFieldsList", -"Делегирует задачу на другого пользователя": "Delegate task to another user", "Получает значения настроек кабинета по ID": "Gets the values of cabinet (business) settings by ID", -"УстановитьJsonТело: Начало установки тела": "SetJsonBody: Beginning of body setting", -"разрешить участникам закреплять сообщения": "allow members to pin messages", -"Служебный модуль работы с HTTP набора ОПИ": "Utility HTTP Module of OpenIntegrations", -"См. СформироватьКлавиатуруПоМассивуКнопок": "See GenerateKeyboardFromArray", +"Добавляет видеообложку к атрибутам товара": "Adds a video cover to the product attributes", +"МаксимумПереадресаций: установка значения": "MaxRedirects: setting the value", "Отмечает сообщения в чате как прочитанные": "Marks messages in the chat as read", -"ID родительского элемента, если необходимо": "ID of the parent item, if necessary", -"Ошибка преобразовани данных параметра JSON": "JSON Parameter Data Conversion Error", -"Возвращает тело ответа как двоичные данные": "Returns the response body as binary data", -"ID поста, используемого в качестве рекламы": "ID of the post used for advertising", -"Ошибка установки дополнительных заголовков": "Error setting additional headers", -"Инициализирует новый двунаправленный поток": "Initializes a new bidirectional stream", -"порядковый номер первого счетчика в списке": "sequence number of the first counter in the list", -"Устанавливает Webhook для приема сообщений": "Sets a webhook to receive messages", -"Лев(Команда.Команда + Поле, МаксШирина + 2": "Left(Command.Command + Field, MaxWidth + 2", -"Коллекция КлючЗначение с параметрами формы": "KeyValue collection with form parameters", -"Удаляет зависимость одной задачи от другой": "Removes the dependency of one task to another", -"Отсутствуют необходимые данные авторизации": "The required authorization data is missing", -"Признак установки тела в формате Multipart": "Flag indicating the body is set in Multipart format", -"Получает список существующих пользователей": "Gets the list of existing users", -"Сообщить(\"Проверка товаров Ozon недоступна": "Message(\"Ozon product checkout is unavailable", -"Некорректная структура колонок для таблицы": "Incorrect structure of columns for the table", -"Красный, желтый, синий или какой-то другой": "Red, yellow, blue, or some other?", -"Метаданные объекты содержатся в заголовках": "Object metadata is contained in the headers", -"Перемещает файл в корзину удаляемых файлов": "Move file to recycle bin", -"ПолучитьКонфигурациюСоединения (проверка 2": "GetConnectionConfiguration (check 2", -"Модуль для работы с Bitrix24 из набора ОПИ": "Module for working with Bitrix24 from the Open Integrations Package", -"Актуализировать входящие соединения !NOCLI": "ActualiseIncomingConnections ", -"Релизы библиотеки выходят в пяти вариантах": "The library releases come in five variants", -"Время удержания модели в памяти в секундах": "Model hold time in seconds", -"ПолучитьСтруктуруПараметровЗапроса (пустая": "GetRequestParameterStructure (empty", -"Обработать данные Telegram Mini App !NOCLI": "Process Telegram Mini App data !NOCLI", -"добавление полей тела в строку для подписи": "adding body fields to the signature string", -"Получает статус учета времени пользователя": "Gets user timekeeping status", -"Удаляет ранее созданный токен пользователя": "Deletes a previously created user token", -"Текст поста. Обязателен, если нет картинки": "Post text. Required if there is no picture", -"Получает список товаров с фильтром или без": "Gets a list of products with or without filter", -"Возвращает объект текущего HTTP соединения": "Returns the object of the current HTTP connection", -"ПолучитьСоответствиеРазделовТестированияGA": "GetTestingSectionMappingGA", -"Дата доставки, согласованная с получателем": "Delivery date agreed with the recipient", -"Получить данные использования пространства": "Get space usage data", -"Проверить соответствие ИБ последней сборке": "Check IB to last build compliance", -"JSON клавиатуры. См.СформироватьКлавиатуру": "JSON keyboard. See FormKeyboard", -"Идентификатор черновика заявки на поставку": "Supply draft identifier", -"Вид multipart загрузки: form data, related": "Multipart data type: form data, related", -"Добавляет новый товар в каталог сообщества": "Adds a new product to the community's catalog", -"Добавляет пользователей в указанный проект": "Adds users to the specified project", -"Отображать ответ как предупреждение (alert": "Display the answer as an alert", -"Обновляет характеристики выбранных товаров": "Updates the attributes of the selected items", -"GreenMax_РазлогинитьИнстанс(ПараметрыТеста": "GreenMax_LogoutInstance(TestParameters", -"Bitrix24_ПолучитьСписокПросмотревшихВажное": "Bitrix24_GetImportantPostViewers", -"Получает пустой макет для создания события": "Gets an empty layout to create the event", -"Изменяет данные существующего пользователя": "Modifies existing user data", -"Отменяет режим общего доступа для каталога": "Cancels the public access mode for the directory", -"Генерирует картинки по указанному описанию": "Generates images based on the specified description", -"Модуль для работы с YandexID из набора ОПИ": "YandexID Module of OpenIntegrations", -"Структура Из КлючИЗначение, ДвоичныеДанные": "Structure Of KeyAndValue, BinaryData", -"УстановитьОбъектЗапроса: Передан не запрос": "SetRequestObject: Not a request has been passed", -"Получает информацию о текущем пользователе": "Get current user data", -"Структура настроек прокси, если необходимо": "Proxy settings structure, if necessary", -"Модуль для работы с VK Teams из набора ОПИ": "VK Teams Module of OpenIntegrations", -"Структура полей товара с добавленным видео": "Structure of product fields with added video", -"ПолучитьКонфигурациюСоединения (проверка 1": "GetConnectionConfiguration (check 1", -"Приостанавливает учет времени пользователя": "Pauses user timekeeping", -"Получает постоянный UTL к сообщению канала": "Gets a permanent URL to the channel message", -"tools/Modules/OPI_ПолучениеДанныхТестов.os": "tools/Modules/OPI_TestDataRetrieval.os", -"Ввести название приложения и выбрать пункт": "Enter the application name and select the ", -"Создает системное уведомление пользователю": "Creates a system notification to the user", +"См. СформироватьКлавиатуруПоМассивуКнопок": "See GenerateKeyboardFromArray", +"Служебный модуль работы с HTTP набора ОПИ": "Utility HTTP Module of OpenIntegrations", +"разрешить участникам закреплять сообщения": "allow members to pin messages", +"УстановитьJsonТело: Начало установки тела": "SetJsonBody: Beginning of body setting", +"Делегирует задачу на другого пользователя": "Delegate task to another user", +"ПолучитьСписокПользовательскихПолейЗадачи": "GetCustomTaskFieldsList", +"Создает пустой каталог по выбранному пути": "Creates an empty directory at the selected path", +"С вложениями (в примере: блок с картинкой": "With attachments (picture block in the example", +"Настройки или объект соединения (для gRPC": "Connection settings or object (for gRPC", +"Выполняет запрос сразу после формирования": "Executes the request immediately after it is generated", +"ОбработкаВходящегоЗапросаПослеАвторизации": "HandleIncomingRequestAfterAuthorization", +"Необходимость сформировать печатную форму": "Need to generate a document", +"Массив двоичных данных или путей к файлам": "Array of binary data or file paths", +"Признак исключения архивированных каналов": "Indicator of excluding archived channels", +"Получить дерево категорий и типов товаров": "Get categories and product types tree", +"Новые или изменяемые свойства базы данных": "New or modified database properties", +"Получает структуру параметров авторизации": "Gets the structure of authorization parameters", +"временной тип напоминания: min, hour, day": "reminder time type: min, hour, day", +"Добавляет указанных пользователей в канал": "Adds specified users to the channel", +"Получает список офисов с фильтром или без": "Gets a list of offices with or without a filter", +"Тип отправителя: LEGAL_ENTITY, INDIVIDUAL": "Sender type: LEGAL_ENTITY, INDIVIDUAL", +"ИспользоватьMultipartПоляВOAuth (включено": "UseMultipartFieldsAtOAuth (enable", +"ID чата источника оригинального сообщения": "Source chat ID", +"Артикулы: Ключ > старый, Значение > новый": "Articles: Key > current, Value > new", +"Полную документацию можно найти по адресу": "Full documentation can be found at", +"Получить настройки версионирования бакета": "Get bucket versioning", +"Снимает пометку элемента как выполненного": "Unmark an element as completed", +"Путь или несколько путей удаляемых файлов": "Path or multiple paths of the files to be deleted", +"СформироватьЗапрос: Добавление параметров": "FormRequest: Adding parameters", +"Истина > сразу запускает созданный сервер": "True > immediately starts the created server", +"Bitrix24_ПолучитьСписокХранилищПриложения": "Bitrix24_GetAppStoragesList", +"'Имя поля 1': {'Тип данных': 'Значение'},": "'Field name 1': {'Type': 'Value'},", +"Удаляет новость из ленты по выбранному ID": "Remove post from a news feed", +"Bitrix24_ПолучитьДочерниеЭлементыКаталога": "Bitrix24_GetFolderItems", +"Не удалось сохранить ошибку в файл вывода": "Failed to save the error to the output file", +"УстановитьFormТело: начало установки тела": "SetFormBody: beginning of body setting", +"Исключает выбранного пользователя из чата": "Deletes user from chat", +"ПолучитьСтруктуруНастроекИнстанса (пустая": "GetInstanceSettingsStructure (empty", +"Формирует структуру данных для обновления": "Forms data structure for update", +"Кодировка, в которой записаны JSON данные": "Encoding of JSON Data", +"Отправляет внешний файл по списку каналов": "Sends an external file to a list of channels", +"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_URL", +"ИспользоватьКодировку: Установка значения": "UseEncoding: Setting the value", +"'Имя поля 2': {'Тип данных': 'Значение'},": "'Field name 2': {'Type': 'Value'},", +"Получает информацию о кластерах и складах": "Gets information about clusters and warehouses", +"Создает комментарий под выбранной записью": "Creates a comment under the selected record", +"Модуль для работы с Dropbox из набора ОПИ": "Dropbox Module of OpenIntegrations", +"Удаляет указанного пользователя из канала": "Removes specified user from channel", +"Bitrix24_ПолучитьСписокКомментариевЗадачи": "Bitrix24_GetTaskCommentsList", +"Авторизует инстанс по коду доступа из SMS": "Authorizes the instance using the access code from SMS", +"Получить структуру параметров в контексте": "Get context parameter structure", +"ДобавитьПолеMultipart: Запись шапки блока": "AddMultipartFormDataField: Writing the block header", +"Получает последнее уведомление из очереди": "Gets the latest notification from the queue", +"отсутствуют основные параметры соединения": "missing main connection parameters", +"Устанавливает новые метаданные соединения": "Sets new connection metadata", +"действия будут выполняться от лица группы": "actions will be performed on behalf of the group", +"Структура или соответствие параметров URL": "Structure or map of URL parameters", +"Инициализирует загрузку объекта по частям": "Initializes the multipart object uploading", +"ПолучитьСтруктуруФильтраСобытийКалендарей": "GetCalendarEventsFilterStructure", +"УстановитьFormТело: Начало установки тела": "SetFormBody: Beginning of body setting", +"Добавляет данные для OAuth v1 авторизации": "Adds data for OAuth v1 authorization", +"Модуль для работы с Twitter из набора ОПИ": "Twitter Module of OpenIntegrations", +"идентификатор автора последнего изменения": "author ID of the last change", +"Явно закрывает созданное ранее соединение": "Explicitly closes a previously created connection", +"Формирует коллекцию параметров соединения": "Forms a collection of connection parameters", +"дата перемещения сделки на текущую стадию": "date of moving the deal to the current stage", +"Получить структуру доп. полей отправления": "Get shipment additional fields", +"Возвращает URL для авторизации в браузере": "Returns URL for browser authorization", +"Перейдите в **[основной интерфейс Notion]": "Go to the **[main interface of Notion]", +"Открыть двунаправленный поток GRPC !NOCLI": "Open bidirectional GRPC stream !NOCLI", +"Путь к базе. In memory, если не заполнено": "Path to database. In memory, if not filled", +"Получает описание поля с номером телефона": "Gets the description of a phone number field", +"Получает список записей выбранной таблицы": "Gets the list of records of the selected table", +"Публикует объект диска в публичный доступ": "Publishes the disk object for public access", +"и пройдите процедуру создания нового бота": "and follow the procedure to create a new bot", +"ПолучитьСтруктуруСобытияКалендаря (пустая": "GetCalendarEventsStructure (empty", +"// #Использовать \"../../../../../../http\"": "//#Use \"../../../../../../http\"", +"Уникальный идентификатор фида (обычно URL": "Feed unique identifier (usually a URL", +"Получает список элементов чеклиста задачи": "Gets the list of elements on the task checklist", +"Сформировать клавиатуру по массиву кнопок": "Generate keyboard from array of buttons", +"Истина > возвращает поля как соответствие": "True > returns fields as map", +"Получает список всех комментариев объекта": "Gets the list of all comments of the object", +"Изменяет свойства существующего календаря": "Edits properties of an existing calendar", +"расширенный период учета офлайн-конверсий": "extended accounting period for offline conversions", +"ОтменитьЗаписьMultipart: Файл тела удален": "CancelMultipartBody: The body file has been deleted", +"Текстовое описание картинки для генерации": "Text description of the image for generation", "Структура метаданных gRPC, если необходимо": "gRPC metadata structure, if necessary", "Очищает список событий основного календаря": "Clears the event list of the primary calendar", +"ПолучитьКонфигурациюСоединения (проверка 1": "GetConnectionConfiguration (check 1", +"Создает системное уведомление пользователю": "Creates a system notification to the user", +"Ввести название приложения и выбрать пункт": "Enter the application name and select the ", +"tools/Modules/OPI_ПолучениеДанныхТестов.os": "tools/Modules/OPI_TestDataRetrieval.os", +"Получает постоянный UTL к сообщению канала": "Gets a permanent URL to the channel message", +"Приостанавливает учет времени пользователя": "Pauses user timekeeping", +"Структура полей товара с добавленным видео": "Structure of product fields with added video", +"Модуль для работы с YandexID из набора ОПИ": "YandexID Module of OpenIntegrations", +"Структура настроек прокси, если необходимо": "Proxy settings structure, if necessary", +"Получает информацию о текущем пользователе": "Get current user data", +"УстановитьОбъектЗапроса: Передан не запрос": "SetRequestObject: Not a request has been passed", +"Структура Из КлючИЗначение, ДвоичныеДанные": "Structure Of KeyAndValue, BinaryData", +"Генерирует картинки по указанному описанию": "Generates images based on the specified description", +"Отменяет режим общего доступа для каталога": "Cancels the public access mode for the directory", "необходимо будет передать в другую функцию": "you will need to pass to another function", +"Изменяет данные существующего пользователя": "Modifies existing user data", +"Модуль для работы с VK Teams из набора ОПИ": "VK Teams Module of OpenIntegrations", "Создает зависимость одной задачи от другой": "Creates the dependency of one task to another", -"Переданы некорректные параметры соединения": "Incorrect connection parameters passed", -"Модуль для работы с Airtable из набора ОПИ": "Module for working with Airtable from the Open Integrations Package", -"ПолучитьПользовательскиеНастройкиКалендаря": "GetCustomCalendarSettings", -"Разбанивает забаненного ранее пользователя": "Unbans a previously banned user", -"ОтправитьТекстовоеСообщение (текст и emoji": "SendTextMessage (text and emoji", -"Авторизоваться в браузере по ссылке из п.1": "Authorize in the browser using the link from step 1", -"GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "GreenAPI_LogoutInstance(TestParameters", -"Идентификаторы товаров в системе Ozon (SKU": "Products identifiers in the Ozon system (SKU", -"Ошибка при передаче двоичного значения: %1": "Binary data transfer error: %1", -"ДобавитьЗаписи (ошибка поля без транзакции": "AddRecords (field error without tr", -"ДобавитьЗаголовокOAuthV1: создание подписи": "AddOAuthV1Header: ", -"Отправляет файл (документ) в чат или канал": "Sends a file (document) to a chat or channel", -"Установите Webhook. См. Установить Webhook": "Set webhook (see Set webhook)", -"Инициализирует клиентский поток для обмена": "Initializes a client stream for exchange", "ИспользоватьСжатиеGzip: установка значения": "UseGzipCompression: setting the value", -"Получает информацию о сообщении чата по ID": "Gets information about the chat message by ID", -"ИспользоватьСжатиеGzip: Установка значения": "UseGzipCompression: Setting the value", -"Modules/internal/Classes/OPI_HTTPКлиент.os": "Modules/internal/Classes/OPI_HTTPClient.os", -"максимальное количество счетчиков в выдаче": "maximum number of counters in the output", -"Результат выполнения запроса или его текст": "The result of the execution or SQL query text", +"Модуль для работы с Airtable из набора ОПИ": "Module for working with Airtable from the Open Integrations Package", +"Получает пустой макет для создания события": "Gets an empty layout to create the event", "Полную документацию можно найти по адресу:": "Full documentation can be found at:", -"ID файла, к которому предоставляется доступ": "ID of the file to be accessed", -"Максимальное число попыток получения данных": "Max number of data retrieval attempts", -"Маркер конца сообщения. Пусто > без маркера": "End of message marker. Empty > without marker", -"Отправляет ранее загруженный файл по его ID": "Sends a previously uploaded file by ID", -"Получить структуру обновления характеристик": "Get attributes update structure", -"Создает новый чат на основе структуры полей": "Creates a new chat based on the field structure", -"Токен страницы, если используется пагинация": "Page token if pagination is used", -"Ошибка получения данных булево из параметра": "Error getting boolean data from parameter", -"Выберите подходящий язык и вариант поставки": "Select the appropriate language and distribution option", -"Таймаут выполнения отдельной операции (в мс": "Timeout for individual operation (in ms)", -"Получает логи выбранного тестового элемента": "Gets the logs of the selected test item", -"Получает список товаров выбранного кабинета": "Gets the list of products of the business", -"Закрывает входящее соединение сервера по ID": "Closes incoming server connection by ID", -"ВызватьМетод: превышено число переадресаций": "ExecuteMethod: the number of redirects has been exceeded", -"Twitter_СоздатьТекстовыйТвит(ПараметрыТеста": "Twitter_CreateTextTweet(TestParameters", -"Получает описание поля с электронной почтой": "Gets the description of an email field", -"Modules/internal/Modules/OPI_Инструменты.os": "Modules/internal/Modules/OPI_Tools.os", -"Сохраняет файл с сервера по указанному пути": "Saves the file from the server to the specified path", -"УстановитьОбъектЗапроса: Установка значения": "SetRequestObject: Setting the value", -"Время удержания соединения для Long Polling": "Connection hold time for Long Polling", -"Получает список товаров выбранного магазина": "Gets the list of products of the selected market (campaign)", -"Получает структуру стандартных полей товара": "Gets the structure of product standard fields", -"Устанавливает коллекцию заголовков запросов": "Sets a collection of query headers", -"Дата, за которую необходимо получить данные": "Date for which data should be retrieved", -"Получает отчет по выбранной тестовой сессии": "Gets report for the selected test session", -"Дата обновления. Текущая, если не заполнено": "Update date. Current if not filled", -"Отправляет двоичные данные на сервер Ollama": "Sends binary data to the Ollama server", -"интервал отправки сообщений в миллисекундах": "message sending interval in milliseconds", -"запись и анализ поведения посетителей сайта": "recording and analyzing the behavior of site visitors", -"КоличествоПереадресаций: установка значения": "RedirectCount: set value", -"Используется в т-нии 2-х часов для запросов": "2 hrs. lifetime", -"Получить заблокированных пользователей чата": "Get chat blocked users", -"Получает список отложенных сообщений канала": "Gets a list of delayed channel messages", -"PostgreSQL_УдалитьБазуДанных(ПараметрыТеста": "PostgreSQL_DeleteDatabase(TestParameters", -"Получает внешнюю ссылку для доступа к файлу": "Get external link to file", -"Установить настройки версионирования бакета": "Put bucket versioning", -"Описание товара. См. ПолучитьОписаниеТовара": "Product description. See GetProductDescription", -"JSON клавиатуры. См. СформироватьКлавиатуру": "Keyboard JSON. See FormKeyboard", -"Обновляет v2 токен при помощи refresh_token": "Updates the v2 token using the refresh_token", -"Произвольный, Соответствие Из КлючИЗначение": "Arbitrary, Map of KeyAndValue", -"Получает файл с сервера как двоичные данные": "Gets file from server as binary data", -"единица измерения для размеров, например mm": "unit of measure for sizes, e.g. mm", -"Переносит задачу в выбранную стадию канбана": "Move task to another kanban stage", -"Максимальное число возвращаемых ассистентов": "Maximum number of assistants returned", -"Открытый пакет интеграций с популярными API": "Open integrations package with popular API aboard", -"конкретное значение при указании имени поля": "Specific Value When Specifying Field Name", -"Массив доступов по задачам, если необходимо": "Rights array if required", -"Получает список объектов в выбранном бакете": "Gets the list of objects in the selected bucket", -"Удаляет ранее добавленный товар из подборки": "Removes a previously added product from the selection", -"Источник сообщения: system, user, developer": "Message source: system, user, developer", -"сериализованный JSON ответа от ReportPortal": "serialized JSON response from ReportPortal", +"Результат выполнения запроса или его текст": "The result of the execution or SQL query text", +"максимальное количество счетчиков в выдаче": "maximum number of counters in the output", +"Modules/internal/Classes/OPI_HTTPКлиент.os": "Modules/internal/Classes/OPI_HTTPClient.os", +"ИспользоватьСжатиеGzip: Установка значения": "UseGzipCompression: Setting the value", +"Получает информацию о сообщении чата по ID": "Gets information about the chat message by ID", +"Инициализирует клиентский поток для обмена": "Initializes a client stream for exchange", +"Установите Webhook. См. Установить Webhook": "Set webhook (see Set webhook)", +"Отправляет файл (документ) в чат или канал": "Sends a file (document) to a chat or channel", +"ДобавитьЗаголовокOAuthV1: создание подписи": "AddOAuthV1Header: ", +"ДобавитьЗаписи (ошибка поля без транзакции": "AddRecords (field error without tr", +"Ошибка при передаче двоичного значения: %1": "Binary data transfer error: %1", +"Идентификаторы товаров в системе Ozon (SKU": "Products identifiers in the Ozon system (SKU", +"GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "GreenAPI_LogoutInstance(TestParameters", +"Авторизоваться в браузере по ссылке из п.1": "Authorize in the browser using the link from step 1", +"ОтправитьТекстовоеСообщение (текст и emoji": "SendTextMessage (text and emoji", +"Разбанивает забаненного ранее пользователя": "Unbans a previously banned user", +"ПолучитьПользовательскиеНастройкиКалендаря": "GetCustomCalendarSettings", +"Переданы некорректные параметры соединения": "Incorrect connection parameters passed", +"Bitrix24_ПолучитьСписокПросмотревшихВажное": "Bitrix24_GetImportantPostViewers", +"Дата доставки, согласованная с получателем": "Delivery date agreed with the recipient", +"Обновляет характеристики выбранных товаров": "Updates the attributes of the selected items", +"Перемещает файл в корзину удаляемых файлов": "Move file to recycle bin", +"Метаданные объекты содержатся в заголовках": "Object metadata is contained in the headers", +"Красный, желтый, синий или какой-то другой": "Red, yellow, blue, or some other?", +"Некорректная структура колонок для таблицы": "Incorrect structure of columns for the table", +"Сообщить(\"Проверка товаров Ozon недоступна": "Message(\"Ozon product checkout is unavailable", +"Получает список существующих пользователей": "Gets the list of existing users", +"Признак установки тела в формате Multipart": "Flag indicating the body is set in Multipart format", +"Отсутствуют необходимые данные авторизации": "The required authorization data is missing", +"Удаляет зависимость одной задачи от другой": "Removes the dependency of one task to another", +"Коллекция КлючЗначение с параметрами формы": "KeyValue collection with form parameters", +"Лев(Команда.Команда + Поле, МаксШирина + 2": "Left(Command.Command + Field, MaxWidth + 2", +"Устанавливает Webhook для приема сообщений": "Sets a webhook to receive messages", +"порядковый номер первого счетчика в списке": "sequence number of the first counter in the list", +"Инициализирует новый двунаправленный поток": "Initializes a new bidirectional stream", +"Ошибка установки дополнительных заголовков": "Error setting additional headers", +"ID поста, используемого в качестве рекламы": "ID of the post used for advertising", +"GreenMax_РазлогинитьИнстанс(ПараметрыТеста": "GreenMax_LogoutInstance(TestParameters", +"Ошибка преобразовани данных параметра JSON": "JSON Parameter Data Conversion Error", +"ID родительского элемента, если необходимо": "ID of the parent item, if necessary", +"ПолучитьКонфигурациюСоединения (проверка 2": "GetConnectionConfiguration (check 2", +"Модуль для работы с Bitrix24 из набора ОПИ": "Module for working with Bitrix24 from the Open Integrations Package", +"Возвращает тело ответа как двоичные данные": "Returns the response body as binary data", +"Релизы библиотеки выходят в пяти вариантах": "The library releases come in five variants", +"Актуализировать входящие соединения !NOCLI": "ActualiseIncomingConnections ", +"Отображать ответ как предупреждение (alert": "Display the answer as an alert", +"Добавляет новый товар в каталог сообщества": "Adds a new product to the community's catalog", +"Вид multipart загрузки: form data, related": "Multipart data type: form data, related", +"Идентификатор черновика заявки на поставку": "Supply draft identifier", +"JSON клавиатуры. См.СформироватьКлавиатуру": "JSON keyboard. See FormKeyboard", +"Проверить соответствие ИБ последней сборке": "Check IB to last build compliance", +"Получить данные использования пространства": "Get space usage data", +"ПолучитьСоответствиеРазделовТестированияGA": "GetTestingSectionMappingGA", +"Добавляет пользователей в указанный проект": "Adds users to the specified project", +"ПолучитьСтруктуруПараметровЗапроса (пустая": "GetRequestParameterStructure (empty", +"Получает список товаров с фильтром или без": "Gets a list of products with or without filter", +"Текст поста. Обязателен, если нет картинки": "Post text. Required if there is no picture", +"Удаляет ранее созданный токен пользователя": "Deletes a previously created user token", +"Получает статус учета времени пользователя": "Gets user timekeeping status", +"добавление полей тела в строку для подписи": "adding body fields to the signature string", +"Обработать данные Telegram Mini App !NOCLI": "Process Telegram Mini App data !NOCLI", +"Время удержания модели в памяти в секундах": "Model hold time in seconds", +"Возвращает объект текущего HTTP соединения": "Returns the object of the current HTTP connection", "Изменяет данные запуска сеанса тестирования": "Updates data of a test session launch", "Набор тегов (ключ и значение) для установки": "Set of tags (key and value)", -"Очистить список закрепленных сообщений темы": "Clear topics pinned messages list", +"единица измерения для размеров, например mm": "unit of measure for sizes, e.g. mm", "Получает информацию о товарах по массиву ID": "Gets information about products by array of IDs", "ДобавитьИменованныйПараметрКоллекцияКоманды": "AddNamedCommandCollectionParam", "Получает очередной пакет документов курсора": "Gets the next batch of cursor documents", +"Очистить список закрепленных сообщений темы": "Clear topics pinned messages list", +"сериализованный JSON ответа от ReportPortal": "serialized JSON response from ReportPortal", +"Массив доступов по задачам, если необходимо": "Rights array if required", +"Удаляет ранее добавленный товар из подборки": "Removes a previously added product from the selection", +"Получает список объектов в выбранном бакете": "Gets the list of objects in the selected bucket", +"конкретное значение при указании имени поля": "Specific Value When Specifying Field Name", +"Открытый пакет интеграций с популярными API": "Open integrations package with popular API aboard", +"Максимальное число возвращаемых ассистентов": "Maximum number of assistants returned", +"Переносит задачу в выбранную стадию канбана": "Move task to another kanban stage", "Получить структуру параметров представлений": "Get embeddings parameter structure", +"Источник сообщения: system, user, developer": "Message source: system, user, developer", "ПолучитьКонфигурациюСоединиения (проверка 2": "GetConnectionConfiguration (check 2", -"Добавляет пользователей в чат по массиву ID": "Adds users to the chat by ID array", -"ПолучитьНастройкийВерсионированияБакета (DB": "GetBucketVersioning (DB", -"Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", -"Модуль для работы с Neocities из набора ОПИ": "Neocities Module of OpenIntegrations", -"Похоже, что в ответе пришли двоичные данные": "It Seems Binary Data Was Received in Response", -"ПолучитьСтруктуруСообщенияКонтекста (пустая": "GetContextMessageStructure (empty", -"ПолучитьКонфигурациюСоединиения (проверка 1": "GetConnectionConfiguration (check 1", -"Соответствие Из КлючИЗначение, Произвольный": "Map Of KeyAndValue, Arbitrary", -"Текстовый идентификатор (наименование) поля": "Text identifier (name) of the field", -"Дополнительная информация (добавочный номер": "Additional information (extension number", "Ошибка типа значения соответствия артикулов": "Article value type error ", -"Формирует квитанции в формате pdf к заказам": "Generates pdf receipts for orders", -"ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных": "GetBinaryDataBufferFromBinaryData", -"XML строка или файл конфигурации шифрования": "XML string or file of encryption configuration", -"дата и время в формате timestamp (вместо to": "date and time in timestamp format (instead of to", -"Получает информацию о папке или файле по ID": "Gets information about a folder or file by ID", -"Вариант размера сгенерированных изображений": "Size option for generated images", -"Соответствие Из КлючИЗначение, Неопределено": "Map Of KeyAndValue, Undefined", -"Получает описание товара по идентификаторам": "Get product description by IDs", +"ПолучитьНастройкийВерсионированияБакета (DB": "GetBucketVersioning (DB", +"Получает файл с сервера как двоичные данные": "Gets file from server as binary data", "Путь с параметрами и секцией из URL запроса": "Path with parameters and section from the request URL", -"Токен следующей страницы при большой выборке": "Next page token in case of a large selection", -"Создает рекламное объявление на основе поста": "Creates an advertising post based on a post", -"Основные поля данных для выполнения операции": "Main data fields for performing the operation", -"Перейдите на [главную страницу Google Cloud]": "Go to the [Google Cloud Console]", -"Ошибка валидации JSON массива параметров: %1": "JSON parameter array validation error: %1", -"Вводный текст запроса для обработки картинки": "Input text query for image processing", -"Формирует структуру настроек подключения FTP": "Creates a structure of FTP connection settings", -"Данные запроса. См. ПолучитьНастройкиЗапроса": "Request data. See GetRequestSettings", -"Минимальный вес в кг, который принимает офис": "Minimum weight in kg that the office accepts", -"Proto схема сервиса строкой или путь к файлу": "Proto schema of the service as a string or file path", -"Создает новую модель с заданными настройками": "Creates a new model with the specified settings", -"Ошибка отправки: %1 (обработано сообщений %2": "Send error: %1 (processed messages %2", -"заранее созданное функцией ОткрытьСоединение": "previously created by the CreateConnection function", -"Создает новый TCP сервер и устаналивает порт": "Creates a new TCP server and sets the port", -"!OInt OPI_ReportPortal = Новый(\"ReportPortal": "!OInt OPI_ReportPortal = New(\"ReportPortal", -"Модуль для работы с OpenAI API из набора ОПИ": "OpenAI API Module of OpenIntegrations", -"Добавляет вариант для существующего свойства": "Adds a variant for an existing property", -"тип календаря: user, group, company_calendar": "calendar type: user, group, company_calendar", -"ID пользователя или нескольких пользователей": "Usesr ID or array of users IDs", -"GreenAPI_СкачатьФайлСообщения(ПараметрыТеста": "GreenAPI_DownloadMessageFile(TestParameters", -"УстановитьПользовательскиеНастройкиКалендаря": "SetCustomCalendarSettings", -"Отзывает права администратора у пользователя": "Revokes administrator rights from the user", -"Нормализованный набор параметров для запроса": "Normalised set of parameters for a query", -"УстановитьПараметрыURL: установка параметров": "SetURLParams: parameter setting", -"Изменяет цены однного или нескольких товаров": "Changes the price of one or more items", -"не получится (access_token тоже не получится": "won't work (access_token won't work either", -"Авторизоваться через ВК и подтвердить доступ": "Authorize through VK and confirm access", -"Сумма наложенного платежа, в том числе и НДС": "Amount of cash on delivery, including VAT", -"УстановитьСтроковоеТело: Нет данных, пропуск": "SetStringBody: No data, skip", -"Копирует файл или каталог по выбранному пути": "Copies a file or directory to the selected path", -"Пересылает сообщения из одного чата в другой": "Sends messages from one chat room to another", -"Возвращает структуру полей события календаря": "Returns the structure of the calendar event fields", -"Флаг использования API для тестовых запросов": "Flag to use test API for requests", -"Область действия (scope) или массив областей": "Scope or array of scopes", -"Не удалось получить информацию из json медиа": "Failed to Retrieve Information from JSON media!", -"Формат получения ответа: JSON, CSV, TSV и пр": "Response format: JSON, CSV, TSV, etc.", -"!OInt МассивПути.Удалить(МассивПути.ВГраница": "!OInt PathArray.Delete(PathArray.UBound", -"ВызватьМетод: превышено число ошибок сервера": "ExecuteMethod: exceeded number of server errors", -"Переданное значение не является TCP-сервером": "The passed value is not a TCP server!", -"uid пользователя, которому выдано разрешение": "uid of the user to whom the authorization has been granted", -"Получает информацию о пользователе по логину": "Gets user information by login", -"СформироватьСтруктуруНастроекВерсионирования": "FormVersioningStructure", -"Устанавливает коллекцию query параметров URL": "Sets a collection of query parameters in the URL", -"Пакет CLI приложения для систем на базе RHEL": "CLI application package for RHEL-based systems", -"ID сообщения. Все сообщения, если не указано": "Message ID. All messages, unless specified", -"Преобразует файл с Base64 строкой в бинарный": "Convert Base64 String to Binary File", -"Получает шаблон описания для создания товара": "Gets the description template for creating a product", -"Создает ссылку для вступления в закрытый чат": "Creates a link for joining a closed chat", -"Получает последние сообщения из истории чата": "Gets the latest messages from the chat history", -"Получает список акций, доступных для участия": "Gets a list of available promotions", -"Порядковый номер части объекта от 1 до 10000": "Number of the object part from 1 to 10000", -"ID последнего обработанного до этого события": "ID of the last event processed before this event", -"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_UR", -"Единый исполняемый файл CLI формата AppImage": "Single executable CLI file in AppImage format", -"Приостанавливает показ рекламного объявления": "Pauses the display of the advertising post", -"Получает список операций выбранного счетчика": "Gets the list of actions of the selected counter", -"Признак использования защищенного соединения": "Flag for using a secure connection", -"Получает структуру для отбора списка товаров": "Gets the structure for selecting the list of products", -"Тип календаря: user, group, company_calendar": "Calendar type: user, group, company_calendar", -"Этот раздел посвящен библиотеке для работы с": "This section is dedicated to the library for working with", +"Получает описание товара по идентификаторам": "Get product description by IDs", +"Соответствие Из КлючИЗначение, Неопределено": "Map Of KeyAndValue, Undefined", +"Вариант размера сгенерированных изображений": "Size option for generated images", +"Получает информацию о папке или файле по ID": "Gets information about a folder or file by ID", +"дата и время в формате timestamp (вместо to": "date and time in timestamp format (instead of to", +"XML строка или файл конфигурации шифрования": "XML string or file of encryption configuration", +"ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных": "GetBinaryDataBufferFromBinaryData", +"Формирует квитанции в формате pdf к заказам": "Generates pdf receipts for orders", +"Дополнительная информация (добавочный номер": "Additional information (extension number", +"Текстовый идентификатор (наименование) поля": "Text identifier (name) of the field", +"Соответствие Из КлючИЗначение, Произвольный": "Map Of KeyAndValue, Arbitrary", +"ПолучитьКонфигурациюСоединиения (проверка 1": "GetConnectionConfiguration (check 1", +"ПолучитьСтруктуруСообщенияКонтекста (пустая": "GetContextMessageStructure (empty", +"Модуль для работы с Neocities из набора ОПИ": "Neocities Module of OpenIntegrations", +"Токен = ПараметрыФункции[\"Bitrix24_Token": "Token = FunctionParameters[\"Bitrix24_Token", +"Добавляет пользователей в чат по массиву ID": "Adds users to the chat by ID array", +"Произвольный, Соответствие Из КлючИЗначение": "Arbitrary, Map of KeyAndValue", +"Похоже, что в ответе пришли двоичные данные": "It Seems Binary Data Was Received in Response", +"JSON клавиатуры. См. СформироватьКлавиатуру": "Keyboard JSON. See FormKeyboard", +"Получает описание поля с электронной почтой": "Gets the description of an email field", +"Twitter_СоздатьТекстовыйТвит(ПараметрыТеста": "Twitter_CreateTextTweet(TestParameters", +"ВызватьМетод: превышено число переадресаций": "ExecuteMethod: the number of redirects has been exceeded", +"Закрывает входящее соединение сервера по ID": "Closes incoming server connection by ID", +"Получает список товаров выбранного кабинета": "Gets the list of products of the business", +"Таймаут выполнения отдельной операции (в мс": "Timeout for individual operation (in ms)", +"Выберите подходящий язык и вариант поставки": "Select the appropriate language and distribution option", +"Modules/internal/Modules/OPI_Инструменты.os": "Modules/internal/Modules/OPI_Tools.os", +"Ошибка получения данных булево из параметра": "Error getting boolean data from parameter", +"Создает новый чат на основе структуры полей": "Creates a new chat based on the field structure", +"Получить структуру обновления характеристик": "Get attributes update structure", +"Отправляет ранее загруженный файл по его ID": "Sends a previously uploaded file by ID", +"Маркер конца сообщения. Пусто > без маркера": "End of message marker. Empty > without marker", +"Максимальное число попыток получения данных": "Max number of data retrieval attempts", +"ID файла, к которому предоставляется доступ": "ID of the file to be accessed", +"Обновляет v2 токен при помощи refresh_token": "Updates the v2 token using the refresh_token", +"Токен страницы, если используется пагинация": "Page token if pagination is used", +"Сохраняет файл с сервера по указанному пути": "Saves the file from the server to the specified path", +"Получает логи выбранного тестового элемента": "Gets the logs of the selected test item", +"Время удержания соединения для Long Polling": "Connection hold time for Long Polling", +"Описание товара. См. ПолучитьОписаниеТовара": "Product description. See GetProductDescription", +"УстановитьОбъектЗапроса: Установка значения": "SetRequestObject: Setting the value", +"Получает внешнюю ссылку для доступа к файлу": "Get external link to file", +"PostgreSQL_УдалитьБазуДанных(ПараметрыТеста": "PostgreSQL_DeleteDatabase(TestParameters", +"Получает список отложенных сообщений канала": "Gets a list of delayed channel messages", +"Получить заблокированных пользователей чата": "Get chat blocked users", +"Используется в т-нии 2-х часов для запросов": "2 hrs. lifetime", +"КоличествоПереадресаций: установка значения": "RedirectCount: set value", +"запись и анализ поведения посетителей сайта": "recording and analyzing the behavior of site visitors", +"Установить настройки версионирования бакета": "Put bucket versioning", +"Отправляет двоичные данные на сервер Ollama": "Sends binary data to the Ollama server", +"интервал отправки сообщений в миллисекундах": "message sending interval in milliseconds", +"Получает структуру стандартных полей товара": "Gets the structure of product standard fields", +"Устанавливает коллекцию заголовков запросов": "Sets a collection of query headers", +"Получает список товаров выбранного магазина": "Gets the list of products of the selected market (campaign)", +"Получает отчет по выбранной тестовой сессии": "Gets report for the selected test session", +"Дата обновления. Текущая, если не заполнено": "Update date. Current if not filled", +"Дата, за которую необходимо получить данные": "Date for which data should be retrieved", "УстановитьНастройкиВерсионированияБакета (DB": "PutBucketVersioning (DB", +"Этот раздел посвящен библиотеке для работы с": "This section is dedicated to the library for working with", +"Тип календаря: user, group, company_calendar": "Calendar type: user, group, company_calendar", +"Получает структуру для отбора списка товаров": "Gets the structure for selecting the list of products", +"Признак использования защищенного соединения": "Flag for using a secure connection", +"Получает список операций выбранного счетчика": "Gets the list of actions of the selected counter", +"Приостанавливает показ рекламного объявления": "Pauses the display of the advertising post", +"Единый исполняемый файл CLI формата AppImage": "Single executable CLI file in AppImage format", +"ID последнего обработанного до этого события": "ID of the last event processed before this event", +"Порядковый номер части объекта от 1 до 10000": "Number of the object part from 1 to 10000", "Получить данные очередного соединения !NOCLI": "Get next connection data !NOCLI", +"Получает список акций, доступных для участия": "Gets a list of available promotions", +"Получает последние сообщения из истории чата": "Gets the latest messages from the chat history", +"Создает ссылку для вступления в закрытый чат": "Creates a link for joining a closed chat", +"Получает шаблон описания для создания товара": "Gets the description template for creating a product", +"Преобразует файл с Base64 строкой в бинарный": "Convert Base64 String to Binary File", +"ID сообщения. Все сообщения, если не указано": "Message ID. All messages, unless specified", +"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_UR", "GreenAPI_ПерезапуститьИнстанс(ПараметрыТеста": "GreenMax_RebootInstance(TestParameters", -"отслеживание хеша в адресной строке браузера": "tracking the hash in the browser address bar", -"ДополнитьЗаголовки: установка Content-Length": "CompleteHeaders: Content-Length setting", -"Получает новый токен на основе рефреш токена": "Gets a new token based on the refresh token", -"Токен для удаления конкретной версии объекта": "Token for deleting a specific version of an object", -"Массив тегов (Etag) из загрузок каждой части": "An array of tags (Etag) from the uploads responses of each part", -"Переводит каталог в режим публичного доступа": "Sets the directory to public access mode", -"Bitrix24_ПолучитьСсылкуАвторизацииПриложения": "Bitrix24_GetAppAuthLink", -"Ключ разработчика (для разработчиков модулей": "Developer key (for module developers", -"По этой ссылке необходимо перейти в браузере": "You need to follow this link in your browser", -"Получает товары, доступные в выбранной акции": "Gets the products available in the selected promotion", -"сериализованный JSON ответа от Yandex Market": "serialized JSON response from Yandex Market", -"Modules/internal/Modules/OPI_Криптография.os": "Modules/internal/Modules/OPI_Cryptography.os", -"Завершить сообщение символом переноса строки": "End the message with a line break character", -"Получает список запросов на вступление в чат": "Gets a list of requests to join the chat room", -"Загружает файлы на сервер и возвращает их ID": "Uploads files to the server and returns their IDs", -"OneScript: ./OInt/tests/Modules/OPI_Тесты.os": "OneScript: ./OInt/tests/Modules/OPI_Tests.os", -"Загружает одиночный файл на сервер Neocities": "Upload single file to Neocities", -"Изменяет цвет чата для мобильного приложения": "Chat chat color for mobile app", -"Показывает ранее скрытую главную тему форума": "Shows a previously hidden main forum topic", "СформироватьЗапрос: Создание объекта запроса": "FormRequest: Creating a request object", +"ДополнитьЗаголовки: установка Content-Length": "CompleteHeaders: Content-Length setting", "ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных": "GetBinaryDataFromBinaryDataBuffer", -"ПолучитьСтруктуруПараметровВКонтексте (пустая": "GetContextParameterStructure (empty", -"Получает список пользователей рабочей области": "Gets a list of users in the workspace", -"Даты - передаются как строки формата ISO 8601": "Dates are passed as strings in ISO 8601 format", -"Получает список ассистентов с отбором или без": "Retrieves a list of assistants with or without filtering", -"Получает информацию о всех пользователях базы": "Gets information about all database users", -"ДвоичныеДанные, Соответствие Из КлючИЗначение": "BinaryData, Map Of KeyAndValue", -"Требования: платформа 1С версии 8.3.10 и выше": "Requirements: 1C platform version 8.3.10 and above", -"!OInt ОсвободитьОбъект(ПромежуточныйРезультат": "!OInt FreeObject(InterimResult", -"УстановитьДвоичноеТело: начало установки тела": "SetBinaryBody: beginning of body setting", -"Модуль для работы с Yandex.Disk из набора ОПИ": "Yandex.Disk Module of OpenIntegrations", -"Передана некорректная конфигурация прокси: %1": "Incorrect proxy configuration passed: %1", -"Получить структуру фильтра событий календарей": "Get calendar events filter structure", -"Соответствие Из КлючИЗначение, ДвоичныеДанные": "Map Of KeyAndValue, BinaryData", -"Структура с информацией об успешности запуска": "Structure with information about the startup success", -"Таймаут ожидания отправки запроса (в секундах": "Request sending timeout (in seconds", -"Не удалось удалить временный файл после теста": "Failed to delete the temporary file after the test!", -"Передана некорректная конфигурация соединения": "Unexpected connection configuration", -"Атрибуты, индивидуальные для разных категорий": "Attributes individualized for different categories", -"Токен для получения конкретной версии объекта": "Token for receiving a specific version of an object", -"Получить пользовательские настройки календаря": "Get custom calendar settings", -"Получает настройки учета времени пользователя": "Gets user timekeeping settings", -"Позволяет выбирать несколько вариантов ответа": "Allows to select more than one answer choice", -"Кодировка для записи исходящей строки в поток": "Encoding for writing the outgoing string to the stream", -"Передана некорректная структура доп. настроек": "Incorrect additional settings structure passed", -"Ozon_ОбновитьИзображенияТовара(ПараметрыТеста": "Ozon_UpdateProductImages(TestParameters", -"Копирует файл из одного расположения в другое": "Copy file from one destination to another", -"Изменяет данные записи о трудозатратах задачи": "Update time accounting record data", -"Сумма НДС, включённая в доп. сбор за доставку": "VAT included in additional delivery charge", -"Исключает пользователей из указанного проекта": "Excludes users from the specified project", -"Получает токен авторизации по логину и паролю": "Receives authorization token by login and password", -"Адрес обработки запросов от Telegram (с https": "Request handling address from Telegram (with https", -"Получает приветственное сообщение сервера FTP": "Receives the FTP servers welcome message", -"Признак использования multipart полей в OAuth": "Sign of using multipart fields in OAuth", -"Ошибка получения двоичных данных из параметра": "Error getting binary data from parameter", +"Пакет CLI приложения для систем на базе RHEL": "CLI application package for RHEL-based systems", +"Показывает ранее скрытую главную тему форума": "Shows a previously hidden main forum topic", +"Изменяет цвет чата для мобильного приложения": "Chat chat color for mobile app", +"Загружает одиночный файл на сервер Neocities": "Upload single file to Neocities", +"OneScript: ./OInt/tests/Modules/OPI_Тесты.os": "OneScript: ./OInt/tests/Modules/OPI_Tests.os", +"Получает список запросов на вступление в чат": "Gets a list of requests to join the chat room", +"Завершить сообщение символом переноса строки": "End the message with a line break character", +"отслеживание хеша в адресной строке браузера": "tracking the hash in the browser address bar", +"Modules/internal/Modules/OPI_Криптография.os": "Modules/internal/Modules/OPI_Cryptography.os", +"Получает товары, доступные в выбранной акции": "Gets the products available in the selected promotion", +"По этой ссылке необходимо перейти в браузере": "You need to follow this link in your browser", +"Ключ разработчика (для разработчиков модулей": "Developer key (for module developers", +"Bitrix24_ПолучитьСсылкуАвторизацииПриложения": "Bitrix24_GetAppAuthLink", +"Переводит каталог в режим публичного доступа": "Sets the directory to public access mode", +"Массив тегов (Etag) из загрузок каждой части": "An array of tags (Etag) from the uploads responses of each part", +"Токен для удаления конкретной версии объекта": "Token for deleting a specific version of an object", +"Получает новый токен на основе рефреш токена": "Gets a new token based on the refresh token", +"сериализованный JSON ответа от Yandex Market": "serialized JSON response from Yandex Market", +"Устанавливает коллекцию query параметров URL": "Sets a collection of query parameters in the URL", +"Загружает файлы на сервер и возвращает их ID": "Uploads files to the server and returns their IDs", +"Получает информацию о пользователе по логину": "Gets user information by login", +"тип календаря: user, group, company_calendar": "calendar type: user, group, company_calendar", +"Добавляет вариант для существующего свойства": "Adds a variant for an existing property", +"Модуль для работы с OpenAI API из набора ОПИ": "OpenAI API Module of OpenIntegrations", +"!OInt OPI_ReportPortal = Новый(\"ReportPortal": "!OInt OPI_ReportPortal = New(\"ReportPortal", +"Создает новый TCP сервер и устаналивает порт": "Creates a new TCP server and sets the port", +"заранее созданное функцией ОткрытьСоединение": "previously created by the CreateConnection function", +"Ошибка отправки: %1 (обработано сообщений %2": "Send error: %1 (processed messages %2", +"Создает новую модель с заданными настройками": "Creates a new model with the specified settings", +"ID пользователя или нескольких пользователей": "Usesr ID or array of users IDs", +"Proto схема сервиса строкой или путь к файлу": "Proto schema of the service as a string or file path", +"Данные запроса. См. ПолучитьНастройкиЗапроса": "Request data. See GetRequestSettings", +"Формирует структуру настроек подключения FTP": "Creates a structure of FTP connection settings", +"Вводный текст запроса для обработки картинки": "Input text query for image processing", +"Ошибка валидации JSON массива параметров: %1": "JSON parameter array validation error: %1", +"Перейдите на [главную страницу Google Cloud]": "Go to the [Google Cloud Console]", +"СформироватьСтруктуруНастроекВерсионирования": "FormVersioningStructure", +"Создает рекламное объявление на основе поста": "Creates an advertising post based on a post", +"Токен следующей страницы при большой выборке": "Next page token in case of a large selection", +"Минимальный вес в кг, который принимает офис": "Minimum weight in kg that the office accepts", +"GreenAPI_СкачатьФайлСообщения(ПараметрыТеста": "GreenAPI_DownloadMessageFile(TestParameters", +"Основные поля данных для выполнения операции": "Main data fields for performing the operation", +"Отзывает права администратора у пользователя": "Revokes administrator rights from the user", +"УстановитьПользовательскиеНастройкиКалендаря": "SetCustomCalendarSettings", +"Переданное значение не является TCP-сервером": "The passed value is not a TCP server!", +"ВызватьМетод: превышено число ошибок сервера": "ExecuteMethod: exceeded number of server errors", +"!OInt МассивПути.Удалить(МассивПути.ВГраница": "!OInt PathArray.Delete(PathArray.UBound", +"Формат получения ответа: JSON, CSV, TSV и пр": "Response format: JSON, CSV, TSV, etc.", +"Не удалось получить информацию из json медиа": "Failed to Retrieve Information from JSON media!", +"Область действия (scope) или массив областей": "Scope or array of scopes", +"Флаг использования API для тестовых запросов": "Flag to use test API for requests", +"Возвращает структуру полей события календаря": "Returns the structure of the calendar event fields", +"uid пользователя, которому выдано разрешение": "uid of the user to whom the authorization has been granted", +"Копирует файл или каталог по выбранному пути": "Copies a file or directory to the selected path", +"УстановитьСтроковоеТело: Нет данных, пропуск": "SetStringBody: No data, skip", +"Сумма наложенного платежа, в том числе и НДС": "Amount of cash on delivery, including VAT", +"Авторизоваться через ВК и подтвердить доступ": "Authorize through VK and confirm access", +"не получится (access_token тоже не получится": "won't work (access_token won't work either", +"Изменяет цены однного или нескольких товаров": "Changes the price of one or more items", +"УстановитьПараметрыURL: установка параметров": "SetURLParams: parameter setting", +"Пересылает сообщения из одного чата в другой": "Sends messages from one chat room to another", +"Нормализованный набор параметров для запроса": "Normalised set of parameters for a query", +"Идентификатор новой подборки, если необходимо": "Identifier of the new selection, if needed", +"Имя пользователя авторизации, если необходимо": "Username for authorization, if required", +"дата и время в формате timestamp (вместо from": "date and time in timestamp format (instead of from", +"где `?1 = \"10 AND 20\"`, что приведет к ошибке": "where `?1 = \"10 AND 20,\"' which would cause an error.", +"Назначает пользователя администратором группы": "Assigns the user as the group administrator", +"зарегистрироваться и создать новое приложение": "register, and create a new application", +"МассивВариантов.Добавить(ПараметрыТестаПрокси": "OptionArray.Add(TestProxyParameters", +"Ozon_ОбновитьКоличествоТоваров(ПараметрыТеста": "Ozon_UpdateProductsStocks(TestParameters", +"Массив сообщений о действиях внутри обработки": "Array of messages about actions within the processing", +"Настройки сессии. См. ПолучитьНастройкиСессии": "Session settings. See GetSessionSettings", +"Цены товаров. См. ПолучитьСтруктуруЦеныТовара": "Products prices. See GetProductPriceStructure", +"Получает структуру параметров для записи лога": "Gets the parameter structure for log entry", +"Раскомментировать, если выполняется OneScript": "Uncomment if OneScript is executed", +"Получает информацию о чеках за указанную дату": "Gets information about checks for a specified date", +"УстановитьСтроковоеТело: нет данных - пропуск": "SetStringBody: no data - skip", +"Тесты для YaxUnit/1testrunner (служебный, ОПИ": "Tests for YaxUnit/1testrunner (Utility, OpenIntegrations", +"Устанавливает настройки прокси для соединения": "Sets the proxy settings for the connection", +"Получить ссылку скачивания публичного объекта": "Get download link for public object", +"Инициализировать двунаправленный поток !NOCLI": "Initialize bidirectional stream !NOCLI", +"Описание локации. См. ПолучитьОписаниеЛокации": "Location description. See GetLocationDescription", +"Время доставки С, согласованное с получателем": "Delivery time FROM agreed with the recipient", +"Удалить последние сообщения перед блокировкой": "Delete last messages before blocking", +"Повторно открывает ранее закрытую тему форума": "Reopens a previously closed forum topic", +"УстановитьДвоичноеТело: Начало установки тела": "SetBinaryBody: Beginning of body setting", +"Возвращает структуру полей описания календаря": "Returns the structure of the calendar description fields", +"Выполняет унарный запрос к выбранному сервису": "Performs a unary request to the selected service", +"Структура или соответствие заголовков запроса": "Structure or map of request headers", +"Часть данных общего тела для текущей отправки": "Part of the common body data for the current send", +"Картинка опроса. Обязательна, если нет текста": "Poll image. Required if there is no text", +"Удалить объект без возможности восстановления": "Delete object without the possibility of recovery", +"Исключает текущий аккаунт из указанной группы": "Excludes the current account from the specified group", +"Структура для кластера: `{ cluster : true }`": "Structure for cluster: `{ cluster : true }`", +"Перемещает каталог в корзину удаляемых файлов": "Move folder to recycle bin", +"Получить список пользовательских полей задачи": "Get list of custom task fields", +"Ошибка получения: %1 (обработано сообщений %2": "Receive error: %1 (processed messages %2", +"Выберите необходимый сайт из списка и нажмите": "Select the site from the list and click", "Возвращает структура клавиатуры для сообщений": "Returns a keyboard structure for messages", "Создает персональное уведомление пользователю": "Creates a personal notification to the user", +"Таймаут ожидания отправки запроса (в секундах": "Request sending timeout (in seconds", +"Структура с информацией об успешности запуска": "Structure with information about the startup success", +"Соответствие Из КлючИЗначение, ДвоичныеДанные": "Map Of KeyAndValue, BinaryData", +"Получить структуру фильтра событий календарей": "Get calendar events filter structure", +"Передана некорректная конфигурация прокси: %1": "Incorrect proxy configuration passed: %1", +"Модуль для работы с Yandex.Disk из набора ОПИ": "Yandex.Disk Module of OpenIntegrations", +"!OInt ОсвободитьОбъект(ПромежуточныйРезультат": "!OInt FreeObject(InterimResult", +"Требования: платформа 1С версии 8.3.10 и выше": "Requirements: 1C platform version 8.3.10 and above", +"ДвоичныеДанные, Соответствие Из КлючИЗначение": "BinaryData, Map Of KeyAndValue", +"Получает информацию о всех пользователях базы": "Gets information about all database users", +"Получает список ассистентов с отбором или без": "Retrieves a list of assistants with or without filtering", +"Даты - передаются как строки формата ISO 8601": "Dates are passed as strings in ISO 8601 format", +"Получает список пользователей рабочей области": "Gets a list of users in the workspace", +"ПолучитьСтруктуруПараметровВКонтексте (пустая": "GetContextParameterStructure (empty", "Восстанавливает ранее удаленный счетчик по ID": "Restores a previously deleted counter by ID", -"Выберите необходимый сайт из списка и нажмите": "Select the site from the list and click", -"Получает информацию о чеках за указанную дату": "Gets information about checks for a specified date", -"Раскомментировать, если выполняется OneScript": "Uncomment if OneScript is executed", -"Получает структуру параметров для записи лога": "Gets the parameter structure for log entry", -"Цены товаров. См. ПолучитьСтруктуруЦеныТовара": "Products prices. See GetProductPriceStructure", -"Ozon_ОбновитьКоличествоТоваров(ПараметрыТеста": "Ozon_UpdateProductsStocks(TestParameters", -"Настройки сессии. См. ПолучитьНастройкиСессии": "Session settings. See GetSessionSettings", -"Массив сообщений о действиях внутри обработки": "Array of messages about actions within the processing", -"Тесты для YaxUnit/1testrunner (служебный, ОПИ": "Tests for YaxUnit/1testrunner (Utility, OpenIntegrations", -"МассивВариантов.Добавить(ПараметрыТестаПрокси": "OptionArray.Add(TestProxyParameters", -"зарегистрироваться и создать новое приложение": "register, and create a new application", -"Назначает пользователя администратором группы": "Assigns the user as the group administrator", -"где `?1 = \"10 AND 20\"`, что приведет к ошибке": "where `?1 = \"10 AND 20,\"' which would cause an error.", -"дата и время в формате timestamp (вместо from": "date and time in timestamp format (instead of from", -"Имя пользователя авторизации, если необходимо": "Username for authorization, if required", -"Идентификатор новой подборки, если необходимо": "Identifier of the new selection, if needed", -"УстановитьСтроковоеТело: нет данных - пропуск": "SetStringBody: no data - skip", -"Устанавливает настройки прокси для соединения": "Sets the proxy settings for the connection", -"Ошибка получения: %1 (обработано сообщений %2": "Receive error: %1 (processed messages %2", -"Инициализировать двунаправленный поток !NOCLI": "Initialize bidirectional stream !NOCLI", -"Получить список пользовательских полей задачи": "Get list of custom task fields", -"Перемещает каталог в корзину удаляемых файлов": "Move folder to recycle bin", -"Структура для кластера: `{ cluster : true }`": "Structure for cluster: `{ cluster : true }`", -"Исключает текущий аккаунт из указанной группы": "Excludes the current account from the specified group", -"Удалить объект без возможности восстановления": "Delete object without the possibility of recovery", -"Картинка опроса. Обязательна, если нет текста": "Poll image. Required if there is no text", -"Часть данных общего тела для текущей отправки": "Part of the common body data for the current send", -"Получить ссылку скачивания публичного объекта": "Get download link for public object", -"Структура или соответствие заголовков запроса": "Structure or map of request headers", -"Выполняет унарный запрос к выбранному сервису": "Performs a unary request to the selected service", -"Возвращает структуру полей описания календаря": "Returns the structure of the calendar description fields", -"УстановитьДвоичноеТело: Начало установки тела": "SetBinaryBody: Beginning of body setting", -"Повторно открывает ранее закрытую тему форума": "Reopens a previously closed forum topic", -"Удалить последние сообщения перед блокировкой": "Delete last messages before blocking", -"Время доставки С, согласованное с получателем": "Delivery time FROM agreed with the recipient", -"Описание локации. См. ПолучитьОписаниеЛокации": "Location description. See GetLocationDescription", -"Получает последние входящие сообщения инстанса": "Gets the latest incoming messages of the instance", +"Не удалось удалить временный файл после теста": "Failed to delete the temporary file after the test!", +"Передана некорректная конфигурация соединения": "Unexpected connection configuration", +"УстановитьДвоичноеТело: начало установки тела": "SetBinaryBody: beginning of body setting", +"Токен для получения конкретной версии объекта": "Token for receiving a specific version of an object", +"Атрибуты, индивидуальные для разных категорий": "Attributes individualized for different categories", +"Признак использования multipart полей в OAuth": "Sign of using multipart fields in OAuth", +"Получает приветственное сообщение сервера FTP": "Receives the FTP servers welcome message", +"Адрес обработки запросов от Telegram (с https": "Request handling address from Telegram (with https", +"Получает токен авторизации по логину и паролю": "Receives authorization token by login and password", +"Исключает пользователей из указанного проекта": "Excludes users from the specified project", +"Сумма НДС, включённая в доп. сбор за доставку": "VAT included in additional delivery charge", +"Изменяет данные записи о трудозатратах задачи": "Update time accounting record data", +"Ошибка получения двоичных данных из параметра": "Error getting binary data from parameter", +"Ozon_ОбновитьИзображенияТовара(ПараметрыТеста": "Ozon_UpdateProductImages(TestParameters", +"Передана некорректная структура доп. настроек": "Incorrect additional settings structure passed", +"Кодировка для записи исходящей строки в поток": "Encoding for writing the outgoing string to the stream", +"Позволяет выбирать несколько вариантов ответа": "Allows to select more than one answer choice", +"Получает настройки учета времени пользователя": "Gets user timekeeping settings", +"Получить пользовательские настройки календаря": "Get custom calendar settings", +"Копирует файл из одного расположения в другое": "Copy file from one destination to another", +"Добавляет заголовок в набор заголовков запроса": "Adds a header to the request header set", +"Получает список магазинов в кабинете по токену": "Gets the list of shops in the cabinet by token", +"Удаляет указанное сообщение из чата или канала": "Delete message from chat or channel", +"Модуль для работы с базами MSSQL из набора ОПИ": "MSSQL Module of OpenIntegrations", +"Загружает часть объекта при загрузке по частям": "Uploads a part of an object for multipart uploading", +"Истина > отправляет файлы отдельными запросами": "True > sends files in separate requests", +"Отправляет контакт с именем и номером телефона": "Sends a contact with name and phone number", +"Настройки FTP. См. ПолучитьНастройкиСоединения": "FTP settings. See GetConnectionSettings", +"Число последних версий объекта для отображения": "Number of the latest versions of the object to display", +"Пакет CLI приложения для систем на базе Debian": "CLI application package for Debian-based systems", +"ПолучитьСписокПользовательскихПолейЗадачи (хук": "GetCustomTaskFieldsList (wh", +"Набор полей заказа. См. ПолучитьОписаниеЗаказа": "Set of order fields. See GetOrderDescription", +"Создает нового пользователя по структуре полей": "Create new user by fields structure", +"Получает общую статистику сообщества за период": "Gets the overall community statistics for a period", +"Получает внешнюю ссылку для доступа к каталогу": "Get external link to folder", +"Каталог = ТекущийСценарий().Каталог + \"\"addins": "Directory = CurrentScript().Path + \"\"addins", +"Открепляет ранее закрепленное сообщение в чате": "Unpins a previously pinned chat message", +"Удалять уведомление из очереди после получения": "Delete notification from the queue after retrieval", +"УстановитьСтроковоеТело: Начало установки тела": "SetStringBody: Beginning of body setting", +"GreenMax_ПолучитьКодАвторизации(ПараметрыТеста": "GreenMax_GetAuthorizationCode(TestParameters", +"Попытка выполнения без дополнительных проверок": "Attempted execution without additional checks", +"Загружает несколько файлов на сервер Neocities": "Uploads multiple files to Neocities", +"Время жизни ссылки в секундах. 604800 максимум": "Link lifetime in seconds. 604800 max.", +"которое будет закрыто после выполнения функции": "which will be closed after the function is executed", +"Модуль для работы с Google Drive из набора ОПИ": "Google Drive Module of OpenIntegrations", +"Получает статус (онлайн) текущего пользователя": "Gets the status (online) of the current user", +"!OInt МассивПути.Добавить(\"OPI_ReportPortal.os": "!OInt PathArray.Add(\"OPI_ReportPortal.os", +"Путь к файлу для сохранения результата запроса": "Path to the file for saving the request result", +"Формирует ссылку для авторизации через браузер": "Forms a link for authorization via the browser", +"Получает информацию о комментарии задачи по ID": "Gets task comment data by ID", +"Время доставки ПО, согласованное с получателем": "Delivery time TO agreed with the recipient", +"Отключает попытку преобразования ответа в JSON": "Disables an attempt to convert the response to JSON", +"URL, по которому необходимо перейти в браузере": "URL to go to in the browser", +"УстановитьСтроковоеТело: начало установки тела": "SetStringBody: beginning of body setting", +"Не добавлять файл, если переданы пустые данные": "Do not add file if empty data is passed", +"Не удалось инициализировать внешнюю компоненту": "Failed to initialize AddIn", +"УстановитьОбъектСоединения: Установка значения": "SetConnectionObject: Setting the value", +"GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "GreenAPI_GetAuthorizationCode(TestParameters", "Сумма дополнительного сбора (в том числе и НДС": "Amount of additional fee (including VAT", -"Модуль для работы с базами MySQL из набора ОПИ": "MySQL Module of OpenIntegrations", -"Проверяет доступность задачи для пользователей": "Checks the availability of the task for users", -"Телефон в международном формате без знака плюс": "Phone number in international format without a plus sign", -"НачалоКодовУспеха И ОтветПроверки.КодСостояния": "StartOfSuccessCodes And CheckResponse.StatusCode", -"Отправляет текстовое сообщение в выбранный чат": "Sends a text message to the selected chat room", -"Создает новый групповой чат с указанным именем": "Creates a new group chat with the specified name", -"Универсальные методы для разных видов серверов": "Generic methods for different types of servers", -"сериализованный JSON ответа от Ozon Seller API": "serialized JSON response from Ozon Seller API", -"сериализованный JSON ответа от сервера MongoDB": "serialized JSON response from MongoDB server", -"Получает информацию о файле по указанному пути": "Get file information by the specified path", -"Скрыть старые сообщения от новых пользователей": "Hide old messages from new members", -"ИспользоватьКодированиеURL: установка значения": "UseURLEncoding: setting the value", -"Список офисов](@api-docs.cdek.ru/36982648.html": "List of pickup points](@api-docs.cdek.ru/36990336.html", +"логин пользователя, которому выдано разрешение": "login of the user to whom the authorization has been granted", "UUID квитанции, полученный при ее формировании": "UUID of the receipt received during its creation", +"Список офисов](@api-docs.cdek.ru/36982648.html": "List of pickup points](@api-docs.cdek.ru/36990336.html", +"ИспользоватьКодированиеURL: установка значения": "UseURLEncoding: setting the value", +"Скрыть старые сообщения от новых пользователей": "Hide old messages from new members", +"Получает информацию о файле по указанному пути": "Get file information by the specified path", +"сериализованный JSON ответа от сервера MongoDB": "serialized JSON response from MongoDB server", +"Универсальные методы для разных видов серверов": "Generic methods for different types of servers", +"Создает новый групповой чат с указанным именем": "Creates a new group chat with the specified name", +"Отправляет текстовое сообщение в выбранный чат": "Sends a text message to the selected chat room", +"НачалоКодовУспеха И ОтветПроверки.КодСостояния": "StartOfSuccessCodes And CheckResponse.StatusCode", +"Телефон в международном формате без знака плюс": "Phone number in international format without a plus sign", +"Проверяет доступность задачи для пользователей": "Checks the availability of the task for users", +"Модуль для работы с базами MySQL из набора ОПИ": "MySQL Module of OpenIntegrations", +"Получает последние входящие сообщения инстанса": "Gets the latest incoming messages of the instance", +"Порог стоимости товара в целых единицах валюты": "Threshold for the value of goods in whole units of currency", "ИспользоватьПоляТелаВOAuth: установка значения": "UseBodyFiledsAtOAuth: setting the value", "ПараметрыЗапросаВСтроку: Добавление параметров": "RequestParametersToString: Adding parameters", -"разрешить участникам изменять настройки группы": "allow members to change group settings", +"сериализованный JSON ответа от Ozon Seller API": "serialized JSON response from Ozon Seller API", "Токен авторизации, если используется не вебхук": "Access token, when app auth method used", -"Идентификатор callback query полученного ботом": "Identifier of the callback query received by the bot", -"Добавляет новую колонку в существующую таблицу": "Adds a new column to an existing table", -"Модуль для работы с ReportPortal из набора ОПИ": "ReportPortal Module of OpenIntegrations", -"выставляет статус 'В сети' для вашего аккаунта": "sets the 'Online' status for your account", -"минимальная цена товара после применения акций": "minimum price of product after promotions have been applied", -"Отправляет текстовое сообщение в чат или канал": "Sends a text message to a chat or channel", -"Получает структуру полей описания пользователя": "Gets the structure of user description fields", -"Устанавливает или снимает реакцию на сообщение": "Set or remove reaction mark on the message", -"Набор настроек. См. ПолучитьДоступныеНастройки": "Settings set. See GetAvailableSettings", -"Код ПВЗ, в который планируется передать заказы": "Code of shipment point to which it is planned to transfer orders", -"Список адресов почты добавляемых пользователей": "List of email addresses of users being added", -"Получает товары, участвующие в выбранной акции": "Gets the products featured in the selected promotion", -"CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "CLI_GreenAPI_LogoutInstance(TestParameters", -"Строка или коллекция для преобразования в JSON": "String or collection to convert to JSON", -"Клавиатура под сообщением или на нижней панели": "Keyboard under the message or on the bottom panel", +"разрешить участникам изменять настройки группы": "allow members to change group settings", "Получает список записей о трудозатратах задачи": "Get list of time accounting records for task", -"логин пользователя, которому выдано разрешение": "login of the user to whom the authorization has been granted", -"Порог стоимости товара в целых единицах валюты": "Threshold for the value of goods in whole units of currency", -"GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "GreenAPI_GetAuthorizationCode(TestParameters", -"Попытка выполнения без дополнительных проверок": "Attempted execution without additional checks", -"Каталог = ТекущийСценарий().Каталог + \"\"addins": "Directory = CurrentScript().Path + \"\"addins", -"Получает внешнюю ссылку для доступа к каталогу": "Get external link to folder", -"Получает общую статистику сообщества за период": "Gets the overall community statistics for a period", -"Создает нового пользователя по структуре полей": "Create new user by fields structure", -"Набор полей заказа. См. ПолучитьОписаниеЗаказа": "Set of order fields. See GetOrderDescription", -"Число последних версий объекта для отображения": "Number of the latest versions of the object to display", -"ПолучитьСписокПользовательскихПолейЗадачи (хук": "GetCustomTaskFieldsList (wh", -"Пакет CLI приложения для систем на базе Debian": "CLI application package for Debian-based systems", -"Открепляет ранее закрепленное сообщение в чате": "Unpins a previously pinned chat message", -"Настройки FTP. См. ПолучитьНастройкиСоединения": "FTP settings. See GetConnectionSettings", -"Отправляет контакт с именем и номером телефона": "Sends a contact with name and phone number", -"Истина > отправляет файлы отдельными запросами": "True > sends files in separate requests", -"Загружает часть объекта при загрузке по частям": "Uploads a part of an object for multipart uploading", -"Модуль для работы с базами MSSQL из набора ОПИ": "MSSQL Module of OpenIntegrations", -"Удаляет указанное сообщение из чата или канала": "Delete message from chat or channel", -"Получает список магазинов в кабинете по токену": "Gets the list of shops in the cabinet by token", -"Добавляет заголовок в набор заголовков запроса": "Adds a header to the request header set", -"Удалять уведомление из очереди после получения": "Delete notification from the queue after retrieval", -"Путь к файлу для сохранения результата запроса": "Path to the file for saving the request result", -"GreenMax_ПолучитьКодАвторизации(ПараметрыТеста": "GreenMax_GetAuthorizationCode(TestParameters", -"Не удалось инициализировать внешнюю компоненту": "Failed to initialize AddIn", -"Не добавлять файл, если переданы пустые данные": "Do not add file if empty data is passed", -"УстановитьСтроковоеТело: начало установки тела": "SetStringBody: beginning of body setting", -"URL, по которому необходимо перейти в браузере": "URL to go to in the browser", -"Отключает попытку преобразования ответа в JSON": "Disables an attempt to convert the response to JSON", -"Время доставки ПО, согласованное с получателем": "Delivery time TO agreed with the recipient", -"Получает информацию о комментарии задачи по ID": "Gets task comment data by ID", -"УстановитьОбъектСоединения: Установка значения": "SetConnectionObject: Setting the value", -"Формирует ссылку для авторизации через браузер": "Forms a link for authorization via the browser", -"!OInt МассивПути.Добавить(\"OPI_ReportPortal.os": "!OInt PathArray.Add(\"OPI_ReportPortal.os", -"Получает статус (онлайн) текущего пользователя": "Gets the status (online) of the current user", -"Модуль для работы с Google Drive из набора ОПИ": "Google Drive Module of OpenIntegrations", -"которое будет закрыто после выполнения функции": "which will be closed after the function is executed", -"Время жизни ссылки в секундах. 604800 максимум": "Link lifetime in seconds. 604800 max.", -"УстановитьСтроковоеТело: Начало установки тела": "SetStringBody: Beginning of body setting", -"Загружает несколько файлов на сервер Neocities": "Uploads multiple files to Neocities", -"Максимальное число события, хранящееся в память": "Maximum number of events stored in memory", -"Отборы, выбранные поля, количество и сортировка": "Filter, selected fields, limit and sorting", -"Наименование файла с расширением для сохранения": "File name with extension", -"Инициализирует двунаправленный поток для обмена": "Initializes a bidirectional stream for exchange", -"Описание контакта. См. ПолучитьОписаниеКонтакта": "Contact description. See GetContactDescription", -"разрешить участникам добавлять новых участников": "allow members to add new participants", -"Не удалось удалить файл запроса после установки": "Failed to delete query file after execution", -"Запускает ожидание сообщений на указанном порту": "Starts listening for messages on the specified port", -"Добавляет блок файла в multipart/form-data тело": "Adds a file block to the multipart/form-data body", -"Перемещает файл из одного расположения в другое": "Move file from one destination to another", -"Загружает выбранную модель в оперативную память": "Loads the selected model into RAM", -"Получает список сообщений в очереди на отправку": "Gets the list of messages in the queue to be sent", -"Добавьте необходимые для ваших целей разрешения": "Add the permissions required for your purposes", -"роль проекта: CUSTOMER, MEMBER, PROJECT_MANAGER": "project role: CUSTOMER, MEMBER, PROJECT_MANAGER", -"Получает список файлов с или без отбора по типу": "Gets a list of files with or without filtering by type", -"Файлы для загрузки: Ключ > путь на NC, Значение": "Files: Key > destination path on NC, Value", -"Получает список подразделений по ID или фильтру": "Gets a list of departments by ID or filter", -"Массив или одна структура полей описания товара": "Array or one structure of product description fields", -"Максимальный размер данных. 0 > до конца потока": "Max data size. 0 > to the end of the stream", -"Добавляет поле формы в multipart/form-data тело": "Adds a form field to the multipart/form-data body", -"Передана некорректная структура внешней таблицы": "Incorrect structure of external table passed", -"ДобавитьЗаголовок: установка заголовков запроса": "AddHeader: header setting", -"Структура полей чата. См. ПолучитьСтруктуруЧата": "Chat fields structure. See GetChatStructure", -"Получает структуру параметров элемента RSS фида": "Gets the structure of parameters for an RSS feed item", -"Игнорировать кэш при повторном запросе проверки": "Ignore cache on repeated verification request", -"UUID штрихкода, полученный при его формировании": "The UID of the barcode received when the barcode was created", -"Получает календарь из списка пользователя по ID": "Gets a calendar from the user's list by ID", -"УстановитьFormТело: тело установлено, размер %1": "SetFormBody: body set, size %1", -"Получает список пользователей указанного канала": "Gets a list of users in the specified channel", -"Перейдите на [страницу Календаря в Marketplace]": "Go to the [Calendar page on the Marketplace]", -"Благодарим наших спонсоров за поддержку проекта": "We thank our sponsors for supporting the project", -"Выполняет запрос, если он был сформирован ранее": "Executes the request if it was created earlier", -"Модуль для работы с базами SQLite из набора ОПИ": "SQLite Module of OpenIntegrations", -"Массив имен для добавления новых листов в книгу": "Array of names to add new sheets to the spreadsheet", -"Получает список комментариев к записи в таблице": "Gets the list of comments for a record in the table", -"Модуль для работы с Google Sheets из набора ОПИ": "Google Sheets Module of OpenIntegrations", -"Параметры запуска. См. ПолучитьСтруктуруЗапуска": "Launch parameters. See GetLaunchStructure", -"Для тела запроса установлен несуществующий файл": "A non-existent file is set for the request body", +"Клавиатура под сообщением или на нижней панели": "Keyboard under the message or on the bottom panel", +"Строка или коллекция для преобразования в JSON": "String or collection to convert to JSON", +"CLI_GreenAPI_РазлогинитьИнстанс(ПараметрыТеста": "CLI_GreenAPI_LogoutInstance(TestParameters", +"Получает товары, участвующие в выбранной акции": "Gets the products featured in the selected promotion", +"Код ПВЗ, в который планируется передать заказы": "Code of shipment point to which it is planned to transfer orders", +"Набор настроек. См. ПолучитьДоступныеНастройки": "Settings set. See GetAvailableSettings", +"Список адресов почты добавляемых пользователей": "List of email addresses of users being added", +"Получает структуру полей описания пользователя": "Gets the structure of user description fields", +"Отправляет текстовое сообщение в чат или канал": "Sends a text message to a chat or channel", +"минимальная цена товара после применения акций": "minimum price of product after promotions have been applied", +"выставляет статус 'В сети' для вашего аккаунта": "sets the 'Online' status for your account", +"Модуль для работы с ReportPortal из набора ОПИ": "ReportPortal Module of OpenIntegrations", +"Добавляет новую колонку в существующую таблицу": "Adds a new column to an existing table", +"Идентификатор callback query полученного ботом": "Identifier of the callback query received by the bot", +"Устанавливает или снимает реакцию на сообщение": "Set or remove reaction mark on the message", +"Получает последние исходящие сообщения инстанса": "Gets the latest outgoing messages of the instance", +"УстановитьJsonТело: Тело установлено, размер %1": "SetJsonBody: Body set, size %1", +"GreenMax_ОтправитьКодАвторизации(ПараметрыТеста": "GreenMax_SendAuthorizationCode(TestParameters", +"ТекущаяДата - 60 * 60 * 24); // Дата создания": "CurrentDate - 60 * 60 * 24); // Creation date", +"Структура: `{ role: \"имя\", db: \"база данных\" }`": "Structure: `{ role: \"name\", db: \"database\" }`", +"Получаем сообщения для инициализации соединений": "Receive messages for initializing connections", +"Передана некорректная коллекция доп. параметров": "An incorrect collection of additional parameters has been passed", +"Получает информацию о магазине (кампании) по ID": "Gets information about a market (campaign) by ID", +"СформироватьЗапрос: Создание объекта соединения": "FormRequest: Creating a connection object", +"Передана некорректная коллекция доп. заголовков": "An incorrect collection of additional headers has been passed", +"Путь к объекту, тег которого необходимо удалить": "Path to the object whose tag needs to be deleted", +"Передана некорректная структура доп. заголовков": "Incorrect additional headers structure passed", +"Отправляет URL с предпросмотром в чат или канал": "Sends a URL with a preview to a chat or channel", +"Создает кампанию в выбранном рекламном кабинете": "Creates a campaign in the selected advertising account", +"Установить пользовательские настройки календаря": "Set custom calendar settings", +"Разрешает незащищенное соединение с библиотекой": "Allows an unsecured connection to the library", +"Структура полей лида. См. ПолучитьСтруктуруЛида": "Lead fields structure. See GetLeadStructure", +"Модуль для работы с Yandex Market из набора ОПИ": "Yandex Market Module of OpenIntegrations", +"Получает структуру настроек для HTTP соединения": "Gets the settings structure for HTTP connection", +"Получает список календарей указанного владельца": "Gets a list of calendars of the specified owner", +"Значение параметра будет преобразовано в строку": "The parameter value will be converted to a string", +"Получает структуру настроек для gRPC соединения": "Gets the settings structure for gRPC connection", +"OInt/tests/Modules/Coverage_ЗапускВсехТестов.os": "OInt/tests/Modules/Coverage_RunAllTests.os", +"Удаляет участника из выбранного группового чата": "Removes a member from the selected group chat", +"ВызватьМетод: переадресация %1/%2, переход к %3": "ExecuteMethod: redirection %1/%2, moving to %3", +"Пользователь или пользователи чата для удаления": "The member or members of the chat room to remove", +"Структура: `{ user: <имя>, db: <база данных> }`": "Structure: `{ user: , db: }`", +"Оно не обязано являться настоящим путем к файлу": "It does not have to be a real file path", +"Копирует объект из одного расположения в другое": "Copies an object from one location to another", +"Тип набора: text, recording, video, image, file": "Typing type: text, recording, video, image, file", +"Получает информацию о товаре по идентификаторам": "Gets product information by identifiers", +"Структура полей лида (см. ПолучитьСтруктуруЛида": "Lead fields structure (see GetLeadStructure", +"Получает информацию о пользователях для диалога": "Get users information for dialog", +"название задачи (можно искать по шаблону [%_])>": "task name (can be searched using the template [%_])>", +"Максимальный размер данных. 0 > без ограничений": "Maximum data size. 0 > no limit", +"УстановитьJsonТело: тело установлено, размер %1": "SetJsonBody: body set, size %1", +"ID пользователя для учета. Текущий по умолчанию": "Users ID. Current by default", +"OneScript: ./OInt/tests/Modules/OPI_ТестыCLI.os": "OneScript: ./OInt/tests/Modules/OPI_TestsCLI.os", +"Dropbox_ПолучитьДанныеИспользованияПространства": "Dropbox_GetSpaceUsageData", +"УстановитьFormТело: Тело установлено, размер %1": "SetFormBody: Body set, size %1", +"Ошибка получения коллекции для формирования XML": "Error getting a collection for XML generation", "ПолучитьПользовательскиеНастройкиКалендаря (хук": "GetCustomCalendarSettings (wh", "Получает события календарей с фильтрами или без": "Gets events of calendars with or without filters", +"Получает список подразделений по ID или фильтру": "Gets a list of departments by ID or filter", +"Файлы для загрузки: Ключ > путь на NC, Значение": "Files: Key > destination path on NC, Value", +"Получает список файлов с или без отбора по типу": "Gets a list of files with or without filtering by type", +"роль проекта: CUSTOMER, MEMBER, PROJECT_MANAGER": "project role: CUSTOMER, MEMBER, PROJECT_MANAGER", +"Добавьте необходимые для ваших целей разрешения": "Add the permissions required for your purposes", +"Получает список сообщений в очереди на отправку": "Gets the list of messages in the queue to be sent", +"Загружает выбранную модель в оперативную память": "Loads the selected model into RAM", +"Перемещает файл из одного расположения в другое": "Move file from one destination to another", +"Добавляет блок файла в multipart/form-data тело": "Adds a file block to the multipart/form-data body", +"Запускает ожидание сообщений на указанном порту": "Starts listening for messages on the specified port", +"Не удалось удалить файл запроса после установки": "Failed to delete query file after execution", +"разрешить участникам добавлять новых участников": "allow members to add new participants", +"Описание контакта. См. ПолучитьОписаниеКонтакта": "Contact description. See GetContactDescription", "Токен авторизации, если используется не веб-хук": "Access token, when app auth method used", -"Ошибка получения коллекции для формирования XML": "Error getting a collection for XML generation", -"OInt/tests/Modules/Coverage_ЗапускВсехТестов.os": "OInt/tests/Modules/Coverage_RunAllTests.os", -"СформироватьЗапрос: Создание объекта соединения": "FormRequest: Creating a connection object", -"Разрешает незащищенное соединение с библиотекой": "Allows an unsecured connection to the library", -"Установить пользовательские настройки календаря": "Set custom calendar settings", -"Создает кампанию в выбранном рекламном кабинете": "Creates a campaign in the selected advertising account", -"Отправляет URL с предпросмотром в чат или канал": "Sends a URL with a preview to a chat or channel", -"Передана некорректная структура доп. заголовков": "Incorrect additional headers structure passed", -"Путь к объекту, тег которого необходимо удалить": "Path to the object whose tag needs to be deleted", -"Передана некорректная коллекция доп. заголовков": "An incorrect collection of additional headers has been passed", -"Модуль для работы с Yandex Market из набора ОПИ": "Yandex Market Module of OpenIntegrations", -"Получает информацию о магазине (кампании) по ID": "Gets information about a market (campaign) by ID", -"УстановитьJsonТело: Тело установлено, размер %1": "SetJsonBody: Body set, size %1", -"Передана некорректная коллекция доп. параметров": "An incorrect collection of additional parameters has been passed", -"Получаем сообщения для инициализации соединений": "Receive messages for initializing connections", -"Структура: `{ role: \"имя\", db: \"база данных\" }`": "Structure: `{ role: \"name\", db: \"database\" }`", -"ТекущаяДата - 60 * 60 * 24); // Дата создания": "CurrentDate - 60 * 60 * 24); // Creation date", -"GreenMax_ОтправитьКодАвторизации(ПараметрыТеста": "GreenMax_SendAuthorizationCode(TestParameters", -"Получает последние исходящие сообщения инстанса": "Gets the latest outgoing messages of the instance", -"Структура полей лида. См. ПолучитьСтруктуруЛида": "Lead fields structure. See GetLeadStructure", -"Получает структуру настроек для HTTP соединения": "Gets the settings structure for HTTP connection", -"Тип набора: text, recording, video, image, file": "Typing type: text, recording, video, image, file", -"Значение параметра будет преобразовано в строку": "The parameter value will be converted to a string", -"Dropbox_ПолучитьДанныеИспользованияПространства": "Dropbox_GetSpaceUsageData", -"OneScript: ./OInt/tests/Modules/OPI_ТестыCLI.os": "OneScript: ./OInt/tests/Modules/OPI_TestsCLI.os", -"ID пользователя для учета. Текущий по умолчанию": "Users ID. Current by default", -"УстановитьJsonТело: тело установлено, размер %1": "SetJsonBody: body set, size %1", -"Максимальный размер данных. 0 > без ограничений": "Maximum data size. 0 > no limit", -"название задачи (можно искать по шаблону [%_])>": "task name (can be searched using the template [%_])>", -"Получает информацию о пользователях для диалога": "Get users information for dialog", -"Структура полей лида (см. ПолучитьСтруктуруЛида": "Lead fields structure (see GetLeadStructure", -"УстановитьFormТело: Тело установлено, размер %1": "SetFormBody: Body set, size %1", -"Получает информацию о товаре по идентификаторам": "Gets product information by identifiers", -"Копирует объект из одного расположения в другое": "Copies an object from one location to another", -"Оно не обязано являться настоящим путем к файлу": "It does not have to be a real file path", -"Структура: `{ user: <имя>, db: <база данных> }`": "Structure: `{ user: , db: }`", -"Пользователь или пользователи чата для удаления": "The member or members of the chat room to remove", -"ВызватьМетод: переадресация %1/%2, переход к %3": "ExecuteMethod: redirection %1/%2, moving to %3", -"Удаляет участника из выбранного группового чата": "Removes a member from the selected group chat", -"Получает список календарей указанного владельца": "Gets a list of calendars of the specified owner", -"Получает структуру настроек для gRPC соединения": "Gets the settings structure for gRPC connection", -"Авторизация: строка для JWT, структура для basic": "Authorization: string for JWT, structure for basic", -"Сформируйте ссылку и перейдите по ней в браузере": "Form a link and click on it in your browser", -"Флаг ожидания следующих сообщений после текущего": "Flag for waiting for the next messages after the current one", -"Идентификатор товара в системе продавца (Артикул": "Item identifier in the vendor's system (Article", -"Ozon_ЗагрузитьКодыАктивацииТовара(ПараметрыТеста": "Ozon_UploadProductActivationCodes(TestParameters", -"РазбитьURL: разбиение запроса на составные части": "SplitURL: splitting a request into component parts", -"Создает новый блок на основе существующего блока": "Creates a new block based on an existing block", -"Коллекция КлючЗначение дополнительных параметров": "KeyValue collection of additional parameters", -"ОчиститьСписокЗакрепленныхСообщенийТемы (главная": "ClearPinnedMessagesList (main", -"Модуль для работы с Yandex Metrika из набора ОПИ": "Yandex Metrika Module of OpenIntegrations", -"ПолучитьСтруктуруПараметровПредставлений (пустая": "GetEmbeddingsParameterStructure (empty", -"Загружает файл на диск по заданному пути частями": "Uploads a file to disk at the specified path in parts", -"Идентификатор или массив идентификаторов записей": "Identifier or array of record identifiers", -"Помечает элемент чеклиста задачи как выполненный": "Mark an element as completed", -"Получает структуру параметров элемента Atom фида": "Gets the structure of parameters of an Atom feed item", -"Дата начала нужного периода доступных таймслотов": "Start date of the required period of available timeslots", -"Фильтр офисов. См. ПолучитьОписаниеФильтраОфисов": "Office filter. See GetOfficeFilterDescription", -"Ожидает подключение в течении указанного времени": "Waiting for connection for the specified time", -"Ozon_ПолучитьДоступныеТоварыАкции(ПараметрыТеста": "Ozon_GetAvailablePromoProducts(TestParameters", -"Вы можете передать до 100 идентификаторов за раз": "You can pass up to 100 identifiers at a time", -"Не удалось удалить временный файл после загрузки": "Failed to delete temporary file after upload", -"Массив или одна структура полей атрибутов товара": "Array or one structure of product attribute fields", -"пользователь, последним изменивший статус задачи": "the user who last changed the task status", -"Вид обработки текста (HTML, Markdown, MarkdownV2": "Text processing type (HTML, Markdown, MarkdownV2", -"Модуль для работы с S3 хранилищами из набора ОПИ": "S3 Storage Module of OpenIntegrations", -"Получает доступные интервалы доставки для заказа": "Gets available delivery intervals for order", -"Создает новую коллекцию с указанными параметрами": "Creates a new collection with the specified parameters", -"Удаление заказа](@api-docs.cdek.ru/29924487.html": "Deleting an order](@api-docs.cdek.ru/33828855.html", -"Получает токен по коду из авторизации в браузере": "Gets token by code from browser authorization", -"Получает информацию об тестовом элементе по UUID": "Gets information about a test item by UUID", -"Возвращает список дочерних блоков блока-родителя": "Returns list of child blocks of parent block", -"Истина > сортировать по дате, Ложь > по алфавиту": "True > sort by date, False > alphabetically", -"Отклоняет вступление пользователя в закрытый чат": "Rejects the user's request to join a private chat room", -"Таймаут ожидания уведомления, если очередь пуста": "Timeout for waiting for a notification if the queue is empty", -"URL, который будет открыт клиентским приложением": "URL to be opened by the client application", -"Модуль работы с внешними компонентами набора ОПИ": "External Components Module of OpenIntegrations", -"Отбор файлов по каталогу. Все, если не заполнено": "Selection of files by catalog. All if not filled in", -"Существующее соединение или параметры соединения": "Existing connection or connection parameters", -"Список регионов](@api-docs.cdek.ru/33829418.html": "List of Regions](@api-docs.cdek.ru/33829453.html", -"двоичные данные zip архива с содержимым каталога": "binary data of the zip archive with the contents of the directory", -"CLI_GreenAPI_СкачатьФайлСообщения(ПараметрыТеста": "CLI_GreenAPI_DownloadMessageFile(TestParameters", -"ID активного подключения. См. ОжидатьПодключение": "Active connection ID. See AwaitingConnection", -"Модуль для работы с базами MongoDB из набора ОПИ": "MongoDB Module of OpenIntegrations", -"Генерирует ответ по заданному текстовому запросу": "Generates a response for a given text query", -"Добавляет сообщение в обсуждение от имени группы": "Adds a message to the discussion on behalf of the group", -"!OInt Сообщить(OPI_Инструменты.JSONСтрокой(Ответ": "!OInt Message(OPI_Tools.JSONString(Response", -"Инициализировать: установка стандартных значений": "Initialize: setting of default values", -"Некорректный метод! Проверьте правильность ввода": "Incorrect method! Check input correctness", +"Наименование файла с расширением для сохранения": "File name with extension", +"Отборы, выбранные поля, количество и сортировка": "Filter, selected fields, limit and sorting", +"Максимальное число события, хранящееся в память": "Maximum number of events stored in memory", +"Массив или одна структура полей описания товара": "Array or one structure of product description fields", +"Максимальный размер данных. 0 > до конца потока": "Max data size. 0 > to the end of the stream", +"Инициализирует двунаправленный поток для обмена": "Initializes a bidirectional stream for exchange", +"Передана некорректная структура внешней таблицы": "Incorrect structure of external table passed", +"Добавляет поле формы в multipart/form-data тело": "Adds a form field to the multipart/form-data body", +"Для тела запроса установлен несуществующий файл": "A non-existent file is set for the request body", +"Модуль для работы с Google Sheets из набора ОПИ": "Google Sheets Module of OpenIntegrations", +"Получает список комментариев к записи в таблице": "Gets the list of comments for a record in the table", +"Массив имен для добавления новых листов в книгу": "Array of names to add new sheets to the spreadsheet", +"Модуль для работы с базами SQLite из набора ОПИ": "SQLite Module of OpenIntegrations", +"Выполняет запрос, если он был сформирован ранее": "Executes the request if it was created earlier", +"Благодарим наших спонсоров за поддержку проекта": "We thank our sponsors for supporting the project", +"Параметры запуска. См. ПолучитьСтруктуруЗапуска": "Launch parameters. See GetLaunchStructure", +"Получает список пользователей указанного канала": "Gets a list of users in the specified channel", +"УстановитьFormТело: тело установлено, размер %1": "SetFormBody: body set, size %1", +"Получает календарь из списка пользователя по ID": "Gets a calendar from the user's list by ID", +"UUID штрихкода, полученный при его формировании": "The UID of the barcode received when the barcode was created", +"Игнорировать кэш при повторном запросе проверки": "Ignore cache on repeated verification request", +"Получает структуру параметров элемента RSS фида": "Gets the structure of parameters for an RSS feed item", +"Структура полей чата. См. ПолучитьСтруктуруЧата": "Chat fields structure. See GetChatStructure", +"Перейдите на [страницу Календаря в Marketplace]": "Go to the [Calendar page on the Marketplace]", +"ДобавитьЗаголовок: установка заголовков запроса": "AddHeader: header setting", "Лимит пользователей (бесконечно, если не указано": "User limit (infinite if not specified", +"Некорректный метод! Проверьте правильность ввода": "Incorrect method! Check input correctness", +"Инициализировать: установка стандартных значений": "Initialize: setting of default values", +"!OInt Сообщить(OPI_Инструменты.JSONСтрокой(Ответ": "!OInt Message(OPI_Tools.JSONString(Response", +"Добавляет сообщение в обсуждение от имени группы": "Adds a message to the discussion on behalf of the group", +"Генерирует ответ по заданному текстовому запросу": "Generates a response for a given text query", +"двоичные данные zip архива с содержимым каталога": "binary data of the zip archive with the contents of the directory", +"ID активного подключения. См. ОжидатьПодключение": "Active connection ID. See AwaitingConnection", +"CLI_GreenAPI_СкачатьФайлСообщения(ПараметрыТеста": "CLI_GreenAPI_DownloadMessageFile(TestParameters", +"Список регионов](@api-docs.cdek.ru/33829418.html": "List of Regions](@api-docs.cdek.ru/33829453.html", +"Существующее соединение или параметры соединения": "Existing connection or connection parameters", +"Отбор файлов по каталогу. Все, если не заполнено": "Selection of files by catalog. All if not filled in", "Документы и массивы в структуру не оборачиваются": "Documents and arrays are not wrapped in a structure", +"Модуль для работы с базами MongoDB из набора ОПИ": "MongoDB Module of OpenIntegrations", "Истина > в макете будут только обязательные поля": "True > only required fields will be in the set", -"Маркер продолжения списка из предыдущего запроса": "Next page marker from the previous request", -"Получает структуру параметров тестового элемента": "Gets the test item parameter structure", -"сериализованный JSON ответа от CDEK или PDF файл": "serialized JSON response from CDEK or a PDF file", -"Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы": "Telegram_ClearTopicPinnedMessagesList", -"!OInt ТекущийКаталог = ТекущийСценарий().Каталог": "!OInt CurrentDirectory = CurrentScript().Path", -"Удаление заявки](@api-docs.cdek.ru/29948379.html": "Deleting a courier invitation](@api-docs.cdek.ru/33828880.html", -"Получает данные строки таблицы по идентификатору": "Gets row data of the table by identifier", -"Получает список пользовательских полей для задач": "Gets list of custom task fields", -"Удаляет ранее созданный результат из комментария": "Deletes task result, created from a comment", "Источник сообщения: system, user, assistant и др": "Source of the message: system, user, assistant, etc.", -"!OInt ЭтоCLI = ПолучитьПеременнуюСреды(\"OINT_CLI": "!OInt IsCLI = GetEnvironmentVariable(\"OINT_CLI", -"Отбор по имени или именам настроек для получения": "Filter by setting name or names for retrieval", -"Забрать токен из параметра URL в адресной строке": "Retrieve the token from the URL parameter in the address bar", -"Число повторов при ошибке в комплексных запросах": "Number of retries on error in complex requests", -"ТребуетсяОбработкаУправляющихПоследовательностей": "RequiresProcessingOfEscapeSequences", +"Получает структуру параметров тестового элемента": "Gets the test item parameter structure", +"Модуль работы с внешними компонентами набора ОПИ": "External Components Module of OpenIntegrations", "Вид голоса: alloy, ash, ballad, coral, echo и др": "Voice type: alloy, ash, ballad, coral, echo, etc.", +"ТребуетсяОбработкаУправляющихПоследовательностей": "RequiresProcessingOfEscapeSequences", +"Число повторов при ошибке в комплексных запросах": "Number of retries on error in complex requests", +"Забрать токен из параметра URL в адресной строке": "Retrieve the token from the URL parameter in the address bar", +"Отбор по имени или именам настроек для получения": "Filter by setting name or names for retrieval", +"Маркер продолжения списка из предыдущего запроса": "Next page marker from the previous request", +"!OInt ЭтоCLI = ПолучитьПеременнуюСреды(\"OINT_CLI": "!OInt IsCLI = GetEnvironmentVariable(\"OINT_CLI", +"Получает список пользовательских полей для задач": "Gets list of custom task fields", +"Получает данные строки таблицы по идентификатору": "Gets row data of the table by identifier", +"Удаление заявки](@api-docs.cdek.ru/29948379.html": "Deleting a courier invitation](@api-docs.cdek.ru/33828880.html", +"!OInt ТекущийКаталог = ТекущийСценарий().Каталог": "!OInt CurrentDirectory = CurrentScript().Path", "tools/Modules/internal/Classes/OPI_HTTPКлиент.os": "tools/Modules/internal/Classes/OPI_HTTPClient.os", +"сериализованный JSON ответа от CDEK или PDF файл": "serialized JSON response from CDEK or a PDF file", +"Удаляет ранее созданный результат из комментария": "Deletes task result, created from a comment", +"URL, который будет открыт клиентским приложением": "URL to be opened by the client application", +"Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы": "Telegram_ClearTopicPinnedMessagesList", +"Отклоняет вступление пользователя в закрытый чат": "Rejects the user's request to join a private chat room", +"Помечает элемент чеклиста задачи как выполненный": "Mark an element as completed", +"Идентификатор или массив идентификаторов записей": "Identifier or array of record identifiers", +"Загружает файл на диск по заданному пути частями": "Uploads a file to disk at the specified path in parts", +"ПолучитьСтруктуруПараметровПредставлений (пустая": "GetEmbeddingsParameterStructure (empty", +"Модуль для работы с Yandex Metrika из набора ОПИ": "Yandex Metrika Module of OpenIntegrations", +"ОчиститьСписокЗакрепленныхСообщенийТемы (главная": "ClearPinnedMessagesList (main", +"Получает структуру параметров элемента Atom фида": "Gets the structure of parameters of an Atom feed item", +"Коллекция КлючЗначение дополнительных параметров": "KeyValue collection of additional parameters", +"РазбитьURL: разбиение запроса на составные части": "SplitURL: splitting a request into component parts", +"Ozon_ЗагрузитьКодыАктивацииТовара(ПараметрыТеста": "Ozon_UploadProductActivationCodes(TestParameters", +"Идентификатор товара в системе продавца (Артикул": "Item identifier in the vendor's system (Article", +"Флаг ожидания следующих сообщений после текущего": "Flag for waiting for the next messages after the current one", +"Сформируйте ссылку и перейдите по ней в браузере": "Form a link and click on it in your browser", +"Таймаут ожидания уведомления, если очередь пуста": "Timeout for waiting for a notification if the queue is empty", +"Создает новый блок на основе существующего блока": "Creates a new block based on an existing block", +"Дата начала нужного периода доступных таймслотов": "Start date of the required period of available timeslots", +"Авторизация: строка для JWT, структура для basic": "Authorization: string for JWT, structure for basic", +"Ожидает подключение в течении указанного времени": "Waiting for connection for the specified time", +"Истина > сортировать по дате, Ложь > по алфавиту": "True > sort by date, False > alphabetically", +"Возвращает список дочерних блоков блока-родителя": "Returns list of child blocks of parent block", +"Получает информацию об тестовом элементе по UUID": "Gets information about a test item by UUID", +"Получает токен по коду из авторизации в браузере": "Gets token by code from browser authorization", +"Фильтр офисов. См. ПолучитьОписаниеФильтраОфисов": "Office filter. See GetOfficeFilterDescription", +"Создает новую коллекцию с указанными параметрами": "Creates a new collection with the specified parameters", +"Получает доступные интервалы доставки для заказа": "Gets available delivery intervals for order", +"Удаление заказа](@api-docs.cdek.ru/29924487.html": "Deleting an order](@api-docs.cdek.ru/33828855.html", +"Вид обработки текста (HTML, Markdown, MarkdownV2": "Text processing type (HTML, Markdown, MarkdownV2", +"пользователь, последним изменивший статус задачи": "the user who last changed the task status", +"Массив или одна структура полей атрибутов товара": "Array or one structure of product attribute fields", +"Не удалось удалить временный файл после загрузки": "Failed to delete temporary file after upload", +"Вы можете передать до 100 идентификаторов за раз": "You can pass up to 100 identifiers at a time", +"Ozon_ПолучитьДоступныеТоварыАкции(ПараметрыТеста": "Ozon_GetAvailablePromoProducts(TestParameters", +"Модуль для работы с S3 хранилищами из набора ОПИ": "S3 Storage Module of OpenIntegrations", +"CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыТеста": "CLI_Ozon_UpdateProductImages(TestParameters", +"ПолучитьСтруктуруФильтраСобытийКалендарей (пустая": "GetCalendarEventsFilterStructure (empty", +"Получает список файлов с отбором каталога или без": "Gets a list of files with or without directory selection", +"Вид загрузки (Пост, Товар, История, Опрос, Прочее": "Upload type (Post, Product, Story, Poll, Other", +"Зайдите в приложение Viber и создайте новый канал": "Open the Viber app and create a new channel", +"Общий модуль инструментов работы с SSH набора ОПИ": "Common SSH Tools Module of OpenIntegrations", +"Получает ссылку для ручной загрузки файла на Диск": "Gets a link for manual file upload to Disk", +"ОжидаетЧто(Результат[\"entity\"][\"uuid\"]).Заполнено": "ExpectsThat(Result[\"entity\"][\"uuid\"]).Filled", +"tools/Modules/internal/Modules/OPI_Инструменты.os": "tools/Modules/internal/Modules/OPI_Tools.os", +"Время чтения данных (сек). 0 > до конца сообщения": "Data reading time (sec). 0 > until the end of the message", +"УстановитьПользовательскиеНастройкиКалендаря (хук": "SetCustomCalendarSettings (wh", +"Общий модуль инструментов работы с SQL набора ОПИ": "Common SQL Tools Module of OpenIntegrations", +"Источник: https:github.com/vbondarevsky/Connector": "Source: https:github.com/vbondarevsky/Connector", +"Список позиций: Ключ > SKU, Значение > Количество": "Items list: Key > SKU, Value > Amount", +"Дополнительные заголовки запроса, если необходимо": "Additional request headers, if necessary", +"Генерирует аудио с озвучиванием указанного текста": "Generates audio with the specified text for speech synthesis", +"tools/Modules/internal/Classes/OPI_ЗапросыHTTP.os": "tools/Modules/internal/Classes/OPI_HTTPRequests.os", +"Структура счетчика. См. ПолучитьСтруктуруСчетчика": "Counter structure. See GetCounterStructure", +"Ozon_ПолучитьСтатусДобавленияКодов(ПараметрыТеста": "Ozon_GetCodesUploadStatus(TestParameters", +"Формирует строку подключения из переданных данных": "Forms a connection string from the passed data", +"Преобразует файл с Base64 строкой в бинарный файл": "Convert file with Base64 string to binary file", +"Обновляет изображения и маркетинговый цвет товара": "Update images and marketing color", +"Параметры элемента. См. ПолучитьСтруктуруЭлемента": "Item parameters. See GetItemStructure", +"Ошибка валидации JSON параметра. Индекс массив %1": "JSON validation error for parameter. Array position %1", +"Тип вложений: tweet_video, tweet_image, tweet_gif": "Attachment type: tweet_video, tweet_image, tweet_gif", +"Открывает GRPC соединение для работы с ClickHouse": "Opens a GRPC connection for working with ClickHouse", +"Источник сообщения: system, user, assistant, tool": "Message source: system, user, assistant, tool", +"Тип чата OPEN (публичный) | CHAT (по приглашениям": "Chat type OPEN (Public) | CHAT (Private", +"Передана некорректная конфигурация соединения: %1": "Incorrect connection configuration provided: %1", +"Подтверждает окончание загрузки объекта по частям": "Confirms the multipart uploading finish", +"Получает список доступных значений характеристики": "Gets the list of available values of the attribute", +"Изменение заказа](@api-docs.cdek.ru/36981178.html": "Update an order](@api-docs.cdek.ru/36989543.html", +"УстановитьЗаголовки: установка заголовков запроса": "SetHeaders: query header setting", "стандартное представление: day, week, month, list": "standard presentation: day, week, month, list", "Открывает FTP соединение с указанными настройками": "Creates an FTP connection with the specified settings", "Получает список токенов (API ключей) пользователя": "Gets the list of user tokens (API keys)", @@ -10858,111 +10891,43 @@ "Максимальное время блокировки при awaitData (в мс": "Maximum lock time during awaitData (in ms", "Получает план задач на день текущего пользователя": "Gets the task plan for the current users day", "ID подборка для помещения товара, если необходимо": "Selection ID for placing the product, if needed", -"Отменяет публикацию ранее опубликованного объекта": "Unpublishes a previously published object", -"Фалаг ожидания следующих сообщений после текущего": "Flag for waiting for the next messages after the current one", -"OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os": "OneScript: ./OInt/tools/Modules/OPI_SQLQueries.os", -"Модуль для работы с Google Calendar из набора ОПИ": "Google Calendar Module of OpenIntegrations", -"отмечать входящие сообщения прочитанными: yes, no": "mark incoming messages as read: yes, no", -"Вариант генерации фона: transparent, opaque, auto": "Generation background option: transparent, opaque, auto", -"Изменяет информацию о количестве товара в наличии": "Changes the information about the stock amount of a product", -"источник сообщения: system, user, assistant, tool": "message source: system, user, assistant, tool", -"OneScript: ./OInt/tools/Modules/OPI_ЗапросыSSH.os": "OneScript: ./OInt/tools/Modules/OPI_SSHRequests.os", -"Твиттер не смог обработать загруженное вами видео": "Twitter could not process the video you uploaded", -"запрещать приглашать в событие, если время занято": "disallow invitations to an event if the time is full", -"Таймаут ожидания данных (мс). 0 > без ограничений": "Data waiting timeout (ms). 0 > no limit", -"Истина > возвращает поля фильтра как соответствие": "True > returns the filter fields as a map", -"Максимальный вес в кг, который может принять офис": "Maximum weight in kg that the office can accept", -"Таймаут ожидания записи (мс). 0 > без ограничений": "Data reading timeout (ms). 0 > no limit", -"УстановитьЗаголовки: установка заголовков запроса": "SetHeaders: query header setting", "Путь внутри публичного каталога (только для папок": "Path within public catalog (folders only", -"Получает список доступных значений характеристики": "Gets the list of available values of the attribute", -"Передана некорректная конфигурация соединения: %1": "Incorrect connection configuration provided: %1", -"Общий модуль инструментов работы с SSH набора ОПИ": "Common SSH Tools Module of OpenIntegrations", -"УстановитьПользовательскиеНастройкиКалендаря (хук": "SetCustomCalendarSettings (wh", -"Время чтения данных (сек). 0 > до конца сообщения": "Data reading time (sec). 0 > until the end of the message", -"tools/Modules/internal/Modules/OPI_Инструменты.os": "tools/Modules/internal/Modules/OPI_Tools.os", -"ОжидаетЧто(Результат[\"entity\"][\"uuid\"]).Заполнено": "ExpectsThat(Result[\"entity\"][\"uuid\"]).Filled", -"Получает ссылку для ручной загрузки файла на Диск": "Gets a link for manual file upload to Disk", -"Источник: https:github.com/vbondarevsky/Connector": "Source: https:github.com/vbondarevsky/Connector", -"Зайдите в приложение Viber и создайте новый канал": "Open the Viber app and create a new channel", -"Вид загрузки (Пост, Товар, История, Опрос, Прочее": "Upload type (Post, Product, Story, Poll, Other", -"Получает список файлов с отбором каталога или без": "Gets a list of files with or without directory selection", -"ПолучитьСтруктуруФильтраСобытийКалендарей (пустая": "GetCalendarEventsFilterStructure (empty", -"CLI_Ozon_ОбновитьИзображенияТовара(ПараметрыТеста": "CLI_Ozon_UpdateProductImages(TestParameters", -"Общий модуль инструментов работы с SQL набора ОПИ": "Common SQL Tools Module of OpenIntegrations", -"Список позиций: Ключ > SKU, Значение > Количество": "Items list: Key > SKU, Value > Amount", -"Подтверждает окончание загрузки объекта по частям": "Confirms the multipart uploading finish", -"Генерирует аудио с озвучиванием указанного текста": "Generates audio with the specified text for speech synthesis", -"tools/Modules/internal/Classes/OPI_ЗапросыHTTP.os": "tools/Modules/internal/Classes/OPI_HTTPRequests.os", -"Структура счетчика. См. ПолучитьСтруктуруСчетчика": "Counter structure. See GetCounterStructure", -"Ozon_ПолучитьСтатусДобавленияКодов(ПараметрыТеста": "Ozon_GetCodesUploadStatus(TestParameters", -"Формирует строку подключения из переданных данных": "Forms a connection string from the passed data", -"Преобразует файл с Base64 строкой в бинарный файл": "Convert file with Base64 string to binary file", -"Дополнительные заголовки запроса, если необходимо": "Additional request headers, if necessary", -"Обновляет изображения и маркетинговый цвет товара": "Update images and marketing color", -"Параметры элемента. См. ПолучитьСтруктуруЭлемента": "Item parameters. See GetItemStructure", -"Ошибка валидации JSON параметра. Индекс массив %1": "JSON validation error for parameter. Array position %1", -"Тип вложений: tweet_video, tweet_image, tweet_gif": "Attachment type: tweet_video, tweet_image, tweet_gif", -"Открывает GRPC соединение для работы с ClickHouse": "Opens a GRPC connection for working with ClickHouse", -"Источник сообщения: system, user, assistant, tool": "Message source: system, user, assistant, tool", -"Изменение заказа](@api-docs.cdek.ru/36981178.html": "Update an order](@api-docs.cdek.ru/36989543.html", -"Тип чата OPEN (публичный) | CHAT (по приглашениям": "Chat type OPEN (Public) | CHAT (Private", -"Код ПВЗ СДЭК для самостоятельного привоза клиентом": "Code of CDEK POZ for self carriage by the customer", -"Описание заявки. См. ПолучитьОписаниеЗаявкиКурьера": "Invitations description. See GetCourierInvitationsDescription", -"Windows установщик CLI приложения с аддоном Melezh": "Windows installer for CLI application with Melezh addon", -"Добавляет новый текстовый тег к файлу или каталогу": "Add new tag to file or folder", -"Устанавливает тело даже при передаче пустых данных": "Sets the body even when empty data is passed", -"УстановитьОбъектСоединения: Передано не соединение": "SetConnectionObject: Not a connection has been passed", -"Курьеру необходим документ удостоверяющий личность": "The courier needs an identity document", -"Завершает запущенный ранее сеанс выполнения тестов": "Ends a previously started test execution session", -"Удаляет одну или массив записей по идентификаторам": "Deletes one or an array of records by identifiers", -"Получает данные из потока существующего соединения": "Gets data from the flow stream of an existing connection", -"Код страны производителя товара ISO_3166-1_alpha-2": "Country code of the product manufacturer as ISO_3166-1_alpha-2", -"Получает список пользователей по заданному фильтру": "Gets the list of users according to the specified filter", -"Признак деления массива на отдельные параметры URL": "Flag for dividing the array into individual URL parameters", -"Не удалось привести структуру значений к коллекции": "Failed to convert the structure of values to a collection", -"Данные заполнения, где ключ это имя ячейки вида A1": "Fill data where the key is the cell name like A1", -"Добавляет заголовок запроса для Bearer авторизации": "Adds a request header for Bearer authorization", -"Создает постоянный токен пользователя ReportPortal": "Creates a permanent ReportPortal user token", -"Истина > возвращает строку, Ложь > двоичные данные": "True > returns string, False > binary data", -"IP адрес с портом или доменное имя для подключения": "Host IP address with port or URL", -"Время показа признака набора перед отправкой (в мс": "Time to show typing indicator before sending (in ms", -"Отправляет сообщение (ответ) выбранному соединению": "Sends a message (response) to the selected connection", -"Получает временный токен на основе логина и пароля": "Gets a temporary token based on login and password", -"Неизвестный параметр в позиции %1 параметр %2 %3%4": "Unknown parameter in position %1 parameter %2 %3%4", -"Адрес активного соединения. См. ОжидатьПодключения": "The address of the active connection. See AwaitConnections", -"Получает информацию о пользовательском поле задачи": "Get custom task field data", -"Ozon_ПолучитьУчаствующиеТоварыАкции(ПараметрыТеста": "Ozon_GetCurrentPromoProducts(TestParameters", -"Особые настройки правил сравнения полей при поиске": "Special field comparison rules", -"CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "CLI_GetAuthorizationCode(TestParameters", -"Формирует строку для подключения к серверу MongoDB": "Forms a MongoDB connection string", -"Запрос через открытое соединение (создание таблицы": "Request via open connection (table creation", -"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_Domain", -"Комплект защитных плёнок для X3 NFC. Темный хлопок": "Protective film set for X3 NFC. Dark cotton", -"!OInt МассивПути = СтрРазделить(ТекущийКаталог": "PathArray = StrSplit(CurrentDirectory", -"частота повторения: DAILY, WEEKLY, MONTHLY, YEARLY": "repetition rate: DAILY, WEEKLY, MONTHLY, YEARLY", -"Информация о чеке](@api-docs.cdek.ru/68257388.html": "Cashbox check information](@api-docs.cdek.ru/68258028.html", -"Номер заказа в ИС Клиента (uuid, если не заполнено": "Order number in the customers system (uuid, if not filled in", -"ПолучитьСоответствиеУправляющихПоследовательностей": "GetEscapeSequencesMap", -"Идентификаторы товаров в системе продавца (Артикул": "Item identifiers in the vendor's system (Article", -"Отсутствуют обязательные поля в параметрах доступа": "Missing mandatory fields in access parameters", -"Формирует штрихкод места в формате PDF для заказов": "Generates a PDF barcode CP for orders", -"Отправляет данные о местоположении в указанный чат": "Sends location data to the specified chat room", -"строка или список строк текста лицензий для модели": "a string or list of strings of license text for the model", +"Фалаг ожидания следующих сообщений после текущего": "Flag for waiting for the next messages after the current one", +"Отменяет публикацию ранее опубликованного объекта": "Unpublishes a previously published object", +"Таймаут ожидания записи (мс). 0 > без ограничений": "Data reading timeout (ms). 0 > no limit", +"Максимальный вес в кг, который может принять офис": "Maximum weight in kg that the office can accept", +"Истина > возвращает поля фильтра как соответствие": "True > returns the filter fields as a map", +"запрещать приглашать в событие, если время занято": "disallow invitations to an event if the time is full", +"Твиттер не смог обработать загруженное вами видео": "Twitter could not process the video you uploaded", +"Таймаут ожидания данных (мс). 0 > без ограничений": "Data waiting timeout (ms). 0 > no limit", +"источник сообщения: system, user, assistant, tool": "message source: system, user, assistant, tool", +"Изменяет информацию о количестве товара в наличии": "Changes the information about the stock amount of a product", +"Вариант генерации фона: transparent, opaque, auto": "Generation background option: transparent, opaque, auto", +"отмечать входящие сообщения прочитанными: yes, no": "mark incoming messages as read: yes, no", +"Модуль для работы с Google Calendar из набора ОПИ": "Google Calendar Module of OpenIntegrations", +"OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os": "OneScript: ./OInt/tools/Modules/OPI_SQLQueries.os", +"OneScript: ./OInt/tools/Modules/OPI_ЗапросыSSH.os": "OneScript: ./OInt/tools/Modules/OPI_SSHRequests.os", "tools/Modules/internal/Modules/OPI_Криптография.os": "tools/Modules/internal/Modules/OPI_Cryptography.os", -"УстановитьСтандартныеНастройки: установка настроек": "SetDefaultSettings: configuration setting", -"Получает список заблокированных пользователей чата": "Gets the list of blocked chat users", -"ДобавитьПараметрURL: Передан пустой ключ - пропуск": "AddURLParameter: Empty key passed - skipping", "Формирует кнопку действия для клавиатуры сообщения": "Forms an action button for the message keyboard", +"ДобавитьПараметрURL: Передан пустой ключ - пропуск": "AddURLParameter: Empty key passed - skipping", +"Получает список заблокированных пользователей чата": "Gets the list of blocked chat users", +"УстановитьСтандартныеНастройки: установка настроек": "SetDefaultSettings: configuration setting", +"строка или список строк текста лицензий для модели": "a string or list of strings of license text for the model", +"Информация о чеке](@api-docs.cdek.ru/68257388.html": "Cashbox check information](@api-docs.cdek.ru/68258028.html", +"Формирует штрихкод места в формате PDF для заказов": "Generates a PDF barcode CP for orders", +"Отсутствуют обязательные поля в параметрах доступа": "Missing mandatory fields in access parameters", +"Идентификаторы товаров в системе продавца (Артикул": "Item identifiers in the vendor's system (Article", +"ПолучитьСоответствиеУправляющихПоследовательностей": "GetEscapeSequencesMap", +"Номер заказа в ИС Клиента (uuid, если не заполнено": "Order number in the customers system (uuid, if not filled in", "OneScript: ./OInt/tools/Modules/OPI_ЗапросыHTTP.os": "OneScript: ./OInt/tools/Modules/OPI_HTTPRequests.os", +"Отправляет данные о местоположении в указанный чат": "Sends location data to the specified chat room", "Информация о выполнении. См. ПолучитьСтруктуруЛога": "Execution information. See GetLogStructure", -"ID асинхронной работы из ответа ЗагрузитьФайлПоURL": "ID of async jsob from UploadFileByURL response", +"Не удалось удалить файл ключей после инициализации": "Failed to delete key file after initialization", "Некорректная команда! Проверьте правильность ввода": "Incorrect command! Check input correctness", "ID блока, после которого необходимо вставить новый": "Block ID after which to insert the new one", "Пересылает существующее сообщение в текущий диалог": "Forwards an existing message to the current dialog box", "Создает новое свойство для использования в товарах": "Creates a new property for use in products", "Модуль для работы с Google Workspace из набора ОПИ": "Google Workspace Module of OpenIntegrations", -"Не удалось удалить файл ключей после инициализации": "Failed to delete key file after initialization", "Данные сообщения в виде строки или двоичных данных": "Message data as string or binary data", "Запрещает доступ к файлу для внешних пользователей": "Prohibits access to the file for external users", "ПолучитьСтруктуруПользовательскихНастроекКалендаря": "GetCalednarCustomSettingsStructure", @@ -10971,9 +10936,77 @@ "ОбработатьЗапрос: формирование объекта HTTPЗапроса": "ProcessRequest: creation of HTTPRequest object", "Истина > возвращает поля настроек как соответствие": "True > returns settings fields as a mapping", "Модуль для работы с Telegram Bot API из набора ОПИ": "Telegram Bot API Module of OpenIntegrations", +"частота повторения: DAILY, WEEKLY, MONTHLY, YEARLY": "repetition rate: DAILY, WEEKLY, MONTHLY, YEARLY", +"ID асинхронной работы из ответа ЗагрузитьФайлПоURL": "ID of async jsob from UploadFileByURL response", "Расширенное определение адресов в пассивном режиме": "Advanced passive mode address resolution", +"Комплект защитных плёнок для X3 NFC. Темный хлопок": "Protective film set for X3 NFC. Dark cotton", +"URL = ПараметрыФункции[\"Bitrix24_Domain": "URL = FunctionParameters[\"Bitrix24_Domain", +"!OInt МассивПути = СтрРазделить(ТекущийКаталог": "PathArray = StrSplit(CurrentDirectory", +"Код ПВЗ СДЭК для самостоятельного привоза клиентом": "Code of CDEK POZ for self carriage by the customer", +"Описание заявки. См. ПолучитьОписаниеЗаявкиКурьера": "Invitations description. See GetCourierInvitationsDescription", +"Windows установщик CLI приложения с аддоном Melezh": "Windows installer for CLI application with Melezh addon", +"Добавляет новый текстовый тег к файлу или каталогу": "Add new tag to file or folder", +"Устанавливает тело даже при передаче пустых данных": "Sets the body even when empty data is passed", +"УстановитьОбъектСоединения: Передано не соединение": "SetConnectionObject: Not a connection has been passed", +"Курьеру необходим документ удостоверяющий личность": "The courier needs an identity document", +"Завершает запущенный ранее сеанс выполнения тестов": "Ends a previously started test execution session", +"Получает данные из потока существующего соединения": "Gets data from the flow stream of an existing connection", +"Код страны производителя товара ISO_3166-1_alpha-2": "Country code of the product manufacturer as ISO_3166-1_alpha-2", +"Получает список пользователей по заданному фильтру": "Gets the list of users according to the specified filter", +"Признак деления массива на отдельные параметры URL": "Flag for dividing the array into individual URL parameters", +"Не удалось привести структуру значений к коллекции": "Failed to convert the structure of values to a collection", +"Данные заполнения, где ключ это имя ячейки вида A1": "Fill data where the key is the cell name like A1", +"Удаляет одну или массив записей по идентификаторам": "Deletes one or an array of records by identifiers", +"Создает постоянный токен пользователя ReportPortal": "Creates a permanent ReportPortal user token", +"Добавляет заголовок запроса для Bearer авторизации": "Adds a request header for Bearer authorization", +"Формирует строку для подключения к серверу MongoDB": "Forms a MongoDB connection string", +"CLI_GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста": "CLI_GetAuthorizationCode(TestParameters", +"Особые настройки правил сравнения полей при поиске": "Special field comparison rules", +"Ozon_ПолучитьУчаствующиеТоварыАкции(ПараметрыТеста": "Ozon_GetCurrentPromoProducts(TestParameters", +"Получает информацию о пользовательском поле задачи": "Get custom task field data", +"Адрес активного соединения. См. ОжидатьПодключения": "The address of the active connection. See AwaitConnections", +"Запрос через открытое соединение (создание таблицы": "Request via open connection (table creation", +"Получает временный токен на основе логина и пароля": "Gets a temporary token based on login and password", +"Отправляет сообщение (ответ) выбранному соединению": "Sends a message (response) to the selected connection", +"Время показа признака набора перед отправкой (в мс": "Time to show typing indicator before sending (in ms", +"IP адрес с портом или доменное имя для подключения": "Host IP address with port or URL", +"Истина > возвращает строку, Ложь > двоичные данные": "True > returns string, False > binary data", +"Неизвестный параметр в позиции %1 параметр %2 %3%4": "Unknown parameter in position %1 parameter %2 %3%4", +"УстановитьURL: Разбиение запроса на составные части": "SetURL: Splitting a request into component parts", +"Код региона СДЭК, уточняющий параметр для поля city": "CDEK region code, specifying parameter for the city field", +"УстановитьДвоичноеТело: тело установлено, размер %1": "SetBinaryBody: body set, size %1", +"Получает количество уведомлений во входящей очереди": "Gets the number of notifications in the incoming queue", +"цена до скидок; укажите значение 0, если скидок нет": "price before discounts; specify 0 if no discounts are available", +"Передана некорректная структура информации о сессии": "An incorrect session information structure was passed", +"Очищает все существующие заголовки перед установкой": "Clears all existing headers before setting up", +"ID аккаунта для проверки, что бакет принадлежит ему": "Account ID to verify that hes the bucket owner", +"Данные записей указываются как массив структур вида": "Record data is specified as an array of structures of the following type", +"(Дополнительно) Определитесь с целью взаимодействия": "(Optional) Determine the purpose of the interaction", +"Ссылка на сайт интернет-магазина с описанием товара": "Link to the website of the online store with the description of the product", +"Получает данные одного или нескольких пользователей": "Gets data of one or more users", +"ОбработатьЗапрос: перенос тела в объект HTTPЗапроса": "ProcessRequest: place the body in the HTTPRequest object", +"Название региона, уточняющий параметр для поля city": "Region name, specifying parameter for the city field", +"Путь к объекту, для которого необходимо создать тег": "Path to the object for which the tag needs to be created", +"НачатьЗаписьТелаMultipart: Создание потока в памяти": "StartMultipartBody: Creating a stream in memory", +"УстановитьДвоичноеТело: Тело установлено, размер %1": "SetBinaryBody: Body set, size %1", +"Структура полей задачи. См. ПолучитьСтруктуруЗадачи": "Task fields structure. See GetTaskFieldsStructure", +"только задачи, которые не являются подзадачами (Y|N": "only tasks that are not subtasks (Y|N)", +"Устанавливает шифрование бакета по XML конфигурации": "Sets bucket encryption by XML configuration", +"Устанавливает статус (онлайн) текущего пользователя": "Sets the status (online) of the current user", +"ИспользоватьMultipartПоляВOAuth: установка значения": "UseMultipartFieldsAtOAuth: setting the value", +"Существующее соединение или конфигурация соединения": "Existing connection or connection configuration", +"Элементы фида. См. ПолучитьСтруктуруЭлементаФидаRSS": "Feed items. See GetFeedItemStructureRSS", +"Структура полей сделки (см. ПолучитьСтруктуруСделки": "Deal fields structure (see. GetDealStructure", +"Коннектор: удобный HTTP-клиент для 1С:Предприятие 8": "Connector: convenient HTTP client for 1C:Enterprise 8", +"автоприменения стратегий цены: ENABLED или DISABLED": "auto application of price strategies: ENABLED or DISABLED", +"В меню создания бота заполните все необходимые поля": "In the bot creation menu, fill in all the required fields", +"Структура: `{ role: \"<имя>\", db: \"<база данных>\" }`": "Structure: `{ role: \"\", db: \"\" }`", +"конечный (нижний) цвет информера в формате RRGGBBAA": "final (bottom) color of the informer in RRGGBBAA format", +"Регистрация отказа](@api-docs.cdek.ru/55327658.html": "Registration of refusal](@api-docs.cdek.ru/55327686.html", +"Параметры доступа. См. СформироватьПараметрыДоступа": "Access parameters. See FormAccessParameters", +"Код офиса СДЭК, на который будет доставлена посылка": "Code of CDEK office to which the package will be delivered", +"UUID уже существующего запуска, если rerun = Истина": "UUID of an existing launch if rerun = True", "Формирует структуру основных авторизационных данных": "Forms the structure of basic authorization data", -"Подтверждает вступление пользователя в закрытый чат": "Confirms the user's request to join a private chat room", "Сообщения разговора. См. ПолучитьСтруктуруСообщения": "Conversation messages. See GetMessageStructure", "ОтменитьЗаписьMultipart: Удаление записанных данных": "CancelMultipartBody: Deleting recorded data", "Токен для удаления данных конкретной версии объекта": "Token for deleting data of a specific version of an object", @@ -10987,56 +11020,52 @@ "Модуль для работы с базами PostgreSQL из набора ОПИ": "PostgreSQL Module of OpenIntegrations", "Коллекция файлов: Ключ > Файл, Значение > Тип медиа": "File collection: Key > File, Value > Media Type", "ID запуска, к которому принадлежит тестовый элемент": "Launch ID to which the test item belongs", -"Данные авторизации. См.ПолучитьСтандартныеПараметры": "Authorization data. See GetStandardParameters", +"Подтверждает вступление пользователя в закрытый чат": "Confirms the user's request to join a private chat room", "Признак использования соответствия вместо структуры": "Use map instead of structure", -"НачатьЗаписьТелаMultipart: создание потока в памяти": "StartMultipartBody: creating a stream in memory", -"Смещение для получение объектов не из начала списка": "Offset for getting objects not from the beginning of the list", -"Структура полей сделки. См. ПолучитьСтруктуруСделки": "Deal fields structure. See. GetDealStructure", -"ИмяМетода, ОписаниеМетода, ПолноеОписаниеПараметров": "MethodName, MethodDescription, FullParamsDescription", -"Закрывает существующее соединение по идентификатору": "Closes an existing connection by identifier", -"Важно: Для работы компоненты требуется GLIBC >=2.18": "Important: The component requires GLIBC >=2.18", -"Продолжать получение после обработки порядка обмена": "Continue receiving after processing the exchange order", -"Получает количество сообщений в очереди на отправку": "Gets the number of messages in the outgoing queue", -"Структура полей задачи (см. ПолучитьСтруктуруЗадачи": "Task fields structure (see GetTaskFieldsStructure", -"Таймаут ожидания новых сообщений при пустой очереди": "Timeout for waiting for new messages when the queue is empty", -"Получает шаблон пустого описания для загрузки файла": "Gets a blank description template for uploading a file", -"Регистрация заказа](@api-docs.cdek.ru/29923926.html": "Order registration](@api-docs.cdek.ru/33828802.html", +"Данные авторизации. См.ПолучитьСтандартныеПараметры": "Authorization data. See GetStandardParameters", "Возвращает структуру полей настроек группового чата": "Returns the structure of group chat settings fields", -"Код офиса СДЭК, на который будет доставлена посылка": "Code of CDEK office to which the package will be delivered", -"UUID уже существующего запуска, если rerun = Истина": "UUID of an existing launch if rerun = True", -"Регистрация отказа](@api-docs.cdek.ru/55327658.html": "Registration of refusal](@api-docs.cdek.ru/55327686.html", -"Путь к объекту, для которого необходимо создать тег": "Path to the object for which the tag needs to be created", -"Ссылка на сайт интернет-магазина с описанием товара": "Link to the website of the online store with the description of the product", -"(Дополнительно) Определитесь с целью взаимодействия": "(Optional) Determine the purpose of the interaction", -"Данные записей указываются как массив структур вида": "Record data is specified as an array of structures of the following type", -"Очищает все существующие заголовки перед установкой": "Clears all existing headers before setting up", -"ID аккаунта для проверки, что бакет принадлежит ему": "Account ID to verify that hes the bucket owner", -"ОбработатьЗапрос: перенос тела в объект HTTPЗапроса": "ProcessRequest: place the body in the HTTPRequest object", -"Передана некорректная структура информации о сессии": "An incorrect session information structure was passed", -"цена до скидок; укажите значение 0, если скидок нет": "price before discounts; specify 0 if no discounts are available", -"Получает количество уведомлений во входящей очереди": "Gets the number of notifications in the incoming queue", -"УстановитьДвоичноеТело: тело установлено, размер %1": "SetBinaryBody: body set, size %1", -"Код региона СДЭК, уточняющий параметр для поля city": "CDEK region code, specifying parameter for the city field", -"УстановитьURL: Разбиение запроса на составные части": "SetURL: Splitting a request into component parts", -"Получает данные одного или нескольких пользователей": "Gets data of one or more users", -"Название региона, уточняющий параметр для поля city": "Region name, specifying parameter for the city field", -"конечный (нижний) цвет информера в формате RRGGBBAA": "final (bottom) color of the informer in RRGGBBAA format", -"НачатьЗаписьТелаMultipart: Создание потока в памяти": "StartMultipartBody: Creating a stream in memory", -"УстановитьДвоичноеТело: Тело установлено, размер %1": "SetBinaryBody: Body set, size %1", -"Структура полей задачи. См. ПолучитьСтруктуруЗадачи": "Task fields structure. See GetTaskFieldsStructure", -"только задачи, которые не являются подзадачами (Y|N": "only tasks that are not subtasks (Y|N)", -"Устанавливает шифрование бакета по XML конфигурации": "Sets bucket encryption by XML configuration", -"Устанавливает статус (онлайн) текущего пользователя": "Sets the status (online) of the current user", -"ИспользоватьMultipartПоляВOAuth: установка значения": "UseMultipartFieldsAtOAuth: setting the value", -"Существующее соединение или конфигурация соединения": "Existing connection or connection configuration", -"Элементы фида. См. ПолучитьСтруктуруЭлементаФидаRSS": "Feed items. See GetFeedItemStructureRSS", -"Структура полей сделки (см. ПолучитьСтруктуруСделки": "Deal fields structure (see. GetDealStructure", -"Параметры доступа. См. СформироватьПараметрыДоступа": "Access parameters. See FormAccessParameters", -"автоприменения стратегий цены: ENABLED или DISABLED": "auto application of price strategies: ENABLED or DISABLED", -"В меню создания бота заполните все необходимые поля": "In the bot creation menu, fill in all the required fields", -"Структура: `{ role: \"<имя>\", db: \"<база данных>\" }`": "Structure: `{ role: \"\", db: \"\" }`", -"Коннектор: удобный HTTP-клиент для 1С:Предприятие 8": "Connector: convenient HTTP client for 1C:Enterprise 8", -"Написать сообщение пользователю в диалоге сообщества": "Write a message to a user in the community's dialog", +"Получает шаблон пустого описания для загрузки файла": "Gets a blank description template for uploading a file", +"Таймаут ожидания новых сообщений при пустой очереди": "Timeout for waiting for new messages when the queue is empty", +"Структура полей задачи (см. ПолучитьСтруктуруЗадачи": "Task fields structure (see GetTaskFieldsStructure", +"Получает количество сообщений в очереди на отправку": "Gets the number of messages in the outgoing queue", +"Регистрация заказа](@api-docs.cdek.ru/29923926.html": "Order registration](@api-docs.cdek.ru/33828802.html", +"Важно: Для работы компоненты требуется GLIBC >=2.18": "Important: The component requires GLIBC >=2.18", +"Закрывает существующее соединение по идентификатору": "Closes an existing connection by identifier", +"ИмяМетода, ОписаниеМетода, ПолноеОписаниеПараметров": "MethodName, MethodDescription, FullParamsDescription", +"Структура полей сделки. См. ПолучитьСтруктуруСделки": "Deal fields structure. See. GetDealStructure", +"Смещение для получение объектов не из начала списка": "Offset for getting objects not from the beginning of the list", +"Продолжать получение после обработки порядка обмена": "Continue receiving after processing the exchange order", +"НачатьЗаписьТелаMultipart: создание потока в памяти": "StartMultipartBody: creating a stream in memory", +"Отправляет географические координаты в чат или канал": "Sends geographic coordinates to a chat or channel", +"НачатьЗаписьТелаMultipart: Создание временного файла": "StartMultipartBody: Creating a temporary file", +"Название города, уточняющий параметр для postal_code": "City name, specifying parameter for postal_code", +"Добавляет нового участника в выбранный групповой чат": "Adds a new member to the selected group chat", +"Токен для получения данных конкретной версии объекта": "Token for retrieving data of a specific version of an object", +"Структура колонок: Ключ > имя, Значение > Тип данных": "Column structure: Key > Name, Value > Data type", +"Проверяет загрузку изображений по массиву ID товаров": "Check images upload by products IDs", +"Массив типов колонок. См. ПолучитьТипыКолонокТаблицы": "Array of column types. See GetTableColumnTypes", +"Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей": "Filters array. See GetRecordsFilterStructure", +"Склад или несколько складов для получения таймслотов": "Warehouse or multiple warehouses to receive timeslots", +"Информация о заказе](@api-docs.cdek.ru/29923975.html": "Order details](@api-docs.cdek.ru/33828849.html", +"Фильтр списка. См. ПолучитьСтруктуруФильтраСчетчиков": "List filter. See GetCounterFilterStructure", +"ОжидаетЧто(Результат[\"errors\"].Количество()).Равно(0": "ExpectsThat(Result[\"errors\"].Count()).Equal(0", +"Основное измерение при заполнении диапазона массивом": "Main dimension when filling the array range", +"Здесь собрано определение данных для работы с VK API": "Here is a collection of data definitions for working with the VK API", +"Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС": "VAT rate (value - 0, 10, 12, 20, null - no VAT", +"Обработка входящего запроса после авторизации !NOCLI": "Handle incoming request after authorization !NOCLI", +"Информация о заявке](@api-docs.cdek.ru/29948360.html": "Details of a courier invitation(@api-docs.cdek.ru/33828865.html", +"Ошибка получения авторизационных данных из структуры": "Error of obtaining authorization data from the structure", +"УстановитьСтроковоеТело: Тело установлено, размер %1": "SetStringBody: Body set, size %1", +"Элементы фида. См. ПолучитьСтруктуруЭлементаФидаAtom": "Feed items. See GetFeedItemStructureAtom", +"Указанное значение не является подходящей коллекцией": "The specified value is not a valid collection", +"Идентификатор доставки из метода ПолучитьУведомление": "Receipt identifier from the GetNotification method", +"Истина > Не выполняет запрос, а возвращает текст SQL": "True > Does not execute the query, but returns SQL text", +"Включение и отключение удаления MFA, если необходимо": "Enable and disable MFA deletion, if necessary", +"Структура комплексного атрибута или структура товара": "Complex attribute structure or product structure", +"Истина > кнопки выводятся в столбик, Ложь > в строку": "True > buttons are displayed in a column, False > in a row", +"Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыТеста": "Ozon_SetProductDiscount(TestParameters", +"Описание таблиц: Ключ > имя, Значение > массив полей": "Table description: Key > name, Value > array of fields", +"квантовать неквантованную (например, float16) модель": "quantize non-quantized (e.g. float16) model", "включение автоприменения акций: ENABLED или DISABLED": "Enable auto application of shares: ENABLED or DISABLED", "Завершает работу созданного ранее тестового элемента": "Ends a previously created test item", "Обрабатывает данные TMA и опредеяет их достоверность": "Processes TMA data and determines its validity", @@ -11048,50 +11077,50 @@ "Получает список доступных методов указанного сервиса": "Gets a list of available methods for the specified service", "Загружает файл на диск, забирая его по заданному URL": "Downloads a file to disk from the specified URL", "Основные данные запроса. См. ПолучитьСтруктуруДанных": "Basic request data. See GetBasicDataStructure", -"В канал, из двоичных данных, с указанием имени файла": "To channel, from binary data, with file name", +"Написать сообщение пользователю в диалоге сообщества": "Write a message to a user in the community's dialog", "Модуль для работы с Max через GreenAPI из набора ОПИ": "Module for working with Max via GreenAPI from the OpenIntegrations set", -"УстановитьСтроковоеТело: тело установлено, размер %1": "SetStringBody: body set, size %1", -"Загружает файл с диска или двоичные данные на сервер": "Uploads a file from disk or binary data to the server", -"ДобавитьПараметрURL: добавление параметра, ключ - %1": "AddURLParameter: adding parameter, key - %1", -"Скачивает zip архив с содержимым указанного каталога": "Downloads a zip archive with the contents of the specified directory", -"Проверяет существование BLOB по его SHA256 дайджесту": "Checks the existence of a BLOB by its SHA256 digest", -"Читает данные из указанного соединения в виде строки": "Reads data from the specified connection as a string", -"Пароль пользователя для авторизации, если необходимо": "User password for authorization, if required", -"НачатьЗаписьТелаMultipart: создание временного файла": "StartMultipartBody: creating a temporary file", -"ID чата (chatXXX) или пользователя (XXX) для диалога": "Chat ID (as chatXXX) or User ID (as XXX)", "Не удалось загрузить часть файла! Отмена загрузки ID": "Failed to upload part of the file! Abort upload wiht ID", +"ID чата (chatXXX) или пользователя (XXX) для диалога": "Chat ID (as chatXXX) or User ID (as XXX)", +"НачатьЗаписьТелаMultipart: создание временного файла": "StartMultipartBody: creating a temporary file", +"В канал, из двоичных данных, с указанием имени файла": "To channel, from binary data, with file name", "Отправляет аудиофайл в качестве голосового сообщения": "Sends an audio file as a voice message", -"Описание таблиц: Ключ > имя, Значение > массив полей": "Table description: Key > name, Value > array of fields", -"квантовать неквантованную (например, float16) модель": "quantize non-quantized (e.g. float16) model", -"Истина > кнопки выводятся в столбик, Ложь > в строку": "True > buttons are displayed in a column, False > in a row", -"Включение и отключение удаления MFA, если необходимо": "Enable and disable MFA deletion, if necessary", -"Склад или несколько складов для получения таймслотов": "Warehouse or multiple warehouses to receive timeslots", -"Массив типов колонок. См. ПолучитьТипыКолонокТаблицы": "Array of column types. See GetTableColumnTypes", -"Проверяет загрузку изображений по массиву ID товаров": "Check images upload by products IDs", -"Токен для получения данных конкретной версии объекта": "Token for retrieving data of a specific version of an object", -"Структура колонок: Ключ > имя, Значение > Тип данных": "Column structure: Key > Name, Value > Data type", -"Информация о заказе](@api-docs.cdek.ru/29923975.html": "Order details](@api-docs.cdek.ru/33828849.html", -"Добавляет нового участника в выбранный групповой чат": "Adds a new member to the selected group chat", -"Название города, уточняющий параметр для postal_code": "City name, specifying parameter for postal_code", -"НачатьЗаписьТелаMultipart: Создание временного файла": "StartMultipartBody: Creating a temporary file", -"Отправляет географические координаты в чат или канал": "Sends geographic coordinates to a chat or channel", -"Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей": "Filters array. See GetRecordsFilterStructure", -"Фильтр списка. См. ПолучитьСтруктуруФильтраСчетчиков": "List filter. See GetCounterFilterStructure", -"Структура комплексного атрибута или структура товара": "Complex attribute structure or product structure", -"Основное измерение при заполнении диапазона массивом": "Main dimension when filling the array range", -"Здесь собрано определение данных для работы с VK API": "Here is a collection of data definitions for working with the VK API", -"Ставка НДС (значение - 0, 10, 12, 20, null - нет НДС": "VAT rate (value - 0, 10, 12, 20, null - no VAT", -"Обработка входящего запроса после авторизации !NOCLI": "Handle incoming request after authorization !NOCLI", -"Информация о заявке](@api-docs.cdek.ru/29948360.html": "Details of a courier invitation(@api-docs.cdek.ru/33828865.html", -"Ошибка получения авторизационных данных из структуры": "Error of obtaining authorization data from the structure", -"ОжидаетЧто(Результат[\"errors\"].Количество()).Равно(0": "ExpectsThat(Result[\"errors\"].Count()).Equal(0", -"Ozon_УстановитьСкидкуНаУцененныйТовар(ПараметрыТеста": "Ozon_SetProductDiscount(TestParameters", -"УстановитьСтроковоеТело: Тело установлено, размер %1": "SetStringBody: Body set, size %1", -"Элементы фида. См. ПолучитьСтруктуруЭлементаФидаAtom": "Feed items. See GetFeedItemStructureAtom", -"Указанное значение не является подходящей коллекцией": "The specified value is not a valid collection", -"Идентификатор доставки из метода ПолучитьУведомление": "Receipt identifier from the GetNotification method", -"Истина > Не выполняет запрос, а возвращает текст SQL": "True > Does not execute the query, but returns SQL text", -"Введите имя и выберите Application type - Desktop app": "Enter the name and choose Application type - Desktop app", +"Пароль пользователя для авторизации, если необходимо": "User password for authorization, if required", +"Проверяет существование BLOB по его SHA256 дайджесту": "Checks the existence of a BLOB by its SHA256 digest", +"Скачивает zip архив с содержимым указанного каталога": "Downloads a zip archive with the contents of the specified directory", +"ДобавитьПараметрURL: добавление параметра, ключ - %1": "AddURLParameter: adding parameter, key - %1", +"Загружает файл с диска или двоичные данные на сервер": "Uploads a file from disk or binary data to the server", +"УстановитьСтроковоеТело: тело установлено, размер %1": "SetStringBody: body set, size %1", +"Читает данные из указанного соединения в виде строки": "Reads data from the specified connection as a string", +"УстановитьФайлОтвета: файл ответа не указан - пропуск": "SetResponseFile: response file not specified - skip", +"начальный (верхний) цвет информера в формате RRGGBBAA": "initial (top) color of the informer in RRGGBBAA format", +"Ключ > имя файла, значение > путь или двоичные данные": "Key > file name, value > path or binary data", +"Клиентские возвраты](@api-docs.cdek.ru/122762174.html": "Registration of refusal](@api-docs.cdek.ru/55327686.html", +"Возвращает категории и типы для товаров в виде дерева": "Returns the categories and types for products in a tree view", +"Генерирует ссылку авторизации для перехода в браузере": "Generates an authorization link for browser transition", +"Мировая гигокорпорация Илона Маска, кстати, напоминаю": "The world gigacorporation of Elon Musk, by the way, a reminder", +"Отбор элементов (См. ПолучитьСтруктуруФильтраКаталога": "Items filter (see GetFolderFilterStructure", +"Получает структуру настроек для создания новой модели": "Gets the settings structure for creating a new model", +"Y|N) - парсить или нет комментарии на наличие смайлов": "Y|N) - parse comments for emoticons or not", +"Как CLI приложение для Windows и Linux (exe, rpm, deb": "As a CLI application for Windows and Linux (exe, rpm, deb)", +"значение не является путем к файлу или Base64 строкой": "value is not a file path or valid Base64 string", +"Отправляет опрос с вариантами ответов в выбранный чат": "Sends a poll with answer choices to the selected chat room", +"Получает код авторизации для связи по номеру телефона": "Receives the authorization code for phone number linking", +"Отправляет контакт с номером телефона в чат или канал": "Sends a contact with a phone number to a chat or channel", +"ДополнитьЗаголовки: установка заголовка ожидания gzip": "CompleteHeaders: setting the gzip header", +"Отправляет двоичные данные через указанное соединение": "Sends binary data over the specified connection", +"флаг оповещения о подтверждении или отказе участников": "flag for notification of confirmation or cancellation of participants", +"Авторизация клиентов](@api-docs.cdek.ru/29923918.html": "Client authorization](@api-docs.cdek.ru/33828799.html", +"В одном запросе можно передать до 500 идентификаторов": "Up to 500 identifiers can be passed in one request", +"Ошибка работы с криптографией: неподдерживаемый метод": "Cryptography processing error: unsupported method", +"Получает информацию о записи трудозатрат задачи по ID": "Get time accounting record data", +"Не добавлять заголовок, если передано пустое значение": "Do not add header if empty value is passed", +"tools/http/Modules/internal/Classes/OPI_HTTPКлиент.os": "tools/http/Modules/internal/Classes/OPI_HTTPClient.os", +"Отбор элементов. См. ПолучитьСтруктуруФильтраКаталога": "Items filter. See GetFolderFilterStructure", +"Значение не является путем к файлу или Base64 строкой": "The value is not a file path or Base64 string", +"Отсутствуют обязательные поля настроек соединения: %1": "Missing required connection settings fields: %1", +"Отправляет контакт с номером телефона в выбранный чат": "Sends a contact with a phone number to the selected chat room", +"Список доступных параметров расширенного вызова (ОПИ)": "List of available advanced call parameters (OPI)", +"авторизоваться и ввести свои данные физ. или юр. лица": "authorize and enter your personal or company information", "Параметры соединения. См. ПолучитьПараметрыСоединения": "Connection parameters. See GetConnectionParameters", "Получает токен авторизации по данным service аккаунта": "Gets authorization token by service account data", "Определяет доступ к файлу для стороннего пользователя": "Defines access to the file for an external user", @@ -11103,48 +11132,44 @@ "Возвращает список пользователей рабочего пространства": "Returns a list of workspace users", "Удаляет файл или несколько файлов с сервера Neocities": "Deletes a file or multiple files from Neocities", "Производит выход текущего аккаунта из группового чата": "Logs the current account out of group chat", -"Добавляет новые группы или пользователей в получатели": "Adds new groups or users to the recipients", +"Введите имя и выберите Application type - Desktop app": "Enter the name and choose Application type - Desktop app", "Массив ролей в виде строк или структур с указанием БД": "Array of roles as strings or structures specifying the DB", -"часовой пояс начала (по умолчанию - ч.п. пользователя": "start time zone (default - t.z. of the user)", -"Получает статус добавления нового товара по ID задачи": "Gets the status of adding a new product by task ID", -"Отображаемое имя файла c расширением, если необходимо": "Custom displayed file name with extension, if necessary", -"Определяет доступ к файлу для сторонних пользователей": "Defines access to the file for third-party users", -"Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок": "Keyboard. See FormKeyboardFromButtonArray", -"Строка подключения. См. СформироватьСтрокуПодключения": "Connection string. See GenerateConnectionString", -"Передана некорректная структура метаданных соединения": "Incorrect connection metadata structure passed", -"Модуль тестов консольного приложения (CLI) набора ОПИ": "CLI Application Test Module of OpenIntegrations", +"Добавляет новые группы или пользователей в получатели": "Adds new groups or users to the recipients", "OPI_Инструменты.ЗаменитьУправляющиеПоследовательности": "OPI_Tools.ReplaceEscapeSequences", +"Модуль тестов консольного приложения (CLI) набора ОПИ": "CLI Application Test Module of OpenIntegrations", +"Передана некорректная структура метаданных соединения": "Incorrect connection metadata structure passed", +"Строка подключения. См. СформироватьСтрокуПодключения": "Connection string. See GenerateConnectionString", "Получает информацию о стадиях Канбана или Моего плана": "Get kanban (My Plan) stages info", -"Отправляет контакт с номером телефона в выбранный чат": "Sends a contact with a phone number to the selected chat room", -"Список доступных параметров расширенного вызова (ОПИ)": "List of available advanced call parameters (OPI)", -"авторизоваться и ввести свои данные физ. или юр. лица": "authorize and enter your personal or company information", -"Отсутствуют обязательные поля настроек соединения: %1": "Missing required connection settings fields: %1", -"tools/http/Modules/internal/Classes/OPI_HTTPКлиент.os": "tools/http/Modules/internal/Classes/OPI_HTTPClient.os", -"Возвращает категории и типы для товаров в виде дерева": "Returns the categories and types for products in a tree view", -"Получает структуру настроек для создания новой модели": "Gets the settings structure for creating a new model", -"Отбор элементов (См. ПолучитьСтруктуруФильтраКаталога": "Items filter (see GetFolderFilterStructure", -"Мировая гигокорпорация Илона Маска, кстати, напоминаю": "The world gigacorporation of Elon Musk, by the way, a reminder", -"Генерирует ссылку авторизации для перехода в браузере": "Generates an authorization link for browser transition", -"Как CLI приложение для Windows и Linux (exe, rpm, deb": "As a CLI application for Windows and Linux (exe, rpm, deb)", -"Клиентские возвраты](@api-docs.cdek.ru/122762174.html": "Registration of refusal](@api-docs.cdek.ru/55327686.html", -"Ключ > имя файла, значение > путь или двоичные данные": "Key > file name, value > path or binary data", -"начальный (верхний) цвет информера в формате RRGGBBAA": "initial (top) color of the informer in RRGGBBAA format", -"УстановитьФайлОтвета: файл ответа не указан - пропуск": "SetResponseFile: response file not specified - skip", -"Y|N) - парсить или нет комментарии на наличие смайлов": "Y|N) - parse comments for emoticons or not", -"значение не является путем к файлу или Base64 строкой": "value is not a file path or valid Base64 string", -"Значение не является путем к файлу или Base64 строкой": "The value is not a file path or Base64 string", -"Получает код авторизации для связи по номеру телефона": "Receives the authorization code for phone number linking", -"Отправляет контакт с номером телефона в чат или канал": "Sends a contact with a phone number to a chat or channel", -"ДополнитьЗаголовки: установка заголовка ожидания gzip": "CompleteHeaders: setting the gzip header", -"Отправляет двоичные данные через указанное соединение": "Sends binary data over the specified connection", -"Отправляет опрос с вариантами ответов в выбранный чат": "Sends a poll with answer choices to the selected chat room", -"флаг оповещения о подтверждении или отказе участников": "flag for notification of confirmation or cancellation of participants", -"Авторизация клиентов](@api-docs.cdek.ru/29923918.html": "Client authorization](@api-docs.cdek.ru/33828799.html", -"В одном запросе можно передать до 500 идентификаторов": "Up to 500 identifiers can be passed in one request", -"Ошибка работы с криптографией: неподдерживаемый метод": "Cryptography processing error: unsupported method", -"Получает информацию о записи трудозатрат задачи по ID": "Get time accounting record data", -"Не добавлять заголовок, если передано пустое значение": "Do not add header if empty value is passed", -"Отбор элементов. См. ПолучитьСтруктуруФильтраКаталога": "Items filter. See GetFolderFilterStructure", +"Определяет доступ к файлу для сторонних пользователей": "Defines access to the file for third-party users", +"Отображаемое имя файла c расширением, если необходимо": "Custom displayed file name with extension, if necessary", +"Получает статус добавления нового товара по ID задачи": "Gets the status of adding a new product by task ID", +"часовой пояс начала (по умолчанию - ч.п. пользователя": "start time zone (default - t.z. of the user)", +"Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок": "Keyboard. See FormKeyboardFromButtonArray", +"Перемещает объект по заданному пути и пути к оригиналу": "Moves the object to the specified path and path to the original", +"Перезаписывать если файл с таким именем уже существует": "Overwrite if a file with the same name already exists", +"ID аккаунта. Текущий аккаунт токена, если не заполнено": "Account ID. Current token account if not filled", +"Создает новую заявку на вызов курьера для забора груза": "Creates a new request to call a courier to pick up a shipment", +"ID стадии, после которой необходимо вставить выбранную": "Stage ID, after which the selected stage should be inserted", +"Получает информацию о характеристиках объекта в бакете": "Receives information about the properties of the object in the baquette", +"Получает информацию об объекте диска по заданному пути": "Gets information about a disk object at the specified path", +"Удаленный каталог приемника. Корень, если не заполнено": "Remote receiver catalog. Root by default", +"Количество элементов, которое будет пропущено в ответе": "Offset of the result items", +"флаг разрешения участникам приглашать других в событие": "flag to allow participants to invite others to the event", +"Регистрация преалерта](@api-docs.cdek.ru/78934763.html": "Registration of Prealert document](@api-docs.cdek.ru/78935159.html", +"Получает данные из буфера конкретного соединения по ID": "Gets data from the buffer of a specific connection by ID", +"количество месяцев для синхронизации в будущем периоде": "number of months to synchronise in the future period", +"tools/main/Modules/internal/Modules/OPI_Инструменты.os": "tools/main/Modules/internal/Modules/OPI_Tools.os", +"Получить структуру пользовательских настроек календаря": "Get calednar custom settings structure", +"Отправляет ранее загруженное голосовое сообщение по ID": "Sends a previously uploaded voice message by ID", +"Добавляет список привилегий роли в возвращаемые данные": "Adds a list of role privileges to the returned data", +"Значение = ПолучитьОбщийМакет(ИмяМакета).ПолучитьТекст": "Value = GetCommonTemplate(TemplateName).GetText", +"Подключает расширение SQLite для указанного соединения": "Connects the SQLite extension for the specified connection", +"Формирует структуру настроек сессии выполнения запроса": "Forms the session settings structure for executing the request", +"Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса": "Additional parameters. See GetRequestParametersStructure", +"Получает структуру с описанием полей для создания лида": "Gets a structure with field descriptions for creating a lead", +"Отправка тестового запроса через клиентские методы TCP": "Sending a test request via TCP client methods", +"Признак использования только своих изображений товаров": "A flag of using only your own product images", +"OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат": "OPI_TestDataRetrieval.Check_CdekOrder(Result", "Лимит удаления: 1 > первый документ, 0 > все документы": "Deletion limit: 1 > first document, 0 > all documents", "количество месяцев для синхронизации в прошлом периоде": "number of months to synchronise in the past period", "Изменяет имя и|или описание существующего поля таблицы": "Changes the name and/or description of an existing table field", @@ -11156,54 +11181,53 @@ "Данные пользователя. См. ПолучитьСтруктуруПользователя": "New user data. See. GetUserFieldsStructure", "Добавляет существующий календарь в список пользователя": "Adds an existing calendar to the user's list", "Файлы для загрузки: Ключ > путь на NC, Значение > Файл": "Files: Key > destination path on NC, Value > file", -"Группирует товары на основе одинаковых наборов свойств": "Groups products based on similar sets of properties", -"Информация об ошибке или неопределено, если ошибки нет": "Error information or undefined if there is no error", -"Идентификатор точки отгрузки для CREATE_TYPE_CROSSDOCK": "Shipping point identifier for CREATE_TYPE_CROSSDOCK", -"!OInt Данные = ПолучитьПеременнуюСреды(\"OINT_TESTS_CLI": "!OInt Data = GetEnvironmentVariable(\"OINT_TESTS_CLI", -"Массив привилегий. См. ПолучитьСтруктуруПривилегииРоли": "Array of privileges. See GetRolePrivilegeStructure", -"Получает список внешних файлов пользователя или канала": "Gets a list of external files of a user or channel", -"и выбор конкретного проекта из списка (значок c ключом": "and chosing of project from list (key icon", -"OneScript: ./OInt/tools/main/Modules/OPI_Компоненты.os": "OneScript: ./OInt/tools/main/Modules/OPI_AddIns.os", -"УстановитьДвоичноеТело: передано пустое тело - пропуск": "SetBinaryBody: an empty body has been passed - skip", -"Получает список доступных счетчиков с фильтром или без": "Gets a list of available counters with or without filtering", -"Вид разметки для текста сообщения: MarkdownV2 или HTML": "Markup type for message text: MarkdownV2 or HTML", -"OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат": "OPI_TestDataRetrieval.Check_CdekOrder(Result", "!OInt ЭтоОтладка = ПолучитьПеременнуюСреды(\"OINT_DEBUG": "!OInt IsDebug = GetEnvironmentVariable(\"OINT_DEBUG", -"Отправка тестового запроса через клиентские методы TCP": "Sending a test request via TCP client methods", -"Доп. параметры. См. ПолучитьСтруктуруПараметровЗапроса": "Additional parameters. See GetRequestParametersStructure", -"Перезаписывать если файл с таким именем уже существует": "Overwrite if a file with the same name already exists", -"ID аккаунта. Текущий аккаунт токена, если не заполнено": "Account ID. Current token account if not filled", -"Создает новую заявку на вызов курьера для забора груза": "Creates a new request to call a courier to pick up a shipment", -"ID стадии, после которой необходимо вставить выбранную": "Stage ID, after which the selected stage should be inserted", -"Получает информацию о характеристиках объекта в бакете": "Receives information about the properties of the object in the baquette", -"Получает информацию об объекте диска по заданному пути": "Gets information about a disk object at the specified path", -"Удаленный каталог приемника. Корень, если не заполнено": "Remote receiver catalog. Root by default", -"Количество элементов, которое будет пропущено в ответе": "Offset of the result items", -"Перемещает объект по заданному пути и пути к оригиналу": "Moves the object to the specified path and path to the original", -"флаг разрешения участникам приглашать других в событие": "flag to allow participants to invite others to the event", -"Получает структуру с описанием полей для создания лида": "Gets a structure with field descriptions for creating a lead", -"Получает данные из буфера конкретного соединения по ID": "Gets data from the buffer of a specific connection by ID", -"Признак использования только своих изображений товаров": "A flag of using only your own product images", -"количество месяцев для синхронизации в будущем периоде": "number of months to synchronise in the future period", -"tools/main/Modules/internal/Modules/OPI_Инструменты.os": "tools/main/Modules/internal/Modules/OPI_Tools.os", -"Получить структуру пользовательских настроек календаря": "Get calednar custom settings structure", -"Регистрация преалерта](@api-docs.cdek.ru/78934763.html": "Registration of Prealert document](@api-docs.cdek.ru/78935159.html", -"Отправляет ранее загруженное голосовое сообщение по ID": "Sends a previously uploaded voice message by ID", -"Добавляет список привилегий роли в возвращаемые данные": "Adds a list of role privileges to the returned data", -"Значение = ПолучитьОбщийМакет(ИмяМакета).ПолучитьТекст": "Value = GetCommonTemplate(TemplateName).GetText", -"Подключает расширение SQLite для указанного соединения": "Connects the SQLite extension for the specified connection", -"Формирует структуру настроек сессии выполнения запроса": "Forms the session settings structure for executing the request", +"Информация об ошибке или неопределено, если ошибки нет": "Error information or undefined if there is no error", +"Группирует товары на основе одинаковых наборов свойств": "Groups products based on similar sets of properties", +"Вид разметки для текста сообщения: MarkdownV2 или HTML": "Markup type for message text: MarkdownV2 or HTML", +"УстановитьДвоичноеТело: передано пустое тело - пропуск": "SetBinaryBody: an empty body has been passed - skip", +"OneScript: ./OInt/tools/main/Modules/OPI_Компоненты.os": "OneScript: ./OInt/tools/main/Modules/OPI_AddIns.os", +"и выбор конкретного проекта из списка (значок c ключом": "and chosing of project from list (key icon", +"Получает список доступных счетчиков с фильтром или без": "Gets a list of available counters with or without filtering", +"Массив привилегий. См. ПолучитьСтруктуруПривилегииРоли": "Array of privileges. See GetRolePrivilegeStructure", +"!OInt Данные = ПолучитьПеременнуюСреды(\"OINT_TESTS_CLI": "!OInt Data = GetEnvironmentVariable(\"OINT_TESTS_CLI", +"Идентификатор точки отгрузки для CREATE_TYPE_CROSSDOCK": "Shipping point identifier for CREATE_TYPE_CROSSDOCK", +"Получает список внешних файлов пользователя или канала": "Gets a list of external files of a user or channel", +"Добавляет хеш пароля пользователя в возвращаемые данные": "Adds user password hash to the returned data", +"Включение и отключение версионирования, если необходимо": "Enable and disable versioning, if necessary", +"OneScript: ./OInt/tools/http/Modules/OPI_ЗапросыHTTP.os": "OneScript: ./OInt/tools/http/Modules/OPI_HTTPRequests.os", +"Разблокирует ранее заблокированного пользователя в чате": "Unblocks a previously blocked user in the chat room", +"идентификатор автора перемещения лида на текущую стадию": "identifier of the author of moving the lead to the current stage", +"Не удалось удалить файл пакета запросов после установки": "Failed to delete query package file after installation", +"Параметры авторизации. См. ПолучитьПараметрыАвторизации": "Authorization parameters. See GetAuthParameters", +"Объект сервера или соответствие с информацией об ошибке": "Server object or match with error information", +"Блок как соответствие. С ним можно свершать манипуляции": "Block as map. Can be changed", +"Предоставляет стороннии пользователям доступ к каталогу": "Grants external users access to the directory", +"Тип поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply type: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", +"Получает список всех версий объектов в выбранном бакете": "Gets a list of all versions of objects in the selected bucket", +"идентификатор организатора события. Если is_meeting = Y": "The identifier of the event organiser. If is_meeting = Y", +"Максимальное время ожидания подключений. 0 > бесконечно": "Maximum waiting time for connections. 0 > unlimited", +"Наличие соединения в пуле не гарантирует его активности": "The presence of a connection in the pool does not guarantee that it is active", +"Настройки логирования. См. ПолучитьНастройкиЛогирования": "Logging settings. See GetLoggingSettings", +"ID пользователя. Ответ на все заявки, если не заполнено": "User ID. For all active requests if not filled in", +"Отправляет данные клиенту по идентификатору подключения": "Sends data to the client by connection ID", +"Информация о преалерте](@api-docs.cdek.ru/78934799.html": "Details of prealert document](@api-docs.cdek.ru/78935281.html", +"доступность на время события: busy, absent, quest, free": "availability at the time of the event: busy, absent, quest, free", +"Проверяет существование аккаунта Max по номеру телефона": "Checks the existence of a Max account by phone number", +"Создает отказ по заказу для возврата в интернет магазин": "Creates an order refusal to return to the online store", +"Объект коннектора или структура с информацией об ошибке": "Connector object or structure with error information", +"ДвойныеКавычки, ЭкранированиеСимволовJSON[Экранирование": "DoubleQuotes, JSONCharactersEscapeMode[Escaping", +"Получает описание контакта для функции ОтправитьКонтакт": "Gets the contact description for the SendContact function", "Атрибуты запуска. Перезаписывает указанное при создании": "Launch attributes. Overwrites the one specified during creation", "ОбработкаОбъект.OPI_HTTPКлиент, HTTPОтвет, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPResponse, Undefined", "цвет фона события. Символ # - в формате unicode как %23": "event background colour. Symbol # - in unicode format as %23", "Описание запуска. Перезаписывает указанное при создании": "Launch description. Overwrites the one specified during creation", "Получает список активных отправлений с фильтром или без": "Gets a list of active shipments with or without filtering", -"имя существующей модели, из которой будет создана новая": "the name of the existing model from which the new model will be created", "список имен файлов или SHA256 блобов для LORA адаптеров": "list of file names or SHA256 blobs for LORA adapters", "Инициализирует запись данных в тело в формате multipart": "Initializes writing data to the body in multipart format", "Отправка и получение сообщений в двунаправленном потоке": "Sending and receiving messages in a bidirectional stream", "ID последнего значения (last_id) из предыдущего запроса": "ID of the last value (last_id) from the previous response", -"Идентификатор файла или каталога размещения комментария": "Identifier of the file or directory where the comment is located", +"имя существующей модели, из которой будет создана новая": "the name of the existing model from which the new model will be created", "tools/main/Modules/internal/Modules/OPI_Криптография.os": "tools/main/Modules/internal/Modules/OPI_Cryptography.os", "Код активации привязывается к карточке цифрового товара": "The activation code is linked to the digital product card", "Добавляет или обновляет информацию о товарах в каталоге": "Adds or updates product information in the catalogue", @@ -11213,72 +11237,20 @@ "Описание события. См. ПолучитьСтруктуруСобытияКалендаря": "Event description. See GetCalendarEventsStructure", "Дата окончания жизни ссылки (бессрочно, если не указано": "Link expiration date (permanent if not specified", "Устанавливает настройки версионирования объектов бакета": "Sets the versioning settings for bucket objects", +"Идентификатор файла или каталога размещения комментария": "Identifier of the file or directory where the comment is located", "Перезаписывать, если файл с таким именем уже существует": "Overwrite if a file with the same name already exists", -"Получает описание контакта для функции ОтправитьКонтакт": "Gets the contact description for the SendContact function", -"Создает отказ по заказу для возврата в интернет магазин": "Creates an order refusal to return to the online store", -"ДвойныеКавычки, ЭкранированиеСимволовJSON[Экранирование": "DoubleQuotes, JSONCharactersEscapeMode[Escaping", -"Максимальное время ожидания подключений. 0 > бесконечно": "Maximum waiting time for connections. 0 > unlimited", -"идентификатор автора перемещения лида на текущую стадию": "identifier of the author of moving the lead to the current stage", -"Включение и отключение версионирования, если необходимо": "Enable and disable versioning, if necessary", -"OneScript: ./OInt/tools/http/Modules/OPI_ЗапросыHTTP.os": "OneScript: ./OInt/tools/http/Modules/OPI_HTTPRequests.os", -"Разблокирует ранее заблокированного пользователя в чате": "Unblocks a previously blocked user in the chat room", -"Объект коннектора или структура с информацией об ошибке": "Connector object or structure with error information", -"Не удалось удалить файл пакета запросов после установки": "Failed to delete query package file after installation", -"Параметры авторизации. См. ПолучитьПараметрыАвторизации": "Authorization parameters. See GetAuthParameters", -"Объект сервера или соответствие с информацией об ошибке": "Server object or match with error information", -"Добавляет хеш пароля пользователя в возвращаемые данные": "Adds user password hash to the returned data", -"Блок как соответствие. С ним можно свершать манипуляции": "Block as map. Can be changed", -"Проверяет существование аккаунта Max по номеру телефона": "Checks the existence of a Max account by phone number", -"Тип поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply type: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", -"Получает список всех версий объектов в выбранном бакете": "Gets a list of all versions of objects in the selected bucket", -"идентификатор организатора события. Если is_meeting = Y": "The identifier of the event organiser. If is_meeting = Y", -"Предоставляет стороннии пользователям доступ к каталогу": "Grants external users access to the directory", -"Наличие соединения в пуле не гарантирует его активности": "The presence of a connection in the pool does not guarantee that it is active", -"Настройки логирования. См. ПолучитьНастройкиЛогирования": "Logging settings. See GetLoggingSettings", -"ID пользователя. Ответ на все заявки, если не заполнено": "User ID. For all active requests if not filled in", -"Отправляет данные клиенту по идентификатору подключения": "Sends data to the client by connection ID", -"Информация о преалерте](@api-docs.cdek.ru/78934799.html": "Details of prealert document](@api-docs.cdek.ru/78935281.html", -"доступность на время события: busy, absent, quest, free": "availability at the time of the event: busy, absent, quest, free", -"Добавляет информацию о выполнении для тестового элемента": "Adds execution information for the test item", -"атрибуты элемента. Перезаписывает указанное при создании": "attributes of the element. Overwrites the one specified during creation", -"Истина > Directory Bucket, Ложь > General Purpose Bucket": "True > Directory Bucket, False > General Purpose Bucket", -"OPI_Инструменты.ЗаменитьУправляющиеПоследовательности(%1": "OPI_Tools.ReplaceEscapeSequences(%1", -"Получать информацию об объектах во вложенных директориях": "Get information about objects in nested directories", -"Создает дочернюю страницу над другой страницей-родителем": "Creates a child page above another parent page", -"Получает структуру с описанием полей для создания сделки": "Gets a structure with field descriptions for creating a deal", -"Истина > Path style URL, Ложь > Virtual hosted style URL": "True > Path style URL, False > Virtual hosted style URL", -"Здесь собрано определение данных, необходимых для работы": "The definition of the data required for the work is collected here", -"Возможно, она не подходит для вашей операционной системы": "It may not be compatible with your OS", -"OneScript: ./OInt/tests/Modules/internal/OPI_ТестыCLI.os": "OneScript: ./OInt/tests/Modules/internal/OPI_TestsCLI.os", -"Получает информацию о товарах по массиву идентификаторов": "Gets information about products by an array of identifiers", -"Загружает файл с диска или двоичные данные на сервер FTP": "Uploads a file from disk or binary data to the FTP server", -"Устанавливает новые пользовательские настройки календаря": "Sets new custom calendar settings", -"Роль может быть определена в одном из следующих форматов": "Role can be defined in one of the following formats", -"Как XML файлы расширения для загрузки через конфигуратор": "As XML extension files for loading via the configurator", -"Настройки TLS, если необходимо. См. ПолучитьНастройкиTls": "TLS settings, if necessary. See GetTlsSettings", -"атрибуты запуска в виде ключ1:значение1, ключ2:значение2": "launch attributes in the form key1:value1, key2:value2", -"Количество байт от указанной позиции начала для отправки": "Number of bytes from the specified start position for sending", -"Ошибка: Не удалось удалить временный файл при исключении": "Error: Failed to delete a temporary file on exception", -"Возвращает тело ответа как коллекцию, полученную из JSON": "Returns the response body as a collection from JSON", -"ДобавитьЗаголовокOAuthV1: создание заголовка авторизации": "AddOAuthV1Header: authorization header creation", -"ОбработатьЗапрос: установка настроек расширенного вызова": "ProcessRequest: setting advanced call settings", -"Получает информацию об опубликованном объекте по его URL": "Gets information about the published object by its URL", -"Соответствие данных с результатом проверки в поле passed": "Map of data with the result of verification in the passed field", -"Удаляет уведомление из очереди после успешного получения": "Deletes the notification from the queue after successful receipt", -"Изменяет значение варианта существующего свойства товара": "Edits the value of an existing product property variant", -"Массив удаления. См. ПолучитьСтруктуруУдаленияДокументов": "Deletion array. See GetDocumentDeletionStructure", -"ОбработкаОбъект.OPI_HTTPКлиент, HTTPЗапрос, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPRequest, Undefined", -"Получает прямую ссылку для скачивания публичного объекта": "Gets a direct link to download the public object", -"часовой пояс окончания (по умолчанию - ч.п. пользователя": "end time zone (default - t.z. of the user)", -"Очищает все добавленные ранее заголовки перед установкой": "Clears all previously added headers before setting", -"описание элемента. Перезаписывает указанное при создании": "element description. Overwrites the one specified during creation", -"Типы поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply types: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", -"Массив кодов стран в формате ISO_31661_alpha2 для отбора": "Array of country codes in ISO_31661_alpha2 format for selection", -"Получает тестовые элементы выбранной сессии тестирования": "Gets the test items of the selected test session", "период экспорта: all, 3_9 (пример: 3 месяца до и 9 после": "export period: all, 3_9 (example: 3 months before and 9 after", +"Получает тестовые элементы выбранной сессии тестирования": "Gets the test items of the selected test session", +"Массив кодов стран в формате ISO_31661_alpha2 для отбора": "Array of country codes in ISO_31661_alpha2 format for selection", +"Типы поставки: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT": "Supply types: CREATE_TYPE_CROSSDOCK, CREATE_TYPE_DIRECT", +"ОбработкаОбъект.OPI_HTTPКлиент, HTTPЗапрос, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPRequest, Undefined", +"Очищает все добавленные ранее заголовки перед установкой": "Clears all previously added headers before setting", +"часовой пояс окончания (по умолчанию - ч.п. пользователя": "end time zone (default - t.z. of the user)", +"Получает прямую ссылку для скачивания публичного объекта": "Gets a direct link to download the public object", "Нажмите **Create App** и выберите пункт **From scratch**": "Click **Create App** and choose **From scratch**", +"описание элемента. Перезаписывает указанное при создании": "element description. Overwrites the one specified during creation", "Нажимайте далее и Save and continue на последней вкладке": "Click on Next and then Save and continue on the last tab", -"Получает количество товаров в остатке с фильтром или без": "Gets the number of items in the balance with or without filtering", +"Загружает коды активации для цифрового товара или услуги": "Uploads activation codes for a digital product or service", "Количество возвращаемых вложенных объектов (для каталога": "Number of returned nested objects (for catalog", "Получает статус асинхронной работы по изменению доступов": "Get async job status for access changes", "Отправляет сообщение, которое приходит в канал, но видно": "Sends a message that arrives in the channel but is visible", @@ -11289,36 +11261,37 @@ "Получает представления (embeddings) для заданных вводных": "Gets the embeddings for the given entries", "Признак использования полей тела в расчете подписи OAuth": "Flag to use body fields in OAuth signature calculation", "Удаляет стадию канбана, при условии, что в ней нет задач": "Removes a kanban stage, provided there are no tasks in it", -"Загружает коды активации для цифрового товара или услуги": "Uploads activation codes for a digital product or service", "Истина > возвращает лог одной строкой, Ложь > как массив": "True > returns log as a single string, False > as an array", -"передайте Истина, чтобы добавить в ответ данные аналитики": "pass True to add analytics data to the response", -"цвет текста события. Символ # - в формате unicode как %23": "the colour of the event text. Symbol # - in unicode format as %23", -"Получить доступные таймслоты на конечных складах отгрузки": "Get available timeslots at the final supply warehouses", -"Ресурс может быть определен в одном из следующих форматов": "Resource can be defined in one of the following formats", -"Устанавливает картинку в качестве аватара группового чата": "Sets the image as the group chat avatar", -"Время показа признака набора текста перед отправкой (в мс": "Time to show the typing indicator before sending (in ms", -"Получать информацию об элементах во вложенных директориях": "Get information about elements in nested directories", -"ОжидаетЧто(Результат[\"result\"][\"status\"]).Равно(\"imported": "ExpectsThat(Result[\"result\"][\"status\"]).Equal(\"imported", -"Структура отбора задач (см. ПолучитьСтруктуруФильтраЗадач": "Structure of task filter (see GetTaskFieldsStructure", -"ВызватьМетод: запрос не был сформирован перед выполнением": "ExecuteMethod: the request was not generated before execution", -"Получает список комментариев пользователей к задаче по ID": "Get user comments list for a task", -"Оформляет клиентский возврат для заказа интернет магазина": "Processes customer returns for online store orders", -"идентификатор автора перемещения сделки на текущую стадию": "identifier of the author of moving the deal to the current stage", -"Получает структуру сообщения для списка сообщений запроса": "Receives the message structure for the request message list", -"Структура полей календаря. См. ПолучитьСтруктуруКалендаря": "Calendar fields structure. See GetCalendarStructure", -"Структура значений: Ключ > поле, Значение > значение поля": "Values structure: Key > field, Value > field value", -"Структура полей календаря (см. ПолучитьСтруктуруКалендаря": "Calendar fields structure (see GetCalendarStructure", -"Параметры соединения. См. СформироватьПараметрыСоединения": "Connection parameters. See FormConnectionParameters", -"ВызватьМетод: отправка запроса с записью ответа в файл %1": "ExecuteMethod: sending request with response written to file %1", -"получать уведомления о статусах входящего звонка: yes, no": "receive notifications about incoming call statuses: yes, no", -"Структура отбора лидов (см. ПолучитьСтруктуруФильтраЛидов": "Lead filter structure (see GetLeadFilterStructure", -"Модуль для работы с WhatsApp через GreenAPI из набора ОПИ": "WhatsApp via GreenAPI Module of OpenIntegrations", -"Удаляет публичный URL у файла. Требует токен пользователя": "Removes the public URL from the file. Requires user token", -"Максимальное число одновременно поддерживаемых соединений": "Maximum number of simultaneously supported connections", -"Создает текстовую транскрипцию для выбранного аудио файла": "Creates a text transcription for the selected audio file", -"Структура изменяемых полей. См. ПолучитьСтруктуруСчетчика": "Structure of fields to be changed. See GetCounterStructure", -"Создает новую тему в группе с включенным функционалом тем": "Creates a new topic in the group with theme functionality enabled", -"OPI_ПолучениеДанныхТестов.Проверка_ОзонКартинки(Результат": "OPI_TestDataRetrieval.Check_OzonPictures(Result", +"Получает количество товаров в остатке с фильтром или без": "Gets the number of items in the balance with or without filtering", +"Массив удаления. См. ПолучитьСтруктуруУдаленияДокументов": "Deletion array. See GetDocumentDeletionStructure", +"Изменяет значение варианта существующего свойства товара": "Edits the value of an existing product property variant", +"Соответствие данных с результатом проверки в поле passed": "Map of data with the result of verification in the passed field", +"Удаляет уведомление из очереди после успешного получения": "Deletes the notification from the queue after successful receipt", +"Добавляет информацию о выполнении для тестового элемента": "Adds execution information for the test item", +"атрибуты элемента. Перезаписывает указанное при создании": "attributes of the element. Overwrites the one specified during creation", +"Истина > Directory Bucket, Ложь > General Purpose Bucket": "True > Directory Bucket, False > General Purpose Bucket", +"OPI_Инструменты.ЗаменитьУправляющиеПоследовательности(%1": "OPI_Tools.ReplaceEscapeSequences(%1", +"Получать информацию об объектах во вложенных директориях": "Get information about objects in nested directories", +"Создает дочернюю страницу над другой страницей-родителем": "Creates a child page above another parent page", +"Истина > Path style URL, Ложь > Virtual hosted style URL": "True > Path style URL, False > Virtual hosted style URL", +"Здесь собрано определение данных, необходимых для работы": "The definition of the data required for the work is collected here", +"Возможно, она не подходит для вашей операционной системы": "It may not be compatible with your OS", +"OneScript: ./OInt/tests/Modules/internal/OPI_ТестыCLI.os": "OneScript: ./OInt/tests/Modules/internal/OPI_TestsCLI.os", +"Получает информацию о товарах по массиву идентификаторов": "Gets information about products by an array of identifiers", +"Получает структуру с описанием полей для создания сделки": "Gets a structure with field descriptions for creating a deal", +"Устанавливает новые пользовательские настройки календаря": "Sets new custom calendar settings", +"Загружает файл с диска или двоичные данные на сервер FTP": "Uploads a file from disk or binary data to the FTP server", +"ОбработатьЗапрос: установка настроек расширенного вызова": "ProcessRequest: setting advanced call settings", +"ДобавитьЗаголовокOAuthV1: создание заголовка авторизации": "AddOAuthV1Header: authorization header creation", +"Возвращает тело ответа как коллекцию, полученную из JSON": "Returns the response body as a collection from JSON", +"Ошибка: Не удалось удалить временный файл при исключении": "Error: Failed to delete a temporary file on exception", +"Получает информацию об опубликованном объекте по его URL": "Gets information about the published object by its URL", +"атрибуты запуска в виде ключ1:значение1, ключ2:значение2": "launch attributes in the form key1:value1, key2:value2", +"Настройки TLS, если необходимо. См. ПолучитьНастройкиTls": "TLS settings, if necessary. See GetTlsSettings", +"Как XML файлы расширения для загрузки через конфигуратор": "As XML extension files for loading via the configurator", +"Роль может быть определена в одном из следующих форматов": "Role can be defined in one of the following formats", +"Количество байт от указанной позиции начала для отправки": "Number of bytes from the specified start position for sending", +"атрибуты элемента в виде ключ1:значение1, ключ2:значение2": "element attributes in the form key1:value1, key2:value2", "Путь к файлу для сохранения полного лога, если необходимо": "Path to file for saving full log, if necessary", "Получает макет для создания заказа в функции СоздатьЗаказ": "Gets the layout of order for the CreateOrder function", "ПараметрыЗапросаВСтроку: Получение коллекции КлючЗначение": "RequestParametersToString: Retrieve collection KeyValue", @@ -11328,9 +11301,8 @@ "По умолчанию данные тела используются при расчете подписи": "By default, the body data is used in the signature calculation", "Получает размер файла или директории, если она существуют": "Get the size of a file or directory if it exists", "Идентификатор сообщения. Все сообщения, если не заполнено": "Message ID. All messages, if not filled in", -"атрибуты элемента в виде ключ1:значение1, ключ2:значение2": "element attributes in the form key1:value1, key2:value2", "Устанавливает максимальное число допустимых переадресаций": "Sets the maximum number of allowed redirects", -"Подпись в форме. Ключ: en или ru, Значение: Текст подписи": "Form label. Key: en or ru, Value: Lable text", +"Структура отбора задач. См. ПолучитьСтруктуруФильтраЗадач": "Lead filter structure. See GetLeadFilterStructure", "ДобавитьФайлRelated: Не инициализирована запись Multipart": "AddFileAsRelated: Multipart record not initialized", "Получает структуру параметров завершения тестового сеанса": "Gets the parameter structure for completing a test session", "ДобавитьФайлRelated: не инициализирована запись Multipart": "AddFileAsRelated: multipart record not initialized", @@ -11341,18 +11313,69 @@ "Получает шаблон структуры для установки настроек инстанса": "Gets the structure template for instance settings", "Получает список рабочих областей, в которых подключен бот": "Gets a list of workspaces where the bot is connected", "Структура отбора лидов. См. ПолучитьСтруктуруФильтраЛидов": "Lead filter structure. See GetLeadFilterStructure", -"Структура отбора задач. См. ПолучитьСтруктуруФильтраЗадач": "Lead filter structure. See GetLeadFilterStructure", +"OPI_ПолучениеДанныхТестов.Проверка_ОзонКартинки(Результат": "OPI_TestDataRetrieval.Check_OzonPictures(Result", +"Подпись в форме. Ключ: en или ru, Значение: Текст подписи": "Form label. Key: en or ru, Value: Lable text", +"Создает новую тему в группе с включенным функционалом тем": "Creates a new topic in the group with theme functionality enabled", +"Удаляет публичный URL у файла. Требует токен пользователя": "Removes the public URL from the file. Requires user token", +"Создает текстовую транскрипцию для выбранного аудио файла": "Creates a text transcription for the selected audio file", +"передайте Истина, чтобы добавить в ответ данные аналитики": "pass True to add analytics data to the response", +"Структура изменяемых полей. См. ПолучитьСтруктуруСчетчика": "Structure of fields to be changed. See GetCounterStructure", +"Получить доступные таймслоты на конечных складах отгрузки": "Get available timeslots at the final supply warehouses", +"Ресурс может быть определен в одном из следующих форматов": "Resource can be defined in one of the following formats", +"Устанавливает картинку в качестве аватара группового чата": "Sets the image as the group chat avatar", +"Время показа признака набора текста перед отправкой (в мс": "Time to show the typing indicator before sending (in ms", +"Получать информацию об элементах во вложенных директориях": "Get information about elements in nested directories", +"ОжидаетЧто(Результат[\"result\"][\"status\"]).Равно(\"imported": "ExpectsThat(Result[\"result\"][\"status\"]).Equal(\"imported", +"Структура отбора задач (см. ПолучитьСтруктуруФильтраЗадач": "Structure of task filter (see GetTaskFieldsStructure", +"ВызватьМетод: запрос не был сформирован перед выполнением": "ExecuteMethod: the request was not generated before execution", +"Получает список комментариев пользователей к задаче по ID": "Get user comments list for a task", +"цвет текста события. Символ # - в формате unicode как %23": "the colour of the event text. Symbol # - in unicode format as %23", +"идентификатор автора перемещения сделки на текущую стадию": "identifier of the author of moving the deal to the current stage", +"Оформляет клиентский возврат для заказа интернет магазина": "Processes customer returns for online store orders", +"Модуль для работы с WhatsApp через GreenAPI из набора ОПИ": "WhatsApp via GreenAPI Module of OpenIntegrations", +"Структура отбора лидов (см. ПолучитьСтруктуруФильтраЛидов": "Lead filter structure (see GetLeadFilterStructure", +"получать уведомления о статусах входящего звонка: yes, no": "receive notifications about incoming call statuses: yes, no", +"ВызватьМетод: отправка запроса с записью ответа в файл %1": "ExecuteMethod: sending request with response written to file %1", +"Максимальное число одновременно поддерживаемых соединений": "Maximum number of simultaneously supported connections", +"Структура полей календаря (см. ПолучитьСтруктуруКалендаря": "Calendar fields structure (see GetCalendarStructure", +"Структура значений: Ключ > поле, Значение > значение поля": "Values structure: Key > field, Value > field value", +"Структура полей календаря. См. ПолучитьСтруктуруКалендаря": "Calendar fields structure. See GetCalendarStructure", +"Получает структуру сообщения для списка сообщений запроса": "Receives the message structure for the request message list", +"Параметры соединения. См. СформироватьПараметрыСоединения": "Connection parameters. See FormConnectionParameters", +"Число последних событий для получения. 0 > без ограничений": "Number of recent events to retrieve. 0 > no limits", +"Загружает фото на сервер для его дальнейшего использования": "Uploads photo to server for further use", +"Сортировка: Ключ > поле, Значение > направление (ASC, DESC": "Sorting: Key > field name, Value > direction (ASC, DESC", +"ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями": "Upload ID. See InitPartsUpload", +"Устанавливает тело запроса из строки в указанной кодировке": "Sets the request body from a string in the specified encoding", +"Получает структуру стандартных полей для создания счетчика": "Gets the structure of standard fields for counter creation", +"Массив кодов стран в формате ISO_3166-1_alpha-2 для отбора": "Array of country codes in ISO_3166-1_alpha-2 format for selection", +"OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os": "OneScript: ./OInt/tools/Modules/OPI_TypeConversion.os", +"TCP сервер или пустое значение при обособленной обоработке": "TCP server or empty value for standalone processing", +"Отправляет данные в виде строки через указанное соединение": "Sends data as a string over the specified connection", +"Максимально число сообщений для получения, если необходимо": "Maximum number of messages to receive, if necessary", +"Структура с идентификатором нового подключения или ошибкой": "Structure with new connection ID or error information", +"Создает копию объекта по заданному пути и пути к оригиналу": "Creates a copy of the object at the specified path and path to the original", +"уже добавлена ранее, повторное добавление является ошибкой": "has already been added before, adding it again is an error", +"Переданные роли целиком заменяют список ролей пользователя": "The passed roles completely replace the user's role list", +"OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат": "OPI_TestDataRetrieval.Check_OzonTimeslots(Result", +"Пересылает сообщение между чатами или в рамках одного чата": "Forwards a message between chats or within a chat", +"ПолучитьСтруктуруПользовательскихНастроекКаледнаря (пустая": "GetCalednarCustomSettingsStructure", +"ДобавитьФайлMultipart: пустой файл проигнорирован, поле %1": "AddMultipartFormDataFile: empty file ignored, field %1", +"Формирует структуру настроек прокси-сервера для соединения": "Creates a structure of proxy server settings for the connection", +"Получает массив событий пользователей в заданном интервале": "Gets an array of user events in the specified interval", +"История сообщений. См. ПолучитьСтруктуруСообщенияКонтекста": "Messages log. See GetContextMessageStructure", +"или неявного, при передаче строки подключения в методы ORM": "or implicit, when passing the connection string to ORM methods", "Вызывает указанный метод с расширенной установкой настроек": "Calls the specified method with advanced settings configuration", -"Получает ссылку на скачивание файла из входящего сообщения": "Gets a link to download a file from an incoming message", "Заменяет метаданные, установленные при создании соединения": "Replaces the metadata set during connection creation", "Получает описания характеристик товаров с фильтром или без": "Retrieves product attributes descriptions with or without filtering", "Загружает объект на сервер не используя загрузку по частям": "Upload object with single request", "OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат": "OPI_TestDataRetrieval.Check_BitrixString(Result", "SELECT (Результат этого запроса приведен в следующем блоке": "SELECT (The result of this query is shown in the Result block", +"Отправляет часть данных (дополнительный QueryInfo) в поток": "Sends part of the data (additional QueryInfo) to the stream", "OPI_ПолучениеДанныхТестов.Проверка_ОзонБезОшибок(Результат": "OPI_TestDataRetrieval.Check_OzonNoErrors(Result", "Добавляет стандартную авторизацию по пользователю и паролю": "Adds standard authorization by username and password", "передайте Истина, чтобы добавить в ответ финансовые данные": "pass True to add financial data to the response", -"app_id - ID приложения. Для создания приложения необходимо": "app_id - Application ID. To create an application, you need to", +"Получает ссылку на скачивание файла из входящего сообщения": "Gets a link to download a file from an incoming message", "Объект коннектора или соответствие с информацией об ошибке": "Client object or map with error information", "Модуль для вызова методов с расширенным набором параметров": "Module for calling methods with advanced parameter set", "Не удалось удалить файл параметров запроса после установки": "Failed to delete query parameters file after execution", @@ -11362,32 +11385,30 @@ "Статус участия: Y (согласен), N (отказался), Q (не ответил": "Participation status: Y (agreed), N (refused), Q (did not answer", "Константы.TwitterToken.Установить(ОтветТокен[\"access_token": "Constants.TwitterToken.Set(ResponseToken[\"access_token", "Структура отбора (см. ПолучитьСтруктуруФильтраКомментариев": "Comments filter structure (see GetCommentsFilterStructure", -"или неявного, при передаче строки подключения в методы ORM": "or implicit, when passing the connection string to ORM methods", -"Отправляет часть данных (дополнительный QueryInfo) в поток": "Sends part of the data (additional QueryInfo) to the stream", -"Получает массив событий пользователей в заданном интервале": "Gets an array of user events in the specified interval", -"ДобавитьФайлMultipart: пустой файл проигнорирован, поле %1": "AddMultipartFormDataFile: empty file ignored, field %1", -"Загружает фото на сервер для его дальнейшего использования": "Uploads photo to server for further use", -"Сортировка: Ключ > поле, Значение > направление (ASC, DESC": "Sorting: Key > field name, Value > direction (ASC, DESC", -"ID загрузки по частям. См. ИнициализироватьЗагрузкуЧастями": "Upload ID. See InitPartsUpload", -"Устанавливает тело запроса из строки в указанной кодировке": "Sets the request body from a string in the specified encoding", -"Получает структуру стандартных полей для создания счетчика": "Gets the structure of standard fields for counter creation", -"Массив кодов стран в формате ISO_3166-1_alpha-2 для отбора": "Array of country codes in ISO_3166-1_alpha-2 format for selection", -"OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os": "OneScript: ./OInt/tools/Modules/OPI_TypeConversion.os", -"Число последних событий для получения. 0 > без ограничений": "Number of recent events to retrieve. 0 > no limits", -"TCP сервер или пустое значение при обособленной обоработке": "TCP server or empty value for standalone processing", -"Формирует структуру настроек прокси-сервера для соединения": "Creates a structure of proxy server settings for the connection", -"Максимально число сообщений для получения, если необходимо": "Maximum number of messages to receive, if necessary", -"Структура с идентификатором нового подключения или ошибкой": "Structure with new connection ID or error information", -"История сообщений. См. ПолучитьСтруктуруСообщенияКонтекста": "Messages log. See GetContextMessageStructure", -"Создает копию объекта по заданному пути и пути к оригиналу": "Creates a copy of the object at the specified path and path to the original", -"уже добавлена ранее, повторное добавление является ошибкой": "has already been added before, adding it again is an error", -"Отправляет данные в виде строки через указанное соединение": "Sends data as a string over the specified connection", -"Переданные роли целиком заменяют список ролей пользователя": "The passed roles completely replace the user's role list", -"OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат": "OPI_TestDataRetrieval.Check_OzonTimeslots(Result", -"Пересылает сообщение между чатами или в рамках одного чата": "Forwards a message between chats or within a chat", -"ПолучитьСтруктуруПользовательскихНастроекКаледнаря (пустая": "GetCalednarCustomSettingsStructure", +"app_id - ID приложения. Для создания приложения необходимо": "app_id - Application ID. To create an application, you need to", +"Настройки FTP не являются валидной структурой ключ-значение": "FTP settings are not a valid key-value structure", +"ДобавитьПолеMultipart: не инициализирована запись Multipart": "AddMultipartField: multipart record not initialized", +"Перейдите **[в раздел интеграций портала для разработчиков]": "Go to the **[section of integrations of the developer portal]", +"Вы можете переопределять их, передавая в качестве параметра": "You can override them by passing them as a parameter", +"Описание договоренности. См. ПолучитьОписаниеДоговоренности": "Appointment description. See GetAppointmentDescription", +"ДобавитьЗаголовок: пустой заголовок проигнорирован, ключ %1": "AddHeader: empty header ignored, key %1", +"ДобавитьФайлMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataFile: Multipart record not initialized", +"!OInt Сообщить(\"Ошибка загрузки участка \" + Строка(Н) + \"/3": "!OInt Message(\"Chunk upload error \" + String(N) + \"/3", +"Структура отбора сделок. См. ПолучитьСтруктуруФильтраСделок": "Deals filter structure. See GetDealsFilterStructure", +"Ползователь может быть указан в одном из сдедующих форматов": "User can be specified in one of the following formats", +"ДобавитьПолеMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataField: Multipart record not initialized", +"Фильтр отправлений. См. ПолучитьСтруктуруФильтраОтправлений": "Shipments filter. See GetShipmentsFilterStructure", +"Двоичные данные при успехе или структура с описанием ошибки": "Binary data on success or structure with error description", +"дата окончания выборки. 3 месяца после текущей по умолчанию": "selection end date. 3 months after the current default", +"Получает PDF или HTML превью объекта (только для документов": "Gets PDF or HTML preview of the object (for documents only", +"Массив строк, коллекций, двоичных данных или путей к файлам": "An array of strings, collections, binary data, or file paths", +"Истина > служебные поля удаляются, остается только сам блок": "True > service fields are deleted, only the block itself remains", +"Получает статус участия в событии для текущего пользователя": "Gets the event participation status of the current user", +"Перезаписывать, если объект по целевому пути уже существует": "Overwrite if an object already exists at the target path", +"Возвращает основные данные запроса в структурированном виде": "Returns the basic data for request in structured form", +"tests/Modules/internal/Modules/OPI_ПолучениеДанныхТестов.os": "tests/Modules/internal/Modules/OPI_TestDataRetrieval.os", +"Структура отбора сделок (см. ПолучитьСтруктуруФильтраСделок": "Deals filter structure (see. GetDealsFilterStructure", "Признак отключения автоматического определения Content-Type": "Flag to disable automatic Content-Type detection", -"В данных service аккаунта отсутствуют обязательные поля: %1": "There are no required fields in the service account data: %1", "По умлчанию multipart поля используются при расчете подписи": "Multipart fields are used for signature calculation by default", "УстановитьНастройкиРасширенногоВызова: Настройки не найдены": "SetAdvancedCallSettings: Settings not found", "Массив или одна сокращенная структура полей описания товара": "Array or one simplified structure of product fields", @@ -11395,56 +11416,16 @@ "Получает установленную ранее конфигурацию шифрования бакета": "Gets the previously set bucket encryption configuration", "Переданное значение не является валидной схемой SQL запроса": "The value passed is not a valid SQL query schema", "Для начала работы необходимо получить токен доступа к диску": "To start working, you need to obtain an access token for the disk", -"Создает публичный URL для файла. Требует токен пользователя": "Creates a public URL for the file. Requires user token", +"В данных service аккаунта отсутствуют обязательные поля: %1": "There are no required fields in the service account data: %1", "Код, полученный из авторизации См.ПолучитьСсылкуАвторизации": "Code obtained from authorization See GetAuthorizationLink", "Информация о товарах, которые размещены в заданном магазине": "Information about products that are placed in a selected market", "ДобавитьФайлMultipart: не инициализирована запись Multipart": "AddMultipartFile: Multipart record not initialized", "Тип календаря: user, group, company_calendar, location и др": "Calendar type: user, group, company_calendar, location, etc", "По умолчанию ответ от сервера запрашивается со сжатием gzip": "By default, the response from the server is requested with gzip compression", "Данная функция не обновляет тип данных существующих колонок": "This function does not update the data type of existing columns", -"ДополнитьЗаголовки: формирование заголовка AWS4 авторизации": "CompleteHeaders: generating AWS4 Authorization Header", "Созданного вами бота теперь можно применить двумя способами": "The bot you created can now be used in two ways", -"tests/Modules/internal/Modules/OPI_ПолучениеДанныхТестов.os": "tests/Modules/internal/Modules/OPI_TestDataRetrieval.os", -"Структура отбора сделок (см. ПолучитьСтруктуруФильтраСделок": "Deals filter structure (see. GetDealsFilterStructure", -"Перезаписывать, если объект по целевому пути уже существует": "Overwrite if an object already exists at the target path", -"Истина > служебные поля удаляются, остается только сам блок": "True > service fields are deleted, only the block itself remains", -"Перейдите **[в раздел интеграций портала для разработчиков]": "Go to the **[section of integrations of the developer portal]", -"Описание договоренности. См. ПолучитьОписаниеДоговоренности": "Appointment description. See GetAppointmentDescription", -"Вы можете переопределять их, передавая в качестве параметра": "You can override them by passing them as a parameter", -"ДобавитьФайлMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataFile: Multipart record not initialized", -"ДобавитьПолеMultipart: не инициализирована запись Multipart": "AddMultipartField: multipart record not initialized", -"Настройки FTP не являются валидной структурой ключ-значение": "FTP settings are not a valid key-value structure", -"ДобавитьЗаголовок: пустой заголовок проигнорирован, ключ %1": "AddHeader: empty header ignored, key %1", -"!OInt Сообщить(\"Ошибка загрузки участка \" + Строка(Н) + \"/3": "!OInt Message(\"Chunk upload error \" + String(N) + \"/3", -"Получает статус участия в событии для текущего пользователя": "Gets the event participation status of the current user", -"Ползователь может быть указан в одном из сдедующих форматов": "User can be specified in one of the following formats", -"Возвращает основные данные запроса в структурированном виде": "Returns the basic data for request in structured form", -"ДобавитьПолеMultipart: Не инициализирована запись Multipart": "AddMultipartFormDataField: Multipart record not initialized", -"Фильтр отправлений. См. ПолучитьСтруктуруФильтраОтправлений": "Shipments filter. See GetShipmentsFilterStructure", -"Структура отбора сделок. См. ПолучитьСтруктуруФильтраСделок": "Deals filter structure. See GetDealsFilterStructure", -"Двоичные данные при успехе или структура с описанием ошибки": "Binary data on success or structure with error description", -"дата окончания выборки. 3 месяца после текущей по умолчанию": "selection end date. 3 months after the current default", -"Получает PDF или HTML превью объекта (только для документов": "Gets PDF or HTML preview of the object (for documents only", -"Массив строк, коллекций, двоичных данных или путей к файлам": "An array of strings, collections, binary data, or file paths", -"Ожидаемый формат данных, если сервер не вернул output_format": "Expected data format if the server did not return output_format", -"Отредактируйте товар, чтобы опубликовать в Маркете ВКонтакте": "Moderation", -"Вставить новый документ, если ни один документ не был найден": "Insert a new document if no document was found", -"Установка нового набора удаляет все существующие теги бакета": "Setting up a new set removes all existing bucket tags", -"Устанавливает путь к файлу для сохранения результата запроса": "Sets the file path to save the query result", -"получать уведомления о входящих сообщениях и файлах: yes, no": "receive notifications of incoming messages and files: yes, no", -"Массив обновлений. См. ПолучитьСтруктуруОбновленияДокументов": "Update array. See GetDocumentUpdateStructure", -"Формирует картинку для отправки в функции ОтправитьСообщение": "Make picture block for SendMessage method", -"механизм загрузки файлов и некоторые другие из старой версии": "file upload mechanism and some others from the old version", -"Настройки FTP должны содержать только сериализуемые значения": "FTP settings must contain only serializable values", -"OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат": "OPI_TestDataRetrieval.Check_OzonNewProducts(Result", -"Пользователь может быть указан в одном из следующих форматов": "The user can be specified in one of the following formats", -"Получает настройки соединения с авторизацией через SSH Agent": "Gets connection settings with SSH Agent authentication", -"OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os": "OneScript: ./OInt/tools/Modules/OPI_TestDataRetrieval.os", -"Настройки Tls могут быть также переданы в строке подключения": "Tls settings can also be passed in the connection string", -"ОбработкаОбъект.OPI_HTTPКлиент, HTTPСоединение, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPConnection, Undefined", -"Список полей задачи в ответе. Все невычисляемые по умолчанию": "A list of task fields in the response. All non calculable by default", -"ТекущаяДатаСтрока, ВерсияОПИ, Платформа, ОперационнаяСистема": "CurrentDateString, OPIVersion, Platform, OperatingSystem", -"Основная структура полей товара. См. ПолучитьСтруктуруТовара": "The basic structure of the product fields. See GetProductStructure", +"ДополнитьЗаголовки: формирование заголовка AWS4 авторизации": "CompleteHeaders: generating AWS4 Authorization Header", +"Создает публичный URL для файла. Требует токен пользователя": "Creates a public URL for the file. Requires user token", "Некорректный формат тегов. Ожидается коллекция ключ-значение": "Incorrect tags format. Key-value collection is expected", "Является краткой формой функции `ПолучитьСтруктуруСообщения`": "Is a shorthand for the function `GetMessageStructure`", "Получает заказ по номеру СДЭК или внутреннему номеру клиента": "Receives the order by CDEK number or number from customer IB", @@ -11452,180 +11433,219 @@ "OneScript: ./OInt/tools/main/Modules/OPI_РасширенныйВызов.os": "OneScript: ./OInt/tools/main/Modules/OPI_AdvancedCall.os", "Параметры завершения. См. ПолучитьСтруктуруЗавершенияЗапуска": "Completion parameters. See GetLaunchCompletionStructure", "Структура колонок таблицы: Ключ > имя, Значение > тип данных": "Table column structure: Key > name, Value > data type", -"Получает значения настроек версионирования объектов в бакете": "Gets the values of versioning settings of objects in the bucket", +"Переданные данные service аккаунта не являются валидным JSON": "The passed service account data is not valid JSON", "Получение ШК места к заказу](@api-docs.cdek.ru/36967298.html": "Receiving barcode CP for the order](@api-docs.cdek.ru/36969722.html", "Почтовый индекс города, для которого необходим список офисов": "Postal code of the city for which the list of offices is required", -"Переданные данные service аккаунта не являются валидным JSON": "The passed service account data is not valid JSON", "Имя поля для получения. Выводит весь список, если не указано": "Field name to retrieve. Displays the entire list if not specified", "!OInt ТекущийКаталог = СтрЗаменить(ТекущийСценарий().Каталог": "!OInt CurrentDirectory = StrReplace(CurrentScript().Path", "Доп. параметры. См. ПолучитьСтруктуруПараметровПредставлений": "Additional parameters. See GetEmbeddingsParameterStructure", +"Основная структура полей товара. См. ПолучитьСтруктуруТовара": "The basic structure of the product fields. See GetProductStructure", "Название района региона, уточняющий параметр для поля region": "Name of the region's district, specifying parameter for the region field", -"Используется при вызове функции `ОтправитьТекстовоеСообщение`": "Used for `SendTextMessage` function", -"Признак удаления файла тела, если он был создан автоматически": "Flag to delete the body file if it was created automatically", -"Константы.TwitterRefresh.Установить(ОтветТокен[\"refresh_token": "Constants.TwitterRefresh.Set(ResponseToken[\"refresh_token", -"Фиксирует оговоренные с клиентом дату, время и адрес доставки": "Fixes the delivery date, time and address agreed with the customer", -"В качестве ключевых можно указывать UNIQUE и PRIMARY KEY поля": "UNIQUE and PRIMARY KEY fields can be specified as key fields", -"ВызватьМетод: переадресация, Location отсутствует, завершение": "ExecuteMethod: redirection, Location missing, termination", -"Изменяет свойства существующей стадии канбана или Моего плана": "Changes the properties of the existing kanban or My plan stage", -"JSON данные также могут быть переданны как путь к файлу .json": "JSON data can also be passed as a path to a .json file", -"access_token --> Используется в т-нии 2-х часов для запросов": " access_token --> Used in the interval of 2 hours for requests", -"Маркер конца сообщения для исключения ожидания конца таймаута": "End of message marker to avoid waiting for the end of timeout", -"Фильтр событий. См. ПолучитьСтруктуруФильтраСобытийКалендарей": "Events filter. See GetCalendarEventsFilterStructure", -"учитывать посещения из регионов без доступ к ресурсам Яндекса": "take into account visits from regions without access to Yandex resources", -"Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено": "String, Arbitrary, HTTPResponse, BinaryData, Undefined", -"Параметры завершения. См. ПолучитьСтруктуруЗавершенияЭлемента": "Completion parameters. See GetItemCompletionStructure", -"Добавляет новое пользовательское поле для добавления в задачу": "Adds a new custom field to be added to the task", -"Получение квитанции к заказу](@api-docs.cdek.ru/36967287.html": "Receiving order receipt](@api-docs.cdek.ru/36969694.html", +"Получает значения настроек версионирования объектов в бакете": "Gets the values of versioning settings of objects in the bucket", +"ТекущаяДатаСтрока, ВерсияОПИ, Платформа, ОперационнаяСистема": "CurrentDateString, OPIVersion, Platform, OperatingSystem", +"OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os": "OneScript: ./OInt/tools/Modules/OPI_TestDataRetrieval.os", +"ОбработкаОбъект.OPI_HTTPКлиент, HTTPСоединение, Неопределено": "DataProcessorObject.OPI_HTTPClient, HTTPConnection, Undefined", +"Список полей задачи в ответе. Все невычисляемые по умолчанию": "A list of task fields in the response. All non calculable by default", +"Отредактируйте товар, чтобы опубликовать в Маркете ВКонтакте": "Moderation", +"Вставить новый документ, если ни один документ не был найден": "Insert a new document if no document was found", +"Установка нового набора удаляет все существующие теги бакета": "Setting up a new set removes all existing bucket tags", +"Устанавливает путь к файлу для сохранения результата запроса": "Sets the file path to save the query result", +"получать уведомления о входящих сообщениях и файлах: yes, no": "receive notifications of incoming messages and files: yes, no", +"Массив обновлений. См. ПолучитьСтруктуруОбновленияДокументов": "Update array. See GetDocumentUpdateStructure", +"Ожидаемый формат данных, если сервер не вернул output_format": "Expected data format if the server did not return output_format", +"механизм загрузки файлов и некоторые другие из старой версии": "file upload mechanism and some others from the old version", +"Настройки FTP должны содержать только сериализуемые значения": "FTP settings must contain only serializable values", +"OPI_ПолучениеДанныхТестов.Проверка_ОзонНовыеТовары(Результат": "OPI_TestDataRetrieval.Check_OzonNewProducts(Result", +"Пользователь может быть указан в одном из следующих форматов": "The user can be specified in one of the following formats", +"Получает настройки соединения с авторизацией через SSH Agent": "Gets connection settings with SSH Agent authentication", +"Настройки Tls могут быть также переданы в строке подключения": "Tls settings can also be passed in the connection string", +"Формирует картинку для отправки в функции ОтправитьСообщение": "Make picture block for SendMessage method", "Указатель из предыдущего запроса, если строк результата > 100": "Pointer from the previous request, if the result rows > 100", "Массив описаний остатков. См. ПолучитьСтруктуруОстатковТовара": "Array of stocks data. See GetProductStocksStructure", "Назначение файла: assistants, batch, vision, user_data, evals": "File purpose: assistants, batch, vision, user_data, evals", "ДополнитьЗаголовки: формирование заголовка Bearer авторизации": "CompleteHeaders: generating Bearer Authorization Header", "Открывает новый диалог с одним или несколькими пользователями": "Opens a new dialog with one or more users", "Установка нового набора удаляет все существующие теги объекта": "Setting up a new set removes all existing object tags", -"Получает характеристики для указанной категории и типа товара": "Gets the characteristics for the specified category and product type", -"Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси": "Proxy settings, if required. See GetProxySettings", "Смещение для получение вложенных объектов не из начала списка": "Offset for getting nested objects not from the beginning of the list", +"Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси": "Proxy settings, if required. See GetProxySettings", "шаблон промпта (переопределяет то, что определено в Modelfile": "prompt template (overrides what is defined in Modelfile", "Имя пользователя, структура или массив структур пользователей": "Username, structure, or array of user structures", "Истина > добавление записей в транзакции с откатом при ошибке": "True > adding records to transactions with rollback on error", +"Получение квитанции к заказу](@api-docs.cdek.ru/36967287.html": "Receiving order receipt](@api-docs.cdek.ru/36969694.html", +"Получает характеристики для указанной категории и типа товара": "Gets the characteristics for the specified category and product type", +"Добавляет новое пользовательское поле для добавления в задачу": "Adds a new custom field to be added to the task", +"В качестве ключевых можно указывать UNIQUE и PRIMARY KEY поля": "UNIQUE and PRIMARY KEY fields can be specified as key fields", +"Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено": "String, Arbitrary, HTTPResponse, BinaryData, Undefined", +"Используется при вызове функции `ОтправитьТекстовоеСообщение`": "Used for `SendTextMessage` function", +"Признак удаления файла тела, если он был создан автоматически": "Flag to delete the body file if it was created automatically", +"Константы.TwitterRefresh.Установить(ОтветТокен[\"refresh_token": "Constants.TwitterRefresh.Set(ResponseToken[\"refresh_token", +"Параметры завершения. См. ПолучитьСтруктуруЗавершенияЭлемента": "Completion parameters. See GetItemCompletionStructure", +"ВызватьМетод: переадресация, Location отсутствует, завершение": "ExecuteMethod: redirection, Location missing, termination", +"Фиксирует оговоренные с клиентом дату, время и адрес доставки": "Fixes the delivery date, time and address agreed with the customer", +"JSON данные также могут быть переданны как путь к файлу .json": "JSON data can also be passed as a path to a .json file", +"access_token --> Используется в т-нии 2-х часов для запросов": " access_token --> Used in the interval of 2 hours for requests", +"Маркер конца сообщения для исключения ожидания конца таймаута": "End of message marker to avoid waiting for the end of timeout", +"Фильтр событий. См. ПолучитьСтруктуруФильтраСобытийКалендарей": "Events filter. See GetCalendarEventsFilterStructure", +"учитывать посещения из регионов без доступ к ресурсам Яндекса": "take into account visits from regions without access to Yandex resources", +"Изменяет свойства существующей стадии канбана или Моего плана": "Changes the properties of the existing kanban or My plan stage", +"передать значение даты без времени в параметрах from и to: Y,N": "pass date value without time in from and to parameters: Y,N", +"ОжидаетЧто(Результат[\"requests\"]).ИмеетТип(\"Массив\").Заполнено": "ExpectsThat(Result[\"requests\"]).HasType(\"Array\").Filled", +"Набор инструментов интеграции с популярными API и технологиями": "A set of tools for integration with popular APIs and technologies", +"Настройки группового чата. См. ПолучитьСтруктуруНастроекГруппы": "Group chat settings. See GetGroupSettingsStructure", +"Ссылка на файл с ШК местом к заказам доступна в течение 1 часа": "The link to the file with the barcode CP is available within 1 hour", +"Получает статус добавления кодов цифрового товара по ID задачи": "Gets the status of digital item codes upload by task ID", +"Идентификатор следующей страницы данных из предыдущего запроса": "Next page identifier of data from the previous request", +"Для вызова этого метода бот должен быть администратором в чате": "To call this method, the bot must be an administrator in the chat room", +"Получает структуру цены товара для функции ОбновитьЦеныТоваров": "Gets the product price structure for the UpdateProductsPrices function", +"Загружает файл для дальнейшего использования в других запросах": "Uploads a file for further use in other requests", +"Получает курсор для порционного получения документов коллекции": "Gets a cursor for batch retrieval of collection documents", +"Получает информацию о содержимом директории по выбранному пути": "Gets information about the contents of a directory at the specified path", +"массив идентификаторов участников события. Если is_meeting = Y": "array of event participant IDs. If is_meeting = Y", +"ID группы или пользователя владельца канбан. Свой по умолчанию": "ID of kanban owner (group or user)", +"токен для доступа к вашему серверу уведомлений, если требуется": "a token to access your notification server, if required", +"Настройки прокси не являются валидной структурой ключ-значение": "Proxy settings are not a valid key-value structure", +"Привилегия может быть определена в одном из следующих форматов": "Privilege can be defined in one of the following formats", +"Режим доступа к каталогу в числовом формате POSIX (как в chmod": "Access mode to the directory in POSIX numeric format (as in chmod", +"Возвращает ответ пользователю при нажатии на кнопку клавиатуры": "Returns a response to the user when a keyboard button is pressed", "Выполняет запрос, если он был сформирован или установлен ранее": "Executes the request if it has been generated or set previously", "Имя или имена ключевых полей таблицы для проверки уникальности": "Name or names of key table fields for uniqueness validation", "Настройки прокси, если необходимо. См. ПолучитьНастройкиПрокси": "Proxy settings, if required. See GetProxySettings", -"Отмечает все сообщения во всех доступных чатах как прочитанные": "Mark all message as readed", "Формирует блок файла для отправки в функции ОтправитьСообщение": "Make file block for SendMessage method", "Блокирует выполнение программы до появления нового подключения": "Blocks programm execution until a new connection is established", "ВызватьМетод: ошибка сервера, попытка повторной отправки %1/%2": "ExecuteMethod: server error, retry attempt %1/%2", -"Максимум сообщений для получения. Без ограничений по умолчанию": "Maximum messages to retrieve. Unlimited by default", +"Отмечает все сообщения во всех доступных чатах как прочитанные": "Mark all message as readed", "!OInt УстановитьПеременнуюСреды(\"OINT_TESTS_CLI\", CLITestsMark": "!OInt SetEnvironmentVariable(\"OINT_TESTS_CLI\", CLITestsMark", "Загружает файл на облачный диск, получая его по указанному URL": "Uploads a file to the cloud drive by fetching it from the specified URL", "ВызватьМетод: достигнуто максимальное число ошибок, завершение": "ExecuteMethod: maximum number of errors reached, terminating", "Добавляет список привилегий пользователя в возвращаемые данные": "Adds a list of user privileges to the returned data", "ДобавитьПараметрURL: пустой параметр проигнорирован, ключ - %1": "AddURLParameter: empty parameter ignored, key - %1", "Структура лога не является корректной коллекцией КлючИЗначение": "Log structure is not a valid KeyValue collection", -"Режим доступа к каталогу в числовом формате POSIX (как в chmod": "Access mode to the directory in POSIX numeric format (as in chmod", -"Возвращает ответ пользователю при нажатии на кнопку клавиатуры": "Returns a response to the user when a keyboard button is pressed", -"Настройки прокси не являются валидной структурой ключ-значение": "Proxy settings are not a valid key-value structure", -"массив идентификаторов участников события. Если is_meeting = Y": "array of event participant IDs. If is_meeting = Y", -"ОжидаетЧто(Результат[\"requests\"]).ИмеетТип(\"Массив\").Заполнено": "ExpectsThat(Result[\"requests\"]).HasType(\"Array\").Filled", -"Набор инструментов интеграции с популярными API и технологиями": "A set of tools for integration with popular APIs and technologies", -"Настройки группового чата. См. ПолучитьСтруктуруНастроекГруппы": "Group chat settings. See GetGroupSettingsStructure", -"Ссылка на файл с ШК местом к заказам доступна в течение 1 часа": "The link to the file with the barcode CP is available within 1 hour", -"Получает статус добавления кодов цифрового товара по ID задачи": "Gets the status of digital item codes upload by task ID", -"передать значение даты без времени в параметрах from и to: Y,N": "pass date value without time in from and to parameters: Y,N", -"Идентификатор следующей страницы данных из предыдущего запроса": "Next page identifier of data from the previous request", -"токен для доступа к вашему серверу уведомлений, если требуется": "a token to access your notification server, if required", -"Получает структуру цены товара для функции ОбновитьЦеныТоваров": "Gets the product price structure for the UpdateProductsPrices function", -"Загружает файл для дальнейшего использования в других запросах": "Uploads a file for further use in other requests", -"Получает курсор для порционного получения документов коллекции": "Gets a cursor for batch retrieval of collection documents", -"Получает информацию о содержимом директории по выбранному пути": "Gets information about the contents of a directory at the specified path", -"Для вызова этого метода бот должен быть администратором в чате": "To call this method, the bot must be an administrator in the chat room", -"ID группы или пользователя владельца канбан. Свой по умолчанию": "ID of kanban owner (group or user)", -"Привилегия может быть определена в одном из следующих форматов": "Privilege can be defined in one of the following formats", -"Первая картинка в массиве картинок (поле images) будет основной": "The first image in the image array (images field) will be the main image", -"Массив ролей оснований в виде строк или структур с указанием БД": "Array of roles based on strings or structures specifying the database", -"Получает структуру полей фильтра для получения списка счетчиков": "Gets the structure of filter fields to get the list of counters", -"Отступ от начала списка для получения задач > 50 шт. рекурсивно": "Offset of tasks list", -"Преалерт должен быть предварительно создан. См. СоздатьПреалерт": "The prealert must be previously created. See CreatePrealert", -"Информация о паспортных данных](@api-docs.cdek.ru/55343091.html": "Passport data information](@api-docs.cdek.ru/55343134.html", -"Структура колонок не является валидной структурой ключ-значение": "The column structure is not a valid key-value structure", -"Лог как строка или соответствие с полным результатом выполнения": "Log as a string or a map with the full execution result", -"Отступ от начала списка для получения лидов > 50 шт. рекурсивно": "Offset from the beginning of the list to get leads > 50 recursively", -"Переданный запрос не является валидной структурой ключ-значение": "Request is not a valid key-value structure", -"путь к файлу сохранения результата (двоичных данных в частности": "the path to the result saving file (particularly binary data", -"Токен бота чата сообщества, который можно получить в настройках": "Community chat bot token, which can be obtained in the settings", -"Активирует или деактивирует (увольняет) выбранного пользователя": "Activates or deactivates (fire) the selected user", -"Требуется регистрация на ollama.ai и добавление открытого ключа": "Registration on ollama.ai and adding a public key is required", -"Создает соединение и читает данные до конца или по ограничениям": "Establishes a connection and reads data until completion or by limits", -"Получение интервалов доставки](@api-docs.cdek.ru/154160502.html": "Getting delivery intervals (RU)](@api-docs.cdek.ru/154160502.html", -"JSON данные авторизации как файл, коллекция или двоичные данные": "JSON authorization data as a file, collection or binary data", +"Максимум сообщений для получения. Без ограничений по умолчанию": "Maximum messages to retrieve. Unlimited by default", +"Игнорируем проверку целостности архива, просто читаем результат": "Ignore archive integrity check, just read the result", "Получает список складов, сортировочных центров и пунктов выдачи": "Gets a list of warehouses, sorting centers and delivery points", "Создает копию локального каталога по выбранному пути на сервере": "Creates a copy of the local directory at the selected path on the Neocities server", "Создает новый лид по структуре полей (см. ПолучитьСтруктуруЛида": "Creates a new lead by fields structure (see GetLeadStructure", "Восстанавливает состояние объекта к необходимой версии (ревизии": "Restores object state to required version (revision", "Тип кластера: CLUSTER_TYPE_OZON (Россия), CLUSTER_TYPE_CIS (СНГ": "Cluster type: CLUSTER_TYPE_OZON (Russia), CLUSTER_TYPE_CIS (CIS", -"Игнорируем проверку целостности архива, просто читаем результат": "Ignore archive integrity check, just read the result", "Ссылка на файл с квитанцией к заказам доступна в течение 1 часа": "A link to the receipt file for orders is available within 1 hour", -"Создает запрос на основе введенных данных с выполнением или без": "Creates a request based on the entered data with or without execution", +"Получает структуру шаблон для фильтрации записей в запросах ORM": "Gets the template structure for filtering records in ORM queries", "Проверьте, что данные зависимости удовлетворены в вашей системе": "Check that these dependencies are resolved on your system", "Истина > обновляет все документы по фильтру, Ложь > только один": "True > updates all documents by filter, False > only one", "Получает единый SKU по старым идентификаторам SKU FBS и SKU FBO": "Gets a single SKU from the old SKU FBS and SKU FBO identifiers", "OneScript: ./OInt/tools/main/Modules/OPI_УниверсальныйСервер.os": "OneScript: ./OInt/tools/main/Modules/OPI_GenericServer.os", "Получает статус пользователя или нескольких пользователей по ID": "Gets the status of a user or multiple users by ID", "Формирование ШК места к заказу](@api-docs.cdek.ru/36967295.html": "Creating barcode CP for the order](@api-docs.cdek.ru/36969713.html", -"Получает структуру шаблон для фильтрации записей в запросах ORM": "Gets the template structure for filtering records in ORM queries", -"содержимое объекта или путь к файлу, если указан путь сохранения": "object content or file path, if a save path is specified", -"Определяет, является ли переданное значение объектом TCP сервера": "Specifies if the value passed is a TCP server object", -"Строка, коллекция, двоичные данные или путь к файлу для отправки": "A string, collection, binary data, or file path to send", -"Устанавливает статус участия в событии для текущего пользователя": "Sets the event participation status for the current user", -"OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат": "OPI_TestDataRetrieval.Check_OzonUploadTask(Result", -"Отправляет тело несколькими запросами с заголовком Content-Range": "Sends the body in multiple requests with the Content-Range header", -"Вызывает исключение с логом, если во время обработки были ошибки": "Causes an exception with a log if there were errors during processing", -"P.S Далее часто упоминается \"страница настроек Twitter Developer": "P.S The following is often referred to as the \"Twitter Developer settings page", -"Отступ от начала списка для получения сделок > 50 шт. рекурсивно": "Offset from the beginning of the list to retrieve deals > 50 pcs recursively", -"Получить объект запроса можно при помощи функции `ВернутьЗапрос`": "You can get the request object using the `ReturnRequest` function", -"URL внешнего вебхука или адрес Bitrix24 при использовании токена": "URL of webhook or a Bitrix24 domain, when token used", -"Закрывает канал отправки в клиентском или двунаправленном потоке": "Closes the sending channel in a client or bidirectional stream", -"Позволяет получать стадии без проверки прав (для администраторов": "Allows you to get stages without checking permissions (for administrators", -"Получает структуру полей для создания или изменения пользователя": "Gets the field structure for creating or modifying user information", -"Удаляет URL обработчика событий бота для работы в режиме Webhook": "Deletes the bot event handler URL for webhook operation", +"Создает запрос на основе введенных данных с выполнением или без": "Creates a request based on the entered data with or without execution", +"JSON данные авторизации как файл, коллекция или двоичные данные": "JSON authorization data as a file, collection or binary data", +"Создает соединение и читает данные до конца или по ограничениям": "Establishes a connection and reads data until completion or by limits", +"Требуется регистрация на ollama.ai и добавление открытого ключа": "Registration on ollama.ai and adding a public key is required", +"Получение интервалов доставки](@api-docs.cdek.ru/154160502.html": "Getting delivery intervals (RU)](@api-docs.cdek.ru/154160502.html", +"Массив ролей оснований в виде строк или структур с указанием БД": "Array of roles based on strings or structures specifying the database", +"Получает структуру полей фильтра для получения списка счетчиков": "Gets the structure of filter fields to get the list of counters", +"Отступ от начала списка для получения задач > 50 шт. рекурсивно": "Offset of tasks list", +"Преалерт должен быть предварительно создан. См. СоздатьПреалерт": "The prealert must be previously created. See CreatePrealert", +"Информация о паспортных данных](@api-docs.cdek.ru/55343091.html": "Passport data information](@api-docs.cdek.ru/55343134.html", +"Первая картинка в массиве картинок (поле images) будет основной": "The first image in the image array (images field) will be the main image", +"Лог как строка или соответствие с полным результатом выполнения": "Log as a string or a map with the full execution result", +"Отступ от начала списка для получения лидов > 50 шт. рекурсивно": "Offset from the beginning of the list to get leads > 50 recursively", +"Переданный запрос не является валидной структурой ключ-значение": "Request is not a valid key-value structure", +"путь к файлу сохранения результата (двоичных данных в частности": "the path to the result saving file (particularly binary data", +"Токен бота чата сообщества, который можно получить в настройках": "Community chat bot token, which can be obtained in the settings", +"Активирует или деактивирует (увольняет) выбранного пользователя": "Activates or deactivates (fire) the selected user", +"Структура колонок не является валидной структурой ключ-значение": "The column structure is not a valid key-value structure", "Отправляет произвольный текстовый запрос на сервер для обработки": "Sends an arbitrary text request to the server for processing", "ВызватьМетод: переадресация %1, Location отсутствует, завершение": "ExecuteMethod: redirection %1, Location missing, termination", "Набор или массив наборов пар Ключ : Значение > Поле : Показатель": "Set or array of sets of pairs Key : Value > Field : FieldValue", "Массив ячеек вида А1 для получения (весь лист, если не заполнено": "Array of A1 type cells to get (whole sheet if not filled", "Добавляет информацию о затраченном времени пользователя в задачу": "Adds information about the user's time spent to the task", +"Получает структуру фильтра для функции ПолучитьСобытияКалендарей": "Gets the filter structure for the function GetCalendarEvents", "Доступные форматы: mp3 (по умолчанию), opus, aac, flac, wav, pcm": "Available formats: mp3 (default), opus, aac, flac, wav, pcm", "Получает массив сообщений, которые являются ответом на указанное": "Gets an array of messages that are replies to the specified", -"Получает структуру фильтра для функции ПолучитьСобытияКалендарей": "Gets the filter structure for the function GetCalendarEvents", "`ПолучитьНастройкиПриватныйКлюч`, `ПолучитьНастройкиЧерезАгента`": "`GetSettingsPrivateKey`, `GetSettingsViaAgent`", "Формирование квитанции к заказу](@api-docs.cdek.ru/36967276.html": "Creating order receipt](@api-docs.cdek.ru/36969649.html", +"Удаляет URL обработчика событий бота для работы в режиме Webhook": "Deletes the bot event handler URL for webhook operation", "OPI_ПолучениеДанныхТестов.Проверка_ОзонДобавлениеКодов(Результат": "OPI_TestDataRetrieval.Check_OzonCodesUpload(Result", -"Переданные роли и привилегии целиком заменяют текущие данные роли": "The passed roles and privileges completely replace the current role data", -"Получает настройки соединения с авторизацией через логин и пароль": "Gets connection settings with login and password authentication", -"Выполняет специфическую (SITE) команду сервера и возвращает ответ": "Executes a specific (SITE) server command and returns the response", -"Получает настройки соединения с авторизацией через приватный ключ": "Gets connection settings with private key authentication", -"Набор получения данных и нстроек для выполнения тестов набора ОПИ": "A set for obtaining data and settings for executing OpenIntegrations tests", -"UUID запуска. Будет сгенерирован автоматически, если не заполнено": "UUID of the launch. Will be generated automatically if not filled", -"URL внешнего веб-хука или адрес Bitrix24 при использовании токена": "URL of webhook or a Bitrix24 domain, when token used", -"Признак, что обязательная функция Инициализировать() была вызвана": "Flag indicating that the mandatory Initialize() function was called", -"Сохраните **ClientID** и **Client secret** со страницы приложения": "Save **ClientID** and **ClientSecret** from the application page", -"Получает настройки соединения с keyboard-interactive авторизацией": "Retrieves connection settings for keyboard-interactive authentication", -"OPI_ПолучениеДанныхТестов.Проверка_OpenAIАссистент(Результат, Имя": "OPI_TestDataRetrieval.Check_OpenAIAssistant(Result, Name", -"Структура запуска не является корректной коллекцией КлючИЗначение": "Launch structure is not a valid KeyValue collection", -"Цвет чата: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA,": "Chat color: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA,", -"Получает список расширений протокола FTP, поддерживаемых сервером": "Gets a list of FTP protocol features supported by the server", -"После создания приложения можно заполнить необходимые данные в 1С": "After creating the application, you can fill in the necessary data in 1C", +"Получает структуру полей для создания или изменения пользователя": "Gets the field structure for creating or modifying user information", +"Отправляет тело несколькими запросами с заголовком Content-Range": "Sends the body in multiple requests with the Content-Range header", +"Закрывает канал отправки в клиентском или двунаправленном потоке": "Closes the sending channel in a client or bidirectional stream", +"содержимое объекта или путь к файлу, если указан путь сохранения": "object content or file path, if a save path is specified", +"Определяет, является ли переданное значение объектом TCP сервера": "Specifies if the value passed is a TCP server object", +"Строка, коллекция, двоичные данные или путь к файлу для отправки": "A string, collection, binary data, or file path to send", +"Устанавливает статус участия в событии для текущего пользователя": "Sets the event participation status for the current user", +"OPI_ПолучениеДанныхТестов.Проверка_ОзонЗаданиеЗагрузки(Результат": "OPI_TestDataRetrieval.Check_OzonUploadTask(Result", +"Позволяет получать стадии без проверки прав (для администраторов": "Allows you to get stages without checking permissions (for administrators", +"P.S Далее часто упоминается \"страница настроек Twitter Developer": "P.S The following is often referred to as the \"Twitter Developer settings page", +"Отступ от начала списка для получения сделок > 50 шт. рекурсивно": "Offset from the beginning of the list to retrieve deals > 50 pcs recursively", +"Получить объект запроса можно при помощи функции `ВернутьЗапрос`": "You can get the request object using the `ReturnRequest` function", +"URL внешнего вебхука или адрес Bitrix24 при использовании токена": "URL of webhook or a Bitrix24 domain, when token used", +"Вызывает исключение с логом, если во время обработки были ошибки": "Causes an exception with a log if there were errors during processing", "Получает новости или одну новость с отбором по ID или доступности": "Gen post or array of post with ID or rights selection", "Позволяет добавлять стадии без проверки прав (для администраторов": "Allows you to add stages without checking permissions (for administrators", "Клавиатура, если нужна, см. СформироватьКлавиатуруИзМассиваКнопок": "Keyboard, if needed, see CreateKeyboardFromArrayButton", "Получает список файлов и каталогов, находящихся в корне хранилища": "Get a list of files and folders, located at the root of the storage", "Проверяет, что значение является объектом внешней компоненты RCON": "Checks that the value is an object of an RCON AddIn", -"Получает список входящих сообщений инстанса за указанный интервал": "Gets the list of incoming messages of the instance for the specified period", "Формирует настройки для использования TLS при выполнении запросов": "Forms settings for using TLS", "Информация о внешних таблицах. См. ПолучитьСтруктуруВнешнихТаблиц": "External tables data. See GetExternalTablesStructure", "Метод + РазделительBat + СтрСоединить(МассивОпций, РазделительBat": "Method + BatSeparator + StrConcat(OptionsArray, BatSeparator", "Получает данные лога сервера (при включенном логировании в память": "Retrieves server log data (with logging to memory enabled", -"Получает структуру дополнительных параметров для обработки запроса": "Gets the structure of additional parameters for request processing", -"ID стадии, после которой необходимо вставить новую (в начало по ум": "ID of the stage after which a new stage should be inserted (at the beginning by default", -"Проверяет, что значение является объектом внешней компоненты MySQL": "Checks that the value is an object of an MySQL AddIn", -"Результат функции ПолучитьТокенПоКоду(), если перевести его в JSON": "Result of the function GetTokenByCode() if converted to JSON", -"OPI_ПолучениеДанныхТестов.Проверка_БитриксСтрока(Результат); SKIP": "OPI_TestDataRetrieval.Check_BitrixString(Result); SKIP", -"value&another¶m4=кириллица¶m5="); + + ResourceAddress1 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParameterStructure1) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress1, "HTTP", "SetURLParams", "Option 1"); + + ParameterStructure2 = New Structure; + ParameterStructure2.Insert("param1", "search?text"); + ParameterStructure2.Insert("param2", "John Doe"); + + // Parameters in the original URL + + ResourceAddress2 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page?existing=value") + .SetURLParams(ParameterStructure2) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress2, "HTTP", "SetURLParams", "Option 2"); + + // Empty parameter string + + ParameterStructure3 = New Structure; + ParameterStructure3.Insert("param1", "search?text"); + ParameterStructure3.Insert("param2", "John Doe"); + + ResourceAddress3 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page?") + .SetURLParams(ParameterStructure3) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress3, "HTTP", "SetURLParams", "Variant 3"); + + // Special characters at path + + ParameterStructure4 = New Structure; + ParameterStructure4.Insert("param1", "search?text"); + ParameterStructure4.Insert("param2", "John Doe"); + + ResourceAddress4 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/path with spaces") + .SetURLParams(ParameterStructure4) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress4, "HTTP", "SetURLParams", "Variant 4"); + + // URL with a snippet + + ParameterStructure5 = New Structure; + ParameterStructure5.Insert("param1", "search?text"); + ParameterStructure5.Insert("param2", "John Doe"); + + ResourceAddress5 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page#section") + .SetURLParams(ParameterStructure5) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress5, "HTTP", "SetURLParams", "Variant 5"); + + // Cyrillic at path + + ParameterStructure6 = New Structure; + ParameterStructure6.Insert("param1", "search?text"); + ParameterStructure6.Insert("param2", "John Doe"); + + ResourceAddress6 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/путь") + .SetURLParams(ParameterStructure6) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress6, "HTTP", "SetURLParams", "Variant 6"); + + // Multiple parameters and encoding + + ParameterStructure7 = New Structure; + ParameterStructure7.Insert("param1", "value1"); + ParameterStructure7.Insert("param2", "value two"); + ParameterStructure7.Insert("param3", "value"); + + ResourceAddress7 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParameterStructure7) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress7, "HTTP", "SetURLParams", "Variant 7"); EndProcedure -Procedure Airtable_GetNumberField(FunctionParameters) +Procedure HTTP_SetResponseFile(FunctionParameters) - Result = OPI_Airtable.GetNumberField("Number"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + TFN = GetTempFileName(); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetResponseFile(TFN) // <--- + .ProcessRequest("GET") + .ReturnResponseFilename(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetNumberField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetResponseFile", , TFN); + + CheckResult = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetResponseFile(TFN) // <--- + .ProcessRequest("GET") + .ReturnResponseAsBinaryData(); + + OPI_TestDataRetrieval.Process(CheckResult, "HTTP", "SetResponseFile", "Body", TFN); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); EndProcedure -Procedure Airtable_GetStringField(FunctionParameters) +Procedure HTTP_SetDataType(FunctionParameters) - Result = OPI_Airtable.GetStringField("String"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + MIMEType = "text/markdown"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetStringBody("# Hello world!!") + .SetDataType(MIMEType) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetStringField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetDataType"); EndProcedure -Procedure Airtable_GetAttachmentField(FunctionParameters) +Procedure HTTP_GetLog(FunctionParameters) - Result = OPI_Airtable.GetAttachmentField("Attachment"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ParametersStructure = New Structure("param1,param2", "text", 10); + + HTTPClient = OPI_HTTPRequests + .NewRequest() + .Initialize(URL) + .SetURLParams(ParametersStructure) + .ProcessRequest("GET"); + + Response = HTTPClient.ReturnResponseAsJSONObject(); + Log = HTTPClient.GetLog(True); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetAttachmentField"); + OPI_TestDataRetrieval.Process(Log, "HTTP", "GetLog"); EndProcedure -Procedure Airtable_GetCheckboxField(FunctionParameters) +Procedure HTTP_SetBinaryBody(FunctionParameters) - Result = OPI_Airtable.GetCheckboxField("Checkbox"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetCheckboxField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetBinaryBody", , Image); EndProcedure -Procedure Airtable_GetDateField(FunctionParameters) +Procedure HTTP_SetStringBody(FunctionParameters) - Result = OPI_Airtable.GetDateField("Date"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Text = "Hello world!!"; + Encoding = "Windows-1251"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .UseEncoding(Encoding) + .SetStringBody(Text) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetDateField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetStringBody"); EndProcedure -Procedure Airtable_GetPhoneField(FunctionParameters) +Procedure HTTP_SetJsonBody(FunctionParameters) - Result = OPI_Airtable.GetPhoneField("Phone"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + RandomArray = New Array; + RandomArray.Add("A"); + RandomArray.Add("B"); + RandomArray.Add("C"); + + Data = New Structure("Field1,Field2,Field3", 10, "Text", RandomArray); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetJsonBody(Data) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetPhoneField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetJsonBody", , Data); EndProcedure -Procedure Airtable_GetEmailField(FunctionParameters) +Procedure HTTP_SetFormBody(FunctionParameters) - Result = OPI_Airtable.GetEmailField("Email"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Data = New Structure("Field1,Field2", "10", "Text"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetFormBody(Data) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetEmailField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetFormBody", , Data); EndProcedure -Procedure Airtable_GetLinkField(FunctionParameters) +Procedure HTTP_StartMultipartBody(FunctionParameters) - Result = OPI_Airtable.GetLinkField("Link"); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody() // <--- + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("Field1", "Text") + .AddMultipartFormDataField("Field2", "10") + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetLinkField"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "StartMultipartBody", , Image); EndProcedure -Procedure Airtable_CreateTable(FunctionParameters) +Procedure HTTP_AddMultipartFormDataFile(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; - FieldArray = New Array; - FieldArray.Add(OPI_Airtable.GetNumberField("Number")); - FieldArray.Add(OPI_Airtable.GetStringField("String")); - FieldArray.Add(OPI_Airtable.GetAttachmentField("Attachment")); - FieldArray.Add(OPI_Airtable.GetCheckboxField("Checkbox")); - FieldArray.Add(OPI_Airtable.GetDateField("Date")); - FieldArray.Add(OPI_Airtable.GetPhoneField("Phone")); - FieldArray.Add(OPI_Airtable.GetEmailField("Email")); - FieldArray.Add(OPI_Airtable.GetLinkField("Link")); + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - Name = "TestTable2"; - Description = "NewTable"; - - Result = OPI_Airtable.CreateTable(Token, Base, Name, FieldArray, Description); + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") // <--- + .AddMultipartFormDataField("Field1", "Text") + .AddMultipartFormDataField("Field2", "10") + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateTable", , FunctionParameters, Name, Description); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddMultipartFormDataFile", , Image); EndProcedure -Procedure Airtable_ModifyTable(FunctionParameters) +Procedure HTTP_AddMultipartFormDataField(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Name = "Test table 2 (change.)"; - Description = "New table (change.)"; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; - Result = OPI_Airtable.ModifyTable(Token, Base, Table, Name, Description); + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("Field1", "Text") // <--- + .AddMultipartFormDataField("Field2", "10") // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "ModifyTable", , Name, Description); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddMultipartFormDataField", , Image); EndProcedure -Procedure Airtable_CreateField(FunctionParameters) +Procedure HTTP_AddDataAsRelated(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Name = String(New UUID); + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; - Field = OPI_Airtable.GetNumberField(Name); - Result = OPI_Airtable.CreateField(Token, Base, Table, Field); + RandomArray = New Array; + RandomArray.Add("A"); + RandomArray.Add("B"); + RandomArray.Add("C"); + + Data = New Structure("Field1,Field2,Field3", 10, "Text", RandomArray); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody(True, "related") + .AddDataAsRelated(Data, "application/json; charset=UTF-8") // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateField", , FunctionParameters, Name); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddDataAsRelated"); EndProcedure -Procedure Airtable_ModifyField(FunctionParameters) +Procedure HTTP_UseEncoding(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Field = FunctionParameters["Airtable_Field"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; - Name = String(New UUID) + "(change.)"; - Description = "New description"; + Text = "Hello world!!"; + Encoding = "Windows-1251"; - Result = OPI_Airtable.ModifyField(Token, Base, Table, Field, Name, Description); + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .UseEncoding(Encoding) // <--- + .SetStringBody(Text) + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "ModifyField", , Name, Description); + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseEncoding"); EndProcedure -Procedure Airtable_CreatePosts(FunctionParameters) +Procedure HTTP_UseGzipCompression(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; - Number = 10; - String = "Hello"; + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - RowDescription1 = New Structure("Number,String", Number, String); - RowDescription2 = New Structure("Number,String", Number, String); - - ArrayOfDescriptions = New Array; - ArrayOfDescriptions.Add(RowDescription1); - ArrayOfDescriptions.Add(RowDescription2); - - Result = OPI_Airtable.CreatePosts(Token, Base, Table, ArrayOfDescriptions); + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .UseGzipCompression(False) // <--- + .ProcessRequest("POST", False) + .ReturnRequest(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreatePosts", , FunctionParameters); + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseGzipCompression"); - ArrayOfDeletions = New Array; + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .UseGzipCompression(True) // <--- + .ProcessRequest("POST", False) + .ReturnRequest(); - For Each Record In Result["records"] Do - - CurrentRecord = Record["id"]; - ArrayOfDeletions.Add(CurrentRecord); - - EndDo; - - OPI_Airtable.DeleteRecords(Token, Base, Table, ArrayOfDeletions); - - // Single - - Result = OPI_Airtable.CreatePosts(Token, Base, Table, RowDescription1); - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreatePosts", "Single", FunctionParameters, Number, String); + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseGzipCompression", "Enabled"); EndProcedure -Procedure Airtable_GetRecord(FunctionParameters) +Procedure HTTP_UseBodyFiledsAtOAuth(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; - Result = OPI_Airtable.GetRecord(Token, Base, Table, Record); + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Token = "***"; + Secret = "***"; + UsersKey = "***"; + UsersSecret = "***"; + Version = "1.0"; + + NewRequest = OPI_HTTPRequests.NewRequest().Initialize(URL); + + Result = NewRequest + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("field1", "Text") + .AddMultipartFormDataField("field2", "10") + .UseBodyFiledsAtOAuth(False) // <--- + .AddOauthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetRecord", , Record); + LogAsString = NewRequest.GetLog(True); + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseBodyFiledsAtOAuth", , LogAsString); + + Result = OPI_HTTPRequests + .NewRequest() + .Initialize(URL) + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("field1", "Text") + .AddMultipartFormDataField("field2", "10") + .UseBodyFiledsAtOAuth(True) // <--- + .AddOauthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) + .ProcessRequest("POST", False) + .GetLog(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseBodyFiledsAtOAuth", "Enabled"); EndProcedure -Procedure Airtable_CreateComment(FunctionParameters) +Procedure HTTP_SetHeaders(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Text = "TestComment"; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; - Result = OPI_Airtable.CreateComment(Token, Base, Table, Record, Text); + Headers = New Map; + Headers.Insert("X-Header1", "Value1"); + Headers.Insert("X-Header2", "Value2"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetHeaders(Headers) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateComment", , FunctionParameters, Text); + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetHeaders"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("1111") + .SetHeaders(Headers, True) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetHeaders", "Rewrite"); EndProcedure -Procedure Airtable_EditComment(FunctionParameters) +Procedure HTTP_AddHeader(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Comment = FunctionParameters["Airtable_Comment"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; - Text = "Test comment (change.)"; - Result = OPI_Airtable.EditComment(Token, Base, Table, Record, Comment, Text); + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddHeader("X-Header1", "Value1") // <--- + .AddHeader("X-Header2", "Value2") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "EditComment", , Text); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddHeader"); + + Headers = New Map; + Headers.Insert("X-Header1", "Value1"); + Headers.Insert("X-Header2", "Value2"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("1111") + .AddHeader("X-Header3", "BadValue") // <--- + .AddHeader("X-Header4", "BadValue") + .SetHeaders(Headers, True) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddHeader", "Replace"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("1111") + .AddHeader("X-Header3", "BadValue") // <--- + .AddHeader("X-Header4", "BadValue") + .SetHeaders(Headers) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddHeader", "Addition"); EndProcedure -Procedure Airtable_GetComments(FunctionParameters) +Procedure HTTP_AddBasicAuthorization(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; - Result = OPI_Airtable.GetComments(Token, Base, Table, Record); + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBasicAuthorization("user", "password") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetComments"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddBasicAuthorization"); EndProcedure -Procedure Airtable_DeleteComment(FunctionParameters) +Procedure HTTP_AddBearerAuthorization(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Comment = FunctionParameters["Airtable_Comment"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; - Result = OPI_Airtable.DeleteComment(Token, Base, Table, Record, Comment); + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("123123") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "DeleteComment", , Comment); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddBearerAuthorization"); EndProcedure -Procedure Airtable_GetListOfRecords(FunctionParameters) +Procedure HTTP_AddAWS4Authorization(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; - Result = OPI_Airtable.GetListOfRecords(Token, Base, Table); + AccessKey = "AccessKey"; + SecretKey = "SecretKey"; + Region = "Region"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddAWS4Authorization(AccessKey, SecretKey, Region) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetListOfRecords"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddAWS4Authorization"); EndProcedure -Procedure Airtable_DeleteRecords(FunctionParameters) +Procedure HTTP_AddOAuthV1Authorization(FunctionParameters) - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; - Result = OPI_Airtable.DeleteRecords(Token, Base, Table, Record); + Token = "***"; + Secret = "***"; + UsersKey = "***"; + UsersSecret = "***"; + Version = "1.0"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .AddOAuthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); // END - OPI_TestDataRetrieval.Process(Result, "Airtable", "DeleteRecords"); + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddOAuthV1Authorization"); EndProcedure -#EndRegion // Airtable +Procedure HTTP_SetOAuthV1Algorithm(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Token = "***"; + Secret = "***"; + UsersKey = "***"; + UsersSecret = "***"; + Version = "1.0"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .AddOAuthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) + .SetOAuthV1Algorithm("HMAC", "SHA1") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetOAuthV1Algorithm"); + +EndProcedure + +Procedure HTTP_ProcessRequest(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET") // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ProcessRequest"); + +EndProcedure + +Procedure HTTP_ExecuteRequest(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ExecuteRequest() // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ExecuteRequest"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ReturnResponse(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ExecuteRequest", "No execution"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ExecuteRequest() + .ReturnResponse(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ExecuteRequest", "Execution"); + +EndProcedure + +Procedure HTTP_ReturnRequest(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ReturnRequest(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnRequest"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ReturnRequest(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnRequest", "Forced"); + +EndProcedure + +Procedure HTTP_ReturnConnection(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ReturnConnection(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnConnection"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ReturnConnection(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnConnection", "Forced"); + +EndProcedure + +Procedure HTTP_ReturnResponse(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponse(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponse"); + +EndProcedure + +Procedure HTTP_ReturnResponseAsJSONObject(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseAsJSONObject"); + +EndProcedure + +Procedure HTTP_ReturnResponseAsBinaryData(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponseAsBinaryData(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseAsBinaryData"); + +EndProcedure + +Procedure HTTP_ReturnResponseAsString(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponseAsString(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseAsString"); + +EndProcedure + +Procedure HTTP_ReturnResponseFilename(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + TFN = GetTempFileName(); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetResponseFile(TFN) // <--- + .ProcessRequest("GET") + .ReturnResponseFilename(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseFilename", , TFN); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure HTTP_SetProxy(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ProxySettings = New InternetProxy; + ProxySettings.Set("https", "proxy.com", 443, "user", "password", False); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetProxy(ProxySettings) // <--- + .ProcessRequest("GET", False) + .ReturnConnection(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetProxy"); + +EndProcedure + +Procedure HTTP_SetTimeout(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetTimeout(60) // <--- + .ProcessRequest("GET", False) + .ReturnConnection(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetTimeout"); + +EndProcedure + +Procedure HTTP_UseURLEncoding(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ParametersStructure = New Structure; + ParametersStructure.Insert("param1", "search?text"); + ParametersStructure.Insert("param2", "John Doe"); + ParametersStructure.Insert("param3", "value&another"); + ParametersStructure.Insert("param4", "кириллица"); + ParametersStructure.Insert("param5", ""); + + NoEncoding = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .UseURLEncoding(False) // <--- + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + WithEncoding = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + // END + + Result = New Map; + Result.Insert("No encoding" , NoEncoding); + Result.Insert("With encoding" , WithEncoding); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseURLEncoding"); + +EndProcedure + +Procedure HTTP_SplitArraysInURL(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ArrayParam = New Array; + ArrayParam.Add("val1"); + ArrayParam.Add("val2"); + ArrayParam.Add("val3"); + + ParametersStructure = New Structure("arrayfield", ArrayParam); + + Separation = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .SplitArraysInURL(True) // <--- + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + SeparationPhp = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .SplitArraysInURL(True, True) // <--- + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + NoSeparation = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + // END + + Result = New Map; + Result.Insert("No separation", NoSeparation); + Result.Insert("Separation" , Separation); + Result.Insert("PHP" , SeparationPhp); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SplitArraysInURL"); + +EndProcedure + +Procedure HTTP_SendDataInParts(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/put"; + + ChunkSize = 524288; + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .SendDataInParts(ChunkSize) // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SendDataInParts"); + +EndProcedure + +Procedure HTTP_SendPart(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/put"; + + ChunkSize = 524288; + Data = GetBinaryDataFromString("Some data for sending"); + + // Sending only "data for" + StartPosition = 5; + Bytes = 8; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Data) + .SendPart(StartPosition, Bytes) // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SendPart"); + +EndProcedure + +Procedure HTTP_MaxAttempts(FunctionParameters) + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .MaxAttempts(10) + .ReturnSettings(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "MaxAttempts"); + +EndProcedure + +Procedure HTTP_MaxRedirects(FunctionParameters) + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .MaxRedirects(15) + .ReturnSettings(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "MaxRedirects"); + +EndProcedure + +Procedure HTTP_ReturnSettings(FunctionParameters) + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .ReturnSettings(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .ReturnSettings("EncodeRequestBody"); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings", "Single"); + + SettingArray = New Array; + SettingArray.Add("MaxAttempts"); + SettingArray.Add("MaxRedirects"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .MaxAttempts(5) + .ReturnSettings(SettingArray); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings", "Array"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .ReturnSettings("AAA"); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings", "Nonexistent"); + +EndProcedure + +#EndRegion #EndRegion // AtomicTests #EndRegion // Private + +#Region Alternate + +Procedure HTTP_Инициализация() Export + HTTP_Initialization(); +EndProcedure + +Procedure HTTP_УстановкаТела() Export + HTTP_BodySet(); +EndProcedure + +Procedure HTTP_Настройки() Export + HTTP_Settings(); +EndProcedure + +Procedure HTTP_УстановкаЗаголовков() Export + HTTP_HeadersSetting(); +EndProcedure + +Procedure HTTP_Авторизация() Export + HTTP_Authorization(); +EndProcedure + +Procedure HTTP_ОбработкаЗапроса() Export + HTTP_RequestProcessing(); +EndProcedure + +Procedure HTTP_ПолучениеОтвета() Export + HTTP_ResponseReceiving(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl index 4ae8b1ab54..3b65156540 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MSSQL.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1316 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("MSSQL"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("MSSQL"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region MSSQL + +Procedure MSS_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("SQL2" , TestParameters); + + MSSQL_GenerateConnectionString(TestParameters); + MSSQL_CreateConnection(TestParameters); + MSSQL_CloseConnection(TestParameters); + MSSQL_IsConnector(TestParameters); + MSSQL_ExecuteSQLQuery(TestParameters); + MSSQL_GetTLSSettings(TestParameters); + +EndProcedure + +Procedure MSS_ORM() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + MSSQL_CreateDatabase(TestParameters); + MSSQL_CreateTable(TestParameters); + MSSQL_AddRecords(TestParameters); + MSSQL_EnsureRecords(TestParameters); + MSSQL_GetRecords(TestParameters); + MSSQL_UpdateRecords(TestParameters); + MSSQL_DeleteRecords(TestParameters); + MSSQL_ClearTable(TestParameters); + MSSQL_GetTableInformation(TestParameters); + MSSQL_AddTableColumn(TestParameters); + MSSQL_DeleteTableColumn(TestParameters); + MSSQL_EnsureTable(TestParameters); + MSSQL_DeleteTable(TestParameters); + MSSQL_DeleteDatabase(TestParameters); + MSSQL_GetRecordsFilterStructure(TestParameters); + +EndProcedure + +#EndRegion // MSSQL + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region MSSQL + +Procedure MSSQL_GenerateConnectionString(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // END + + Result = StrReplace(Result, Password, "***"); + Result = StrReplace(Result, Address , "127.0.0.1"); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GenerateConnectionString"); + +EndProcedure + +Procedure MSSQL_CreateConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + Result = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateConnection"); + +EndProcedure + +Procedure MSSQL_CloseConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MSSQL.CloseConnection(Connection); + + // END + + OPI_MSSQL.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CloseConnection"); + +EndProcedure + +Procedure MSSQL_IsConnector(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MSSQL.IsConnector(Connection); + + // END + + OPI_MSSQL.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "IsConnector"); + +EndProcedure + +Procedure MSSQL_ExecuteSQLQuery(FunctionParameters) + + CurrentDate = OPI_Tools.GetCurrentDate(); + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_MSSQL.DeleteTable("users" , Connection); // SKIP + OPI_MSSQL.DeleteTable("test_data" , Connection); // SKIP + OPI_MSSQL.DeleteTable("test_table", Connection); // SKIP + OPI_TestDataRetrieval.Process(Connection, "MSSQL", "ExecuteSQLQuery", "Connection"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + | ID INT PRIMARY KEY, + | FirstName NVARCHAR(50), + | LastName NVARCHAR(50), + | BirthDate DATE, + | IsEmployed BIT, + | Salary DECIMAL(10, 2), + | CreatedAt DATETIME, + | Age SMALLINT, + | RowGuid UNIQUEIDENTIFIER, + | Data VARBINARY(MAX) + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data) + |VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);"; + + ParameterArray = New Array; + ParameterArray.Add(New Structure("INT" , 1)); + ParameterArray.Add(New Structure("NVARCHAR", "Vitaly")); + ParameterArray.Add(New Structure("NVARCHAR", "Alpaca")); + ParameterArray.Add(New Structure("DATE" , CurrentDate)); + ParameterArray.Add(New Structure("BIT" , True)); + ParameterArray.Add(New Structure("DECIMAL" , 10.30)); + ParameterArray.Add(New Structure("DATETIME", CurrentDate)); + ParameterArray.Add(New Structure("SMALLINT", 20)); + ParameterArray.Add(New Structure("UUID" , New UUID)); + ParameterArray.Add(New Structure("BYTES" , Image)); + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", , Image); // SKIP + + QueryText = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));"; // SKIP + Result = OPI_MSSQL.ExecuteSQLQuery(QueryText, , , Connection); // SKIP + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "Test data"); // SKIP + + // SQL query from file + + SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file + + Options = New Structure; + Options.Insert("sql", SQLFile); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "File"); // SKIP + + Closing = OPI_MSSQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Closing, "MSSQL", "ExecuteSQLQuery", "Request"); // SKIP + +EndProcedure + +Procedure MSSQL_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetTLSSettings"); + +EndProcedure + +Procedure MSSQL_CreateDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Base = "testbase1"; + + OPI_MSSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateDatabase"); + + Base = "testbase2"; + OPI_MSSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MSSQL", "CreateDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateDatabase", "Creation"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateDatabase", "Existing"); + + OPI_MSSQL.CloseConnection(Connection); + +EndProcedure + +Procedure MSSQL_CreateTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("tinyint_field" , "tinyint"); + ColoumnsStruct.Insert("smallint_field" , "smallint"); + ColoumnsStruct.Insert("int_field" , "int"); + ColoumnsStruct.Insert("bigint_field" , "bigint"); + ColoumnsStruct.Insert("float24_field" , "float(24)"); + ColoumnsStruct.Insert("float53_field" , "float(53)"); + ColoumnsStruct.Insert("bit_field" , "bit"); + ColoumnsStruct.Insert("nvarchar_field" , "nvarchar(4000)"); + ColoumnsStruct.Insert("varbinary_field", "varbinary(max)"); + ColoumnsStruct.Insert("uid_field" , "uniqueidentifier"); + ColoumnsStruct.Insert("numeric_field" , "numeric(5,3)"); // Or decimal + ColoumnsStruct.Insert("xml_field" , "xml"); + ColoumnsStruct.Insert("date_field" , "date"); + ColoumnsStruct.Insert("time_field" , "time"); + ColoumnsStruct.Insert("dto_field" , "datetimeoffset"); + ColoumnsStruct.Insert("datetime_field" , "datetime"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateTable"); + + Table = "ABC DEF"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateTable", "Name error"); + + Table = "somename"; + ColoumnsStruct.Insert("wtf_field", "WTF"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateTable", "Type error"); + +EndProcedure + +Procedure MSSQL_AddRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + RecordsArray = New Array; + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + XML = " + | + | Example + | 123 + | + | + | Test + | 456 + | + |"; + + CurrentDate = OPI_Tools.GetCurrentDate(); + CurrentDateTZ = OPI_Tools.DateRFC3339(CurrentDate, "+05:00"); + + RecordStructure = New Structure; + RecordStructure.Insert("tinyint_field" , New Structure("TINYINT" , 5)); + RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 2000)); + RecordStructure.Insert("int_field" , New Structure("INT" , 200000)); + RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 20000000000)); + RecordStructure.Insert("float24_field" , New Structure("FLOAT24" , 10.1234567)); + RecordStructure.Insert("float53_field" , New Structure("FLOAT53" , 10.123456789123456)); + RecordStructure.Insert("bit_field" , New Structure("BIT" , True)); + RecordStructure.Insert("nvarchar_field" , New Structure("NVARCHAR" , "Some text")); + RecordStructure.Insert("varbinary_field", New Structure("BYTES" , Image)); + RecordStructure.Insert("uid_field" , New Structure("UUID" , New UUID)); + RecordStructure.Insert("numeric_field" , New Structure("NUMERIC" , 5.333)); + RecordStructure.Insert("xml_field" , New Structure("XML" , XML)); + RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); + RecordStructure.Insert("dto_field" , New Structure("DATETIMEOFFSET", CurrentDateTZ)); + RecordStructure.Insert("datetime_field" , New Structure("DATETIME" , CurrentDate)); + + RecordsArray.Add(RecordStructure); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", RecordsArray); + Options.Insert("trn", Истина); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "AddRecords"); + +EndProcedure + +Procedure MSSQL_GetRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // All records without filters + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecords"); // SKIP + + // Filter, selected fields, limit and sorting + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", "test_data"); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_data"; + + Fields = New Array; + Fields.Add("first_name"); + Fields.Add("last_name"); + Fields.Add("email"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "gender"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Male"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "id"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 50"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("ip_address", "DESC"); + Count = 5; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecords", "Filters"); + +EndProcedure + +Procedure MSSQL_UpdateRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_data"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("NVARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Count = OPI_MSSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + OPI_TestDataRetrieval.Process(Count, "MSSQL", "UpdateRecords", "Count"); // SKIP + Count = Count["data"].Count(); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("values", FieldsStructure); + Options.Insert("filter", FilterStructure); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "UpdateRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "UpdateRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['ip_address']"); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "MSSQL", "UpdateRecords", "Check", Count, FieldsStructure); + +EndProcedure + +Procedure MSSQL_DeleteRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_data"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("NVARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + FilterStructure.Insert("union", "AND"); + + Filters.Add(FilterStructure); + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "ip_address"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("NVARCHAR", "127.0.0.1")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Obtaining = OPI_MSSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Obtaining, "MSSQL", "DeleteRecords", "Obtaining"); + + Count = Obtaining["data"].Count(); + Residue = 100 - Count; + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteRecords", "Check", Residue); + +EndProcedure + +Procedure MSSQL_DeleteTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTable"); + + Base = "test_data"; + Table = "test_data"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTable", "Test"); + +EndProcedure + +Procedure MSSQL_DeleteDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Base = "testbase1"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase"); + + Base = "testbase2"; + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MSSQL", "DeleteDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase", "Deletion"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase", "Error"); + + Closing = OPI_MSSQL.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Closing, "MSSQL", "DeleteDatabase", "Closing"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase", "Connection error"); + +EndProcedure + +Procedure MSSQL_ClearTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ClearTable", "Check"); + +EndProcedure + +Procedure MSSQL_GetTableInformation(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetTableInformation"); + + Table = "heyho"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetTableInformation", "Error"); + +EndProcedure + +Procedure MSSQL_AddTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Base = "testbase1"; + Table = "testtable"; + Name = "new_field"; + DataType = "bigint"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "AddTableColumn", "Check"); + +EndProcedure + +Procedure MSSQL_DeleteTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Base = "testbase1"; + Table = "testtable"; + Name = "new_field"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure MSSQL_EnsureTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Base = "testbase1"; + Table = "testtable"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("smallint_field" , "smallint"); + ColoumnsStruct.Insert("double_field" , "real"); + ColoumnsStruct.Insert("bigint_field" , "bigint"); + ColoumnsStruct.Insert("custom_field" , "nvarchar"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureTable", "Check", ColoumnsStruct); + +EndProcedure + +Procedure MSSQL_EnsureRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_guarantee"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "NVARCHAR(255)"); // SKIP + ColoumnsStruct.Insert("age" , "INT"); // SKIP + ColoumnsStruct.Insert("salary", "DECIMAL(10,2)"); // SKIP + OPI_MSSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , New Structure("INT" , 1)); + RowStructure2.Insert("name" , New Structure("NVARCHAR", "Vitaly")); + RowStructure2.Insert("age" , New Structure("INT" , 25)); + RowStructure2.Insert("salary", New Structure("DECIMAL" , 1000.12)); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , New Structure("INT" , 2)); + RowStructure1.Insert("name" , New Structure("NVARCHAR", "Lesha")); + RowStructure1.Insert("age" , New Structure("INT" , 20)); + RowStructure1.Insert("salary", New Structure("DECIMAL" , 200.20)); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , New Structure("NVARCHAR", "Vitaly Updated")); + RowStructure2.Insert("salary", New Structure("DECIMAL" , 1500.50)); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , New Structure("INT" , 3)); + StringStructure3.Insert("name" , New Structure("NVARCHAR", "Anton")); + StringStructure3.Insert("age" , New Structure("INT" , 30)); + StringStructure3.Insert("salary", New Structure("DECIMAL" , 3000.00)); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureRecords", "Updating check"); + + OPI_MSSQL.DeleteTable(Table, ConnectionString, TLSSettings); + +EndProcedure + +Procedure MSSQL_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +#EndRegion // MSSQL + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure MSS_ОсновныеМетоды() Export + MSS_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl index 4ae8b1ab54..baf37ecab4 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MongoDB.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1959 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("MongoDB"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("MongoDB"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region MongoDB + +Procedure Mongo_CommonMethods() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_GenerateConnectionString(TestParameters); + MongoDB_CreateConnection(TestParameters); + MongoDB_CloseConnection(TestParameters); + MongoDB_IsConnector(TestParameters); + MongoDB_ExecuteCommand(TestParameters); + +EndProcedure + +Procedure Mong_DatabaseManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_GetDatabase(TestParameters); + MongoDB_GetListOfBases(TestParameters); + MongoDB_DeleteDatabase(TestParameters); + +EndProcedure + +Procedure Mongo_CollectionManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_CreateCollection(TestParameters); + MongoDB_GetCollectionList(TestParameters); + MongoDB_DeleteCollection(TestParameters); + +EndProcedure + +Procedure Mongo_DocumentsManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + MongoDB_InsertDocuments(TestParameters); + MongoDB_GetDocuments(TestParameters); + MongoDB_GetCursor(TestParameters); + MongoDB_GetDocumentBatch(TestParameters); + MongoDB_UpdateDocuments(TestParameters); + MongoDB_DeleteDocuments(TestParameters); + MongoDB_GetDocumentUpdateStructure(TestParameters); + MongoDB_GetDocumentDeletionStructure(TestParameters); + +EndProcedure + +Procedure Mongo_UserManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_CreateUser(TestParameters); + MongoDB_UpdateUser(TestParameters); + MongoDB_GetUsers(TestParameters); + MongoDB_GetDatabaseUsers(TestParameters); + MongoDB_DeleteUser(TestParameters); + +EndProcedure + +Procedure Mongo_RoleManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_CreateRole(TestParameters); + MongoDB_GetRoles(TestParameters); + MongoDB_GrantRoles(TestParameters); + MongoDB_RevokeRoles(TestParameters); + MongoDB_UpdateRole(TestParameters); + MongoDB_DeleteRole(TestParameters); + MongoDB_GetRolePrivilegeStructure(TestParameters); + +EndProcedure + +#EndRegion // MongoDB + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region MongoDB + +Procedure MongoDB_GenerateConnectionString(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GenerateConnectionString", , FunctionParameters); + +EndProcedure + +Procedure MongoDB_CreateConnection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Result = OPI_MongoDB.CreateConnection(ConnectionString); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateConnection"); + + Result = OPI_MongoDB.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateConnection", "Closing"); + +EndProcedure + +Procedure MongoDB_CloseConnection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + Result = OPI_MongoDB.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CloseConnection"); + +EndProcedure + +Procedure MongoDB_IsConnector(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + Result = OPI_MongoDB.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "IsConnector"); + +EndProcedure + +Procedure MongoDB_ExecuteCommand(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Command = "listDatabases"; + Data = New Structure("nameOnly", True); + + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + OPI_TestDataRetrieval.Process(Connection, "MongoDB", "ExecuteCommand", "Connection"); // SKIP + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("comm", Command); + Options.Insert("data", Data); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "ExecuteCommand", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "ExecuteCommand"); + +EndProcedure + +Procedure MongoDB_GetDatabase(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Base = "test_db"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDatabase"); + +EndProcedure + +Procedure MongoDB_GetListOfBases(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Options = New Structure; + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetListOfBases", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetListOfBases"); + +EndProcedure + +Procedure MongoDB_DeleteDatabase(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDatabase"); + +EndProcedure + +Procedure MongoDB_CreateCollection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Name = "test_collection"; + Base = "test_database"; + + Parameters = New Map; + Expression = New Map; + GroupAnd = New Array; + + Condition1 = New Map; // Total >= 0 + Items1 = New Array; + Items1.Add("$total"); + Items1.Add(0); + Condition1.Insert("$gte", Items1); + + Condition2 = New Map; // Status <= 3 + Items2 = New Array; + Items2.Add("$status"); + Items2.Add(3); + Condition2.Insert("$lte", Items2); + + GroupAnd.Add(Condition1); + GroupAnd.Add(Condition2); + + Expression.Insert("$expr", GroupAnd); + Parameters.Insert("validator", Expression); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", Name); + Options.Insert("db", Base); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateCollection"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", Name); + Options.Insert("db", Base); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateCollection", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateCollection", "Existing"); + +EndProcedure + +Procedure MongoDB_DeleteCollection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "test_collection"; + Base = "test_database"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteCollection"); + +EndProcedure + +Procedure MongoDB_GetCollectionList(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Base = "test_database"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetCollectionList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCollectionList"); + +EndProcedure + +Procedure MongoDB_InsertDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + DocsArray = New Array; + + // With implicit type casting + DocumentStructure = New Structure; + + TestArray = New Array; + TestArray.Add("Value1"); + TestArray.Add("Value2"); + + TestStructure = New Structure("text,number", "Text", 10); + TestBinary = GetBinaryDataFromString("Text"); + CurrentDate = OPI_Tools.GetCurrentDate(); + + DocumentStructure.Insert("stringField", "Text"); + DocumentStructure.Insert("intField" , 200); + DocumentStructure.Insert("doubleField", 123.456); + DocumentStructure.Insert("boolField" , True); + DocumentStructure.Insert("arrayField" , TestArray); + DocumentStructure.Insert("docField" , TestStructure); + DocumentStructure.Insert("dateField" , CurrentDate); + DocumentStructure.Insert("nullField"); + + DocsArray.Add(DocumentStructure); + + // With explicit type casting + DocumentStructure = New Structure; + + RegExp = New Structure("pattern,options", "[a-z]+@[a-z]+\.[a-z]+", "i"); + JSCode = "const result = [1, 2, 3].map(x => x * 2).filter(x => x > 3);"; + + DocumentStructure.Insert("stringField", New Structure("__OPI_STRING__" , "Text")); + DocumentStructure.Insert("oidField" , New Structure("__OPI_OBJECTID__" , "63ceed18f71dda7d8cf21e8e")); + DocumentStructure.Insert("jsField" , New Structure("__OPI_JS__" , JSCode)); + DocumentStructure.Insert("symbolField", New Structure("__OPI_SYMBOL__" , "Y")); + DocumentStructure.Insert("int32Field" , New Structure("__OPI_INT32__" , 10)); + DocumentStructure.Insert("int64Field" , New Structure("__OPI_INT64__" , 1000)); + DocumentStructure.Insert("doubleField", New Structure("__OPI_DOUBLE__" , 124.456)); + DocumentStructure.Insert("boolField" , New Structure("__OPI_BOOLEAN__" , True)); + DocumentStructure.Insert("dateField" , New Structure("__OPI_DATETIME__" , "1763204141")); + DocumentStructure.Insert("tsField" , New Structure("__OPI_TIMESTAMP__", CurrentDate)); + DocumentStructure.Insert("regexpField", New Structure("__OPI_REGEXP__" , RegExp)); + DocumentStructure.Insert("binaryField", New Structure("__OPI_BINARY__" , TestBinary)); + DocumentStructure.Insert("nullField" , New Structure("__OPI_NULL__")); + DocumentStructure.Insert("minkeyField", New Structure("__OPI_MINKEY__")); + DocumentStructure.Insert("maxkeyField", New Structure("__OPI_MAXKEY__")); + + TestArray = New Array; + TestArray.Add(New Structure("__OPI_SYMBOL__", "A")); + TestArray.Add(New Structure("__OPI_MINKEY__")); + + TestStructure = New Structure("code,number" + , New Structure("__OPI_JS__", "const result = 1") + , New Structure("__OPI_DOUBLE__", 10)); + + // Documents and arrays are not wrapped in a structure + DocumentStructure.Insert("docField" , TestStructure); + DocumentStructure.Insert("arrayField" , TestArray); + + DocsArray.Add(DocumentStructure); + + OPI_MongoDB.DeleteCollection(Connection, Collection, Base); // SKIP + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("docs", DocsArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "InsertDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "InsertDocuments"); + + DocsArray = New Array; + + CategoryMap = New Map; + CategoryMap.Insert(1, "electronics"); + CategoryMap.Insert(2, "clothing"); + CategoryMap.Insert(3, "books"); + CategoryMap.Insert(4, "products"); + + SupplierMap = New Map; + SupplierMap.Insert(1, "Supplier A"); + SupplierMap.Insert(2, "Supplier B"); + SupplierMap.Insert(3, "Supplier C"); + + For N = 1 To 15 Do + + DocumentStructure = New Structure; + + DocumentStructure.Insert("productName", "Product " + N); + DocumentStructure.Insert("category" , CategoryMap.Get(N % 4)); + DocumentStructure.Insert("price" , 50 + (N * 30)); + DocumentStructure.Insert("quantity" , 5 + (N % 10)); + DocumentStructure.Insert("rating" , Max(1, N % 6)); + DocumentStructure.Insert("inStock" , N % 3 > 0); + DocumentStructure.Insert("tags" , OPI_TestDataRetrieval.GetTagArray(N)); + DocumentStructure.Insert("createdDate", OPI_Tools.GetCurrentDate() - (N * 86400)); + + Details = New Structure; + Details.Insert("supplier" , SupplierMap.Get(N % 3)); + Details.Insert("weightKg" , N * 0.3); + Details.Insert("dimensions", New Structure("length,width,height", N * 8, N * 4, N * 2)); + DocumentStructure.Insert("details", Details); + + DocsArray.Add(DocumentStructure); + + EndDo; + + DocumentWithZero = New Structure; + DocumentWithZero.Insert("productName", "Item with zero price"); + DocumentWithZero.Insert("category" , "books"); + DocumentWithZero.Insert("price" , 0); + DocumentWithZero.Insert("quantity" , 1); + DocumentWithZero.Insert("rating" , 4); + DocumentWithZero.Insert("inStock" , True); + DocumentWithZero.Insert("tags" , New Array); + DocsArray.Add(DocumentWithZero); + + DocumentWithoutCategory = New Structure; + DocumentWithoutCategory.Insert("productName", "Item without category"); + DocumentWithoutCategory.Insert("price" , 250); + DocumentWithoutCategory.Insert("quantity" , 3); + DocumentWithoutCategory.Insert("rating" , 3); + DocumentWithoutCategory.Insert("inStock" , False); + DocsArray.Add(DocumentWithoutCategory); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("docs", DocsArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "InsertDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "InsertDocuments"); + +EndProcedure + +Procedure MongoDB_GetDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + // __4 = $ + Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); + Sort = New Structure("doubleField", -1); + Parameters = New Structure("limit", 2); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments"); + + // 1: Category and price range + Filter = New Structure("category,price", "electronics", New Structure("__4gte,__4lte", 100, 400)); + Sort = New Structure("price", 1); + Parameters = New Structure("limit", 5); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 1); + + // 2: Stock and rating + Filter = New Structure("inStock,rating", True, New Structure("__4gte", 4)); + Sort = New Structure("rating,price", -1, 1); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 2); + + // 3: By tags array + Filter = New Structure("tags", "sale"); + Sort = New Structure("createdDate", -1); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 3); + + // 4: By nested fields + Filter = New Map; + Filter.Insert("details.supplier", "Supplier A"); + Filter.Insert("details.weightKg", New Structure("__4lt", 3)); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 4); + + // 5: Projection + Filter = New Structure("category", "books"); + Sort = New Structure("price", -1); + Parameters = New Structure("projection", New Structure("productName,price,rating", 1, 1, 1)); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 5); + +EndProcedure + +Procedure MongoDB_GetCursor(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + Filter = New Structure("stringField", "Text"); + Sort = New Structure("doubleField", -1); + Parameters = New Structure("limit,batchSize", 2, 1); + + Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCursor"); + + // Big batchSize with limit + Filter = New Structure("inStock", True); + Sort = New Structure("price", 1); + Parameters = New Structure("limit,batchSize", 8, 3); + + Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCursor", 1); + + // Small batchSize without limit + Filter = New Structure("category", "clothing"); + Sort = New Structure("rating", -1); + Parameters = New Structure("batchSize", 2); + + Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCursor", 2); + +EndProcedure + +Procedure MongoDB_GetDocumentBatch(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + Filter = New Structure("stringField", "Text"); + Sort = New Structure("doubleField", -1); + Parameters = New Structure("limit,batchSize", 2, 1); + + Cursor = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + If Not Cursor["result"] Then + Raise Cursor["error"]; + EndIf; + + Cursor = Cursor["data"]["cursor"]; + DocsArray = Cursor["firstBatch"]; + CursorID = Cursor["id"]; + ContinueGetting = CursorID > 0; + + While ContinueGetting Do + + Result = OPI_MongoDB.GetDocumentBatch(Connection, Collection, CursorID, Base); // <--- + + If Not Result["result"] Then + Raise Result["error"]; + EndIf; + + ContinueGetting = Result["data"]["cursor"]["id"] > 0; + + For Each Record In Result["data"]["cursor"]["nextBatch"] Do + DocsArray.Add(Record); + EndDo; + + EndDo; + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocumentBatch"); + +EndProcedure + +Procedure MongoDB_UpdateDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + // __4 = $ + Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); + Data = New Structure( "__4set", New Structure("doubleField", 999)); + + Updating = OPI_MongoDB.GetDocumentUpdateStructure(Filter, Data); // Array or single + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments"); + + Parameters = New Structure("limit,batchSize", 2, 1); + Sort = New Structure("doubleField", -1); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", "Obtaining"); + + Filter = New Structure("stringField,doubleField", "Text", 999); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", "Getting new"); + + // Multiply fields + Filter = New Structure("category", "electronics"); + Data = New Structure("__4set", New Structure("price,inStock,rating", 777, False, 5)); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 1); + + Filter = New Structure("category", "electronics", "price", 777); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 1"); + + // Number inc + Filter = New Structure("productName", "Product 1"); + Data = New Structure("__4inc", New Structure("quantity", 10)); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 2); + + Filter = New Structure("productName", "Product 1"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 2"); + + // Array insertion + Filter = New Structure("productName", "Product 2"); + Data = New Structure("__4push", New Structure("tags", "updated")); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 3); + + Filter = New Structure("productName", "Product 2", "tags", "updated"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 3"); + + // Nested field update + SettingMapping = New Map; + SettingMapping.Insert("details.weightKg", 2.5); + SettingMapping.Insert("details.supplier", "Supplier A+"); + + Filter = New Map; + Filter.Insert("details.supplier", "Supplier A"); + + Data = New Structure("__4set", SettingMapping); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 4); + + Filter = New Map; + Filter.Insert("details.supplier", "Supplier A+"); + Filter.Insert("details.weightKg", 2.5); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 4"); + + // Upsert + Filter = New Structure("productName", "New product"); + + //@skip-check structure-consructor-too-many-keys + Data = New Structure("__4set", New Structure("productName,category,price,quantity,inStock,createdDate" + , "New product" + , "electronics" + , 1999 + , 1 + , True + , OPI_Tools.GetCurrentDate() + )); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Ложь); + Options.Insert("upsert", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 5); + + Filter = New Structure("productName", "New product"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 5"); + + // Field removing + Filter = New Structure("productName", "Product 3"); + Data = New Structure("__4unset", New Structure("rating", "")); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 6); + + Filter = New Structure("productName", "Product 3"); + Parameters = New Structure("projection", New Structure("productName,rating", 1, 1)); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Неопределено); + Options.Insert("params", Parameters); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 6"); + + // Multiply operators + Filter = New Structure("price", New Structure("__4lt", 200)); + Data = New Structure; + Data.Insert("__4set", New Structure("inStock", False)); + Data.Insert("__4inc", New Structure("quantity", -5)); + Data.Insert("__4push", New Structure("tags", "discount")); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 7); + + Filter = New Structure("price,tags", New Structure("__4lt", 200), "discount"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 7"); + + // Updates array + UpdateArray = New Array; + + Filter1 = New Structure("category", "electronics"); + Data1 = New Structure("__4set", New Structure("price,discounted", 888, True)); + Options = New Structure; + Options.Insert("query", Filter1); + Options.Insert("data", Data1); + Options.Insert("multi", Истина); + + Update1 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update1); + + Filter2 = New Structure("category", "clothing"); + Data2 = New Structure("__4inc", New Structure("quantity", 5)); + Options = New Structure; + Options.Insert("query", Filter2); + Options.Insert("data", Data2); + Options.Insert("multi", Истина); + + Update2 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update2); + + Filter3 = New Structure("category", "books"); + Data3 = New Structure("__4push", New Structure("tags", "mass_update")); + Options = New Structure; + Options.Insert("query", Filter3); + Options.Insert("data", Data3); + Options.Insert("multi", Истина); + + Update3 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update3); + + Filter4 = New Structure("productName", "Special item from array"); + + //@skip-check structure-consructor-too-many-keys + Data4 = New Structure("__4set", New Structure("productName,category,price,quantity,inStock,createdDate" + , "Special item from array" + , "special" + , 1111 + , 7 + , True + , OPI_Tools.GetCurrentDate() + )); + + Options = New Structure; + Options.Insert("query", Filter4); + Options.Insert("data", Data4); + Options.Insert("multi", Ложь); + Options.Insert("upsert", Истина); + + Update4 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update4); + + Filter5 = New Structure("rating", New Structure("__4lte", 2)); + Data5 = New Structure; + Data5.Insert("__4set", New Structure("needsImprovement", True)); + Data5.Insert("__4inc", New Structure("quantity" , -2)); + Options = New Structure; + Options.Insert("query", Filter5); + Options.Insert("data", Data5); + Options.Insert("multi", Истина); + + Update5 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update5); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", UpdateArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 9); + + Filter = New Structure("category,price", "electronics", 888); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_1"); + + Filter = New Structure("category,tags", "books", "mass_update"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_2"); + + Filter = New Structure("productName", "Special item from array"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_3"); + + Filter = New Structure("needsImprovement", True); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_4"); + +EndProcedure + +Procedure MongoDB_GetDocumentUpdateStructure(FunctionParameters) + + // __4 = $ + Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); + Data = New Structure( "__4set", New Structure("doubleField", 999)); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + Options.Insert("upsert", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocumentUpdateStructure"); + +EndProcedure + +Procedure MongoDB_GetDocumentDeletionStructure(FunctionParameters) + + Filter = New Structure("stringField,doubleField", "Text", 999); + Result = OPI_MongoDB.GetDocumentDeletionStructure(Filter, 1); // Array or single + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocumentDeletionStructure"); + +EndProcedure + +Procedure MongoDB_DeleteDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + Filter = New Structure("stringField,doubleField", "Text", 999); + Deletion = OPI_MongoDB.GetDocumentDeletionStructure(Filter, 1); // Array or single + + Result = OPI_MongoDB.GetDocuments(Connection, Collection, Base, Filter); // SKIP + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDocuments", "Precheck"); // SKIP + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("deletes", Deletion); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDocuments"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDocuments", "Check"); + +EndProcedure + +Procedure MongoDB_CreateUser(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("read"); + RoleArray.Add("userAdmin"); + + UserName = "newuser"; + UserPassword = "1234"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateUser"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateUser", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateUser", "Existing"); + +EndProcedure + +Procedure MongoDB_UpdateUser(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("readWrite"); + + UserName = "newuser"; + UserPassword = "4321"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateUser"); + + UserName = "anotheruser"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateUser", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateUser", "Nonexistent"); + +EndProcedure + +Procedure MongoDB_DeleteUser(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + UserName = "newuser"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteUser"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteUser", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteUser", "Again"); + +EndProcedure + +Procedure MongoDB_GetUsers(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + UserName = "newuser"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("usrs", UserName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetUsers", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetUsers", "Simple"); // SKIP + + ArrayOfUsers = New Array; + ArrayOfUsers.Add(New Structure("user,db", "bayselonarrend", "admin")); + ArrayOfUsers.Add(New Structure("user,db", "newuser" , "main")); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("usrs", ArrayOfUsers); + Options.Insert("db", Base); + Options.Insert("spwd", Истина); + Options.Insert("sprv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetUsers"); + +EndProcedure + +Procedure MongoDB_GetDatabaseUsers(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDatabaseUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDatabaseUsers"); + +EndProcedure + +Procedure MongoDB_CreateRole(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("read"); + RoleArray.Add("userAdmin"); + + Resource = New Structure("db,collection", Base, "new_collection"); + Actions = New Array; + + Actions.Add("find"); + Actions.Add("insert"); + Actions.Add("update"); + + Options = New Structure; + Options.Insert("res", Resource); + Options.Insert("act", Actions); + + Privilege = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); + + PrivilegesArray = New Array; + PrivilegesArray.Add(Privilege); + + RoleName = "newrole"; + + OPI_MongoDB.DeleteRole(Connection, RoleName, Base); // SKIP + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + Options.Insert("prvl", PrivilegesArray); + Options.Insert("roles", RoleArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateRole", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateRole"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + Options.Insert("prvl", PrivilegesArray); + Options.Insert("roles", RoleArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateRole", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateRole", "Existing"); + +EndProcedure + +Procedure MongoDB_UpdateRole(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("read"); + RoleArray.Add("userAdmin"); + + Resource = New Structure("db,collection", Base, "new_collection2"); + Actions = New Array; + + Actions.Add("find"); + Actions.Add("insert"); + + Options = New Structure; + Options.Insert("res", Resource); + Options.Insert("act", Actions); + + Privilege = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); + + PrivilegesArray = New Array; + PrivilegesArray.Add(Privilege); + + RoleName = "newrole"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + Options.Insert("prvl", PrivilegesArray); + Options.Insert("roles", RoleArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateRole", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateRole"); + +EndProcedure + +Procedure MongoDB_DeleteRole(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleName = "newrole"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteRole", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteRole"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteRole", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteRole", "Again"); + +EndProcedure + +Procedure MongoDB_GetRolePrivilegeStructure(FunctionParameters) + + Base = FunctionParameters["MongoDB_DB"]; + Resource = New Structure("db,collection", Base, "new_collection"); + Actions = New Array; + + Actions.Add("find"); + Actions.Add("insert"); + Actions.Add("update"); + + Options = New Structure; + Options.Insert("res", Resource); + Options.Insert("act", Actions); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetRolePrivilegeStructure"); + +EndProcedure + +Procedure MongoDB_GetRoles(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Role = New Structure("role,db", "newrole", Base); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("roles", Role); + Options.Insert("db", Base); + Options.Insert("sprv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRoles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetRoles"); + +EndProcedure + +Procedure MongoDB_GrantRoles(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + User = "bayselonarrend"; + Role = New Structure("role,db", "newrole", Base); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("user", User); + Options.Insert("roles", Role); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GrantRoles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GrantRoles"); + +EndProcedure + +Procedure MongoDB_RevokeRoles(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + User = "bayselonarrend"; + Role = New Structure("role,db", "newrole", Base); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("user", User); + Options.Insert("roles", Role); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "RevokeRoles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "RevokeRoles"); + +EndProcedure + +#EndRegion // MongoDB + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Mongo_ОсновныеМетоды() Export + Mongo_CommonMethods(); +EndProcedure + +Procedure Mongo_РаботаСБазами() Export + Mong_DatabaseManagement(); +EndProcedure + +Procedure Mongo_РаботаСКоллекциями() Export + Mongo_CollectionManagement(); +EndProcedure + +Procedure Mongo_РаботаСДокументами() Export + Mongo_DocumentsManagement(); +EndProcedure + +Procedure Mongo_УправлениеПользователями() Export + Mongo_UserManagement(); +EndProcedure + +Procedure Mongo_УправлениеРолями() Export + Mongo_RoleManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl index 4ae8b1ab54..7777ebc772 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MySQL.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1537 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("MySQL"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("MySQL"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region MySQL + +Procedure MYS_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetMySQLParameterOptions(); + + For Each TestParameters In OptionArray Do + + MySQL_GenerateConnectionString(TestParameters); + MySQL_CreateConnection(TestParameters); + MySQL_CloseConnection(TestParameters); + MySQL_IsConnector(TestParameters); + MySQL_ExecuteSQLQuery(TestParameters); + MySQL_GetTLSSettings(TestParameters); + + EndDo; + +EndProcedure + +Procedure MYS_ORM() Export + + OptionArray = OPI_TestDataRetrieval.GetMySQLParameterOptions(); + + For Each TestParameters In OptionArray Do + + MySQL_CreateDatabase(TestParameters); + MySQL_CreateTable(TestParameters); + MySQL_AddRecords(TestParameters); + MySQL_EnsureRecords(TestParameters); + MySQL_GetRecords(TestParameters); + MySQL_UpdateRecords(TestParameters); + MySQL_DeleteRecords(TestParameters); + MySQL_ClearTable(TestParameters); + MySQL_GetTableInformation(TestParameters); + MySQL_AddTableColumn(TestParameters); + MySQL_DeleteTableColumn(TestParameters); + MySQL_EnsureTable(TestParameters); + MySQL_DeleteTable(TestParameters); + MySQL_DeleteDatabase(TestParameters); + MySQL_GetRecordsFilterStructure(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // MySQL + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region MySQL + +Procedure MySQL_GenerateConnectionString(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + // END + + Result = StrReplace(Result, Password, "***"); + Result = StrReplace(Result, Address , "127.0.0.1"); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GenerateConnectionString"); + +EndProcedure + +Procedure MySQL_CreateConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Result = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + // END + + OPI_MySQL.CloseConnection(Result); + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateConnection"); + +EndProcedure + +Procedure MySQL_CloseConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MySQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CloseConnection"); + +EndProcedure + +Procedure MySQL_IsConnector(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MySQL.IsConnector(Connection); + + OPI_MySQL.CloseConnection(Result); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "IsConnector"); + +EndProcedure + +Procedure MySQL_ExecuteSQLQuery(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_MySQL.DeleteTable("users" , Connection); // SKIP + OPI_MySQL.DeleteTable("test_data" , Connection); // SKIP + OPI_MySQL.DeleteTable("test_table", Connection); // SKIP + + OPI_TestDataRetrieval.Process(Connection, "MySQL", "ExecuteSQLQuery", "Connection"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + |id INT AUTO_INCREMENT PRIMARY KEY, + |name VARCHAR(255), + |age INT, + |salary DOUBLE, + |amount FLOAT, + |type TINYINT UNSIGNED, + |date DATE, + |time TIME, + |data MEDIUMBLOB + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) + |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; + + ParameterArray = New Array; + ParameterArray.Add(New Structure("TEXT" , "Vitaly")); + ParameterArray.Add(New Structure("INT" , 25)); + ParameterArray.Add(New Structure("DOUBLE", 1000.12)); + ParameterArray.Add(New Structure("FLOAT" , 1000.12)); + ParameterArray.Add(New Structure("UINT" , 1)); + ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate())); + ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate())); + ParameterArray.Add(New Structure("BYTES" , Image)); + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", , Image); // SKIP + + Result = OPI_MySQL.ExecuteSQLQuery("create table test_data (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Connection); // SKIP + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "Test data"); // SKIP + + // SQL query from file + + SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file + + Options = New Structure; + Options.Insert("sql", SQLFile); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "File"); // SKIP + + Closing = OPI_MySQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Closing, "MySQL", "ExecuteSQLQuery", "Closing"); // SKIP + +EndProcedure + +Procedure MySQL_CreateDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + OPI_MySQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateDatabase"); + + Base = "testbase2"; + OPI_MySQL.DeleteDatabase(Base, ConnectionString, TLSSettings); + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MySQL", "CreateDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateDatabase", "Creation"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateDatabase", "Existing"); + + OPI_MySQL.CloseConnection(Connection); + +EndProcedure + +Procedure MySQL_CreateTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("char_field" , "CHAR(5)"); + ColoumnsStruct.Insert("varchar_field" , "VARCHAR(255)"); + ColoumnsStruct.Insert("tinytext_field" , "TINYTEXT"); + ColoumnsStruct.Insert("text_field" , "TEXT"); + ColoumnsStruct.Insert("mediumtext_field", "MEDIUMTEXT"); + ColoumnsStruct.Insert("longtext_field" , "LONGTEXT"); + ColoumnsStruct.Insert("tinyint_field" , "TINYINT"); + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("mediumint_field" , "MEDIUMINT"); + ColoumnsStruct.Insert("int_field" , "INT"); + ColoumnsStruct.Insert("uint_field" , "INT UNSIGNED"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("float_field" , "FLOAT"); + ColoumnsStruct.Insert("double_field" , "DOUBLE"); + ColoumnsStruct.Insert("date_field" , "DATE"); + ColoumnsStruct.Insert("time_field" , "TIME"); + ColoumnsStruct.Insert("datetime_field" , "DATETIME"); + ColoumnsStruct.Insert("timestamp_field" , "TIMESTAMP"); + ColoumnsStruct.Insert("mediumblob_field", "MEDIUMBLOB"); + ColoumnsStruct.Insert("set_field" , "SET('one','two','three')"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateTable"); + + Table = "ABC DEF"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateTable", "Name error"); + + Table = "somename"; + ColoumnsStruct.Insert("wtf_field", "WTF"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateTable", "Type error"); + +EndProcedure + +Procedure MySQL_AddRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + RecordsArray = New Array; + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + CurrentDate = OPI_Tools.GetCurrentDate(); + + RecordStructure = New Structure; + RecordStructure.Insert("char_field" , New Structure("TEXT" , "AAAAA")); + RecordStructure.Insert("varchar_field" , New Structure("TEXT" , "Some varchar")); + RecordStructure.Insert("tinytext_field" , New Structure("TEXT" , "Some tiny text")); + RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text")); + RecordStructure.Insert("mediumtext_field", New Structure("TEXT" , "Some medium text")); + RecordStructure.Insert("longtext_field" , New Structure("TEXT" , "Some looooooong text")); + RecordStructure.Insert("tinyint_field" , New Structure("INT" , 127)); + RecordStructure.Insert("smallint_field" , New Structure("INT" , -32767)); + RecordStructure.Insert("mediumint_field" , New Structure("INT" , 8388607)); + RecordStructure.Insert("int_field" , New Structure("INT" , -2147483647)); + RecordStructure.Insert("uint_field" , New Structure("UINT" , 4294967295)); + RecordStructure.Insert("bigint_field" , New Structure("INT" , 9223372036854775807)); + RecordStructure.Insert("float_field" , New Structure("FLOAT" , 100.50)); + RecordStructure.Insert("double_field" , New Structure("FLOAT" , 100.512123)); + RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); + RecordStructure.Insert("datetime_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("timestamp_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("mediumblob_field", New Structure("BYTES" , Image)); + RecordStructure.Insert("set_field" , New Structure("TEXT" , "one")); + + RecordsArray.Add(RecordStructure); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", RecordsArray); + Options.Insert("trn", Истина); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "AddRecords"); + +EndProcedure + +Procedure MySQL_GetRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + // All records without filters + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecords"); // SKIP + + // Filter, selected fields, limit and sorting + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", "test_data"); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + Table = "test_data"; + + Fields = New Array; + Fields.Add("first_name"); + Fields.Add("last_name"); + Fields.Add("email"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "gender"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Male"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "id"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 50"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("ip_address", "DESC"); + Count = 5; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecords", "Filters"); + +EndProcedure + +Procedure MySQL_UpdateRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Count = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + OPI_TestDataRetrieval.Process(Count, "MySQL", "UpdateRecords", "Count"); // SKIP + Count = Count["data"].Count(); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("values", FieldsStructure); + Options.Insert("filter", FilterStructure); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "UpdateRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "UpdateRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['ip_address']"); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "MySQL", "UpdateRecords", "Check", Count, FieldsStructure); + +EndProcedure + +Procedure MySQL_DeleteRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + FilterStructure.Insert("union", "AND"); + + Filters.Add(FilterStructure); + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "ip_address"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1")); + FilterStructure.Insert("raw" , False); + + Obtaining = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Obtaining, "MySQL", "DeleteRecords", "Obtaining"); + + Count = Obtaining["data"].Count(); + Residue = 100 - Count; + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteRecords", "Check", Residue); + +EndProcedure + +Procedure MySQL_DeleteTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTable"); + + Base = "test_data"; + Table = "test_data"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTable", "Test"); + +EndProcedure + +Procedure MySQL_DeleteDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase"); + + Base = "testbase2"; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MySQL", "DeleteDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase", "Deletion"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase", "Error"); + + Closing = OPI_MySQL.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Closing, "MySQL", "DeleteDatabase", "Closing"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase", "Connection error"); + +EndProcedure + +Procedure MySQL_ClearTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ClearTable", "Check"); + +EndProcedure + +Procedure MySQL_EnsureRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_merge"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "TEXT"); // SKIP + ColoumnsStruct.Insert("age" , "INT"); // SKIP + ColoumnsStruct.Insert("salary", "DOUBLE"); // SKIP + OPI_MySQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , New Structure("INT" , 1)); + RowStructure2.Insert("name" , New Structure("TEXT" , "Vitaly")); + RowStructure2.Insert("age" , New Structure("INT" , 25)); + RowStructure2.Insert("salary", New Structure("DOUBLE", 1000.12)); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , New Structure("INT" , 2)); + RowStructure1.Insert("name" , New Structure("TEXT" , "Lesha")); + RowStructure1.Insert("age" , New Structure("INT" , 20)); + RowStructure1.Insert("salary", New Structure("DOUBLE", 200.20)); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , New Structure("TEXT" , "Vitaly Updated")); + RowStructure2.Insert("salary", New Structure("DOUBLE", 1500.50)); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , New Structure("INT" , 3)); + StringStructure3.Insert("name" , New Structure("TEXT" , "Anton")); + StringStructure3.Insert("age" , New Structure("INT" , 30)); + StringStructure3.Insert("salary", New Structure("DOUBLE", 3000.00)); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureRecords", "Updating check"); + + OPI_MySQL.DeleteTable(Table, ConnectionString, TLSSettings); + +EndProcedure + +Procedure MySQL_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +Procedure MySQL_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetTLSSettings"); + +EndProcedure + +Procedure MySQL_GetTableInformation(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetTableInformation"); + + Table = "heyho"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetTableInformation", "Error"); + +EndProcedure + +Procedure MySQL_AddTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + DataType = "MEDIUMTEXT"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "AddTableColumn", "Check"); + +EndProcedure + +Procedure MySQL_DeleteTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure MySQL_EnsureTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("double_field" , "DOUBLE"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("custom_field" , "TEXT"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureTable", "Check", ColoumnsStruct); + +EndProcedure + +#EndRegion // MySQL + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure MYS_ОсновныеМетоды() Export + MYS_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl index 4ae8b1ab54..f7360c8b49 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Neocities.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,257 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Neocities"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Neocities"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Neocities + +Procedure NC_FilesManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("NC_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Gif" , TestParameters); + + Neocities_UploadFile(TestParameters); + Neocities_UploadFiles(TestParameters); + Neocities_GetFilesList(TestParameters); + Neocities_DeleteSelectedFiles(TestParameters); + Neocities_SynchronizeFolders(TestParameters); + +EndProcedure + +Procedure NC_DataRetrieving() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("NC_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("NC_Login" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("NC_Password", TestParameters); + + Neocities_GetSiteData(TestParameters); + Neocities_GetToken(TestParameters); + +EndProcedure + +#EndRegion // Neocities + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Neocities + +Procedure Neocities_UploadFile(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + Data = FunctionParameters["Picture"]; // URL, Path or Binary Data + Path = "testfolder/test_pic.png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("file", Data); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "UploadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "UploadFile"); + +EndProcedure + +Procedure Neocities_UploadFiles(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + + Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data + Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data + GIF = FunctionParameters["Gif"]; // URL, Path or Binary Data + + FileMapping = New Map; + FileMapping.Insert("test/pic1.png", Image1); + FileMapping.Insert("test/gif.gif" , Image2); + FileMapping.Insert("pic2.png" , GIF); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("files", FileMapping); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "UploadFiles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "UploadFiles"); + +EndProcedure + +Procedure Neocities_DeleteSelectedFiles(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + + Paths = New Array; + Paths.Add("/test/pic1.png"); + Paths.Add("/test/gif.gif"); + Paths.Add("/pic2.png"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", Paths); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "DeleteSelectedFiles"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", "/testfolder"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "DeleteSelectedFiles", "Directory 1"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", "/test"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "DeleteSelectedFiles", "Directory 2"); + +EndProcedure + +Procedure Neocities_GetFilesList(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + Path = "test"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetFilesList"); + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetFilesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetFilesList", "All"); + +EndProcedure + +Procedure Neocities_GetSiteData(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + Website = "2athenaeum"; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetSiteData", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetSiteData"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("sitename", Website); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetSiteData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetSiteData", "Website"); + +EndProcedure + +Procedure Neocities_GetToken(FunctionParameters) + + Login = FunctionParameters["NC_Login"]; + Password = FunctionParameters["NC_Password"]; + + Options = New Structure; + Options.Insert("login", Login); + Options.Insert("password", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetToken", Options); + + // END + + Result["api_key"] = "***"; + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetToken"); + +EndProcedure + +Procedure Neocities_SynchronizeFolders(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + + LocalFolder = "C:\test_site"; + RemoteFolder = "test_sync"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("local", LocalFolder); + Options.Insert("remote", RemoteFolder); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "SynchronizeFolders", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "SynchronizeFolders"); + +EndProcedure + +#EndRegion // Neocities + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure НС_РаботаСФайлами() Export + NC_FilesManagement(); +EndProcedure + +Procedure НС_ПолучениеДанных() Export + NC_DataRetrieving(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl index 4ae8b1ab54..c753d23d95 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Notion.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,410 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Notion"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Notion"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Notion + +Procedure NotionAPI_CreatePage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + + Notion_CreatePage(TestParameters); + Notion_GetPage(TestParameters); + Notion_EditPageProperties(TestParameters); + +EndProcedure + +Procedure NotionAPI_CreateUpdateBase() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Notion_CreateDatabase(TestParameters); + Notion_EditDatabaseProperties(TestParameters); + Notion_GetDatabase(TestParameters); + Notion_CreatePageInDatabase(TestParameters); + +EndProcedure + +Procedure NotionAPI_CreateDeleteBlock() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Block" , TestParameters); + + Notion_ReturnBlock(TestParameters); + Notion_CreateBlock(TestParameters); + Notion_ReturnChildBlocks(TestParameters); + Notion_DeleteBlock(TestParameters); + +EndProcedure + +Procedure NotionAPI_GetUsers() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_User" , TestParameters); + + Notion_UserList(TestParameters); + Notion_GetUserData(TestParameters); + +EndProcedure + +#EndRegion // Notion + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Notion + +Procedure Notion_CreatePage(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Parent = FunctionParameters["Notion_Parent"]; + Title = "TestTitle"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Parent); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreatePage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreatePage", , FunctionParameters); + +EndProcedure + +Procedure Notion_CreateDatabase(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Parent = FunctionParameters["Notion_Parent"]; + Title = "TestTitle"; + + Properties = New Map; + Properties.Insert("Name" , "title"); + Properties.Insert("Description" , "rich_text"); + Properties.Insert("Number" , "number"); + Properties.Insert("CreationDate", "date"); + Properties.Insert("Image" , "files"); + Properties.Insert("Active" , "checkbox"); + Properties.Insert("Website" , "url"); + Properties.Insert("Email" , "email"); + Properties.Insert("Phone" , "phone_number"); + Properties.Insert("User" , "people"); + + ValueSelection = New Map; + ValueSelection.Insert("New" , "green"); + ValueSelection.Insert("InProgress" , "yellow"); + ValueSelection.Insert("Remote" , "red"); + + Properties.Insert("Status", ValueSelection); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Parent); + Options.Insert("title", Title); + Options.Insert("props", Properties); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreateDatabase", , FunctionParameters); + +EndProcedure + +Procedure Notion_EditDatabaseProperties(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Base = FunctionParameters["Notion_Base"]; + + Title = "TestTitle"; + Description = "TestDescription"; + + Properties = New Map; + Properties.Insert("Email", "rich_text"); // Type fields "Email" will changed with email to text + Properties.Insert("Website"); // Field "Website" will deleted + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("base", Base); + Options.Insert("props", Properties); + Options.Insert("title", Title); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "EditDatabaseProperties", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "EditDatabaseProperties"); + +EndProcedure + +Procedure Notion_GetPage(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Page = FunctionParameters["Notion_Page"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Page); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetPage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "GetPage"); + +EndProcedure + +Procedure Notion_GetDatabase(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Base = FunctionParameters["Notion_Base"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("base", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "GetDatabase"); + +EndProcedure + +Procedure Notion_CreatePageInDatabase(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Base = FunctionParameters["Notion_Base"]; + Image_ = FunctionParameters["Picture"]; // URL, Binary Data or File path + + Image = New Map; + Image.Insert("Logo", Image_); + + Properties = New Map; + Properties.Insert("Name" , "LLC Vector"); + Properties.Insert("Description" , "OurFirstClient"); + Properties.Insert("Number" , 1); + Properties.Insert("CreationDate", OPI_Tools.GetCurrentDate()); + Properties.Insert("Image" , Image); + Properties.Insert("Active" , True); + Properties.Insert("Website" , "https://vector.ru"); + Properties.Insert("Email" , "mail@vector.ru"); + Properties.Insert("Phone" , "88005553535"); + Properties.Insert("Status" , "New"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("base", Base); + Options.Insert("data", Properties); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreatePageInDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreatePageInDatabase", , Base); + +EndProcedure + +Procedure Notion_EditPageProperties(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Page = FunctionParameters["Notion_Page"]; + Icon = FunctionParameters["Picture"]; + Cover = FunctionParameters["Picture2"]; + Archive = False; + + Properties = New Map; + Properties.Insert("Active", False); + Properties.Insert("Email" , "vector@mail.ru"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Page); + Options.Insert("data", Properties); + Options.Insert("icon", Icon); + Options.Insert("cover", Cover); + Options.Insert("archive", Archive); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "EditPageProperties", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "EditPageProperties"); + +EndProcedure + +Procedure Notion_ReturnBlock(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Block = FunctionParameters["Notion_Block"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "ReturnBlock"); + +EndProcedure + +Procedure Notion_CreateBlock(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Parent = FunctionParameters["Notion_Parent"]; + Block = FunctionParameters["Notion_Block"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + BlockData = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnBlock", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Parent); + Options.Insert("block", BlockData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreateBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreateBlock", , FunctionParameters); + +EndProcedure + +Procedure Notion_ReturnChildBlocks(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Block = FunctionParameters["Notion_NewBlock"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnChildBlocks", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "ReturnChildBlocks"); + +EndProcedure + +Procedure Notion_DeleteBlock(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Block = FunctionParameters["Notion_NewBlock"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "DeleteBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "DeleteBlock"); + +EndProcedure + +Procedure Notion_UserList(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "UserList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "UserList"); + +EndProcedure + +Procedure Notion_GetUserData(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + User = FunctionParameters["Notion_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("user", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetUserData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "GetUserData"); + +EndProcedure + +#EndRegion // Notion + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure НоушнАпи_СоздатьСтраницу() Export + NotionAPI_CreatePage(); +EndProcedure + +Procedure НоушнАпи_СоздатьИзменитьБазу() Export + NotionAPI_CreateUpdateBase(); +EndProcedure + +Procedure НоушнАпи_СоздатьУдалитьБлок() Export + NotionAPI_CreateDeleteBlock(); +EndProcedure + +Procedure НоушнАпи_ПолучитьПользователей() Export + NotionAPI_GetUsers(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl index 4ae8b1ab54..c91ee70c3d 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Ollama.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,752 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Ollama"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Ollama"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Ollama + +Procedure OLLM_RequestsProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); + + Ollama_PullModel(TestParameters); + Ollama_GetVersion(TestParameters); + Ollama_GetResponse(TestParameters); + Ollama_GetContextResponse(TestParameters); + Ollama_GetEmbeddings(TestParameters); + Ollama_GetRequestParameterStructure(TestParameters); + Ollama_GetContextParameterStructure(TestParameters); + Ollama_GetContextMessageStructure(TestParameters); + Ollama_GetEmbeddingsParameterStructure(TestParameters); + +EndProcedure + +Procedure OLLM_ModelsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); + + Ollama_PullModel(TestParameters); + Ollama_LoadModelToMemory(TestParameters); + Ollama_UnloadModelFromMemory(TestParameters); + Ollama_CreateModel(TestParameters); + Ollama_GetModelInformation(TestParameters); + Ollama_GetModelList(TestParameters); + Ollama_ListRunningModels(TestParameters); + Ollama_CopyModel(TestParameters); + Ollama_PushModel(TestParameters); + Ollama_GetModelSettingsStructure(TestParameters); + Ollama_DeleteModel(TestParameters); + +EndProcedure + +Procedure OLLM_WorkingWithBlob() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Ollama_PushBlob(TestParameters); + Ollama_CheckBlob(TestParameters); + +EndProcedure + +#EndRegion // Ollama + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Ollama + +Procedure Ollama_GetResponse(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Prompt = "What is 1C:Enterprise?"; + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("prompt", Prompt); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetResponse"); // SKIP + + // With paramether + + Prompt = "Ollama is 22 years old and is busy saving the world. Respond using JSON"; + + Format = OPI_Tools.JSONToStructure(" + |{ + |""type"": ""object"", + |""properties"": { + | ""age"": { + | ""type"": ""integer"" + | }, + | ""available"": { + | ""type"": ""boolean"" + | } + |}, + |""required"": [ + | ""age"", + | ""available"" + |] + |}"); + + AdditionalParameters = New Structure("format", Format); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("prompt", Prompt); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetResponse", "Parameters"); + +EndProcedure + +Procedure Ollama_GetContextResponse(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Model = "tinyllama"; + + MessagesArray = New Array; + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Question1 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextMessageStructure", Options); + Question2 = OPI_Ollama.GetContextMessageStructure("user", "When the first version was released?"); // Question without specifics + + // Adding the first question to the context + MessagesArray.Add(Question1); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("headers", AdditionalHeaders); + + Response1 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Response1, "Ollama", "GetContextResponse", "Preliminary"); // SKIP + + MessagesArray.Add(Response1["message"]); // Add response to first question in context + MessagesArray.Add(Question2); // Add second question in context + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("headers", AdditionalHeaders); + + Response2 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + MessagesArray.Add(Response2["message"]); + + // ... + + // END + + OPI_TestDataRetrieval.Process(Response2, "Ollama", "GetContextResponse"); + + MessagesArray = New Array; + + Question = New Structure("role,content", "user", "Hello!"); + MessagesArray.Add(Question); + + Options = New Structure("seed,temperature", 101, 0); + AdditionalParameters = New Structure("options", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextResponse", "Seed 1"); + + Message1 = Result["message"]["content"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextResponse", "Seed 2"); + + Message2 = Result["message"]["content"]; + + Options = New Structure("seed,temperature", 555, 10); + AdditionalParameters = New Structure("options", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextResponse", "Seed 3"); + + Message3 = Result["message"]["content"]; + + OPI_TestDataRetrieval.Process(Message3, "Ollama", "GetContextResponse", "Comparison", Message1, Message2, Message3); + +EndProcedure + +Procedure Ollama_LoadModelToMemory(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "tinyllama"; + Period = 500; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("keep", Period); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "LoadModelToMemory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "LoadModelToMemory"); + +EndProcedure + +Procedure Ollama_UnloadModelFromMemory(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "UnloadModelFromMemory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "UnloadModelFromMemory"); + +EndProcedure + +Procedure Ollama_GetRequestParameterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetRequestParameterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetRequestParameterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetRequestParameterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetRequestParameterStructure", "Clear"); + +EndProcedure + +Procedure Ollama_GetContextParameterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextParameterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextParameterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextParameterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextParameterStructure", "Clear"); + +EndProcedure + +Procedure Ollama_GetContextMessageStructure(FunctionParameters) + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "Hello!"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextMessageStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextMessageStructure"); + +EndProcedure + +Procedure Ollama_GetModelSettingsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelSettingsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelSettingsStructure", "Clear"); + +EndProcedure + +Procedure Ollama_CreateModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Settings = New Structure("from,system", "tinyllama", "You are Mario from Super Mario Bros."); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("settings", Settings); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CreateModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CreateModel"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("prompt", "How are you?"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CreateModel", "Request"); + +EndProcedure + +Procedure Ollama_DeleteModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", "library/tinyllama:latest"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel", "Tiny"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", "bayselonarrend/tinyllama:latest"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel", "Tiny, account"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelList", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel", "List"); + +EndProcedure + +Procedure Ollama_GetModelList(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelList"); + +EndProcedure + +Procedure Ollama_ListRunningModels(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "ListRunningModels", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "ListRunningModels"); + +EndProcedure + +Procedure Ollama_GetModelInformation(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("verbose", Ложь); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelInformation"); + +EndProcedure + +Procedure Ollama_CopyModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + Name = "mario2"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("name", Name); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CopyModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CopyModel"); + + OPI_Ollama.DeleteModel(URL, Name, AdditionalHeaders); + +EndProcedure + +Procedure Ollama_GetVersion(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetVersion", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetVersion"); + +EndProcedure + +Procedure Ollama_GetEmbeddings(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + StingsArray = New Array; + StingsArray.Add("Why is the sky blue?"); + StingsArray.Add("Why is the grass green?"); + + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("input", StingsArray); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetEmbeddings"); + +EndProcedure + +Procedure Ollama_GetEmbeddingsParameterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddingsParameterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetEmbeddingsParameterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddingsParameterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetEmbeddingsParameterStructure", "Clear"); + +EndProcedure + +Procedure Ollama_PushModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "bayselonarrend/tinyllama:latest"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PushModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PushModel"); + +EndProcedure + +Procedure Ollama_PullModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PullModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PullModel"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", "bayselonarrend/tinyllama:latest"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PullModel", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PullModel", "Account"); + +EndProcedure + +Procedure Ollama_PushBlob(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + OPI_TypeConversion.GetBinaryData(Image, True); // SKIP + Random = GetBinaryDataFromString(String(New UUID)); // SKIP + Image = OPI_Tools.MergeData(Image, Random); // SKIP + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("data", Image); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PushBlob", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PushBlob", , FunctionParameters); + +EndProcedure + +Procedure Ollama_CheckBlob(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + SHA256 = FunctionParameters["Ollama_Blob"]; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("digest", SHA256); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CheckBlob", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CheckBlob"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("digest", "yoyoyo"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CheckBlob", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CheckBlob", "Error"); + +EndProcedure + +#EndRegion // Ollama + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure OLLM_ОбработкаЗапросов() Export + OLLM_RequestsProcessing(); +EndProcedure + +Procedure OLLM_РаботаСМоделями() Export + OLLM_ModelsManagement(); +EndProcedure + +Procedure OLLM_РаботаСBlob() Export + OLLM_WorkingWithBlob(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl index 4ae8b1ab54..2d5cb90a55 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_OpenAI.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,616 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("OpenAI"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("OpenAI"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region OpenAI + +Procedure OAI_RequestsProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_File" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + OpenAI_GetResponse(TestParameters); + OpenAI_GetEmbeddings(TestParameters); + OpenAI_GetMessageStructure(TestParameters); + OpenAI_GetImageMessageStructure(TestParameters); + OpenAI_GetImages(TestParameters); + OpenAI_GetAssistantMessage(TestParameters); + OpenAI_GetUserMessage(TestParameters); + OpenAI_GetSystemMessage(TestParameters); + +EndProcedure + +Procedure OAI_Assistants() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + + OpenAI_CreateAssistant(TestParameters); + OpenAI_RetrieveAssistant(TestParameters); + OpenAI_GetAssistantsList(TestParameters); + OpenAI_DeleteAssistant(TestParameters); + +EndProcedure + +Procedure OAI_FileManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + OpenAI_UploadFile(TestParameters); + OpenAI_GetFileInformation(TestParameters); + OpenAI_GetFilesList(TestParameters); + OpenAI_DownloadFile(TestParameters); + OpenAI_DeleteFile(TestParameters); + +EndProcedure + +Procedure OAI_AudioProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + + OpenAI_GenerateSpeech(TestParameters); + OpenAI_CreateTranscription(TestParameters); + +EndProcedure + +Procedure OAI_ModelsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + + OpenAI_GetModelList(TestParameters); + +EndProcedure + +#EndRegion // OpenAI + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region OpenAI + +Procedure OpenAI_GetResponse(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + // Text messages + + Messages = New Array; + Messages.Add(OPI_OpenAI.GetMessageStructure("user" , "What is 1C:Enterprise?")); + Messages.Add(OPI_OpenAI.GetMessageStructure("assistant", "1C:Enterprise is a full-stack, low-code platform")); + Messages.Add(OPI_OpenAI.GetMessageStructure("user" , "When the first version was released?")); + + Model = "smolvlm-256m-instruct"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("msgs", Messages); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetResponse"); // SKIP + + // Pictures + + Model = "moondream2-20250414"; + File = FunctionParameters["Picture"]; // URL, Path or Binary Data + FileName = StrTemplate("%1.png", String(New UUID())); + Destination = "user_data"; + + Messages = New Array; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", FileName); + Options.Insert("data", File); + Options.Insert("purpose", Destination); + + ImageUpload = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(ImageUpload, "OpenAI", "GetResponse", "Image upload"); // SKIP + + ImageID = ImageUpload["id"]; + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("file", ImageID); + Options.Insert("prompt", "What is in this image?"); + + Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options); + + Messages.Add(Description); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("msgs", Messages); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetResponse", Options); + + OPI_OpenAI.DeleteFile(URL, Token, ImageID); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetResponse", "Image"); + +EndProcedure + +Procedure OpenAI_GetEmbeddings(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Text = "What is 1C:Enterprise?"; + Model = "arcee-ai_afm-4.5b"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("input", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetEmbeddings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetEmbeddings"); + +EndProcedure + +Procedure OpenAI_CreateAssistant(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Instruction = "You are a personal math tutor. When asked a question, write and run Python code to answer the question."; + Model = "smolvlm-256m-instruct"; + Name = "Math tutor"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("name", Name); + Options.Insert("inst", Instruction); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateAssistant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "CreateAssistant", , FunctionParameters); + +EndProcedure + +Procedure OpenAI_DeleteAssistant(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + AssistantID = FunctionParameters["OpenAI_Assistant"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", AssistantID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DeleteAssistant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "DeleteAssistant", , AssistantID); + +EndProcedure + +Procedure OpenAI_RetrieveAssistant(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + AssistantID = FunctionParameters["OpenAI_Assistant"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", AssistantID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "RetrieveAssistant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "RetrieveAssistant"); + +EndProcedure + +Procedure OpenAI_GetAssistantsList(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Count = 2; + AdditionalParameters = New Structure("after,order", "asst_2", "desc"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("limit", Count); + Options.Insert("options", AdditionalParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetAssistantsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetAssistantsList"); + +EndProcedure + +Procedure OpenAI_UploadFile(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + File = FunctionParameters["Picture"]; // URL, Path or Binary Data + + FileName = StrTemplate("%1.png", String(New UUID())); + Destination = "assistants"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", FileName); + Options.Insert("data", File); + Options.Insert("purpose", Destination); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "UploadFile", Options); + + // END + + OPI_TypeConversion.GetBinaryData(File); + OPI_TestDataRetrieval.Process(Result, "OpenAI", "UploadFile", , FunctionParameters, FileName, File.Size() + 2); + +EndProcedure + +Procedure OpenAI_DeleteFile(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + FileID = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DeleteFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "DeleteFile", , FileID); + +EndProcedure + +Procedure OpenAI_GetFileInformation(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + FileID = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetFileInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetFileInformation"); + +EndProcedure + +Procedure OpenAI_GetFilesList(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetFilesList"); + +EndProcedure + +Procedure OpenAI_DownloadFile(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + FileID = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "DownloadFile", , FunctionParameters); + +EndProcedure + +Procedure OpenAI_GetMessageStructure(FunctionParameters) + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetMessageStructure"); + +EndProcedure + +Procedure OpenAI_GetImageMessageStructure(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + Image = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("file", Image); + Options.Insert("prompt", "What is in this image?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetImageMessageStructure"); + +EndProcedure + +Procedure OpenAI_GenerateSpeech(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Text = "Attack ships on fire off the shoulder of Orion bright as magnesium"; + Model = "bark-cpp-small"; + + AdditionalParameters = New Structure("response_format", "wav"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("input", Text); + Options.Insert("options", AdditionalParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GenerateSpeech", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GenerateSpeech", , FunctionParameters); + +EndProcedure + +Procedure OpenAI_CreateTranscription(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Audio = FunctionParameters["OpenAI_Speech"]; + Model = "whisper-1"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("audio", Audio); + Options.Insert("type", "audio/wav"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateTranscription", Options); + + // END + + OPI_Tools.RemoveFileWithTry(Audio, "Failed to delete the temporary file after the test!!"); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "CreateTranscription"); + +EndProcedure + +Procedure OpenAI_GetImages(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Model = "sd-1.5-ggml"; + Options = New Structure; + Options.Insert("prompt", "Yellow alpaca"); + Options.Insert("amount", 1); + Options.Insert("size", "64x64"); + + Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageDescriptionStructure", Options); + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("descr", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImages", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetImages"); + +EndProcedure + +Procedure OpenAI_GetModelList(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetModelList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetModelList"); + +EndProcedure + +Procedure OpenAI_GetAssistantMessage(FunctionParameters) + + Options = New Structure; + Options.Insert("text", "What is 1C:Enterprise?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetAssistantMessage", Options); + + // END + + Options = New Structure; + Options.Insert("role", "assistant"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + Check = OPI_Tools.JSONString(Check); + Result = OPI_Tools.JSONString(Result); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetAssistantMessage", , Check); + +EndProcedure + +Procedure OpenAI_GetUserMessage(FunctionParameters) + + Options = New Structure; + Options.Insert("text", "What is 1C:Enterprise?"); + Options.Insert("name", "Vitaly"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetUserMessage", Options); + + // END + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "What is 1C:Enterprise?"); + Options.Insert("name", "Vitaly"); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + Check = OPI_Tools.JSONString(Check); + Result = OPI_Tools.JSONString(Result); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetUserMessage", , Check); + +EndProcedure + +Procedure OpenAI_GetSystemMessage(FunctionParameters) + + Options = New Structure; + Options.Insert("text", "What is 1C:Enterprise?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetSystemMessage", Options); + + // END + + Options = New Structure; + Options.Insert("role", "system"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + Check = OPI_Tools.JSONString(Check); + Result = OPI_Tools.JSONString(Result); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetSystemMessage", , Check); + +EndProcedure + +#EndRegion // OpenAI + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure OAI_ОбработкаЗапросов() Export + OAI_RequestsProcessing(); +EndProcedure + +Procedure OAI_Ассистенты() Export + OAI_Assistants(); +EndProcedure + +Procedure OAI_РаботаСФайлами() Export + OAI_FileManagement(); +EndProcedure + +Procedure OAI_РаботаСАудио() Export + OAI_AudioProcessing(); +EndProcedure + +Procedure OAI_РаботаСМоделями() Export + OAI_ModelsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl index 4ae8b1ab54..f45f44bc8e 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_PostgreSQL.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1606 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("PostgreSQL"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("PostgreSQL"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region PostgreSQL + +Procedure Postgres_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetPostgresParameterOptions(); + + For Each TestParameters In OptionArray Do + + PostgreSQL_GenerateConnectionString(TestParameters); + PostgreSQL_CreateConnection(TestParameters); + PostgreSQL_CloseConnection(TestParameters); + PostgreSQL_IsConnector(TestParameters); + PostgreSQL_ExecuteSQLQuery(TestParameters); + PostgreSQL_GetTLSSettings(TestParameters); + + EndDo; + +EndProcedure + +Procedure Postgres_ORM() Export + + OptionArray = OPI_TestDataRetrieval.GetPostgresParameterOptions(); + + For Each TestParameters In OptionArray Do + + PostgreSQL_CreateDatabase(TestParameters); + PostgreSQL_CreateTable(TestParameters); + PostgreSQL_AddRecords(TestParameters); + PostgreSQL_EnsureRecords(TestParameters); + PostgreSQL_GetRecords(TestParameters); + PostgreSQL_UpdateRecords(TestParameters); + PostgreSQL_DeleteRecords(TestParameters); + PostgreSQL_ClearTable(TestParameters); + PostgreSQL_GetTableInformation(TestParameters); + PostgreSQL_AddTableColumn(TestParameters); + PostgreSQL_DeleteTableColumn(TestParameters); + PostgreSQL_EnsureTable(TestParameters); + PostgreSQL_DeleteTable(TestParameters); + PostgreSQL_DisableAllDatabaseConnections(TestParameters); + PostgreSQL_DeleteDatabase(TestParameters); + PostgreSQL_GetRecordsFilterStructure(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // PostgreSQL + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region PostgreSQL + +Procedure PostgreSQL_GenerateConnectionString(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + // END + + Result = StrReplace(Result, Password, "***"); + Result = StrReplace(Result, Address , "127.0.0.1"); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GenerateConnectionString"); + +EndProcedure + +Procedure PostgreSQL_CreateConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Result = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + // END + + OPI_PostgreSQL.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateConnection"); + +EndProcedure + +Procedure PostgreSQL_CloseConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_PostgreSQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CloseConnection"); + +EndProcedure + +Procedure PostgreSQL_IsConnector(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_PostgreSQL.IsConnector(Connection); + + OPI_PostgreSQL.CloseConnection(Result); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "IsConnector"); + +EndProcedure + +Procedure PostgreSQL_ExecuteSQLQuery(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_PostgreSQL.DeleteTable("users" , Connection); // SKIP + OPI_PostgreSQL.DeleteTable("test_data" , Connection); // SKIP + OPI_PostgreSQL.DeleteTable("test_table", Connection); // SKIP + + OPI_TestDataRetrieval.Process(Connection, "PostgreSQL", "ExecuteSQLQuery", "Connection"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + |id SERIAL PRIMARY KEY, + |name NAME, + |age INT, + |salary REAL, + |is_active BOOL, + |created_at DATE, + |data BYTEA + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES ($1, $2, $3, $4, $5, $6);"; + + ParameterArray = New Array; + ParameterArray.Add(New Structure("NAME" , "Vitaly")); + ParameterArray.Add(New Structure("INT" , 25)); + ParameterArray.Add(New Structure("REAL" , 1000.12)); + ParameterArray.Add(New Structure("BOOL" , True)); + ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate())); + ParameterArray.Add(New Structure("BYTEA", Image)); + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", , Image); // SKIP + + // DO + Transaction + + QueryText = "DO $$ + |BEGIN + | CREATE TABLE users ( + | id SMALLSERIAL, + | name TEXT NOT NULL, + | age INT NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + |END $$ LANGUAGE plpgsql;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Transaction"); // SKIP + + // SQL query from file + + SQLFile = FunctionParameters["SQL"]; // Binary Data, URL or path to file + + Options = New Structure; + Options.Insert("sql", SQLFile); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "File"); // SKIP + + Closing = OPI_PostgreSQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Closing"); + +EndProcedure + +Procedure PostgreSQL_CreateDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + Deletion = OPI_PostgreSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP + OPI_TestDataRetrieval.LogServiceInformation(Deletion, "CreateDatabase (deleting)", "PostgreSQL"); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateDatabase"); + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "PostgreSQL", "CreateDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateDatabase", "Existing"); + + Base = "testbase2"; + + OPI_PostgreSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateDatabase", "New"); + + OPI_PostgreSQL.CloseConnection(Connection); + +EndProcedure + +Procedure PostgreSQL_CreateTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("bool_field" , "BOOL"); + ColoumnsStruct.Insert("oldchar_field" , """char"""); + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL"); + ColoumnsStruct.Insert("int_field" , "INT"); + ColoumnsStruct.Insert("serial_field" , "SERIAL"); + ColoumnsStruct.Insert("oid_field" , "OID"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("bigserial_field" , "BIGSERIAL"); + ColoumnsStruct.Insert("real_field" , "REAL"); + ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION"); + ColoumnsStruct.Insert("text_field" , "TEXT"); + ColoumnsStruct.Insert("varchar_field" , "VARCHAR"); + ColoumnsStruct.Insert("charn_field" , "CHAR(3)"); + ColoumnsStruct.Insert("char_field" , "CHAR"); + ColoumnsStruct.Insert("name_field" , "NAME"); + ColoumnsStruct.Insert("bytea_field" , "BYTEA"); + ColoumnsStruct.Insert("ts_field" , "TIMESTAMP"); + ColoumnsStruct.Insert("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); + ColoumnsStruct.Insert("ip_field" , "INET"); + ColoumnsStruct.Insert("json_field" , "JSON"); + ColoumnsStruct.Insert("jsonb_field" , "JSONB"); + ColoumnsStruct.Insert("date_field" , "DATE"); + ColoumnsStruct.Insert("time_field" , "TIME"); + ColoumnsStruct.Insert("uuid_field" , "UUID"); + ColoumnsStruct.Insert("numeric_field" , "NUMERIC(15, 2)"); + + OPI_PostgreSQL.DeleteTable(Table, ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateTable"); + + Table = "ABC DEF"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateTable", "Name error"); + + Table = "somename"; + ColoumnsStruct.Insert("wtf_field", "WTF"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateTable", "Type error"); + +EndProcedure + +Procedure PostgreSQL_GetTableInformation(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetTableInformation"); + + Table = "heyho"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetTableInformation", "Error"); + +EndProcedure + +Procedure PostgreSQL_AddRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + RecordsArray = New Array; + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + CasualStructure = New Structure("key,value", "ItsKey", 10); + + CurrentDate = OPI_Tools.GetCurrentDate(); + CurrentDateTZ = OPI_Tools.DateRFC3339(CurrentDate, "+05:00"); + + RecordStructure = New Structure; + RecordStructure.Insert("bool_field" , New Structure("BOOL" , True)); + RecordStructure.Insert("oldchar_field" , New Structure("OLDCHAR" , 1)); // or "char" + RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 5)); + RecordStructure.Insert("smallserial_field", New Structure("SMALLSERIAL" , 6)); + RecordStructure.Insert("int_field" , New Structure("INT" , 100)); + RecordStructure.Insert("serial_field" , New Structure("SERIAL" , 100)); + RecordStructure.Insert("oid_field" , New Structure("OID" , 24576)); + RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999)); + RecordStructure.Insert("bigserial_field" , New Structure("BIGSERIAL" , 9999999)); + RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2)); + RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION" , 1.0002)); // or DOUBLE PRECISION + RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text")); + RecordStructure.Insert("varchar_field" , New Structure("VARCHAR" , "Some varchar")); + RecordStructure.Insert("charn_field" , New Structure("CHAR" , "AAA")); + RecordStructure.Insert("char_field" , New Structure("CHAR" , "A")); + RecordStructure.Insert("name_field" , New Structure("NAME" , "Vitaly")); + RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image)); + RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , CurrentDate)); + RecordStructure.Insert("tswtz_field" , New Structure("TIMESTAMP_WITH_TIME_ZONE", CurrentDateTZ)); // or TIMESTAMP WITH TIME ZONE + RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1")); + RecordStructure.Insert("json_field" , New Structure("JSON" , CasualStructure)); + RecordStructure.Insert("jsonb_field" , New Structure("JSONB" , CasualStructure)); + RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); + RecordStructure.Insert("uuid_field" , New Structure("UUID" , New UUID)); + RecordStructure.Insert("numeric_field" , New Structure("NUMERIC" , "15.2")); + + RecordsArray.Add(RecordStructure); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", RecordsArray); + Options.Insert("trn", Истина); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "AddRecords"); + +EndProcedure + +Procedure PostgreSQL_GetRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + // All records without filters + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecords"); // SKIP + + // Filter, selected fields, limit and sorting + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", "test_data"); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + Table = "test_data"; + + Fields = New Array; + Fields.Add("first_name"); + Fields.Add("last_name"); + Fields.Add("email"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "gender"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Male"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "id"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 50"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("ip_address", "DESC"); + Count = 5; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecords", "Filters"); + +EndProcedure + +Procedure PostgreSQL_UpdateRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Count = OPI_PostgreSQl.GetRecords(Table, , Filters, , , ConnectionString); // SKIP + OPI_TestDataRetrieval.Process(Count, "PostgreSQL", "UpdateRecords", "Count"); // SKIP + Count = Count["data"].Count(); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Result = OPI_PostgreSQl.UpdateRecords(Table + , FieldsStructure + , FilterStructure + , ConnectionString + , TLSSettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "UpdateRecords"); + + Check = OPI_PostgreSQl.GetRecords(Table, "['ip_address']", Filters, , , ConnectionString); + + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "UpdateRecords", "Check", Count, FieldsStructure); + +EndProcedure + +Procedure PostgreSQL_DeleteRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + FilterStructure.Insert("union", "AND"); + + Filters.Add(FilterStructure); + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "ip_address"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1")); + FilterStructure.Insert("raw" , False); + + Obtaining = OPI_PostgreSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Obtaining, "PostgreSQL", "DeleteRecords", "Obtaining"); + + Count = Obtaining["data"].Count(); + Residue = 100 - Count; + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteRecords", "Check", Residue); + +EndProcedure + +Procedure PostgreSQL_DeleteTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTable"); + + Base = "test_data"; + Table = "test_data"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTable", "Test"); + +EndProcedure + +Procedure PostgreSQL_DeleteDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase"); + + Base = "testbase2"; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "PostgreSQL", "DeleteDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DisableAllDatabaseConnections", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Shutdown"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Deletion"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Error"); + + Closing = OPI_PostgreSQL.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Closing, "PostgreSQL", "DeleteDatabase", "Closing"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Connection error"); + +EndProcedure + +Procedure PostgreSQL_ClearTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ClearTable", "Check"); + +EndProcedure + +Procedure PostgreSQL_DisableAllDatabaseConnections(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DisableAllDatabaseConnections", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DisableAllDatabaseConnections"); + +EndProcedure + +Procedure PostgreSQL_EnsureRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_merge"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "TEXT"); // SKIP + ColoumnsStruct.Insert("age" , "INT"); // SKIP + ColoumnsStruct.Insert("salary", "REAL"); // SKIP + OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , New Structure("INT" , 1)); + RowStructure2.Insert("name" , New Structure("TEXT", "Vitaly")); + RowStructure2.Insert("age" , New Structure("INT" , 25)); + RowStructure2.Insert("salary", New Structure("REAL", 1000.12)); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , New Structure("INT" , 2)); + RowStructure1.Insert("name" , New Structure("TEXT", "Lesha")); + RowStructure1.Insert("age" , New Structure("INT" , 20)); + RowStructure1.Insert("salary", New Structure("REAL", 200.20)); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , New Structure("TEXT", "Vitaly Updated")); + RowStructure2.Insert("salary", New Structure("REAL", 1500.50)); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , New Structure("INT" , 3)); + StringStructure3.Insert("name" , New Structure("TEXT", "Anton")); + StringStructure3.Insert("age" , New Structure("INT" , 30)); + StringStructure3.Insert("salary", New Structure("REAL", 3000.00)); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureRecords", "Updating check"); + + OPI_PostgreSQL.DeleteTable(Table, ConnectionString, TLSSettings); + +EndProcedure + +Procedure PostgreSQL_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +Procedure PostgreSQL_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetTLSSettings"); + +EndProcedure + +Procedure PostgreSQL_AddTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + DataType = "TEXT"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "AddTableColumn", "Check"); + +EndProcedure + +Procedure PostgreSQL_DeleteTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure PostgreSQL_EnsureTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("uuid_field" , "uuid"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("custom_field" , "TEXT"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureTable", "Check", ColoumnsStruct); + +EndProcedure + +#EndRegion // PostgreSQL + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Postgres_ОсновныеМетоды() Export + Postgres_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl index 4ae8b1ab54..bfccc0ca62 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RCON.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,174 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("RCON"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("RCON"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region RCON + +Procedure RC_CommandsExecution() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RCON_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RCON_Password", TestParameters); + + RCON_FormConnectionParameters(TestParameters); + RCON_CreateConnection(TestParameters); + RCON_ExecuteCommand(TestParameters); + RCON_IsConnector(TestParameters); + +EndProcedure + +#EndRegion // RCON + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region RCON + +Procedure RCON_FormConnectionParameters(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "FormConnectionParameters"); + +EndProcedure + +Procedure RCON_CreateConnection(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + Result = OPI_RCON.CreateConnection(ConnectionParams); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "CreateConnection"); + +EndProcedure + +Procedure RCON_ExecuteCommand(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + Connection = OPI_RCON.CreateConnection(ConnectionParams); + + Command = "list"; + Options = New Structure; + Options.Insert("exec", Command); + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "ExecuteCommand", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "ExecuteCommand"); + + Command = "list"; + Options = New Structure; + Options.Insert("exec", Command); + Options.Insert("conn", ConnectionParams); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "ExecuteCommand", Options); + + OPI_TestDataRetrieval.Process(Result, "RCON", "ExecuteCommand", "No connection"); + +EndProcedure + +Procedure RCON_IsConnector(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + Connection = OPI_RCON.CreateConnection(ConnectionParams); + Result = OPI_RCON.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "IsConnector"); + +EndProcedure + +#EndRegion // RCON + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure RC_ВыполнениеКоманд() Export + RC_CommandsExecution(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl index 4ae8b1ab54..311b363ba1 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RSS.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,269 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("RSS"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("RSS"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region RSS + +Procedure RSS_RSSMethods() Export + + TestParameters = New Structure; + + RSS_CreateFeedRSS(TestParameters); + RSS_GetFeedItemStructureRSS(TestParameters); + RSS_ParseFeedRSS(TestParameters); + +EndProcedure + +Procedure RSS_AtomMethods() Export + + TestParameters = New Structure; + + RSS_CreateFeedAtom(TestParameters); + RSS_GetFeedItemStructureAtom(TestParameters); + RSS_ParseFeedAtom(TestParameters); + +EndProcedure + +#EndRegion // RSS + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region RSS + +Procedure RSS_CreateFeedRSS(FunctionParameters) + + ChannelTitle = "Test RSS channel"; + ChannelDescription = "Test RSS channel description"; + ChannelLink = "https://example.com"; + + ItemsArray = New Array; + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + ElementStructure["title"] = "First element"; + ElementStructure["description"] = "First element description"; + ElementStructure["link"] = "https://example.com/item1"; + ElementStructure["pubDate"] = OPI_Tools.GetCurrentDate(); + ElementStructure["author"] = "test@example.com"; + ElementStructure["guid"] = "item-1"; + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + ElementStructure["title"] = "Second element"; + ElementStructure["description"] = "Second element description"; + ElementStructure["link"] = "https://example.com/item2"; + ElementStructure["pubDate"] = OPI_Tools.GetCurrentDate(); + ElementStructure["author"] = "test@example.com"; + ElementStructure["guid"] = "item-2"; + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("name", ChannelTitle); + Options.Insert("descr", ChannelDescription); + Options.Insert("link", ChannelLink); + Options.Insert("items", ItemsArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "CreateFeedRSS", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "CreateFeedRSS", , FunctionParameters); + +EndProcedure + +Procedure RSS_GetFeedItemStructureRSS(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureRSS"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureRSS", "Clear"); + + Options = New Structure; + Options.Insert("empty", Ложь); + Options.Insert("map", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureRSS", "Map"); + +EndProcedure + +Procedure RSS_ParseFeedRSS(FunctionParameters) + + FeedXML = FunctionParameters["RSS_FeedXML"]; + + Options = New Structure; + Options.Insert("xml", FeedXML); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "ParseFeedRSS", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "ParseFeedRSS"); + + OPI_Tools.RemoveFileWithTry(FeedXML, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure RSS_CreateFeedAtom(FunctionParameters) + + FeedTitle = "Test Atom feed"; + FeedLink = "https://example.com"; + FeedID = "https://example.com/feed"; + + ItemsArray = New Array; + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + ElementStructure["title"] = "First record"; + ElementStructure["id"] = "https://example.com/entry1"; + ElementStructure["link"] = "https://example.com/entry1"; + ElementStructure["updated"] = OPI_Tools.GetCurrentDate(); + ElementStructure["summary"] = "First record summary"; + ElementStructure["content"] = "Full content of the first record"; + ElementStructure["author"] = "First Author"; + ElementStructure["published"] = OPI_Tools.GetCurrentDate(); + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + ElementStructure["title"] = "Second record"; + ElementStructure["id"] = "https://example.com/entry2"; + ElementStructure["link"] = "https://example.com/entry2"; + ElementStructure["updated"] = OPI_Tools.GetCurrentDate(); + ElementStructure["summary"] = "Second record summary"; + ElementStructure["content"] = "Full content of the second record"; + ElementStructure["author"] = "Second Author"; + ElementStructure["published"] = OPI_Tools.GetCurrentDate(); + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("name", FeedTitle); + Options.Insert("link", FeedLink); + Options.Insert("id", FeedID); + Options.Insert("items", ItemsArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "CreateFeedAtom", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "CreateFeedAtom", , FunctionParameters); + +EndProcedure + +Procedure RSS_GetFeedItemStructureAtom(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureAtom"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureAtom", "Clear"); + + Options = New Structure; + Options.Insert("empty", Ложь); + Options.Insert("map", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureAtom", "Map"); + +EndProcedure + +Procedure RSS_ParseFeedAtom(FunctionParameters) + + FeedXML = FunctionParameters["RSS_AtomFeedXML"]; + + Options = New Structure; + Options.Insert("xml", FeedXML); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "ParseFeedAtom", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "ParseFeedAtom"); + + OPI_Tools.RemoveFileWithTry(FeedXML, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +#EndRegion // RSS + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure RSS_МетодыRSS() Export + RSS_RSSMethods(); +EndProcedure + +Procedure RSS_МетодыAtom() Export + RSS_AtomMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl index 4ae8b1ab54..85f8a8b2a1 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ReportPortal.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1016 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("ReportPortal"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("ReportPortal"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region ReportPortal + +Procedure RPortal_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_Login" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_UserID" , TestParameters); + + ReportPortal_GetTemporaryToken(TestParameters); + ReportPortal_GetPermanentToken(TestParameters); + ReportPortal_DeletePermanentToken(TestParameters); + ReportPortal_GetUserTokens(TestParameters); + +EndProcedure + +Procedure RPortal_TestManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateLaunch(TestParameters); + ReportPortal_GetLaunch(TestParameters); + ReportPortal_GetLaunchItems(TestParameters); + ReportPortal_UpdateLaunch(TestParameters); + ReportPortal_CreateItem(TestParameters); + ReportPortal_GetItem(TestParameters); + ReportPortal_GetItemLogs(TestParameters); + ReportPortal_UpdateItem(TestParameters); + ReportPortal_FinishItem(TestParameters); + ReportPortal_FinishLaunch(TestParameters); + ReportPortal_DeleteItem(TestParameters); + ReportPortal_GetLaunchReport(TestParameters); + ReportPortal_DeleteLaunch(TestParameters); + ReportPortal_GetLaunchStructure(TestParameters); + ReportPortal_GetItemStructure(TestParameters); + ReportPortal_GetItemCompletionStructure(TestParameters); + ReportPortal_GetLaunchCompletionStructure(TestParameters); + +EndProcedure + +Procedure RPortal_LogRecording() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateLaunch(TestParameters); + ReportPortal_CreateItem(TestParameters); + + ReportPortal_WriteLog(TestParameters); + ReportPortal_GetLogStructure(TestParameters); + ReportPortal_GetLog(TestParameters); + ReportPortal_DeleteLog(TestParameters); + + ReportPortal_FinishItem(TestParameters); + ReportPortal_FinishLaunch(TestParameters); + +EndProcedure + +Procedure RPortal_ProjectManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateProject(TestParameters); + ReportPortal_GetProject(TestParameters); + ReportPortal_GetProjects(TestParameters); + ReportPortal_AddUsersToProject(TestParameters); + ReportPortal_ExcludeUsersFromProject(TestParameters); + ReportPortal_DeleteProject(TestParameters); + +EndProcedure + +Procedure RPortal_UserManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateUser(TestParameters); + ReportPortal_GetCurrentUser(TestParameters); + ReportPortal_GetUser(TestParameters); + ReportPortal_GetUsers(TestParameters); + ReportPortal_GetUserProjects(TestParameters); + ReportPortal_UpdateUser(TestParameters); + ReportPortal_DeleteUser(TestParameters); + ReportPortal_GetUserFieldsStructure(TestParameters); + +EndProcedure + +#EndRegion // ReportPortal + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region ReportPortal + +Procedure ReportPortal_GetTemporaryToken(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Login = FunctionParameters["RPortal_Login"]; + Password = FunctionParameters["RPortal_Password"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetTemporaryToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetTemporaryToken", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetPermanentToken(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + UserID = FunctionParameters["RPortal_UserID"]; + KeyName = "test_key_2"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("user", UserID); + Options.Insert("name", KeyName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetPermanentToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetPermanentToken", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeletePermanentToken(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TestApiKey"]; + UserID = FunctionParameters["RPortal_UserID"]; + KeyID = FunctionParameters["RPortal_TestKeyID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("user", UserID); + Options.Insert("id", KeyID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeletePermanentToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeletePermanentToken"); + +EndProcedure + +Procedure ReportPortal_GetUserTokens(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + UserID = FunctionParameters["RPortal_UserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserTokens", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserTokens"); + +EndProcedure + +Procedure ReportPortal_CreateLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Project = "Test"; + + StartDate = Date("20260101100000"); + + LaunchStructure = New Structure; + LaunchStructure.Insert("name" , "Test"); + LaunchStructure.Insert("startTime" , StartDate); + LaunchStructure.Insert("description", "Test launch"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("params", LaunchStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateLaunch", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_FinishLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + Project = "Test"; + + EndDate = Date("20260101200000"); + Options = New Structure; + Options.Insert("end", EndDate); + Options.Insert("status", "passed"); + Options.Insert("descr", "Updated launch description"); + + FinishStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchCompletionStructure", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", LaunchID); + Options.Insert("params", FinishStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "FinishLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "FinishLaunch"); + +EndProcedure + +Procedure ReportPortal_CreateItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + Project = "Test"; + + StartDate = Date("20260101100000"); + + ElementStructure = New Structure; + ElementStructure.Insert("name" , "Test"); + ElementStructure.Insert("startTime" , StartDate); + ElementStructure.Insert("type" , "test"); + ElementStructure.Insert("description", "Test launch"); + ElementStructure.Insert("launchUuid" , LaunchID); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("params", ElementStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateItem", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_FinishItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + + EndDate = Date("20260101200000"); + + FinishStructure = New Structure; + FinishStructure.Insert("endTime", EndDate); + FinishStructure.Insert("status" , "passed"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", ElementID); + Options.Insert("params", FinishStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "FinishItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "FinishItem"); + +EndProcedure + +Procedure ReportPortal_GetLaunchStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_GetItemStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_GetItemCompletionStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemCompletionStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemCompletionStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemCompletionStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemCompletionStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_GetLaunchCompletionStructure(FunctionParameters) + + Time = Date("20260101100000"); + Status = "passed"; + Description = "Some test"; + Attributes = "key1:value1, key2:value2"; + + Options = New Structure; + Options.Insert("end", Time); + Options.Insert("status", Status); + Options.Insert("descr", Description); + Options.Insert("attr", Attributes); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchCompletionStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchCompletionStructure"); + +EndProcedure + +Procedure ReportPortal_WriteLog(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + ElementID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + Time = Date("20260101100010"); + Text = "Some log 1"; + + Options = New Structure; + Options.Insert("launch", LaunchID); + Options.Insert("id", ElementID); + Options.Insert("time", Time); + Options.Insert("text", Text); + + LogStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLogStructure", Options); + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("params", LogStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "WriteLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "WriteLog", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetLogStructure(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + ElementID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + Time = Date("20260101100010"); + Text = "Some log"; + + Options = New Structure; + Options.Insert("launch", LaunchID); + Options.Insert("id", ElementID); + Options.Insert("time", Time); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLogStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLogStructure"); + +EndProcedure + +Procedure ReportPortal_GetLog(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LogUUID = FunctionParameters["RPortal_TestLog"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", LogUUID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLog", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeleteLog(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LogID = FunctionParameters["RPortal_TestLogId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LogID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteLog"); + +EndProcedure + +Procedure ReportPortal_CreateProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Name = "testproject"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateProject", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeleteProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ProjectID = FunctionParameters["RPortal_TestProject"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", ProjectID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteProject"); + +EndProcedure + +Procedure ReportPortal_GetProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Name = "TestProject"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetProject"); + +EndProcedure + +Procedure ReportPortal_GetProjects(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetProjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetProjects"); + +EndProcedure + +Procedure ReportPortal_AddUsersToProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ProjectName = "TestProject"; + + UserList = New Map; + UserList.Insert("default", "MEMBER"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", ProjectName); + Options.Insert("users", UserList); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "AddUsersToProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "AddUsersToProject"); + +EndProcedure + +Procedure ReportPortal_ExcludeUsersFromProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ProjectName = "TestProject"; + + ArrayOfUsers = New Array; + ArrayOfUsers.Add("default"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", ProjectName); + Options.Insert("users", ArrayOfUsers); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "ExcludeUsersFromProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "ExcludeUsersFromProject"); + +EndProcedure + +Procedure ReportPortal_GetLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchUUID = FunctionParameters["RPortal_TestLaunch"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", LaunchUUID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunch", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetLaunchItems(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchItems", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchItems"); + +EndProcedure + +Procedure ReportPortal_GetItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ItemUUID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", ItemUUID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItem", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetItemLogs(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItemId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("item", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemLogs", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemLogs"); + +EndProcedure + +Procedure ReportPortal_UpdateLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + LaunchStructure = New Structure; + LaunchStructure.Insert("description", "New description"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + Options.Insert("params", LaunchStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "UpdateLaunch"); + +EndProcedure + +Procedure ReportPortal_UpdateItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItemId"]; + Project = "Test"; + + LaunchStructure = New Structure; + LaunchStructure.Insert("description", "New description"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", ElementID); + Options.Insert("params", LaunchStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "UpdateItem"); + +EndProcedure + +Procedure ReportPortal_DeleteLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteLaunch"); + +EndProcedure + +Procedure ReportPortal_DeleteItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItemId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteItem"); + +EndProcedure + +Procedure ReportPortal_GetLaunchReport(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + Options.Insert("format", "html"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchReport", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchReport"); + +EndProcedure + +Procedure ReportPortal_CreateUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Name = "testproject"; + + UserStructure = New Structure; + UserStructure.Insert("active" , True); + UserStructure.Insert("login" , "test"); + UserStructure.Insert("password" , "G00d_Pass"); + UserStructure.Insert("fullName" , "Test User"); + UserStructure.Insert("email" , "test@example.com"); + UserStructure.Insert("accountRole" , "USER"); + UserStructure.Insert("projectRole" , "MEMBER"); + UserStructure.Insert("defaultProject", "test"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("params", UserStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateUser", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeleteUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + UserID = FunctionParameters["RPortal_TestUser"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteUser"); + +EndProcedure + +Procedure ReportPortal_GetUserFieldsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserFieldsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserFieldsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserFieldsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserFieldsStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_UpdateUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Login = "test"; + + UserStructure = New Structure; + UserStructure.Insert("fullName", "Updated Test User"); + UserStructure.Insert("email" , "updated@example.com"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("login", Login); + Options.Insert("params", UserStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "UpdateUser"); + +EndProcedure + +Procedure ReportPortal_GetCurrentUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetCurrentUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetCurrentUser"); + +EndProcedure + +Procedure ReportPortal_GetUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Login = "test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("login", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUser"); + +EndProcedure + +Procedure ReportPortal_GetUsers(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUsers"); + +EndProcedure + +Procedure ReportPortal_GetUserProjects(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Login = "test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("login", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserProjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserProjects"); + +EndProcedure + +#EndRegion // ReportPortal + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure RPortal_Авторизация() Export + RPortal_Authorization(); +EndProcedure + +Procedure RPortal_УправлениеТестами() Export + RPortal_TestManagement(); +EndProcedure + +Procedure RPortal_ЗаписьЛогов() Export + RPortal_LogRecording(); +EndProcedure + +Procedure RPortal_УправлениеПроектами() Export + RPortal_ProjectManagement(); +EndProcedure + +Procedure RPortal_УправлениеПользователями() Export + RPortal_UserManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl index 4ae8b1ab54..ceaf55f950 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_S3.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1562 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("S3"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("S3"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region S3 + +Procedure AWS_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); + + For Each TestParameters In OptionArray Do + + S3_GetBasicDataStructure(TestParameters); + S3_SendRequestWithoutBody(TestParameters); + S3_SendRequestWithBody(TestParameters); + + EndDo; + +EndProcedure + +Procedure AWS_BucketsManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); + + For Each TestParameters In OptionArray Do + + S3_CreateBucket(TestParameters); + S3_ListBuckets(TestParameters); + S3_HeadBucket(TestParameters); + S3_PutBucketTagging(TestParameters); + S3_GetBucketTagging(TestParameters); + S3_DeleteBucketTagging(TestParameters); + S3_PutBucketEncryption(TestParameters); + S3_GetBucketEncryption(TestParameters); + S3_DeleteBucketEncryption(TestParameters); + S3_PutBucketVersioning(TestParameters); + S3_GetBucketVersioning(TestParameters); + S3_DeleteBucket(TestParameters); + + EndDo; + +EndProcedure + +Procedure AWS_ObjectsManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); + + For Each TestParameters In OptionArray Do + + S3_CreateBucket(TestParameters); + S3_PutObject(TestParameters); + S3_UploadFullObject(TestParameters); + S3_InitPartsUpload(TestParameters); + S3_UploadObjectPart(TestParameters); + S3_FinishPartsUpload(TestParameters); + S3_AbortMultipartUpload(TestParameters); + S3_HeadObject(TestParameters); + S3_CopyObject(TestParameters); + S3_PutObjectTagging(TestParameters); + S3_GetObjectTagging(TestParameters); + S3_DeleteObjectTagging(TestParameters); + S3_ListObjects(TestParameters); + S3_ListObjectVersions(TestParameters); + S3_GetObject(TestParameters); + S3_GetObjectDownloadLink(TestParameters); + S3_DeleteObject(TestParameters); + S3_DeleteBucket(TestParameters); + S3_GetObjectUploadLink(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // S3 + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region S3 + +Procedure S3_GetBasicDataStructure(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBasicDataStructure"); + +EndProcedure + +Procedure S3_SendRequestWithoutBody(FunctionParameters) + + URL = FunctionParameters["S3_URL"] + "/opi-newbucket2"; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + Method = "GET"; + + Options = New Structure; + Options.Insert("method", Method); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "SendRequestWithoutBody", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "SendRequestWithoutBody"); + +EndProcedure + +Procedure S3_SendRequestWithBody(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Method = "PUT"; + Body = "C:\test_data\document.docx"; // URL, Path or Binary Data + + Options = New Structure; + Options.Insert("method", Method); + Options.Insert("basic", BasicData); + Options.Insert("body", Body); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "SendRequestWithBody", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "SendRequestWithBody"); + +EndProcedure + +Procedure S3_CreateBucket(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Result = OPI_S3.DeleteBucket(Name, BasicData, Directory); // SKIP + OPI_TestDataRetrieval.Process(Result, "S3", "CreateBucket", "Deletion"); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "CreateBucket", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "CreateBucket"); + +EndProcedure + +Procedure S3_DeleteBucket(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucket", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteBucket"); + +EndProcedure + +Procedure S3_ListBuckets(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + Options = New Structure; + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListBuckets", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "ListBuckets"); + +EndProcedure + +Procedure S3_HeadBucket(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadBucket", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "HeadBucket"); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + Options.Insert("account", "1234"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadBucket", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "HeadBucket", "Account"); + +EndProcedure + +Procedure S3_GetBucketEncryption(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketEncryption", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBucketEncryption"); + +EndProcedure + +Procedure S3_DeleteBucketEncryption(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucketEncryption", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteBucketEncryption"); + +EndProcedure + +Procedure S3_PutBucketEncryption(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + XmlConfig = " + | + | + | AES256 + | + | + |"; + + TFN = GetTempFileName("xml"); // SKIP + GetBinaryDataFromString(XmlConfig).Write(TFN); // SKIP + XmlConfig = TFN; // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("conf", XmlConfig); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketEncryption", Options); + + // END + + OPI_Tools.RemoveFileWithTry(XmlConfig, "Error deleting file after test"); + + OPI_TestDataRetrieval.Process(Result, "S3", "PutBucketEncryption"); + +EndProcedure + +Procedure S3_GetBucketTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBucketTagging"); + +EndProcedure + +Procedure S3_PutBucketTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + TagStructure = New Structure; + TagStructure.Insert("MyTag1", "SomeValue"); + TagStructure.Insert("MyTag2", "AnotherOne"); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("tagset", TagStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutBucketTagging"); + +EndProcedure + +Procedure S3_DeleteBucketTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucketTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteBucketTagging"); + +EndProcedure + +Procedure S3_GetBucketVersioning(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketVersioning", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBucketVersioning"); + +EndProcedure + +Procedure S3_PutBucketVersioning(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + Status = True; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("status", Status); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketVersioning", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutBucketVersioning"); + +EndProcedure + +Procedure S3_PutObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Name = "picture.jpg"; + Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("data", Entity); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "PutObject"); // SKIP + + Name = "fileChunked.mp3"; + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + + BasicData.Insert("ChunkSize", 5242880); // Size parts for upload in multiple of requests + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("data", Entity); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutObject", "ByParts"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData, , , Directory); + +EndProcedure + +Procedure S3_UploadFullObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "pictureSmall.jpg"; + Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("data", Entity); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "UploadFullObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadFullObject"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData, , , Directory); + +EndProcedure + +Procedure S3_DeleteObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteObject"); + +EndProcedure + +Procedure S3_HeadObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "HeadObject"); + +EndProcedure + +Procedure S3_CopyObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + SourcePath = "picture.jpg"; + DestinationBucket = "newbucket2"; + + DestinationPath = "new_picture.jpg"; + SourceBucket = FunctionParameters["S3_DB"]; + SourceBucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("sname", SourcePath); + Options.Insert("sbucket", DestinationBucket); + Options.Insert("name", DestinationPath); + Options.Insert("bucket", SourceBucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "CopyObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "CopyObject"); + + OPI_S3.DeleteObject(DestinationPath, SourceBucket, BasicData, , , Directory); + +EndProcedure + +Procedure S3_PutObjectTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + TagStructure = New Structure; + + TagStructure.Insert("MyTag1", "SomeValue"); + TagStructure.Insert("MyTag2", "AnotherOne"); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("tagset", TagStructure); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObjectTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutObjectTagging"); + +EndProcedure + +Procedure S3_GetObjectTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectTagging"); + +EndProcedure + +Procedure S3_DeleteObjectTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteObjectTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteObjectTagging"); + +EndProcedure + +Procedure S3_ListObjects(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListObjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "ListObjects"); + +EndProcedure + +Procedure S3_ListObjectVersions(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Prefix = "pic"; + Options = New Structure; + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("prefix", Prefix); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListObjectVersions", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "ListObjectVersions"); + +EndProcedure + +Procedure S3_GetObject(FunctionParameters) + + Image = FunctionParameters["Picture"]; // SKIP + OPI_TypeConversion.GetBinaryData(Image); // SKIP + RequiredSize = Image.Size(); // SKIP + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", , RequiredSize); // SKIP + + TempFile = GetTempFileName(); + BasicData.Insert("ChunkSize", 200000); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("out", TempFile); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", "File", RequiredSize); + + Name = "bigfile.exe"; + Bucket = "newbucket2"; + + BigTempFile = GetTempFileName(); + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("out", BigTempFile); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", "Big file", 34432400); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", "Big BD", 34432400); + + OPI_Tools.RemoveFileWithTry(BigTempFile, "Failed to delete the temporary file after the test!!"); + OPI_Tools.RemoveFileWithTry(TempFile , "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure S3_InitPartsUpload(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + Entity = OPI_HTTPRequests.Get(Entity); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TestDataRetrieval.Process(Result, "S3", "InitPartsUpload"); // SKIP + + UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; + TotalSize = Entity.Size(); + ChunkSize = 5242880; + BytesRead = 0; + PartNumber = 1; + + DataReader = New DataReader(Entity); + SourceStream = DataReader.SourceStream(); + TagsArray = New Array; + + While BytesRead < TotalSize Do + + CurrentReading = DataReader.Read(ChunkSize); + CurrentData = CurrentReading.GetBinaryData(); + + If CurrentData.Size() = 0 Then + Break; + EndIf; + + Result = OPI_S3.UploadObjectPart(Name + , Bucket + , BasicData + , UploadID + , PartNumber + , CurrentData + , Directory); + + OPI_TestDataRetrieval.Process(Result, "S3", "InitPartsUpload", "Part"); // SKIP + + BytesRead = SourceStream.CurrentPosition(); + + ETag = Result["headers"]["Etag"]; + ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); + + TagsArray.Add(ETag); + + PartNumber = PartNumber + 1; + + EndDo; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("tags", TagsArray); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "InitPartsUpload", "Completion"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +Procedure S3_FinishPartsUpload(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + Entity = OPI_HTTPRequests.Get(Entity); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "FinishPartsUpload", "Start"); // SKIP + + UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; + TotalSize = Entity.Size(); + ChunkSize = 5242880; + BytesRead = 0; + PartNumber = 1; + + DataReader = New DataReader(Entity); + SourceStream = DataReader.SourceStream(); + TagsArray = New Array; + + While BytesRead < TotalSize Do + + CurrentReading = DataReader.Read(ChunkSize); + CurrentData = CurrentReading.GetBinaryData(); + + If CurrentData.Size() = 0 Then + Break; + EndIf; + + Result = OPI_S3.UploadObjectPart(Name + , Bucket + , BasicData + , UploadID + , PartNumber + , CurrentData + , Directory); + + OPI_TestDataRetrieval.Process(Result, "S3", "FinishPartsUpload", "Part"); // SKIP + + BytesRead = SourceStream.CurrentPosition(); + + ETag = Result["headers"]["Etag"]; + ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); + + TagsArray.Add(ETag); + + PartNumber = PartNumber + 1; + + EndDo; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("tags", TagsArray); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "FinishPartsUpload"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +Procedure S3_UploadObjectPart(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + Entity = OPI_HTTPRequests.Get(Entity); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadObjectPart", "Start"); // SKIP + + UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; + TotalSize = Entity.Size(); + ChunkSize = 5242880; + BytesRead = 0; + PartNumber = 1; + + DataReader = New DataReader(Entity); + SourceStream = DataReader.SourceStream(); + TagsArray = New Array; + + While BytesRead < TotalSize Do + + CurrentReading = DataReader.Read(ChunkSize); + CurrentData = CurrentReading.GetBinaryData(); + + If CurrentData.Size() = 0 Then + Break; + EndIf; + + Result = OPI_S3.UploadObjectPart(Name + , Bucket + , BasicData + , UploadID + , PartNumber + , CurrentData + , Directory); + + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadObjectPart"); // SKIP + + BytesRead = SourceStream.CurrentPosition(); + + ETag = Result["headers"]["Etag"]; + ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); + + TagsArray.Add(ETag); + + PartNumber = PartNumber + 1; + + EndDo; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("tags", TagsArray); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadObjectPart", "Completion"); // SKIP + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +Procedure S3_AbortMultipartUpload(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Start = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"]; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "AbortMultipartUpload", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "AbortMultipartUpload"); + +EndProcedure + +Procedure S3_GetObjectDownloadLink(FunctionParameters) + + Image = FunctionParameters["Picture"]; // SKIP + OPI_TypeConversion.GetBinaryData(Image); // SKIP + RequiredSize = Image.Size(); // SKIP + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("expires", 7200); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectDownloadLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectDownloadLink"); + + Result = OPI_HTTPRequests.Get(Result); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectDownloadLink", "Check", RequiredSize); + +EndProcedure + +Procedure S3_GetObjectUploadLink(FunctionParameters) + + Image = FunctionParameters["Picture"]; // SKIP + OPI_TypeConversion.GetBinaryData(Image); // SKIP + RequiredSize = Image.Size(); // SKIP + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "pictureU.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = "newbucket2"; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("expires", 7200); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectUploadLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectUploadLink"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(Result) + .SetBinaryBody(Image) + .ProcessRequest("PUT"); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectUploadLink", "Upload"); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadObject", Options); + + OPI_TestDataRetrieval.Process(Check, "S3", "GetObjectUploadLink", "Check", RequiredSize); + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +#EndRegion // S3 + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure AWS_ОбщиеМетоды() Export + AWS_CommonMethods(); +EndProcedure + +Procedure AWS_РаботаСБакетами() Export + AWS_BucketsManagement(); +EndProcedure + +Procedure AWS_РаботаСОбъектами() Export + AWS_ObjectsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl index 4ae8b1ab54..1efa9c448b 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SFTP.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1716 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("SFTP"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("SFTP"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region SFTP + +Procedure SF_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SFTP_CreateConnection(TestParameters); + SFTP_GetConnectionConfiguration(TestParameters); + SFTP_IsConnector(TestParameters); + SFTP_CloseConnection(TestParameters); + SFTP_GetSettingsLoginPassword(TestParameters); + SFTP_GetSettingsPrivateKey(TestParameters); + SFTP_GetSettingsViaAgent(TestParameters); + SFTP_GetSettingsKI(TestParameters); + SFTP_GetProxySettings(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +Procedure SF_DirectoryManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SFTP_GetCurrentDirectory(TestParameters); + SFTP_ListObjects(TestParameters); + SFTP_CreateNewDirectory(TestParameters); + SFTP_DeleteDirectory(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +Procedure SF_FileManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SFTP_UploadFile(TestParameters); + SFTP_GetFileInformation(TestParameters); + SFTP_GetFileData(TestParameters); + SFTP_SaveFile(TestParameters); + SFTP_UpdatePath(TestParameters); + SFTP_DeleteFile(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +#EndRegion // SFTP + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region SFTP + +Procedure SFTP_CreateConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Result = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "CreateConnection", Postfix); + +EndProcedure + +Procedure SFTP_CreateNewDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "CreateNewDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "CreateNewDirectory", Postfix); + +EndProcedure + +Procedure SFTP_DeleteDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "DeleteDirectory", Postfix); + +EndProcedure + +Procedure SFTP_GetCurrentDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetCurrentDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetCurrentDirectory", Postfix); + +EndProcedure + +Procedure SFTP_ListObjects(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "test_folder"); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "ListObjects", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "test_folder"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result, "SFTP", "ListObjects", Postfix + ", No recursion"); + +EndProcedure + +Procedure SFTP_UploadFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Image = "C:\pic.png"; + + Image = FunctionParameters["Picture"]; // SKIP + TFN = GetTempFileName("png"); // SKIP + FileCopy(Image, TFN); // SKIP + Image = TFN; // SKIP + + ImageDD = New BinaryData(Image); + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("file", Image); + Options.Insert("path", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UploadFile", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("file", ImageDD); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UploadFile", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + UploadedFile = New File(Image); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UploadFile", Postfix , UploadedFile.Size()); + OPI_TestDataRetrieval.Process(Result2, "SFTP", "UploadFile", "Binary, " + Postfix, ImageDD.Size()); + + FileSizeLocal = UploadedFile.Size(); + FileSizeLocalBD = ImageDD.Size(); + + FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, "pic_from_disk.png")["data"]["size"]; + FileSizeRemoteBD = OPI_SFTP.GetFileInformation(Connection, "files_folder/pic_from_binary.png")["data"]["size"]; + + OPI_TestDataRetrieval.Process(FileSizeLocal , "SFTP", "SaveFile", "File size, " + Postfix , FileSizeRemote); + OPI_TestDataRetrieval.Process(FileSizeLocalBD, "SFTP", "SaveFile", "File size, BD, " + Postfix, FileSizeRemoteBD); + + For N = 1 To 7 Do + + Result = OPI_SFTP.UploadFile(Connection, Image, "pic_from_disk.png"); + Result2 = OPI_SFTP.UploadFile(Connection, ImageDD, "files_folder/pic_from_binary.png"); + + If Not Result["result"] Then + OPI_TestDataRetrieval.Process(Result, "SFTP", "UploadFile", "Multiple, " + Postfix, ImageDD.Size()); + EndIf; + + If Not Result2["result"] Then + OPI_TestDataRetrieval.Process(Result2, "SFTP", "UploadFile", "Multiple, binary, " + Postfix, ImageDD.Size()); + EndIf; + + EndDo; + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure SFTP_DeleteFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteFile", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "SFTP", "DeleteFile", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteFile", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "DeleteFile", "Nonexistent, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder"); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "DeleteFile", "Check, " + Postfix); + +EndProcedure + +Procedure SFTP_IsConnector(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + Result = OPI_SFTP.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "IsConnector", Postfix); + + Result = OPI_SFTP.IsConnector("a"); + + OPI_TestDataRetrieval.Process(Result, "SFTP", "IsConnector", "Error, " + Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsLoginPassword(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsLoginPassword", Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsPrivateKey(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("key", PrivateKey); + Options.Insert("pub", PublicKey); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsPrivateKey", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsPrivateKey", Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsViaAgent(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsViaAgent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsViaAgent", Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsKI(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add("yes"); + AnswersArray.Add(Password); + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("prompts", AnswersArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsKI", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsKI", Postfix); + +EndProcedure + +Procedure SFTP_GetProxySettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetProxySettings", Postfix); + +EndProcedure + +Procedure SFTP_GetConnectionConfiguration(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Options = New Structure; + Options.Insert("set", SFTPSettings); + Options.Insert("proxy", ProxySettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetConnectionConfiguration", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetConnectionConfiguration", Postfix); + + Options = New Structure; + Options.Insert("conn", Result); + Options.Insert("comm", "whoami"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetConnectionConfiguration", "Check, " + Postfix); + +EndProcedure + +Procedure SFTP_CloseConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Result = OPI_SFTP.CloseConnection(Connection); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "CloseConnection", Postfix); + +EndProcedure + +Procedure SFTP_SaveFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + + Path = "pic_from_disk.png"; + FileName = GetTempFileName("bin"); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", Path); + Options.Insert("file", FileName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "SaveFile", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "SaveFile", Postfix); + + UploadedFile = New File(FileName); + FileSizeLocal = UploadedFile.Size(); + FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, Path)["data"]["size"]; + + OPI_TestDataRetrieval.Process(FileSizeLocal, "SFTP", "SaveFile", "File size, " + Postfix, FileSizeRemote); + + Path = "files_folder/pic_from_binary.png"; + + For N = 1 To 20 Do + + Result = OPI_SFTP.SaveFile(Connection, Path, FileName); + + If Not Result["result"] Then + OPI_TestDataRetrieval.Process(Result, "SFTP", "SaveFile", "Multiple, " + Postfix); + EndIf; + + EndDo; + + OPI_Tools.RemoveFileWithTry(FileName, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure SFTP_GetFileData(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + + Path = "pic_from_disk.png"; + Result = OPI_SFTP.GetFileData(Connection, Path); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetFileData", Postfix); + + FileSizeLocal = Result.Size(); + FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, Path)["data"]["size"]; + + OPI_TestDataRetrieval.Process(FileSizeLocal, "SFTP", "GetFileData", "File size, " + Postfix, FileSizeRemote); + + Path = "files_folder/pic_from_binary.png"; + + For N = 1 To 20 Do + + Result = OPI_SFTP.GetFileData(Connection, Path); + + If Not TypeOf(Result) = Type("BinaryData") Then + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetFileData", "Multiple, " + Postfix); + EndIf; + + EndDo; + +EndProcedure + +Procedure SFTP_UpdatePath(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "pic_from_disk.png"); + Options.Insert("new", "files_folder/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UpdatePath", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, Old, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, New, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "files_folder/pic_from_disk.png"); + Options.Insert("new", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UpdatePath", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, Old, Back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, New, Back, " + Postfix); + +EndProcedure + +Procedure SFTP_GetFileInformation(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "SFTP", "GetFileInformation", Postfix); + +EndProcedure + +#EndRegion // SFTP + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure SF_ОсновныеМетоды() Export + SF_CommonMethods(); +EndProcedure + +Procedure SF_РаботаСДиректориями() Export + SF_DirectoryManagement(); +EndProcedure + +Procedure SF_РаботаСФайлами() Export + SF_FileManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl index 4ae8b1ab54..fe8f2cc272 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SQLite.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,927 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("SQLite"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("SQLite"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region SQLite + +Procedure SQLL_CommonMethods() Export + + TestParameters = New Structure; + + Base = GetTempFileName("sqlite"); + OPI_TestDataRetrieval.WriteParameter("SQLite_DB", Base); + OPI_Tools.AddField("SQLite_DB", Base, "String", TestParameters); + + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("SQLite_Ext" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("SQLite_ExtLinux", TestParameters); + + SQLite_CreateConnection(TestParameters); + SQLite_CloseConnection(TestParameters); + SQLite_ExecuteSQLQuery(TestParameters); + SQLite_IsConnector(TestParameters); + SQLite_ConnectExtension(TestParameters); + + OPI_Tools.RemoveFileWithTry(Base, "Database file deletion error"); + +EndProcedure + +Procedure SQLL_ORM() Export + + TestParameters = New Structure; + + Base = GetTempFileName("sqlite"); + + Connection = OPI_SQLite.CreateConnection(Base); + TestParameters.Insert("SQLite_DB", Connection); + + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + SQLite_CreateTable(TestParameters); + SQLite_AddRecords(TestParameters); + SQLite_EnsureRecords(TestParameters); + SQLite_GetRecords(TestParameters); + SQLite_UpdateRecords(TestParameters); + SQLite_DeleteRecords(TestParameters); + SQLite_GetTableInformation(TestParameters); + SQLite_AddTableColumn(TestParameters); + SQLite_DeleteTableColumn(TestParameters); + SQLite_EnsureTable(TestParameters); + SQLite_ClearTable(TestParameters); + SQLite_DeleteTable(TestParameters); + SQLite_GetRecordsFilterStructure(TestParameters); + + OPI_TestDataRetrieval.WriteParameter("SQLite_DB", Base); + OPI_Tools.AddField("SQLite_DB", Base, "String", TestParameters); + + SQLite_CreateTable(TestParameters); + SQLite_AddRecords(TestParameters); + SQLite_EnsureRecords(TestParameters); + SQLite_GetRecords(TestParameters); + SQLite_UpdateRecords(TestParameters); + SQLite_DeleteRecords(TestParameters); + SQLite_GetTableInformation(TestParameters); + SQLite_AddTableColumn(TestParameters); + SQLite_DeleteTableColumn(TestParameters); + SQLite_EnsureTable(TestParameters); + SQLite_ClearTable(TestParameters); + SQLite_DeleteTable(TestParameters); + SQLite_GetRecordsFilterStructure(TestParameters); + + OPI_Tools.RemoveFileWithTry(Base, "Database file deletion error"); + +EndProcedure + +#EndRegion // SQLite + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region SQLite + +Procedure SQLite_CreateConnection(FunctionParameters) + + TFN = GetTempFileName("sqlite"); + + LocalBase = OPI_SQLite.CreateConnection(TFN); + InMemoryBase = OPI_SQLite.CreateConnection(); + + // END + + OPI_TestDataRetrieval.Process(LocalBase , "SQLite", "CreateConnection"); + OPI_TestDataRetrieval.Process(InMemoryBase, "SQLite", "CreateConnection", "IM"); + + Closing = OPI_SQLite.CloseConnection(LocalBase); + + OPI_TestDataRetrieval.Process(Closing, "SQLite", "CreateConnection", "Closing"); + + OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); + +EndProcedure + +Procedure SQLite_CloseConnection(FunctionParameters) + + TFN = GetTempFileName("sqlite"); + + Connection = OPI_SQLite.CreateConnection(TFN); + + OPI_TestDataRetrieval.Process(Connection, "SQLite", "CloseConnection", "Openning"); // SKIP + + Closing = OPI_SQLite.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Closing, "SQLite", "CloseConnection"); + + OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); + +EndProcedure + +Procedure SQLite_ExecuteSQLQuery(FunctionParameters) + + TFN = GetTempFileName("sqlite"); + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Connection = OPI_SQLite.CreateConnection(TFN); + + OPI_TestDataRetrieval.Process(Connection, "SQLite", "ExecuteSQLQuery", "Openning"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + |id INTEGER PRIMARY KEY, + |name TEXT, + |age INTEGER, + |salary REAL, + |is_active BOOLEAN, + |created_at DATETIME, + |data BLOB + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; + + ParameterArray = New Array; + ParameterArray.Add("Vitaly"); // TEXT + ParameterArray.Add(25); // INTEGER + ParameterArray.Add(1000.12); // REAL + ParameterArray.Add(True); // BOOL + ParameterArray.Add(OPI_Tools.GetCurrentDate()); // DATETIME + ParameterArray.Add(New Structure("blob", Image)); // BLOB + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", , Image); // SKIP + + // Transaction + + QueryText = "BEGIN TRANSACTION; + | CREATE TABLE IF NOT EXISTS users ( + | id INTEGER PRIMARY KEY AUTOINCREMENT, + | name TEXT NOT NULL, + | age INTEGER NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + | COMMIT;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Transaction"); // SKIP + + // With extension + + If OPI_Tools.IsWindows() Then + Extension = FunctionParameters["SQLite_Ext"]; // URL, Path or Binary Data + Else + Extension = FunctionParameters["SQLite_ExtLinux"]; // URL, Path or Binary Data + EndIf; + + EntryPoint = "sqlite3_uuid_init"; + + ExtensionMap = New Map; + ExtensionMap.Insert(Extension, EntryPoint); + + QueryText = "SELECT uuid4();"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + Options.Insert("exts", ExtensionMap); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Extension"); // SKIP + + Closing = OPI_SQLite.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Closing"); + + OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); + +EndProcedure + +Procedure SQLite_IsConnector(FunctionParameters) + + Connection = OPI_SQLite.CreateConnection(); + Result = OPI_SQLite.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "IsConnector"); + +EndProcedure + +Procedure SQLite_CreateTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "INTEGER PRIMARY KEY"); + ColoumnsStruct.Insert("name" , "TEXT"); + ColoumnsStruct.Insert("age" , "INTEGER"); + ColoumnsStruct.Insert("salary" , "REAL"); + ColoumnsStruct.Insert("is_active" , "BOOLEAN"); + ColoumnsStruct.Insert("created_at", "DATETIME"); + ColoumnsStruct.Insert("data" , "BLOB"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "CreateTable"); + + ColoumnsMap = New Map; + ColoumnsMap.Insert("id" , "INTEGER PRIMARY KEY"); + ColoumnsMap.Insert("[An obscure column]", "TEXT"); + + Options = New Structure; + Options.Insert("table", "test1"); + Options.Insert("cols", ColoumnsMap); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "CreateTable", "An obscure column"); + +EndProcedure + +Procedure SQLite_AddRecords(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + PictureFile = GetTempFileName("png"); + Image.Write(PictureFile); // PictureFile - File to disk + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("name" , "Vitaly"); // TEXT + RowStructure2.Insert("age" , 25); // INTEGER + RowStructure2.Insert("salary" , 1000.12); // REAL + RowStructure2.Insert("is_active" , True); // BOOL + RowStructure2.Insert("created_at", OPI_Tools.GetCurrentDate()); // DATETIME + RowStructure2.Insert("data" , New Structure("blob", Image)); // BLOB + + RowStructure1 = New Structure; + RowStructure1.Insert("name" , "Lesha"); // TEXT + RowStructure1.Insert("age" , 20); // INTEGER + RowStructure1.Insert("salary" , 200.20); // REAL + RowStructure1.Insert("is_active" , False); // BOOL + RowStructure1.Insert("created_at", OPI_Tools.GetCurrentDate()); // DATETIME + RowStructure1.Insert("data" , New Structure("blob", PictureFile)); // BLOB + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("trn", Ложь); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "No transaction"); + + RowStructure1.Insert("error", "Lesha"); + DataArray.Add(RowStructure1); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "Field error"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("trn", Ложь); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "Error without transaction"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", "not valid json"); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "JSON Error"); + + RowMap = New Map; + RowMap.Insert("[An obscure column]", "yo"); + + Options = New Structure; + Options.Insert("table", "test1"); + Options.Insert("rows", RowMap); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "An obscure column"); + + OPI_Tools.RemoveFileWithTry(PictureFile, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure SQLite_GetRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Fields = New Array; + Fields.Add("name"); + Fields.Add("salary"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "name"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Vitaly"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "age"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 30"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("created_at", "DESC"); + Count = 1; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','age','salary','is_active','created_at']"); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords", "No parameters"); + + FilterStructure2.Insert("type", "SOMETHING"); + Filters.Add(FilterStructure2); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','age','salary','is_active','created_at']"); + Options.Insert("filter", Filters); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords", "Error"); + + Options = New Structure; + Options.Insert("table", "test1"); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords", "An obscure column"); + +EndProcedure + +Procedure SQLite_UpdateRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("name" , "Vitaly A."); + FieldsStructure.Insert("salary", "999999"); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "name"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", "Vitaly"); + FilterStructure.Insert("union", "AND"); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("values", FieldsStructure); + Options.Insert("filter", FilterStructure); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "UpdateRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "UpdateRecords"); + + FilterStructure.Insert("value", "Vitaly A."); + + Filters = New Array; + Filters.Add(FilterStructure); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','salary']"); + Options.Insert("filter", Filters); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "UpdateRecords", "Check", FieldsStructure); + +EndProcedure + +Procedure SQLite_DeleteRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "name"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", "Vitaly A."); + FilterStructure.Insert("union", "AND"); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", FilterStructure); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','salary']"); + Options.Insert("filter", Filters); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "DeleteRecords", "Check"); + +EndProcedure + +Procedure SQLite_GetTableInformation(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetTableInformation"); + +EndProcedure + +Procedure SQLite_EnsureRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test_merge"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INTEGER PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "TEXT"); // SKIP + ColoumnsStruct.Insert("age" , "INTEGER"); // SKIP + ColoumnsStruct.Insert("salary" , "REAL"); // SKIP + OPI_SQLite.CreateTable(Table, ColoumnsStruct, Base); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , 1); + RowStructure2.Insert("name" , "Vitaly"); + RowStructure2.Insert("age" , 25); + RowStructure2.Insert("salary", 1000.12); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , 2); + RowStructure1.Insert("name" , "Lesha"); + RowStructure1.Insert("age" , 20); + RowStructure1.Insert("salary", 200.20); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , "Vitaly Updated"); + RowStructure2.Insert("salary", 1500.50); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , 3); + StringStructure3.Insert("name" , "Anton"); + StringStructure3.Insert("age" , 30); + StringStructure3.Insert("salary", 3000.00); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureRecords", "Updating check"); + + OPI_SQLite.DeleteTable(Table, Base); + +EndProcedure + +Procedure SQLite_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +Procedure SQLite_DeleteTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "DeleteTable", "Check"); + + OPI_SQLite.DeleteTable("test1", Base); + +EndProcedure + +Procedure SQLite_ClearTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "ClearTable", "Table"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "ClearTable", "Check"); + +EndProcedure + +Procedure SQLite_ConnectExtension(FunctionParameters) + + If OPI_Tools.IsWindows() Then + Extension = FunctionParameters["SQLite_Ext"]; // URL, Path or Binary Data + Else + Extension = FunctionParameters["SQLite_ExtLinux"]; // URL, Path or Binary Data + EndIf; + + Base = FunctionParameters["SQLite_DB"]; + EntryPoint = "sqlite3_uuid_init"; + + Connection = OPI_SQLite.CreateConnection(Base); + Result = OPI_SQLite.ConnectExtension(Extension, EntryPoint, Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ConnectExtension"); + + TFN = GetTempFileName("dll"); + FileCopy(Extension, TFN); + + Result = OPI_SQLite.ConnectExtension(TFN, EntryPoint, Connection); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ConnectExtension", "Path"); + + Result = OPI_SQLite.ConnectExtension(New BinaryData(TFN), EntryPoint, Connection); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ConnectExtension", "Binary"); + + Result = OPI_SQLite.CloseConnection(Connection); + + OPI_Tools.RemoveFileWithTry(TFN, "Error deleting extension file"); + +EndProcedure + +Procedure SQLite_AddTableColumn(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + Name = "new_col"; + DataType = "TEXT"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddTableColumn", "Check"); + +EndProcedure + +Procedure SQLite_DeleteTableColumn(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + Name = "new_col"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure SQLite_EnsureTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + + Table = "test"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "INTEGER"); + ColoumnsStruct.Insert("code" , "INTEGER"); + ColoumnsStruct.Insert("name" , "TEXT"); + ColoumnsStruct.Insert("age" , "INTEGER"); + ColoumnsStruct.Insert("info" , "TEXT"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureTable", "Check 2", ColoumnsStruct); + +EndProcedure + +#EndRegion // SQLite + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure SQLL_ОсновныеМетоды() Export + SQLL_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl index 4ae8b1ab54..9225b839e8 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SSH.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,662 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("SSH"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("SSH"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region SSH + +Procedure SShell_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SSH_CreateConnection(TestParameters); + SSH_GetConnectionConfiguration(TestParameters); + SSH_ExecuteCommand(TestParameters); + SSH_CloseConnection(TestParameters); + SSH_IsConnector(TestParameters); + SSH_GetSettingsLoginPassword(TestParameters); + SSH_GetSettingsPrivateKey(TestParameters); + SSH_GetSettingsViaAgent(TestParameters); + SSH_GetSettingsKI(TestParameters); + SSH_GetProxySettings(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +#EndRegion // SSH + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region SSH + +Procedure SSH_CreateConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Result = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "CreateConnection", Postfix); + +EndProcedure + +Procedure SSH_ExecuteCommand(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + + If OPI_SSH.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("comm", "whoami"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "ExecuteCommand", Postfix); + +EndProcedure + +Procedure SSH_GetConnectionConfiguration(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Options = New Structure; + Options.Insert("set", SSHSettings); + Options.Insert("proxy", ProxySettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetConnectionConfiguration", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetConnectionConfiguration", Postfix); + + Options = New Structure; + Options.Insert("conn", Result); + Options.Insert("comm", "whoami"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetConnectionConfiguration", "Check, " + Postfix); + +EndProcedure + +Procedure SSH_CloseConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + + If OPI_SSH.IsConnector(Connection) Then + Result = OPI_SSH.CloseConnection(Connection); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "CloseConnection", Postfix); + +EndProcedure + +Procedure SSH_IsConnector(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = 2223; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + Result = OPI_SSH.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "IsConnector", Postfix); + + Result = OPI_SSH.IsConnector("a"); + + OPI_TestDataRetrieval.Process(Result, "SSH", "IsConnector", "Error, " + Postfix); + +EndProcedure + +Procedure SSH_GetSettingsLoginPassword(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsLoginPassword", Postfix); + +EndProcedure + +Procedure SSH_GetSettingsPrivateKey(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("key", PrivateKey); + Options.Insert("pub", PublicKey); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsPrivateKey", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsPrivateKey", Postfix); + +EndProcedure + +Procedure SSH_GetSettingsViaAgent(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsViaAgent", Postfix); + +EndProcedure + +Procedure SSH_GetSettingsKI(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add("yes"); + AnswersArray.Add(Password); + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("prompts", AnswersArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsKI", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsKI", Postfix); + +EndProcedure + +Procedure SSH_GetProxySettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetProxySettings", Postfix); + +EndProcedure + +#EndRegion // SSH + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure SShell_ОсновныеМетоды() Export + SShell_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl index 4ae8b1ab54..519fcfb425 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Slack.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,918 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Slack"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Slack"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Slack + +Procedure SlackGetData() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); + + Slack_GetBotInformation(TestParameters); + Slack_GetUserList(TestParameters); + Slack_GetWorkspaceList(TestParameters); + +EndProcedure + +Procedure Slack_SendDeleteMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); + + Slack_SendMessage(TestParameters); + Slack_EditMessage(TestParameters); + Slack_GetMessageReplyList(TestParameters); + Slack_GetMessageLink(TestParameters); + Slack_DeleteMessage(TestParameters); + Slack_SendEphemeralMessage(TestParameters); + Slack_GetDelayedMessageList(TestParameters); + Slack_GenerateImageBlock(TestParameters); + +EndProcedure + +Procedure Slack_CreateArchiveChannel() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); + + Slack_CreateChannel(TestParameters); + Slack_SetChannelTopic(TestParameters); + Slack_SetChannelGoal(TestParameters); + Slack_GetChannel(TestParameters); + Slack_InviteUsersToChannel(TestParameters); + Slack_KickUserFromChannel(TestParameters); + Slack_GetChannelHistory(TestParameters); + Slack_GetChannelUserList(TestParameters); + Slack_LeaveChannel(TestParameters); + Slack_JoinChannel(TestParameters); + Slack_RenameChannel(TestParameters); + Slack_ArchiveChannel(TestParameters); + Slack_GetChannelList(TestParameters); + +EndProcedure + +Procedure Slack_OpenCloseDialog() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); + + Slack_OpenDialog(TestParameters); + Slack_CloseDialog(TestParameters); + +EndProcedure + +Procedure Slack_UploadDeleteFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Slack_GetFilesList(TestParameters); + Slack_UploadFile(TestParameters); + Slack_MakeFilePublic(TestParameters); + Slack_MakeFilePrivate(TestParameters); + Slack_GetFileData(TestParameters); + Slack_DeleteFile(TestParameters); + +EndProcedure + +Procedure Slack_UploadDeleteExternalFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Slack_GetExternalFileList(TestParameters); + Slack_AddExternalFile(TestParameters); + Slack_GetExternalFile(TestParameters); + Slack_SendExternalFile(TestParameters); + Slack_DeleteExternalFile(TestParameters); + +EndProcedure + +#EndRegion // Slack + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Slack + +Procedure Slack_GetBotInformation(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetBotInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetBotInformation"); + +EndProcedure + +Procedure Slack_GetUserList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetUserList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetUserList"); + +EndProcedure + +Procedure Slack_GetWorkspaceList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetWorkspaceList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetWorkspaceList"); + +EndProcedure + +Procedure Slack_SendMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + // Text + + Text = "TestMessage1"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendMessage", , FunctionParameters, Text, Channel); // SKIP + + // With attachments (picture block in the example) + + Text = "Message with picture"; + Image = FunctionParameters["Picture"]; + BlockArray = New Array; + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("alt", "Image"); + + Block = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); + BlockArray.Add(Block); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + Options.Insert("blocks", BlockArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendMessage", "Image", FunctionParameters, Text, Channel); // SKIP + + // Sheduled + + Text = "Sheduled message"; + Hour = 3600; + Day = 24; + + SendingDate = OPI_Tools.GetCurrentDate() + (Day * Hour); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + Options.Insert("date", SendingDate); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendMessage", "Sheduled", FunctionParameters, Text, Channel); + + Token = FunctionParameters["Slack_Token"]; + Timestamp = Result["scheduled_message_id"]; + + OPI_Slack.DeleteMessage(Token, Channel, Timestamp, True); + +EndProcedure + +Procedure Slack_GenerateImageBlock(FunctionParameters) + + Image = FunctionParameters["Picture"]; + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("alt", "Image"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GenerateImageBlock"); + +EndProcedure + +Procedure Slack_EditMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Text = "TestMessage2"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "EditMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "EditMessage", , Text, Channel); + +EndProcedure + +Procedure Slack_GetMessageReplyList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetMessageReplyList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetMessageReplyList"); + +EndProcedure + +Procedure Slack_GetMessageLink(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetMessageLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetMessageLink", , Channel); + +EndProcedure + +Procedure Slack_DeleteMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "DeleteMessage"); + +EndProcedure + +Procedure Slack_SendEphemeralMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + User = FunctionParameters["Slack_User"]; + Image = FunctionParameters["Picture"]; + Text = "Ephemeral message"; + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("alt", "Image"); + + Block = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + Options.Insert("user", User); + Options.Insert("blocks", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendEphemeralMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendEphemeralMessage"); + +EndProcedure + +Procedure Slack_GetDelayedMessageList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetDelayedMessageList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetDelayedMessageList"); + +EndProcedure + +Procedure Slack_CreateChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Name = "testconv" + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "CreateChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "CreateChannel", , FunctionParameters, Name); + +EndProcedure + +Procedure Slack_SetChannelTopic(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + Topic = "TestTopic"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("theme", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SetChannelTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SetChannelTopic", , Topic); + +EndProcedure + +Procedure Slack_SetChannelGoal(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + Purpose = "TestGoal"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("purpose", Purpose); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SetChannelGoal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SetChannelGoal"); + +EndProcedure + +Procedure Slack_GetChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannel", , FunctionParameters["Slack_NewChannelName"]); + +EndProcedure + +Procedure Slack_InviteUsersToChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + User = FunctionParameters["Slack_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("users", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "InviteUsersToChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "InviteUsersToChannel", , FunctionParameters["Slack_NewChannelName"]); + +EndProcedure + +Procedure Slack_KickUserFromChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + User = FunctionParameters["Slack_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("user", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "KickUserFromChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "KickUserFromChannel"); + +EndProcedure + +Procedure Slack_GetChannelHistory(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelHistory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannelHistory"); + +EndProcedure + +Procedure Slack_GetChannelUserList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelUserList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannelUserList"); + +EndProcedure + +Procedure Slack_LeaveChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "LeaveChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "LeaveChannel"); + +EndProcedure + +Procedure Slack_JoinChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "JoinChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "JoinChannel", , FunctionParameters["Slack_NewChannelName"]); + +EndProcedure + +Procedure Slack_RenameChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + Name = "testconv" + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "RenameChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "RenameChannel", , Name); + +EndProcedure + +Procedure Slack_ArchiveChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "ArchiveChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "ArchiveChannel"); + +EndProcedure + +Procedure Slack_GetChannelList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannelList"); + +EndProcedure + +Procedure Slack_OpenDialog(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + User = FunctionParameters["Slack_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("users", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "OpenDialog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "OpenDialog", , FunctionParameters); + + Channel = Result["channel"]["id"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", "Test dialog"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "OpenDialog", "Message", FunctionParameters); + +EndProcedure + +Procedure Slack_CloseDialog(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Dialog = FunctionParameters["Slack_Dialog"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("conv", Dialog); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "CloseDialog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "CloseDialog"); + +EndProcedure + +Procedure Slack_GetFilesList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetFilesList"); + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFilesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetFilesList", "All"); + +EndProcedure + +Procedure Slack_UploadFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + File = FunctionParameters["Document"]; // URL, Binary Data or File path + + FileName = "megadoc.docx"; + Title = "NewFile"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "UploadFile", , FunctionParameters, FileName); // SKIP + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePublic"); // SKIP + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePrivate"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("title", Title); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "UploadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "UploadFile", "Channel", FunctionParameters, FileName); + OPI_Slack.DeleteFile(FunctionParameters["Slack_Token"], Result["files"][0]["id"]); + +EndProcedure + +Procedure Slack_MakeFilePublic(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "MakeFilePublic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePublic", "No record"); + +EndProcedure + +Procedure Slack_MakeFilePrivate(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "MakeFilePrivate", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePrivate", "No record"); + +EndProcedure + +Procedure Slack_GetFileData(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFileData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetFileData", , "megadoc.docx"); + +EndProcedure + +Procedure Slack_DeleteFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "DeleteFile"); + +EndProcedure + +Procedure Slack_GetExternalFileList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFileList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetExternalFileList"); + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFileList", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetExternalFileList", "All"); + +EndProcedure + +Procedure Slack_AddExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Title = "NewFile"; + File = FunctionParameters["Document"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", File); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "AddExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "AddExternalFile", , FunctionParameters, Title); + +EndProcedure + +Procedure Slack_GetExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_ExtFileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetExternalFile"); + +EndProcedure + +Procedure Slack_SendExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + FileID = FunctionParameters["Slack_ExtFileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + Options.Insert("channels", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendExternalFile"); + +EndProcedure + +Procedure Slack_DeleteExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_ExtFileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "DeleteExternalFile"); + +EndProcedure + +#EndRegion // Slack + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Слак_ПолучитьИнформацию() Export + SlackGetData(); +EndProcedure + +Procedure Слак_ОтправитьУдалитьСообщение() Export + Slack_SendDeleteMessage(); +EndProcedure + +Procedure Слак_СоздатьАрхивироватьКанал() Export + Slack_CreateArchiveChannel(); +EndProcedure + +Procedure Слак_ОткрытьЗакрытьДиалог() Export + Slack_OpenCloseDialog(); +EndProcedure + +Procedure Слак_ЗагрузитьУдалитьФайл() Export + Slack_UploadDeleteFile(); +EndProcedure + +Procedure Слак_ЗагрузитьУдалитьВФ() Export + Slack_UploadDeleteExternalFile(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl index 4ae8b1ab54..72887cffd3 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_TCP.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,773 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("TCP"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("TCP"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region TCP + +Procedure TC_Client() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("TCP_Address" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("TCP_AddressTLS", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Proxy_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Proxy_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Socks5_IP" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Socks5_Port" , TestParameters); + + TCP_CreateConnection(TestParameters); + TCP_CloseConnection(TestParameters); + TCP_ReadBinaryData(TestParameters); + TCP_SendBinaryData(TestParameters); + TCP_ReadLine(TestParameters); + TCP_SendLine(TestParameters); + TCP_ProcessRequest(TestParameters); + TCP_GetTLSSettings(TestParameters); + TCP_GetLastError(TestParameters); + TCP_GetProxySettings(TestParameters); + +EndProcedure + +Procedure TC_Server() Export + + TestParameters = New Structure; + + TCP_StartServer(TestParameters); + TCP_StopServer(TestParameters); + TCP_GetNextConnectionData(TestParameters); + TCP_GetConnectionData(TestParameters); + TCP_SendData(TestParameters); + TCP_CloseIncomingConnection(TestParameters); + TCP_CompleteSend(TestParameters); + TCP_FinishReceiving(TestParameters); + TCP_GetConnectionList(TestParameters); + TCP_IsServerObject(TestParameters); + TCP_GetLog(TestParameters); + TCP_GetLoggingSettings(TestParameters); + +EndProcedure + +#EndRegion // TCP + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region TCP + +Procedure TCP_CreateConnection(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TestDataRetrieval.Process(Connection, "TCP", "CreateConnection"); // SKIP + + OPI_TCP.CloseConnection(Connection); + + Address = "tcpbin.com:4243"; + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + ProxtUser = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + ProxyAddress = FunctionParameters["Socks5_IP"]; + ProxyPort = FunctionParameters["Socks5_Port"]; + + ProxyAddress = ?(ProxyAddress = "127.0.0.1", OPI_TestDataRetrieval.GetLocalhost(), ProxyAddress); // SKIP + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", "socks5"); + Options.Insert("login", ProxtUser); + Options.Insert("pass", ProxyPassword); + + Proxy = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + Connection = OPI_TCP.CreateConnection(Address, TLS, Proxy); + + // END + + OPI_TestDataRetrieval.Process(Connection, "TCP", "CreateConnection", "TLS"); + +EndProcedure + +Procedure TCP_CloseConnection(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + + Result = OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseConnection"); + +EndProcedure + +Procedure TCP_ReadBinaryData(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Message = "Hello server!" + Chars.LF; + Data = GetBinaryDataFromString(Message); + + OPI_TCP.SendBinaryData(Connection, Data); + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Result = OPI_TCP.ReadBinaryData(Connection, , Marker); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadBinaryData", , Message); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendBinaryData(Connection, Data); + Result = OPI_TCP.ReadBinaryData(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadBinaryData", "Timeout", Message); + +EndProcedure + +Procedure TCP_SendBinaryData(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Message = "Hello server!" + Chars.LF; + Data = GetBinaryDataFromString(Message); + + Result = OPI_TCP.SendBinaryData(Connection, Data); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Response = OPI_TCP.ReadBinaryData(Connection, , Marker); + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Response, "TCP", "SendBinaryData", , Message); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendBinaryData(Connection, Data); + Result = OPI_TCP.ReadBinaryData(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "SendBinaryData", "Timeout", Message); + +EndProcedure + +Procedure TCP_ProcessRequest(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Data = "Echo this!" + Chars.LF; + + Options = New Structure; + Options.Insert("address", Address); + Options.Insert("data", Data); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "ProcessRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "TCP", "ProcessRequest", , "Echo this!" + Chars.LF); // SKIP + + Address = FunctionParameters["TCP_AddressTLS"]; + + ProxtUser = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + ProxyAddress = FunctionParameters["Socks5_IP"]; + ProxyPort = FunctionParameters["Socks5_Port"]; + + ProxyAddress = ?(ProxyAddress = "127.0.0.1", OPI_TestDataRetrieval.GetLocalhost(), ProxyAddress); // SKIP + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", "socks5"); + Options.Insert("login", ProxtUser); + Options.Insert("pass", ProxyPassword); + + Proxy = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + Options = New Structure; + Options.Insert("address", Address); + Options.Insert("data", Data); + Options.Insert("tls", Tls); + Options.Insert("proxy", Proxy); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "ProcessRequest", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "ProcessRequest", "TLS", "Echo this!" + Chars.LF); + +EndProcedure + +Procedure TCP_ReadLine(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Data = "Hello server!" + Chars.LF; + + OPI_TCP.SendLine(Connection, Data); + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Result = OPI_TCP.ReadLine(Connection, , Marker); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadLine", , Data); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendLine(Connection, Data); + Result = OPI_TCP.ReadLine(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadLine", "Timeout", Data); + +EndProcedure + +Procedure TCP_SendLine(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Data = "Hello server!" + Chars.LF; + + Result = OPI_TCP.SendLine(Connection, Data); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Response = OPI_TCP.ReadLine(Connection, , Marker); + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Response, "TCP", "SendLine", , Data); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendLine(Connection, Data); + Result = OPI_TCP.ReadLine(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "SendLine", "Timeout", Data); + +EndProcedure + +Procedure TCP_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetTLSSettings"); + +EndProcedure + +Procedure TCP_GetLastError(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Data = "Hello server!" + Chars.LF; + + Sending = OPI_TCP.SendLine(Connection, Data); + Result = OPI_TCP.GetLastError(Connection); // SKIP + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLastError"); + +EndProcedure + +Procedure TCP_GetProxySettings(FunctionParameters) + + ProxyType = "socks5"; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Socks5_IP"]; + ProxyPort = FunctionParameters["Socks5_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetProxySettings"); + +EndProcedure + +Procedure TCP_StartServer(FunctionParameters) + + Port = 9876; + PoolSize = 10; + + Host = OPI_TCP.StartServer(Port, PoolSize); + + // END + + OPI_TestDataRetrieval.Process(Host, "TCP", "StartServer"); + + OPI_TCP.StopServer(Host); + +EndProcedure + +Procedure TCP_StopServer(FunctionParameters) + + Port = 9877; + Host = OPI_TCP.StartServer(Port); + + Result = OPI_TCP.StopServer(Host); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "StopServer"); + + ListResult = OPI_TCP.GetConnectionList(Host); + + OPI_TestDataRetrieval.Process(ListResult, "TCP", "StopServer", "List"); + + OPI_TypeConversion.GetLine(Port); + + Address = StrTemplate("127.0.0.1:%1", Port); + Client = OPI_TCP.CreateConnection(Address); + + OPI_TestDataRetrieval.Process(Client, "TCP", "StopServer", "Connection"); + +EndProcedure + +Procedure TCP_GetNextConnectionData(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Send message from client + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + Else + Message = "Hello from client!" + Chars.LF; + OPI_TCP.SendLine(ClientObject, Message); + EndIf; + + // Receive message on server + Result = OPI_TCP.GetNextConnectionData(ServerObject, 5000, 8192); + + // END + + OPI_TCP.CloseConnection(ClientObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetNextConnectionData", , Message); + + OPI_TCP.SendLine(ClientObject, Message); + OPI_TCP.CloseConnection(ClientObject); + + Result = OPI_TCP.GetNextConnectionData(ServerObject, 5000, 8192); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetNextConnectionData", "Closed", Message); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_GetConnectionData(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + OPI_Tools.Pause(1); // SKIP + + // Receive the list of server connections + ConnectionList = OPI_TCP.GetConnectionList(ServerObject); + + If Not ConnectionList["result"] Then + Raise OPI_Tools.JSONString(ConnectionList); + EndIf; + + If ConnectionList["connections"].Count() = 0 Then + Raise "Connection list is empty"; + Else + ConnectionID = ConnectionList["connections"][0]["connectionId"]; + EndIf; + + EmptyResult = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); // SKIP + OPI_TestDataRetrieval.Process(EmptyResult, "TCP", "GetConnectionData", "Empty"); // SKIP + + For N = 0 To 5 Do + + // Send from client + CurrentMessage = StrTemplate("Message no. %1%2", N, Chars.LF); + OPI_TCP.SendLine(ClientObject, CurrentMessage); + + // Recieve on server + Result = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionData", , CurrentMessage); // SKIP + + EndDo; + + // END + + OPI_TCP.CloseConnection(ClientObject); + + Result = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionData", "Closed"); + + Result = OPI_TCP.GetConnectionList(ServerObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionData", "EmptyList"); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_SendData(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + Message = "Hello!" + Chars.LF; + + OPI_TCP.SendLine(ClientObject, Message); + + // Receive message and connection ID + NextMessage = OPI_TCP.GetNextConnectionData(ServerObject, 5000); + ConnectionID = NextMessage["connectionId"]; + + // Send response from server + ServerResponse = "Response from server!" + Chars.LF; + Result = OPI_TCP.SendData(ServerObject, ConnectionID, ServerResponse); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "SendData"); + + // Check receiving on client + ClientResponse = OPI_TCP.ReadLine(ClientObject, , Chars.LF); + + OPI_TestDataRetrieval.Process(ClientResponse, "TCP", "SendData", "Check", ServerResponse); + + OPI_TCP.CloseConnection(ClientObject); + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_CloseIncomingConnection(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + Message = "Hello!" + Chars.LF; + + OPI_TCP.SendLine(ClientObject, Message); + + // Get connection ID + FirstMessage = OPI_TCP.GetNextConnectionData(ServerObject, 5000); + ConnectionID = FirstMessage["connectionId"]; + + // Close connection from server side + Result = OPI_TCP.CloseIncomingConnection(ServerObject, ConnectionID); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseIncomingConnection"); + + Result = OPI_TCP.GetConnectionList(ServerObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseIncomingConnection", "EmptyList"); + + OPI_TCP.SendLine(ClientObject, Message); + Result = OPI_TCP.SendLine(ClientObject, Message); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseIncomingConnection", "SendingToClosed"); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_CompleteSend(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + OPI_Tools.Pause(1); // SKIP + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + ActiveConnections = OPI_TCP.GetConnectionList(ServerObject); + ConnectionID = ActiveConnections["connections"][0]["connectionId"]; + + // Finish sending from server + Result = OPI_TCP.CompleteSend(ServerObject, ConnectionID); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "CompleteSend"); + + Message = "Hello" + Chars.LF; + + OPI_TCP.SendLine(ClientObject, Message); + Result = OPI_TCP.SendLine(ClientObject, Message); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CompleteSend", "SendingClient"); + + ServerResponse = "Response from server!" + Chars.LF; + Result = OPI_TCP.SendData(ServerObject, ConnectionID, ServerResponse); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CompleteSend", "SendingServer"); + + OPI_TCP.CloseConnection(ClientObject); + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_GetConnectionList(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + + Client1 = OPI_TCP.CreateConnection(ConnectionAddress); + Client2 = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(Client1) Then + Raise OPI_Tools.JSONString(Client1); + EndIf; + + If Not OPI_TCP.IsClientObject(Client2) Then + Raise OPI_Tools.JSONString(Client2); + EndIf; + + Result = OPI_TCP.GetConnectionList(ServerObject); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionList"); + + OPI_TCP.CloseConnection(Client1); + OPI_TCP.CloseConnection(Client2); + + Client3 = OPI_TCP.CreateConnection(ConnectionAddress); + Client4 = OPI_TCP.CreateConnection(ConnectionAddress); + + OPI_TCP.SendLine(Client3, "Yo" + Chars.LF); + + OPI_TCP.CloseConnection(Client3); + OPI_TCP.CloseConnection(Client4); + + Result = OPI_TCP.GetConnectionList(ServerObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionList", "Closing"); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_FinishReceiving(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + OPI_Tools.Pause(1); // SKIP + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + ActiveConnections = OPI_TCP.GetConnectionList(ServerObject); + ConnectionID = ActiveConnections["connections"][0]["connectionId"]; + + // Completing server-side reception + Result = OPI_TCP.FinishReceiving(ServerObject, ConnectionID); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "FinishReceiving"); + + OPI_TCP.CloseConnection(ClientObject); + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_IsServerObject(FunctionParameters) + + Port = 9884; + Host = OPI_TCP.StartServer(Port); + + Result = OPI_TCP.IsServerObject(Host); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "IsServerObject"); + + OPI_TCP.StopServer(Host); + + // Check with wrong object + Result = OPI_TCP.IsServerObject("Not a server"); + + OPI_TestDataRetrieval.Process(Result, "TCP", "IsServerObject", "False"); + +EndProcedure + +Procedure TCP_GetLog(FunctionParameters) + + LaunchPort = 9877; + LogFile = GetTempFileName("txt"); + LoggingSettings = OPI_TCP.GetLoggingSettings(True, 100, LogFile); + ServerObject = OPI_TCP.StartServer(LaunchPort, , LoggingSettings); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + OPI_Tools.Pause(1); // SKIP + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + Result = OPI_TCP.GetLog(ServerObject); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLog", , LogFile); + +EndProcedure + +Procedure TCP_GetLoggingSettings(FunctionParameters) + + Result = OPI_TCP.GetLoggingSettings(True, 100, GetTempFileName()); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLoggingSettings"); + + Result = OPI_TCP.GetLoggingSettings(False, , GetTempFileName()); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLoggingSettings", "File"); + + Result = OPI_TCP.GetLoggingSettings(True); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLoggingSettings", "Memory"); + +EndProcedure + +#EndRegion // TCP + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure TC_Клиент() Export + TC_Client(); +EndProcedure + +Procedure TC_Сервер() Export + TC_Server(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl index 4ae8b1ab54..d1837a5ead 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Telegram.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1596 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Telegram"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Telegram"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Telegram + +Procedure TelegramAPI_GetBotInfo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + + Telegram_GetBotInformation(TestParameters); + +EndProcedure + +Procedure TelegramAPI_GetUpdates() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + + Telegram_DeleteWebhook(TestParameters); + Telegram_GetUpdates(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SetWebhook() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_URL" , TestParameters); + + Telegram_SetWebhook(TestParameters); + Telegram_DeleteWebhook(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendTextMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + + Telegram_SendTextMessage(TestParameters); + Telegram_ReplaceMessageText(TestParameters); + Telegram_ReplaceMessageKeyboard(TestParameters); + Telegram_FormKeyboardFromButtonArray(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendImage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Telegram_SendImage(TestParameters); + Telegram_ReplaceMessageCaption(TestParameters); + Telegram_DownloadFile(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendVideo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + Telegram_SendVideo(TestParameters); + Telegram_DownloadFile(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendAudio() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters); + + Telegram_SendAudio(TestParameters); + Telegram_DownloadFile(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendDocument() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Telegram_SendDocument(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendGIF() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GIF" , TestParameters); + + Telegram_SendGif(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendMediaGroup() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Telegram_SendMediaGroup(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendLocation() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Long" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Lat" , TestParameters); + + Telegram_SendLocation(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendContact() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Name" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Surname" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Phone" , TestParameters); + + Telegram_SendContact(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendPoll() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_SendPoll(TestParameters); + +EndProcedure + +Procedure TelegramAPI_ForwardMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelMessageID", TestParameters); + + Telegram_ForwardMessage(TestParameters); + +EndProcedure + +Procedure TelegramAPI_BanUnban() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_Ban(TestParameters); + Telegram_Unban(TestParameters); + +EndProcedure + +Procedure TelegramAPI_CreateInvitationLink() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_CreateInvitationLink(TestParameters); + +EndProcedure + +Procedure TelegramAPI_PinUnpinMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelMessageID", TestParameters); + + Telegram_PinMessage(TestParameters); + Telegram_UnpinMessage(TestParameters); + Telegram_DeleteMessage(TestParameters); + +EndProcedure + +Procedure TelegramAPI_GetMemberCount() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_GetParticipantCount(TestParameters); + +EndProcedure + +Procedure TelegramAPI_GetForumAvatarsList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + + Telegram_GetAvatarIconList(TestParameters); + +EndProcedure + +Procedure TelegramAPI_CreateDeleteForumTopic() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + + Telegram_CreateForumTopic(TestParameters); + Telegram_EditForumTopic(TestParameters); + Telegram_CloseForumTopic(TestParameters); + Telegram_OpenForumTopic(TestParameters); + Telegram_ClearTopicPinnedMessagesList(TestParameters); + Telegram_DeleteForumTopic(TestParameters); + +EndProcedure + +Procedure TelegramAPI_HideShowMainTopic() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); + + Telegram_HideMainForumTopic(TestParameters); + Telegram_ShowMainForumTopic(TestParameters); + +EndProcedure + +Procedure TelegramAPI_ChangeMainTopicName() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); + + Telegram_EditMainForumTopicName(TestParameters); + +EndProcedure + +#EndRegion // Telegram + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Telegram + +Procedure Telegram_GetBotInformation(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetBotInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetBotInformation"); + +EndProcedure + +Procedure Telegram_GetUpdates(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetUpdates", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetUpdates"); + +EndProcedure + +Procedure Telegram_SetWebhook(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + URL = FunctionParameters["Telegram_URL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SetWebhook", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SetWebhook"); + +EndProcedure + +Procedure Telegram_DeleteWebhook(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteWebhook", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DeleteWebhook"); + +EndProcedure + +Procedure Telegram_SendTextMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + + KeyboardButtonsArray = New Array; + KeyboardButtonsArray.Add("Button1"); + KeyboardButtonsArray.Add("Button2"); + + // With keyboard, in chat + Options = New Structure; + Options.Insert("buttons", KeyboardButtonsArray); + Options.Insert("under", Истина); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", , FunctionParameters, Text); // SKIP + + // Simple, to channel + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Channel", FunctionParameters, Text); + + Text = "Text html %F0%9F%93%9E 10%"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("parsemode", "HTML"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "HTML"); + + Text = "%F0%9F%A4%BC"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Emoji"); + + Text = "Text %F0%9F%A5%9D and emoji \(10%\)"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Text + Emoji"); + + Keyboard = OPI_Tools.JsonToStructure(Keyboard, False); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Keyboard structure"); + + Text = "%F0%9F%94%A5 *New release\!* + | + |%F0%9F%8F%B0 *Repository*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Version*: \{0.6.0} + |%F0%9F%93%85 *Date release*: 6 december 2025 y. + | + |>*AI summary* + |>Devtools - this tool for automation work with configurations\extensions 1C:Enterprise and integration with Git. Application allows dump and upload objects, a also synchronize change between Git and repository 1C. In release 0.6.0 realized optimization logic work and added logging, that contributes stability and simplifies analysis work applications. + | + | + |_Not forget put %E2%AD%90 liked projects_"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Complex"); + +EndProcedure + +Procedure Telegram_FormKeyboardFromButtonArray(FunctionParameters) + + ButtonArray = New Array; + ButtonArray.Add("Button1"); + ButtonArray.Add("Button2"); + ButtonArray.Add("Button3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "FormKeyboardFromButtonArray"); + +EndProcedure + +Procedure Telegram_SendImage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Image = FunctionParameters["Picture"]; + + ImagePath = GetTempFileName("png"); + FileCopy(Image, ImagePath); + + ImageDD = New BinaryData(ImagePath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", ImagePath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", ImageDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Binary", FunctionParameters, Text); + + ButtonArray = New Array; + ButtonArray.Add("Button1"); + ButtonArray.Add("Button2"); + ButtonArray.Add("Button3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + Options.Insert("under", Истина); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Keyboard", FunctionParameters, Text); + + Keyboard = OPI_Tools.JsonToStructure(Keyboard); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Keyboard collection", FunctionParameters, Text); + + Text = "Text %F0%9F%A5%9D and emoji \(10%\)"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Text + Emoji"); + + Text = "%F0%9F%94%A5 *New release\!* + | + |%F0%9F%8F%B0 *Repository*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Version*: \{0.6.0} + |%F0%9F%93%85 *Date release*: 6 december 2025 y. + | + |>*AI summary* + |>Devtools - this tool for automation work with configurations\extensions 1C:Enterprise and integration with Git. Application allows dump and upload objects, a also synchronize change between Git and repository 1C. In release 0.6.0 realized optimization logic work and added logging, that contributes stability and simplifies analysis work applications. + | + | + |_Not forget put %E2%AD%90 liked projects_"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Complex"); + + OPI_Tools.RemoveFileWithTry(ImagePath, "Failed to delete the temporary file after the test!!"); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendVideo(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Video = FunctionParameters["Video"]; + + VideoPath = GetTempFileName("mp4"); + FileCopy(Video, VideoPath); + + VideoDD = New BinaryData(VideoPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("video", Video); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendVideo", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("video", VideoPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendVideo", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("video", VideoDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); + + // END + + OPI_Tools.RemoveFileWithTry(VideoPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendVideo", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendAudio(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Audio = FunctionParameters["Audio"]; + + AudioPath = GetTempFileName("mp3"); + FileCopy(Audio, AudioPath); + + AudioDD = New BinaryData(AudioPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("audio", Audio); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendAudio", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("audio", AudioPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendAudio", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("audio", AudioDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); + + // END + + OPI_Tools.RemoveFileWithTry(AudioPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendAudio", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendDocument(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Document = FunctionParameters["Document"]; + + DocumentPath = GetTempFileName("docx"); + FileCopy(Document, DocumentPath); + + DocumentDD = New BinaryData(DocumentPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("doc", Document); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", , FunctionParameters, Text); // SKIP + + // In chat, by URL, with file name + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("doc", Document); + Options.Insert("filename", "customname.docx"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", "With name", FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("doc", DocumentPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data, with file name + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("doc", DocumentDD); + Options.Insert("filename", "customname.docx"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + // END + + OPI_Tools.RemoveFileWithTry(DocumentPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendGif(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + GIF = FunctionParameters["GIF"]; + + GifPath = GetTempFileName("gif"); + FileCopy(GIF, GifPath); + + GifDD = New BinaryData(GifPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("gif", GIF); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendGif", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("gif", GifPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendGif", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("gif", GifDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); + + // END + + OPI_Tools.RemoveFileWithTry(GifPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendGif", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendMediaGroup(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + Text = FunctionParameters["String"]; + Image = FunctionParameters["Picture"]; + Video = FunctionParameters["Video"]; + + ImagePath = GetTempFileName("png"); + FileCopy(Image, ImagePath); + + VideoPath = GetTempFileName("mp4"); + FileCopy(Video, VideoPath); + + VideoDD = New BinaryData(VideoPath); + + MediaGroup = New Map; + MediaGroup.Insert(ImagePath, "photo"); + MediaGroup.Insert(VideoDD , "video"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("media", MediaGroup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendMediaGroup", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendMediaGroup"); + + DocumentURL = FunctionParameters["Document"]; + DocumentPath = GetTempFileName("docx"); + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + FileCopy(DocumentURL, DocumentPath); + + MediaGroup = New Map; + MediaGroup.Insert(DocumentURL , "document"); + MediaGroup.Insert(DocumentPath, "document"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("media", MediaGroup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendMediaGroup", Options); + + OPI_Tools.RemoveFileWithTry(VideoPath , "Failed to delete the temporary file after the test!!"); + OPI_Tools.RemoveFileWithTry(ImagePath , "Failed to delete the temporary file after the test!!"); + OPI_Tools.RemoveFileWithTry(DocumentPath, "Failed to delete the temporary file after the test!!"); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendMediaGroup", "Documents"); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendLocation(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Width = FunctionParameters["Lat"]; + Longitude = FunctionParameters["Long"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("lat", Width); + Options.Insert("long", Longitude); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendLocation", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendLocation"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("lat", Width); + Options.Insert("long", Longitude); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendLocation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendLocation", "Channel"); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendContact(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Name = FunctionParameters["Name"]; + LastName = FunctionParameters["Surname"]; + Phone = FunctionParameters["Phone"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("name", Name); + Options.Insert("surname", LastName); + Options.Insert("phone", Phone); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendContact", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendContact", , Name); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("name", Name); + Options.Insert("surname", LastName); + Options.Insert("phone", Phone); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendContact", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendContact", "Channel", Name); + +EndProcedure + +Procedure Telegram_SendPoll(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Question = "What's your favorite color??"; + + AnswersArray = New Array; + AnswersArray.Add("Red"); + AnswersArray.Add("Yellow"); + AnswersArray.Add("Green"); + AnswersArray.Add("Blue"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("question", Question); + Options.Insert("options", AnswersArray); + Options.Insert("anonymous", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendPoll", , Question); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("question", Question); + Options.Insert("options", AnswersArray); + Options.Insert("anonymous", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendPoll", "Channel", Question); // SKIP + + // END + + StringArray = "['Red', 'Yellow', 'Green', 'Blue']"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("question", Question); + Options.Insert("options", StringArray); + Options.Insert("anonymous", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendPoll", "Questions as string", Question); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_DownloadFile(FunctionParameters) + + FileID = FunctionParameters["Telegram_FileID"]; + Token = FunctionParameters["Telegram_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DownloadFile"); + +EndProcedure + +Procedure Telegram_ForwardMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("message", MessageID); + Options.Insert("from", ChannelID); + Options.Insert("to", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ForwardMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ForwardMessage", , MessageID); + +EndProcedure + +Procedure Telegram_Ban(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + UserID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "Ban", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "Ban"); + +EndProcedure + +Procedure Telegram_Unban(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + UserID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "Unban", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "Unban"); + +EndProcedure + +Procedure Telegram_CreateInvitationLink(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Day = 86400; + CurrentDate = OPI_Tools.GetCurrentDate(); + + Title = "Link " + String(CurrentDate); + Expiration = CurrentDate + Day; + UnixExpiration = OPI_Tools.UNIXTime(Expiration); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("title", Title); + Options.Insert("expire", Expiration); + Options.Insert("limit", 200); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CreateInvitationLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CreateInvitationLink", , Title, UnixExpiration); + +EndProcedure + +Procedure Telegram_PinMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "PinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "PinMessage"); + +EndProcedure + +Procedure Telegram_UnpinMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "UnpinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "UnpinMessage"); + +EndProcedure + +Procedure Telegram_GetParticipantCount(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetParticipantCount", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetParticipantCount"); + +EndProcedure + +Procedure Telegram_GetAvatarIconList(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetAvatarIconList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetAvatarIconList"); + +EndProcedure + +Procedure Telegram_CreateForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Icon = "5357419403325481346"; + Name = "TestTopic " + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("title", Name); + Options.Insert("icon", Icon); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CreateForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CreateForumTopic", , FunctionParameters, Name, Icon); + + ChatTopic = Chat + "*" + FunctionParameters["Telegram_TopicID"]; + Text = FunctionParameters["String"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatTopic); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CreateForumTopic", "Message", FunctionParameters, Text); + +EndProcedure + +Procedure Telegram_EditForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + NewName = "NewTestTitle"; + NewIcon = "5310132165583840589"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + Options.Insert("title", NewName); + Options.Insert("icon", NewIcon); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "EditForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "EditForumTopic"); + +EndProcedure + +Procedure Telegram_CloseForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + OPI_Telegram.OpenForumTopic(Token, Chat); // SKIP + + Result = OPI_Telegram.CloseForumTopic(Token, Chat); // Closes main topic + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CloseForumTopic", "Main"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CloseForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CloseForumTopic"); + +EndProcedure + +Procedure Telegram_OpenForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + Result = OPI_Telegram.OpenForumTopic(Token, Chat); // Opens main topic + + OPI_TestDataRetrieval.Process(Result, "Telegram", "OpenForumTopic", "Main"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "OpenForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "OpenForumTopic"); + +EndProcedure + +Procedure Telegram_DeleteForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DeleteForumTopic"); + +EndProcedure + +Procedure Telegram_ClearTopicPinnedMessagesList(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ClearTopicPinnedMessagesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ClearTopicPinnedMessagesList", "Main"); // SKIP + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ClearTopicPinnedMessagesList"); + +EndProcedure + +Procedure Telegram_HideMainForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "HideMainForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "HideMainForumTopic"); + +EndProcedure + +Procedure Telegram_ShowMainForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ShowMainForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ShowMainForumTopic"); + +EndProcedure + +Procedure Telegram_EditMainForumTopicName(FunctionParameters) + + Title = "New main topic name " + String(New UUID); + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "EditMainForumTopicName", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "EditMainForumTopicName"); + +EndProcedure + +Procedure Telegram_DeleteMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DeleteMessage"); + +EndProcedure + +Procedure Telegram_ReplaceMessageText(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + Text = "New message text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageText", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageText", , Text); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("text", "Bold text"); + Options.Insert("parsemode", "HTML"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageText", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageText", "Markup", "Bold text"); + +EndProcedure + +Procedure Telegram_ReplaceMessageKeyboard(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + MessageID = FunctionParameters["Telegram_MessageID"]; + + ButtonArray = New Array; + ButtonArray.Add("New button 3"); + ButtonArray.Add("New button 2"); + ButtonArray.Add("New button 1"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + Options.Insert("under", Истина); + Options.Insert("column", Ложь); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageKeyboard", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageKeyboard", , Keyboard); + +EndProcedure + +Procedure Telegram_ReplaceMessageCaption(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + MessageID = FunctionParameters["Telegram_PicMessageID"]; + + Description = "New picture description"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("caption", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageCaption", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageCaption", , Description); + +EndProcedure + +#EndRegion // Telegram + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Телеграм_ПолучитьИнформациюБота() Export + TelegramAPI_GetBotInfo(); +EndProcedure + +Procedure Телеграм_ПолучитьОбновления() Export + TelegramAPI_GetUpdates(); +EndProcedure + +Procedure Телеграм_УстановитьWebhook() Export + TelegramAPI_SetWebhook(); +EndProcedure + +Procedure Телеграм_ОтправитьТекстовоеСообщение() Export + TelegramAPI_SendTextMessage(); +EndProcedure + +Procedure Телеграм_ОтправитьКартинку() Export + TelegramAPI_SendImage(); +EndProcedure + +Procedure Телеграм_ОтправитьВидео() Export + TelegramAPI_SendVideo(); +EndProcedure + +Procedure Телеграм_ОтправитьАудио() Export + TelegramAPI_SendAudio(); +EndProcedure + +Procedure Телеграм_ОтправитьДокумент() Export + TelegramAPI_SendDocument(); +EndProcedure + +Procedure Телеграм_ОтправитьГифку() Export + TelegramAPI_SendGIF(); +EndProcedure + +Procedure Телеграм_ОтправитьМедиагруппу() Export + TelegramAPI_SendMediaGroup(); +EndProcedure + +Procedure Телеграм_ОтправитьМестоположение() Export + TelegramAPI_SendLocation(); +EndProcedure + +Procedure Телеграм_ОтправитьКонтакт() Export + TelegramAPI_SendContact(); +EndProcedure + +Procedure Телеграм_ОтправитьОпрос() Export + TelegramAPI_SendPoll(); +EndProcedure + +Procedure Телеграм_ПереслатьСообщение() Export + TelegramAPI_ForwardMessage(); +EndProcedure + +Procedure Телеграм_БанРазбан() Export + TelegramAPI_BanUnban(); +EndProcedure + +Procedure Телеграм_СоздатьСсылкуПриглашение() Export + TelegramAPI_CreateInvitationLink(); +EndProcedure + +Procedure Телеграм_ЗакрепитьОткрепитьСообщение() Export + TelegramAPI_PinUnpinMessage(); +EndProcedure + +Procedure Телеграм_ПолучитьЧислоУчастников() Export + TelegramAPI_GetMemberCount(); +EndProcedure + +Procedure Телеграм_ПолучитьСписокАватаровФорума() Export + TelegramAPI_GetForumAvatarsList(); +EndProcedure + +Procedure Телеграм_СоздатьУдалитьТемуФорума() Export + TelegramAPI_CreateDeleteForumTopic(); +EndProcedure + +Procedure Телеграм_СкрытьПоказатьГлавнуюТему() Export + TelegramAPI_HideShowMainTopic(); +EndProcedure + +Procedure Телеграм_ИзменитьИмяГлавнойТемы() Export + TelegramAPI_ChangeMainTopicName(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl index 4ae8b1ab54..6d6845b17b 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Twitter.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,403 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Twitter"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Twitter"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Twitter + +Procedure TwitterAPI_AccountData() Export + + TestParameters = New Structure; + + Twitter_GetToken(TestParameters); + Twitter_GetAuthorizationLink(TestParameters); + // !DISABLED! Twitter_UpdateToken(TestParameters); + +EndProcedure + +Procedure TwitterAPI_Tweets() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GIF" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + Twitter_CreateTextTweet(TestParameters); + Twitter_UploadAttachmentsArray(TestParameters); + Twitter_CreateVideoTweet(TestParameters); + Twitter_CreateImageTweet(TestParameters); + Twitter_CreateGifTweet(TestParameters); + Twitter_CreatePollTweet(TestParameters); + Twitter_CreateCustomTweet(TestParameters); + +EndProcedure + +#EndRegion // Twitter + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +Function GetTwitterAuthData() + + Parameters = New Map; + + ServerToken = OPI_TestDataRetrieval.GetParameter("Access_Token"); + + URL = OPI_TestDataRetrieval.GetParameter("Twitter_TokenURL"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization(ServerToken) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + Token = Result["data"]; + + Parameters.Insert("redirect_uri" , OPI_TestDataRetrieval.GetParameter("Twitter_Redirect")); + Parameters.Insert("client_id" , OPI_TestDataRetrieval.GetParameter("Twitter_ClientID")); + Parameters.Insert("client_secret" , OPI_TestDataRetrieval.GetParameter("Twitter_ClientSecret")); + Parameters.Insert("access_token" , Token); + Parameters.Insert("refresh_token" , OPI_TestDataRetrieval.GetParameter("Twitter_Refresh")); + Parameters.Insert("oauth_token" , OPI_TestDataRetrieval.GetParameter("Twitter_OAuthToken")); + Parameters.Insert("oauth_token_secret", OPI_TestDataRetrieval.GetParameter("Twitter_OAuthSecret")); + + Parameters.Insert("oauth_consumer_key" , OPI_TestDataRetrieval.GetParameter("Twitter_OAuthConsumerKey")); + Parameters.Insert("oauth_consumer_secret", OPI_TestDataRetrieval.GetParameter( + "Twitter_OAuthConsumerSecret")); + + Return Parameters; + +EndFunction + +#Region AtomicTests + +#Region Twitter + +Procedure Twitter_GetToken(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Code = "123456"; + + Options = New Structure; + Options.Insert("code", Code); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "GetToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "GetToken"); + +EndProcedure + +Procedure Twitter_GetAuthorizationLink(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "GetAuthorizationLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "GetAuthorizationLink"); + +EndProcedure + +Procedure Twitter_RefreshToken(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "RefreshToken"); + +EndProcedure + +Procedure Twitter_CreateTextTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateTextTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateTextTweet", , Text); + +EndProcedure + +Procedure Twitter_CreateImageTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Image = FunctionParameters["Picture"]; // URL, Binary or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path + + ImageArray = New Array; + ImageArray.Add(Image); + ImageArray.Add(Image2); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", ImageArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateImageTweet", , Text); // SKIP + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", Image); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateImageTweet", "Single", Text); + + Image = OPI_HTTPRequests.Get(Image); + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", Image); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateImageTweet", "Binary", Text); + +EndProcedure + +Procedure Twitter_CreateVideoTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Video = FunctionParameters["Video"]; // URL, Binary or File path + Video2 = FunctionParameters["Video"]; // URL, Binary or File path + + VideosArray = New Array; + VideosArray.Add(Video); + VideosArray.Add(Video2); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("videos", VideosArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateVideoTweet", , Text); // SKIP + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("videos", Video); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateVideoTweet", "Single", Text); + + Video = OPI_HTTPRequests.Get(Video); + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("videos", Video); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateVideoTweet", "Binary", Text); + +EndProcedure + +Procedure Twitter_CreateGifTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + GIF = FunctionParameters["GIF"]; // URL, Binary or File path + Gif2 = FunctionParameters["GIF"]; // URL, Binary or File path + + GifsArray = New Array; + GifsArray.Add(GIF); + GifsArray.Add(Gif2); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("gifs", GifsArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateGifTweet", , Text); // SKIP + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("gifs", GIF); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateGifTweet", "Single", Text); + + GIF = OPI_HTTPRequests.Get(GIF); + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("gifs", GIF); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateGifTweet", "Binary", Text); + +EndProcedure + +Procedure Twitter_CreatePollTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + AnswersArray = New Array; + AnswersArray.Add("Option 1"); + AnswersArray.Add("Option 2"); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("options", AnswersArray); + Options.Insert("duration", 60); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreatePollTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreatePollTweet", , Text); + +EndProcedure + +Procedure Twitter_CreateCustomTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Image1 = FunctionParameters["Picture"]; // URL, Binary Data or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary Data or File path + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + Options = New Structure; + Options.Insert("files", ImageArray); + Options.Insert("type", "tweet_image"); + Options.Insert("auth", Parameters); + + MediaArray = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "UploadAttachmentsArray", Options); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("media", MediaArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateCustomTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateCustomTweet", , Text); + +EndProcedure + +Procedure Twitter_UploadAttachmentsArray(FunctionParameters) + + Parameters = GetTwitterAuthData(); + + Image1 = FunctionParameters["Picture"]; // URL, Binary Data or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary Data or File path + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + Options = New Structure; + Options.Insert("files", ImageArray); + Options.Insert("type", "tweet_image"); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "UploadAttachmentsArray", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "UploadAttachmentsArray"); + +EndProcedure + +#EndRegion // Twitter + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Твиттер_ДанныеАккаунта() Export + TwitterAPI_AccountData(); +EndProcedure + +Procedure Твиттер_Твиты() Export + TwitterAPI_Tweets(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl index 4ae8b1ab54..f1443c30f8 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VK.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1465 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("VK"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("VK"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region VK + +Procedure VKAPI_CreateTokenLink() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VK_AppID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_GroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_Token" , TestParameters); + + VK_CreateTokenRetrievalLink(TestParameters); + VK_GetAuthParameters(TestParameters); + +EndProcedure + +Procedure VKAPI_CreateDeletePost() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + + VK_CreatePost(TestParameters); + VK_DeletePost(TestParameters); + +EndProcedure + +Procedure VKAPI_CreateCompositePost() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + VK_CreateCompositePost(TestParameters); + +EndProcedure + +Procedure VKAPI_CreatePoll() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + VK_CreatePoll(TestParameters); + +EndProcedure + +Procedure VKAPI_SaveDeleteImage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + VK_CreateAlbum(TestParameters); + VK_SaveImageToAlbum(TestParameters); + VK_DeleteImage(TestParameters); + VK_DeleteAlbum(TestParameters); + VK_UploadPhotoToServer(TestParameters); + +EndProcedure + +Procedure VKAPI_CreateStory() Export + + TestParameters = New Map; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + VK_CreateStory(TestParameters); + +EndProcedure + +Procedure VKAPI_LikeRepostComment() Export + + TestParameters = New Structure; + Parameters = GetVKParameters(); + Text = "Post from autotest"; + + Result = OPI_VK.CreatePost(Text, New Array, , , Parameters); + PostID = Result["response"]["post_id"]; + + OPI_TestDataRetrieval.WriteParameter("VK_PostID", PostID); + OPI_TestDataRetrieval.ParameterToCollection("VK_PostID", TestParameters); + + VK_MakeRepost(TestParameters); + VK_WriteComment(TestParameters); + VK_ShortenLink(TestParameters); + + OPI_VK.DeletePost(PostID , Parameters); + OPI_VK.DeletePost(TestParameters["Repost"], Parameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_GetStatistics() Export + + TestParameters = New Structure; + + VK_GetStatistics(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_GetPostStatistics() Export + + TestParameters = New Structure; + + VK_GetPostStatistics(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_CreateAdCampaign() Export + + Parameters = GetVKParameters(); + Text = "Post from autotest"; + + Result = OPI_VK.CreatePost(Text, New Array, , , Parameters); + PostID = Result["response"]["post_id"]; + + OPI_TestDataRetrieval.WriteParameter("VK_PostID", PostID); + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VK_AdsCabinetID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_PostID" , TestParameters); + + // !DISABLED! VK_CreateAdvertisingCampaign(TestParameters); + // !DISABLED! VK_CreateAd(TestParameters); + // !DISABLED! VK_PauseAdvertising(TestParameters); + VK_GetAdvertisingCategoryList(TestParameters); + + OPI_VK.DeletePost(PostID, Parameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_SendMessage() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("VK_UserID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_CommunityToken", TestParameters); + + VK_FormKeyboard(TestParameters); + VK_WriteMessage(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_GetProductCategories() Export + + TestParameters = New Structure; + + VK_GetProductCategoryList(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_CreateProductSelection() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + + VK_CreateProductCollection(TestParameters); + VK_EditProductCollection(TestParameters); + VK_GetSelectionsByID(TestParameters); + VK_AddProduct(TestParameters); + VK_EditProduct(TestParameters); + VK_AddProductToCollection(TestParameters); + VK_RemoveProductFromSelection(TestParameters); + VK_DeleteProduct(TestParameters); + VK_DeleteSelection(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_CreateProductWithProperties() Export + + Parameters = GetVKParameters(); + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + + VK_GetProductDescription(TestParameters); + VK_CreateProductProperty(TestParameters); + VK_EditProductProperty(TestParameters); + VK_AddProductPropertyVariant(TestParameters); + VK_EditProductPropertyVariant(TestParameters); + VK_CreateProductWithProp(TestParameters); + VK_GetProductsByID(TestParameters); + VK_GroupProducts(TestParameters); + + OPI_VK.DeleteProduct(TestParameters["VK_MarketItemID2"], Parameters); + OPI_VK.DeleteProduct(TestParameters["VK_MarketItemID3"], Parameters); + + VK_DeleteProductPropertyVariant(TestParameters); + VK_DeleteProductProperty(TestParameters); + +EndProcedure + +Procedure VKAPI_GetProductList() Export + + TestParameters = New Structure; + + VK_GetProductList(TestParameters); + +EndProcedure + +Procedure VKAPI_GetSelectionList() Export + + TestParameters = New Structure; + + VK_GetSelectionList(TestParameters); + +EndProcedure + +Procedure VKAPI_GetPropertyList() Export + + TestParameters = New Structure; + + VK_GetPropertyList(TestParameters); + +EndProcedure + +Procedure VKAPI_GetOrderList() Export + + TestParameters = New Structure; + + VK_GetOrderList(TestParameters); + +EndProcedure + +Procedure VKAPI_UploadVideo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Video", TestParameters); + + VK_UploadVideoToServer(TestParameters); + +EndProcedure + +#EndRegion // VK + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +Function GetVKParameters() + + Parameters = New Structure; + GroupNumber = OPI_TestDataRetrieval.GetParameter("VK_GroupID"); + + Parameters.Insert("access_token", OPI_TestDataRetrieval.GetParameter("VK_Token")); + Parameters.Insert("owner_id" , "-" + GroupNumber); + Parameters.Insert("app_id" , OPI_TestDataRetrieval.GetParameter("VK_AppID")); + Parameters.Insert("group_id" , GroupNumber); + + Return Parameters; + +EndFunction + +#Region AtomicTests + +#Region VK + +Procedure VK_CreateTokenRetrievalLink(FunctionParameters) + + Application = FunctionParameters["VK_AppID"]; + Options = New Structure; + Options.Insert("app", Application); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateTokenRetrievalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateTokenRetrievalLink"); + +EndProcedure + +Procedure VK_GetAuthParameters(FunctionParameters) + + GroupID = FunctionParameters["VK_GroupID"]; + AppID = FunctionParameters["VK_AppID"]; + Token = FunctionParameters["VK_Token"]; + + Options = New Structure; + Options.Insert("group", GroupID); + Options.Insert("app", AppID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetAuthParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetAuthParameters"); + +EndProcedure + +Procedure VK_CreatePost(FunctionParameters) + + Parameters = GetVKParameters(); + Text = "Post from autotest"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data + + TFN = GetTempFileName("png"); + FileCopy(Image2, TFN); + + ImageArray = New Array; + ImageArray.Add(Image); + ImageArray.Add(TFN); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", ImageArray); + Options.Insert("ad", Истина); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePost", , Parameters); // SKIP + + PostID = Result["response"]["post_id"]; // SKIP + OPI_VK.DeletePost(PostID, Parameters); // SKIP + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", Image); + Options.Insert("ad", Ложь); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePost", "Image", Parameters); + + PostID = Result["response"]["post_id"]; + OPI_VK.DeletePost(PostID, Parameters); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", TFN); + Options.Insert("ad", Истина); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePost", "Path", FunctionParameters); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VK_DeletePost(FunctionParameters) + + Parameters = GetVKParameters(); + PostID = FunctionParameters["VK_PostID"]; + + Options = New Structure; + Options.Insert("post", PostID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeletePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeletePost"); + +EndProcedure + +Procedure VK_CreateCompositePost(FunctionParameters) + + Parameters = GetVKParameters(); + Text = "Post from autotest"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + Video = FunctionParameters["Video"]; // URL, Path or Binary Data + + TFN = GetTempFileName("png"); + FileCopy(Image, TFN); + + ImageUpload = OPI_VK.UploadPhotoToServer(TFN, Parameters)["response"][0]; + Options = New Structure; + Options.Insert("file", Video); + Options.Insert("title", "NewVideo"); + Options.Insert("auth", Parameters); + + VideoUpload = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadVideoToServer", Options); + + ImageOwner = OPI_Tools.NumberToString(ImageUpload["owner_id"]); + VideoOwner = OPI_Tools.NumberToString(VideoUpload["owner_id"]); + + ImageID = OPI_Tools.NumberToString(ImageUpload["id"]); + VideoID = OPI_Tools.NumberToString(VideoUpload["video_id"]); + + AttachmentsArray = New Array; + AttachmentsArray.Add("photo" + ImageOwner + "_" + ImageID); + AttachmentsArray.Add("video" + VideoOwner + "_" + VideoID); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("objects", AttachmentsArray); + Options.Insert("ad", Ложь); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateCompositePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateCompositePost"); + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VK_CreatePoll(FunctionParameters) + + Parameters = GetVKParameters(); + Question = "What's your favorite color??"; + + OptionArray = New Array; + OptionArray.Add("Red"); + OptionArray.Add("Yellow"); + OptionArray.Add("Green"); + + Options = New Structure; + Options.Insert("question", Question); + Options.Insert("options", OptionArray); + Options.Insert("text", "Post text"); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePoll", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePoll", "Text"); // SKIP + + // With picture + + Image = FunctionParameters["Picture"]; // URL, File path or Binary Data + + Options = New Structure; + Options.Insert("question", Question); + Options.Insert("options", OptionArray); + Options.Insert("picture", Image); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePoll", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePoll"); + + PostID = Result["response"]["post_id"]; + OPI_VK.DeletePost(PostID, Parameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VK_CreateAlbum(FunctionParameters) + + Parameters = GetVKParameters(); + Name = "AlbumFromAutoTest"; + Description = "NewAlbumFromAutoTest"; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("description", Description); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAlbum", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateAlbum", , FunctionParameters, Description); + +EndProcedure + +Procedure VK_SaveImageToAlbum(FunctionParameters) + + Parameters = GetVKParameters(); + ImageDescription = "AutoTestImage"; + AlbumID = FunctionParameters["VK_AlbumID"]; + + Image = FunctionParameters["Picture"]; // URL, File path or Binary Data + + Options = New Structure; + Options.Insert("album", AlbumID); + Options.Insert("picture", Image); + Options.Insert("description", ImageDescription); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "SaveImageToAlbum", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "SaveImageToAlbum", , FunctionParameters, ImageDescription, AlbumID); + +EndProcedure + +Procedure VK_DeleteImage(FunctionParameters) + + Parameters = GetVKParameters(); + ImageID = FunctionParameters["VK_PictureID"]; + + Options = New Structure; + Options.Insert("pictureid", ImageID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteImage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteImage"); + +EndProcedure + +Procedure VK_DeleteAlbum(FunctionParameters) + + Parameters = GetVKParameters(); + AlbumID = FunctionParameters["VK_AlbumID"]; + + Options = New Structure; + Options.Insert("album", AlbumID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteAlbum", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteAlbum"); + +EndProcedure + +Procedure VK_CreateStory(FunctionParameters) + + Parameters = GetVKParameters(); + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Image = FunctionParameters["Picture"]; // URL, File path or Binary Data + TFN = GetTempFileName("png"); + FileCopy(Image, TFN); + Image = New BinaryData(TFN); + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateStory", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateStory"); // SKIP + + // END + + Options = New Structure; + Options.Insert("picture", TFN); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateStory", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateStory", "Path"); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VK_MakeRepost(FunctionParameters) + + Parameters = GetVKParameters(); + PostID = 2571; + WallID = -218704372; + + Options = New Structure; + Options.Insert("post", PostID); + Options.Insert("from", WallID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "MakeRepost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "MakeRepost", , FunctionParameters); + +EndProcedure + +Procedure VK_WriteComment(FunctionParameters) + + Parameters = GetVKParameters(); + Text = "NewComment"; + PostID = FunctionParameters["VK_PostID"]; + WallID = Parameters["owner_id"]; + + Options = New Structure; + Options.Insert("post", PostID); + Options.Insert("wall", WallID); + Options.Insert("text", Text); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "WriteComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "WriteComment"); + +EndProcedure + +Procedure VK_GetStatistics(FunctionParameters) + + Parameters = GetVKParameters(); + + CurrentDate = OPI_Tools.GetCurrentDate(); + StartDate = BegOfDay(CurrentDate); + EndDate = EndOfDay(StartDate); + + Options = New Structure; + Options.Insert("datefrom", StartDate); + Options.Insert("dateto", EndDate); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetStatistics", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetStatistics"); + +EndProcedure + +Procedure VK_GetPostStatistics(FunctionParameters) + + Parameters = GetVKParameters(); + + ArrayOfPosts = New Array; + ArrayOfPosts.Add(214); + ArrayOfPosts.Add(215); + + Options = New Structure; + Options.Insert("posts", ArrayOfPosts); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetPostStatistics", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetPostStatistics"); + +EndProcedure + +Procedure VK_CreateAdvertisingCampaign(FunctionParameters) + + Parameters = GetVKParameters(); + + AccountID = FunctionParameters["VK_AdsCabinetID"]; + Name = "New campaign"; + + Options = New Structure; + Options.Insert("cabinet", AccountID); + Options.Insert("title", Name); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAdvertisingCampaign", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateAdvertisingCampaign", , FunctionParameters); + +EndProcedure + +Procedure VK_CreateAd(FunctionParameters) + + Parameters = GetVKParameters(); + + CampaignNumber = FunctionParameters["VK_AdsCampaignID"]; + DailyLimit = 150; + CategoryNumber = 126; + PostID = FunctionParameters["VK_PostID"]; + AccountID = FunctionParameters["VK_AdsCabinetID"]; + + Options = New Structure; + Options.Insert("campaign", CampaignNumber); + Options.Insert("limit", DailyLimit); + Options.Insert("category", CategoryNumber); + Options.Insert("post", PostID); + Options.Insert("cabinet", AccountID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAd", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateAd", , FunctionParameters); + +EndProcedure + +Procedure VK_PauseAdvertising(FunctionParameters) + + Parameters = GetVKParameters(); + + AccountID = FunctionParameters["VK_AdsCabinetID"]; + AdID = FunctionParameters["VK_AdsPostID"]; + + Options = New Structure; + Options.Insert("cabinet", AccountID); + Options.Insert("adv", AdID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "PauseAdvertising", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "PauseAdvertising"); + +EndProcedure + +Procedure VK_FormKeyboard(FunctionParameters) + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "FormKeyboard", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "FormKeyboard"); + +EndProcedure + +Procedure VK_WriteMessage(FunctionParameters) + + Parameters = GetVKParameters(); + + Text = "Message from autotest"; + UserID = FunctionParameters["VK_UserID"]; + Communitytoken = FunctionParameters["VK_CommunityToken"]; + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "FormKeyboard", Options); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("user", UserID); + Options.Insert("ct", Communitytoken); + Options.Insert("keyboard", Keyboard); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "WriteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "WriteMessage"); + +EndProcedure + +Procedure VK_GetProductCategoryList(FunctionParameters) + + Parameters = GetVKParameters(); + + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductCategoryList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductCategoryList"); + +EndProcedure + +Procedure VK_CreateProductCollection(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "TestCollection"; + Image = FunctionParameters["Picture"]; + Main = True; + Hidden = False; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("picture", Image); + Options.Insert("main", Main); + Options.Insert("hidden", Hidden); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateProductCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductCollection", , FunctionParameters); + +EndProcedure + +Procedure VK_EditProductCollection(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "EditedCollection"; + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProductCollection"); + +EndProcedure + +Procedure VK_GetSelectionsByID(FunctionParameters) + + Parameters = GetVKParameters(); + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("sels", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetSelectionsByID", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetSelectionsByID"); + +EndProcedure + +Procedure VK_AddProduct(FunctionParameters) + + Parameters = GetVKParameters(); + + Image1 = FunctionParameters["Picture"]; // URL, Binary or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path + Selection = FunctionParameters["VK_MarketAlbumID"]; + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + ProductDescription = New Map; + ProductDescription.Insert("Name" , "TestProduct"); + ProductDescription.Insert("Description" , "Product description"); + ProductDescription.Insert("Category" , "20173"); + ProductDescription.Insert("Price" , 1); + ProductDescription.Insert("OldPrice" , 15); + ProductDescription.Insert("MainPhoto" , Image1); + ProductDescription.Insert("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + ProductDescription.Insert("AdditionalPhotos" , ImageArray); + ProductDescription.Insert("MainInGroup" , True); + ProductDescription.Insert("Width" , 20); + ProductDescription.Insert("Height" , 30); + ProductDescription.Insert("Depth" , 40); + ProductDescription.Insert("Weight" , 100); + ProductDescription.Insert("SKU" , "12345"); + ProductDescription.Insert("AvailableBalance" , "10"); + + Options = New Structure; + Options.Insert("product", ProductDescription); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "AddProduct", , FunctionParameters); + +EndProcedure + +Procedure VK_EditProduct(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + + ProductDescription = New Map; + ProductDescription.Insert("Name", "EditedTestProduct"); + + Options = New Structure; + Options.Insert("item", Product); + Options.Insert("product", ProductDescription); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProduct"); + +EndProcedure + +Procedure VK_AddProductToCollection(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("items", Product); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProductToCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "AddProductToCollection"); + +EndProcedure + +Procedure VK_RemoveProductFromSelection(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("item", Product); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "RemoveProductFromSelection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "RemoveProductFromSelection"); + +EndProcedure + +Procedure VK_DeleteProduct(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + + Options = New Structure; + Options.Insert("item", Product); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteProduct"); + +EndProcedure + +Procedure VK_DeleteSelection(FunctionParameters) + + Parameters = GetVKParameters(); + + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteSelection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteSelection"); + +EndProcedure + +Procedure VK_CreateProductProperty(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "Color"; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateProductProperty", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductProperty", , FunctionParameters); + +EndProcedure + +Procedure VK_EditProductProperty(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "Color (change.)"; + Property = FunctionParameters["VK_PropID"]; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("prop", Property); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductProperty", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProductProperty"); + +EndProcedure + +Procedure VK_AddProductPropertyVariant(FunctionParameters) + + Counter = 1; // SKIP + Parameters = GetVKParameters(); + + Property = FunctionParameters["VK_PropID"]; + OptionArray = New Array; + OptionArray.Add("Yellow"); + OptionArray.Add("Blue"); + OptionArray.Add("Red"); + + For Each Value In OptionArray Do + + Result = OPI_VK.AddProductPropertyVariant(Value, Property, Parameters); + + OPI_TestDataRetrieval.Process(Result, "VK", "AddProductPropertyVariant", , FunctionParameters, Counter); // SKIP + + Counter = Counter + 1; // SKIP + + EndDo; + + // END + +EndProcedure + +Procedure VK_EditProductPropertyVariant(FunctionParameters) + + Parameters = GetVKParameters(); + + Property = FunctionParameters["VK_PropID"]; + Option = FunctionParameters["VK_PropVarID1"]; + Value = "New variant name"; + + Options = New Structure; + Options.Insert("value", Value); + Options.Insert("prop", Property); + Options.Insert("option", Option); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductPropertyVariant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProductPropertyVariant"); + +EndProcedure + +Procedure VK_CreateProductWithProp(FunctionParameters) + + Parameters = GetVKParameters(); + + Image1 = FunctionParameters["Picture"]; + Image2 = FunctionParameters["Picture2"]; + PropVariant1 = FunctionParameters["VK_PropVarID1"]; + PropVariant2 = FunctionParameters["VK_PropVarID2"]; + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + Product = New Map; + Product.Insert("Name" , "Test product (with prop)"); + Product.Insert("Description" , "Product description"); + Product.Insert("Category" , "20173"); + Product.Insert("Price" , 1); + Product.Insert("OldPrice" , 15); + Product.Insert("MainPhoto" , Image1); + Product.Insert("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + Product.Insert("AdditionalPhotos" , ImageArray); + Product.Insert("MainInGroup" , True); + Product.Insert("Width" , 20); + Product.Insert("Height" , 30); + Product.Insert("Depth" , 40); + Product.Insert("Weight" , 100); + Product.Insert("SKU" , 12345); + Product.Insert("AvailableBalance" , "10"); + Product.Insert("PropertyValues" , PropVariant1); + + Options = New Structure; + Options.Insert("product", Product); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductWithProp", "First", FunctionParameters, 2); + + Product.Insert("Name" , "Test product (another)"); + Product.Insert("PropertyValues", PropVariant2); + + Options = New Structure; + Options.Insert("product", Product); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductWithProp", "Second", FunctionParameters, 3); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VK_GetProductsByID(FunctionParameters) + + Parameters = GetVKParameters(); + + Item1 = FunctionParameters["VK_MarketItemID2"]; + Item2 = FunctionParameters["VK_MarketItemID3"]; + + ProductsArray = New Array; + ProductsArray.Add(Item1); + ProductsArray.Add(Item2); + + Options = New Structure; + Options.Insert("items", ProductsArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductsByID", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductsByID"); + +EndProcedure + +Procedure VK_GroupProducts(FunctionParameters) + + Parameters = GetVKParameters(); + + Item1 = FunctionParameters["VK_MarketItemID2"]; + Item2 = FunctionParameters["VK_MarketItemID3"]; + + ProductsArray = New Array; + ProductsArray.Add(Item1); + ProductsArray.Add(Item2); + + Options = New Structure; + Options.Insert("items", ProductsArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GroupProducts", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GroupProducts"); + +EndProcedure + +Procedure VK_DeleteProductPropertyVariant(FunctionParameters) + + Parameters = GetVKParameters(); + + Option = FunctionParameters["VK_PropVarID1"]; + + Options = New Structure; + Options.Insert("option", Option); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProductPropertyVariant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteProductPropertyVariant"); + +EndProcedure + +Procedure VK_DeleteProductProperty(FunctionParameters) + + Parameters = GetVKParameters(); + + Property = FunctionParameters["VK_PropID"]; + + Options = New Structure; + Options.Insert("prop", Property); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProductProperty", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteProductProperty"); + +EndProcedure + +Procedure VK_GetProductList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductList"); + +EndProcedure + +Procedure VK_GetSelectionList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetSelectionList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetSelectionList"); + +EndProcedure + +Procedure VK_GetPropertyList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetPropertyList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetPropertyList"); + +EndProcedure + +Procedure VK_GetOrderList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetOrderList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetOrderList"); + +EndProcedure + +Procedure VK_UploadVideoToServer(FunctionParameters) + + Parameters = GetVKParameters(); + + Video = FunctionParameters["Video"]; // URL, Binary Data or File path + Name = "NewVideo"; + Description = "Video description"; + + Options = New Structure; + Options.Insert("file", Video); + Options.Insert("title", Name); + Options.Insert("description", Description); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadVideoToServer", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "UploadVideoToServer"); + +EndProcedure + +Procedure VK_UploadPhotoToServer(FunctionParameters) + + Parameters = GetVKParameters(); + + Image = FunctionParameters["Picture"]; // URL, Binary Data or File path + View = "Post"; + + Options = New Structure; + Options.Insert("file", Image); + Options.Insert("auth", Parameters); + Options.Insert("type", View); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadPhotoToServer", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "UploadPhotoToServer"); + +EndProcedure + +Procedure VK_ShortenLink(FunctionParameters) + + Parameters = GetVKParameters(); + + Options = New Structure; + Options.Insert("url", "https://github.com/Bayselonarrend/OpenIntegrations"); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "ShortenLink", Options); + +EndProcedure + +Procedure VK_GetAdvertisingCategoryList(FunctionParameters) + + Parameters = GetVKParameters(); + + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetAdvertisingCategoryList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetAdvertisingCategoryList"); + +EndProcedure + +Procedure VK_GetProductDescription(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductDescription"); + +EndProcedure + +#EndRegion // VK + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ВК_СоздатьСсылкуТокена() Export + VKAPI_CreateTokenLink(); +EndProcedure + +Procedure ВК_СоздатьУдалитьПост() Export + VKAPI_CreateDeletePost(); +EndProcedure + +Procedure ВК_СоздатьСоставнойПост() Export + VKAPI_CreateCompositePost(); +EndProcedure + +Procedure ВК_СоздатьОпрос() Export + VKAPI_CreatePoll(); +EndProcedure + +Procedure ВК_СохранитьУдалитьКартинку() Export + VKAPI_SaveDeleteImage(); +EndProcedure + +Procedure ВК_СоздатьИсторию() Export + VKAPI_CreateStory(); +EndProcedure + +Procedure ВК_ЛайкРепостКоммент() Export + VKAPI_LikeRepostComment(); +EndProcedure + +Procedure ВК_ПолучитьСтатистику() Export + VKAPI_GetStatistics(); +EndProcedure + +Procedure ВК_ПолучитьСтатистикуПостов() Export + VKAPI_GetPostStatistics(); +EndProcedure + +Procedure ВК_СоздатьРекламнуюКампанию() Export + VKAPI_CreateAdCampaign(); +EndProcedure + +Procedure ВК_ОтправитьСообщение() Export + VKAPI_SendMessage(); +EndProcedure + +Procedure ВК_ПолучитьКатегорииТоваров() Export + VKAPI_GetProductCategories(); +EndProcedure + +Procedure ВК_СоздатьТоварПодборку() Export + VKAPI_CreateProductSelection(); +EndProcedure + +Procedure ВК_СоздатьТоварСоСвойствами() Export + VKAPI_CreateProductWithProperties(); +EndProcedure + +Procedure ВК_ПолучитьСписокТоваров() Export + VKAPI_GetProductList(); +EndProcedure + +Procedure ВК_ПолучитьСписокПодборок() Export + VKAPI_GetSelectionList(); +EndProcedure + +Procedure ВК_ПолучитьСписокСвойств() Export + VKAPI_GetPropertyList(); +EndProcedure + +Procedure ВК_ПолучитьСписокЗаказов() Export + VKAPI_GetOrderList(); +EndProcedure + +Procedure ВК_ЗагрузитьВидео() Export + VKAPI_UploadVideo(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl index 4ae8b1ab54..34e248fb2d 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VKTeams.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,855 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("VKTeams"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("VKTeams"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region VkTeams + +Procedure VKT_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_FileID", TestParameters); + + VkTeams_CheckToken(TestParameters); + VkTeams_GetEvents(TestParameters); + VKTeams_GetFileInformation(TestParameters); + +EndProcedure + +Procedure VKT_MessagesSending() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_MessageID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Audio2" , TestParameters); + + VkTeams_SendTextMessage(TestParameters); + OPI_Tools.Pause(60); + + VKTeams_AnswerButtonEvent(TestParameters); + VKTeams_ForwardMessage(TestParameters); + VKTeams_SendFile(TestParameters); + VKTeams_ResendFile(TestParameters); + VKTeams_EditMessageText(TestParameters); + VKTeams_PinMessage(TestParameters); + VKTeams_UnpinMessage(TestParameters); + VKTeams_DeleteMessage(TestParameters); + VKTeams_SendVoice(TestParameters); + VKTeams_ResendVoice(TestParameters); + VKTeams_MakeActionButton(TestParameters); + +EndProcedure + +Procedure VKT_ChatManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID2", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture3" , TestParameters); + + VKTeams_RemoveChatMembers(TestParameters); + VKTeams_ChangeChatPicture(TestParameters); + VKTeams_GetChatInfo(TestParameters); + VKTeams_GetChatAdmins(TestParameters); + VKTeams_GetChatMembers(TestParameters); + VKTeams_GetChatBlockedUsers(TestParameters); + VKTeams_GetChatJoinRequests(TestParameters); + VKTeams_BlockChatUser(TestParameters); + VKTeams_UnblockChatUser(TestParameters); + VKTeams_ApprovePending(TestParameters); + VKTeams_DisapprovePending(TestParameters); + VKTeams_SetChatTitle(TestParameters); + VKTeams_SetChatDescription(TestParameters); + VKTeams_SetChatRules(TestParameters); + +EndProcedure + +#EndRegion // VkTeams + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region VKTeams + +Procedure VKTeams_CheckToken(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "CheckToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "CheckToken"); + +EndProcedure + +Procedure VKTeams_GetEvents(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + LastID = 0; + + For N = 1 To 5 Do // In real work - endless loop + + Result = OPI_VKTeams.GetEvents(Token, LastID, 3); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetEvents"); // SKIP + + Events = Result["events"]; + + // Event handling... + + If Not Events.Count() = 0 Then + + LastID = Events[Events.UBound()]["eventId"]; + + EndIf; + + EndDo; + + // END + + OPI_Tools.Pause(3); + +EndProcedure + +Procedure VKTeams_SendTextMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + Text = "Message text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendTextMessage", "Simple", FunctionParameters); // SKIP + + ChatID = FunctionParameters["VkTeams_ChatID2"]; + ReplyID = FunctionParameters["VkTeams_MessageID"]; + Text = "Bold text"; + Markup = "HTML"; + + Keyboard = New Array; + ButtonsLineArray = New Array; + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button1", "ButtonEvent1", , "attention")); + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Keyboard.Add(ButtonsLineArray); + Keyboard.Add(ButtonsLineArray); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + Options.Insert("reply", ReplyID); + Options.Insert("keyboard", Keyboard); + Options.Insert("parsemod", Markup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendTextMessage", , FunctionParameters); + +EndProcedure + +Procedure VKTeams_ForwardMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + FromChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("messageid", MessageID); + Options.Insert("fromid", FromChatID); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ForwardMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ForwardMessage", "Simple"); // SKIP + + Text = "Additional text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("messageid", MessageID); + Options.Insert("fromid", FromChatID); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ForwardMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ForwardMessage"); + +EndProcedure + +Procedure VKTeams_SendFile(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + Text = "File caption"; + + File = FunctionParameters["Document"]; // URL + FilePath = GetTempFileName("docx"); // Path + + FileCopy(File, FilePath); + + FileBD = New BinaryData(FilePath); // Binary + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendFile", "URL", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FilePath); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendFile", "Path", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FileBD); + Options.Insert("text", Text); + Options.Insert("filename", "ImportantDocument.docx"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendFile", , FunctionParameters); + + OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VKTeams_ResendFile(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + FileID = FunctionParameters["VkTeams_FileID"]; + Text = "File caption"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("fileid", FileID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ResendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ResendFile"); + +EndProcedure + +Procedure VKTeams_GetFileInformation(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + FileID = FunctionParameters["VkTeams_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetFileInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetFileInformation"); + +EndProcedure + +Procedure VKTeams_EditMessageText(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + Text = "New message text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "EditMessageText", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "EditMessageText", "Path"); // SKIP + + Text = "New bold message text"; + Markup = "HTML"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + Options.Insert("text", Text); + Options.Insert("parsemod", Markup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "EditMessageText", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "EditMessageText"); + +EndProcedure + +Procedure VKTeams_DeleteMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "DeleteMessage"); + +EndProcedure + +Procedure VKTeams_SendVoice(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + ReplyID = FunctionParameters["VkTeams_MessageID"]; + + File = FunctionParameters["Audio2"]; // URL + FilePath = GetTempFileName("m4a"); // Path + + FileCopy(File, FilePath); + + FileBD = New BinaryData(FilePath); // Binary + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendVoice", "URL", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FilePath); + Options.Insert("reply", ReplyID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendVoice", "Path", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FileBD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendVoice", , FunctionParameters); + + OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VKTeams_ResendVoice(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + FileID = FunctionParameters["VkTeams_VoiceID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ResendVoice", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ResendVoice"); + +EndProcedure + +Procedure VKTeams_RemoveChatMembers(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("members", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "RemoveChatMembers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "RemoveChatMembers"); + +EndProcedure + +Procedure VKTeams_ChangeChatPicture(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + File = FunctionParameters["Picture3"]; // URL + FilePath = GetTempFileName("png"); // Path + + FileCopy(File, FilePath); + + FileBD = New BinaryData(FilePath); // Binary + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ChangeChatPicture", "URL"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FilePath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ChangeChatPicture", "Path"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FileBD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ChangeChatPicture"); + + OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VKTeams_GetChatInfo(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatInfo", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatInfo"); + +EndProcedure + +Procedure VKTeams_GetChatAdmins(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatAdmins", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatAdmins"); + +EndProcedure + +Procedure VKTeams_GetChatMembers(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatMembers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatMembers"); + +EndProcedure + +Procedure VKTeams_GetChatBlockedUsers(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatBlockedUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatBlockedUsers"); + +EndProcedure + +Procedure VKTeams_GetChatJoinRequests(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatJoinRequests", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatJoinRequests"); + +EndProcedure + +Procedure VKTeams_BlockChatUser(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + Options.Insert("dellast", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "BlockChatUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "BlockChatUser"); + +EndProcedure + +Procedure VKTeams_UnblockChatUser(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "UnblockChatUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "UnblockChatUser"); + +EndProcedure + +Procedure VKTeams_PinMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "PinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "PinMessage"); + +EndProcedure + +Procedure VKTeams_UnpinMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "UnpinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "UnpinMessage"); + +EndProcedure + +Procedure VKTeams_ApprovePending(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ApprovePending", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ApprovePending", "One"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ApprovePending", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ApprovePending"); + +EndProcedure + +Procedure VKTeams_DisapprovePending(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DisapprovePending", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "DisapprovePending", "One"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DisapprovePending", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "DisapprovePending"); + +EndProcedure + +Procedure VKTeams_SetChatTitle(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + Text = "New title"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatTitle", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SetChatTitle"); + +EndProcedure + +Procedure VKTeams_SetChatDescription(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + Text = "New description"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SetChatDescription"); + +EndProcedure + +Procedure VKTeams_SetChatRules(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + Text = "Text of the new rules"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatRules", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SetChatRules"); + +EndProcedure + +Procedure VKTeams_AnswerButtonEvent(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + LastID = 0; + + For N = 1 To 5 Do + + Result = OPI_VKTeams.GetEvents(Token, LastID, 3); + Events = Result["events"]; + + If Not Events.Count() = 0 Then + + For Each Event In Events Do + + callbackData = Event["payload"]; + + If callbackData["callbackData"] = "ButtonEvent1" Then + + EventID = callbackData["queryId"]; + Result = OPI_VKTeams.AnswerButtonEvent(Token, EventID, "Get it!!"); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "AnswerButtonEvent"); // SKIP + + EndIf; + + EndDo; + + LastID = Events[Events.UBound()]["eventId"]; + + EndIf; + + EndDo; + + // END + + OPI_Tools.Pause(3); + +EndProcedure + +Procedure VKTeams_MakeActionButton(FunctionParameters) + + Keyboard = New Array; + ButtonsLineArray = New Array; + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button1", "ButtonEvent1", , "attention")); + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Keyboard.Add(ButtonsLineArray); + Keyboard.Add(ButtonsLineArray); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + // END + +EndProcedure + +#EndRegion // VKTeams + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ВКТ_ОбщиеМетоды() Export + VKT_CommonMethods(); +EndProcedure + +Procedure ВКТ_ОтправкаСообщений() Export + VKT_MessagesSending(); +EndProcedure + +Procedure ВКТ_УправлениеЧатами() Export + VKT_ChatManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl index 4ae8b1ab54..11a1ba05a0 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Viber.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,432 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Viber"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Viber"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Viber + +Procedure Viber_DataRetrieval() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelToken" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelAdminID", TestParameters); + + Return; + + //@skip-check unreachable-statements + // BSLLS:UnreachableCode-off + + Viber_GetChannelInformation(TestParameters); + Viber_GetUserData(TestParameters); + Viber_GetOnlineUsers(TestParameters); + Viber_SetWebhook(TestParameters); + + // BSLLS:UnreachableCode-on + +EndProcedure + +Procedure Viber_MessagesSending() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelToken" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelAdminID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_UserID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Viber_CreateKeyboardFromArrayButton(TestParameters); + + Return; + + //@skip-check unreachable-statement + // BSLLS:UnreachableCode-off + + Viber_SendTextMessage(TestParameters); + Viber_SendImage(TestParameters); + Viber_SendFile(TestParameters); + Viber_SendContact(TestParameters); + Viber_SendLocation(TestParameters); + Viber_SendLink(TestParameters); + + // BSLLS:UnreachableCode-on + +EndProcedure + +#EndRegion // Viber + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Viber + +Procedure Viber_SetWebhook(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + URL = "http://api.athenaeum.digital/hs/viber"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SetWebhook", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SetWebhook"); + +EndProcedure + +Procedure Viber_GetChannelInformation(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetChannelInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "GetChannelInformation"); + +EndProcedure + +Procedure Viber_GetUserData(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + UserID = FunctionParameters["Viber_ChannelAdminID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetUserData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "GetUserData"); + +EndProcedure + +Procedure Viber_GetOnlineUsers(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + UserID = FunctionParameters["Viber_ChannelAdminID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("users", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetOnlineUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "GetOnlineUsers"); + +EndProcedure + +Procedure Viber_CreateKeyboardFromArrayButton(FunctionParameters) + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + ButtonArray.Add("Button 3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "CreateKeyboardFromArrayButton", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "CreateKeyboardFromArrayButton"); + +EndProcedure + +Procedure Viber_SendTextMessage(FunctionParameters) + + Text = "TestMessage"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + ButtonArray.Add("Button 3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "CreateKeyboardFromArrayButton", Options); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("text", Text); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendTextMessage"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("text", Text); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendTextMessage", "Channel"); + +EndProcedure + +Procedure Viber_SendImage(FunctionParameters) + + Description = "TestMessage"; + URL = FunctionParameters["Picture"]; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("picture", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendImage"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("picture", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendImage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendImage", "Channel"); + +EndProcedure + +Procedure Viber_SendFile(FunctionParameters) + + Extension = "docx"; + URL = FunctionParameters["Document"]; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("ext", Extension); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendFile"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("ext", Extension); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendFile", "Channel"); + +EndProcedure + +Procedure Viber_SendContact(FunctionParameters) + + Name = "Petr Petrov"; + Phone = "+123456789"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("name", Name); + Options.Insert("phone", Phone); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendContact", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendContact"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("name", Name); + Options.Insert("phone", Phone); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendContact", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendContact", "Channel"); + +EndProcedure + +Procedure Viber_SendLocation(FunctionParameters) + + Latitude = "48.87373649724122"; + Longitude = "2.2954639195323967"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLocation", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLocation"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLocation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLocation", "Channel"); + +EndProcedure + +Procedure Viber_SendLink(FunctionParameters) + + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLink", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLink"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLink", "Channel"); + +EndProcedure + +#EndRegion // Viber + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Вайбер_ПолучениеИнформации() Export + Viber_DataRetrieval(); +EndProcedure + +Procedure Вайбер_ОтправкаСообщений() Export + Viber_MessagesSending(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl index 4ae8b1ab54..6a381351b3 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_WebSocket.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -63,6 +65,31 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("WebSocket"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("WebSocket"); + +EndFunction + + +#Region Alternate + + + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl index 4ae8b1ab54..145d0f44c4 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexDisk.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,701 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("YandexDisk"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("YandexDisk"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region YandexDisk + +Procedure YDisk_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_ClientSecret", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_RefreshToken", TestParameters); + + YandexDisk_GetConfirmationCode(TestParameters); + YandexDisk_ConvertCodeToToken(TestParameters); + YandexDisk_RefreshToken(TestParameters); + +EndProcedure + +Procedure YDisk_GetDiskInfo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_GetDiskInformation(TestParameters); + +EndProcedure + +Procedure YDisk_CreateFolder() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_CreateFolder(TestParameters); + +EndProcedure + +Procedure YDisk_UploadByUrlAndGetObject() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + YandexDisk_UploadFileByURL(TestParameters); + YandexDisk_GetObject(TestParameters); + YandexDisk_DeleteObject(TestParameters); + +EndProcedure + +Procedure YDisk_UploadDeleteFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters); + + YandexDisk_UploadFileInParts(TestParameters); + YandexDisk_UploadFile(TestParameters); + +EndProcedure + +Procedure YDisk_CreateObjectCopy() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + OriginalPath = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); + TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); + + YandexDisk_CreateObjectCopy(TestParameters); + + CopyPath = TestParameters["YandexDisk_FileCopyPath"]; + + OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); + OPI_YandexDisk.DeleteObject(Token, CopyPath , False); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure YDisk_GetDownloadLink() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + Path = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, Path, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_PathForLink", Path); + TestParameters.Insert("YandexDisk_PathForLink", Path); + + YandexDisk_GetDownloadLink(TestParameters); + YandexDisk_DownloadFile(TestParameters); + + OPI_YandexDisk.DeleteObject(Token, Path, False); + +EndProcedure + +Procedure YDisk_GetFileList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_GetFilesList(TestParameters); + +EndProcedure + +Procedure YDisk_MoveObject() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + OriginalPath = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); + TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); + + YandexDisk_MoveObject(TestParameters); + + NewPath = TestParameters["YandexDisk_NewFilePath"]; + + OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); + OPI_YandexDisk.DeleteObject(Token, NewPath , False); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure YDisk_PublicObjectActions() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + OriginalPath = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); + TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); + + YandexDisk_PublishObject(TestParameters); + YandexDisk_GetDownloadLinkForPublicObject(TestParameters); + YandexDisk_GetPublicObject(TestParameters); + YandexDisk_SavePublicObjectToDisk(TestParameters); + YandexDisk_CancelObjectPublication(TestParameters); + + OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure YDisk_GetPublishedList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_GetPublishedObjectsList(TestParameters); + +EndProcedure + +#EndRegion // YandexDisk + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region YandexDisk + +Procedure YandexDisk_GetConfirmationCode(FunctionParameters) + + ClientID = FunctionParameters["YandexDisk_ClientID"]; + + Options = New Structure; + Options.Insert("id", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetConfirmationCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetConfirmationCode"); + +EndProcedure + +Procedure YandexDisk_ConvertCodeToToken(FunctionParameters) + + ClientID = FunctionParameters["YandexDisk_ClientID"]; + ClientSecret = FunctionParameters["YandexDisk_ClientSecret"]; + DeviceCode = "12345678"; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("device", DeviceCode); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "ConvertCodeToToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "ConvertCodeToToken", , FunctionParameters); + +EndProcedure + +Procedure YandexDisk_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["YandexDisk_ClientID"]; + ClientSecret = FunctionParameters["YandexDisk_ClientSecret"]; + RefreshToken = FunctionParameters["YandexDisk_RefreshToken"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "RefreshToken", , FunctionParameters); + +EndProcedure + +Procedure YandexDisk_GetDiskInformation(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDiskInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetDiskInformation"); + +EndProcedure + +Procedure YandexDisk_CreateFolder(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = "/" + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CreateFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "CreateFolder", , Token, Path); + + OPI_YandexDisk.DeleteObject(Token, Path, False); + +EndProcedure + +Procedure YandexDisk_UploadFileByURL(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Address = FunctionParameters["Picture"]; + Path = "/" + String(New UUID) + ".png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("url", Address); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFileByURL", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileByURL", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_FileByURLPath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetObject", , Path); + +EndProcedure + +Procedure YandexDisk_DeleteObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_FileByURLPath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("can", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DeleteObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "DeleteObject"); + +EndProcedure + +Procedure YandexDisk_UploadFile(FunctionParameters) + + Path1 = "/" + String(New UUID) + ".png"; + Path2 = "/" + String(New UUID) + ".png"; + + Token = FunctionParameters["YandexDisk_Token"]; + Image = FunctionParameters["Picture"]; // URL + + TFN = GetTempFileName("png"); // Path + FileCopy(Image, TFN); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path1); + Options.Insert("file", Image); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFile", "URL"); // SKIP + + OPI_YandexDisk.DeleteObject(Token, Path1, False); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path2); + Options.Insert("file", TFN); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFile", Options); + + // END + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFile"); + + OPI_YandexDisk.DeleteObject(Token, Path2, False); // SKIP + +EndProcedure + +Procedure YandexDisk_CreateObjectCopy(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Original = FunctionParameters["YandexDisk_OriginalFilePath"]; + Path = "/" + String(New UUID) + ".png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", Original); + Options.Insert("to", Path); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CreateObjectCopy", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "CreateObjectCopy", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetDownloadLink(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_PathForLink"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDownloadLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetDownloadLink"); + +EndProcedure + +Procedure YandexDisk_DownloadFile(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_PathForLink"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "DownloadFile"); + +EndProcedure + +Procedure YandexDisk_GetFilesList(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Count = 2; + OffsetFromStart = 1; + FilterByType = "image"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("amount", Count); + Options.Insert("offset", OffsetFromStart); + Options.Insert("type", FilterByType); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetFilesList", , Count, OffsetFromStart); + +EndProcedure + +Procedure YandexDisk_MoveObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Original = FunctionParameters["YandexDisk_OriginalFilePath"]; + Path = "/" + String(New UUID) + ".png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", Original); + Options.Insert("to", Path); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "MoveObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "MoveObject", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetPublishedObjectsList(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Count = 2; + OffsetFromStart = 1; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("amount", Count); + Options.Insert("offset", OffsetFromStart); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetPublishedObjectsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetPublishedObjectsList", , Count, OffsetFromStart); + +EndProcedure + +Procedure YandexDisk_PublishObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_OriginalFilePath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "PublishObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "PublishObject", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetDownloadLinkForPublicObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + URL = FunctionParameters["YandexDisk_PublicURL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDownloadLinkForPublicObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetDownloadLinkForPublicObject"); + +EndProcedure + +Procedure YandexDisk_GetPublicObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + URL = FunctionParameters["YandexDisk_PublicURL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetPublicObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetPublicObject"); + +EndProcedure + +Procedure YandexDisk_SavePublicObjectToDisk(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + URL = FunctionParameters["YandexDisk_PublicURL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "SavePublicObjectToDisk", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "SavePublicObjectToDisk"); + +EndProcedure + +Procedure YandexDisk_CancelObjectPublication(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_OriginalFilePath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CancelObjectPublication", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "CancelObjectPublication", , Path); + +EndProcedure + +Procedure YandexDisk_UploadFileInParts(FunctionParameters) + + Path = "/song.mp3"; + + Token = FunctionParameters["YandexDisk_Token"]; + File = FunctionParameters["Audio"]; // URL, Binary or File path + + ChunkSize = 1048576; // 1 MB + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("file", File); + Options.Insert("psize", ChunkSize); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFileInParts", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileInParts", , File); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DownloadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileInParts", "Downloading", File); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("can", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DeleteObject", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileInParts", "Deletion"); + +EndProcedure + +#EndRegion // YandexDisk + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ЯДиск_Авторизация() Export + YDisk_Authorization(); +EndProcedure + +Procedure ЯДиск_ПолучитьИнформациюОДиске() Export + YDisk_GetDiskInfo(); +EndProcedure + +Procedure ЯДиск_СоздатьПапку() Export + YDisk_CreateFolder(); +EndProcedure + +Procedure ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Export + YDisk_UploadByUrlAndGetObject(); +EndProcedure + +Procedure ЯДиск_ЗагрузитьУдалитьФайл() Export + YDisk_UploadDeleteFile(); +EndProcedure + +Procedure ЯДиск_СоздатьКопиюОбъекта() Export + YDisk_CreateObjectCopy(); +EndProcedure + +Procedure ЯДиск_ПолучитьСсылкуНаСкачивание() Export + YDisk_GetDownloadLink(); +EndProcedure + +Procedure ЯДиск_ПолучитьСписокФайлов() Export + YDisk_GetFileList(); +EndProcedure + +Procedure ЯДиск_ПереместитьОбъект() Export + YDisk_MoveObject(); +EndProcedure + +Procedure ЯДиск_ДействияПубличныхОбъектов() Export + YDisk_PublicObjectActions(); +EndProcedure + +Procedure ЯДиск_ПолучитьСписокОпубликованных() Export + YDisk_GetPublishedList(); +EndProcedure + +#EndRegion diff --git a/src/en/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl b/src/en/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl index 4ae8b1ab54..f290c997f6 100644 --- a/src/en/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl +++ b/src/en/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexMetrika.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Test suite for YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,395 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Use oint -// #Use asserts -// #Use "internal" +//#Use "../../tools/main" +//#Use "../../tools/http" +//#Use "../../api" +//#Use asserts +//#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("YandexMetrika"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("YandexMetrika"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region YandexMetrika + +Procedure YaMetrika_TagsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); + + YandexMetrika_CreateTag(TestParameters); + YandexMetrika_GetTagsList(TestParameters); + YandexMetrika_UpdateTag(TestParameters); + YandexMetrika_GetTag(TestParameters); + YandexMetrika_DeleteTag(TestParameters); + +EndProcedure + +Procedure YaMetrika_CountersManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); + + YandexMetrika_GetCounterStructure(TestParameters); + YandexMetrika_CreateCounter(TestParameters); + YandexMetrika_GetCounter(TestParameters); + YandexMetrika_UpdateCounter(TestParameters); + YandexMetrika_DeleteCounter(TestParameters); + YandexMetrika_RestoreCounter(TestParameters); + YandexMetrika_GetCountersList(TestParameters); + YandexMetrika_DeleteCounter(TestParameters); + +EndProcedure + +Procedure YaMetrika_ActionsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); + + YandexMetrika_CreateCounter(TestParameters); + YandexMetrika_GetActionsList(TestParameters); + YandexMetrika_DeleteCounter(TestParameters); + +EndProcedure + +#EndRegion // YandexMetrika + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region YandexMetrika + +Procedure YandexMetrika_GetTagsList(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetTagsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetTagsList"); + +EndProcedure + +Procedure YandexMetrika_CreateTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + Name = "New tag"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "CreateTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "CreateTag", , FunctionParameters, Name); + +EndProcedure + +Procedure YandexMetrika_DeleteTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + TagID = FunctionParameters["Metrika_LabelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("label", TagID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "DeleteTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "DeleteTag"); + +EndProcedure + +Procedure YandexMetrika_UpdateTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + TagID = FunctionParameters["Metrika_LabelID"]; + Name = "New tag title"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("label", TagID); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "UpdateTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "UpdateTag", , Name); + +EndProcedure + +Procedure YandexMetrika_GetTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + TagID = FunctionParameters["Metrika_LabelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("label", TagID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetTag"); + +EndProcedure + +Procedure YandexMetrika_GetCounterStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCounterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCounterStructure"); + +EndProcedure + +Procedure YandexMetrika_CreateCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + + CounterStructure = New Structure; + CounterStructure.Insert("autogoals_enabled", True); + + CodeSettingsStructure = New Structure; + CodeSettingsStructure.Insert("async" , 0); + CodeSettingsStructure.Insert("clickmap" , 1); + CodeSettingsStructure.Insert("ecommerce" , 1); + CodeSettingsStructure.Insert("in_one_line" , 0); + CodeSettingsStructure.Insert("track_hash" , 1); + CodeSettingsStructure.Insert("visor" , 1); + CodeSettingsStructure.Insert("xml_site" , 0); + CodeSettingsStructure.Insert("ytm" , 0); + CodeSettingsStructure.Insert("alternative_cdn", 1); + + InformerStructure = New Structure; + InformerStructure.Insert("color_arrow", 1); + InformerStructure.Insert("color_end" , "EFEFEFFE"); + InformerStructure.Insert("color_start", "EEEEEEEE"); + InformerStructure.Insert("color_text" , 0); + InformerStructure.Insert("enabled" , 1); + InformerStructure.Insert("indicator" , "uniques"); + InformerStructure.Insert("size" , 2); + InformerStructure.Insert("type" , "ext"); + + CodeSettingsStructure.Insert("informer", InformerStructure); + + CounterStructure.Insert("code_options", CodeSettingsStructure); + + FlagsStructure = New Structure; + FlagsStructure.Insert("collect_first_party_data" , True); + FlagsStructure.Insert("measurement_enabled" , True); + FlagsStructure.Insert("use_in_benchmarks" , True); + FlagsStructure.Insert("direct_allow_use_goals_without_access", True); + + CounterStructure.Insert("counter_flags" , FlagsStructure); + CounterStructure.Insert("favorite" , 1); + CounterStructure.Insert("filter_robots" , 2); + CounterStructure.Insert("gdpr_agreement_accepted", 1); + + DomainStructure = New Structure("site", "openintegrations.dev"); + + CounterStructure.Insert("site2", DomainStructure); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fields", CounterStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "CreateCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "CreateCounter", , FunctionParameters); + +EndProcedure + +Procedure YandexMetrika_DeleteCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "DeleteCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "DeleteCounter"); + +EndProcedure + +Procedure YandexMetrika_UpdateCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + CounterStructure = New Structure; + CounterStructure.Insert("autogoals_enabled", True); + + FlagsStructure = New Structure; + FlagsStructure.Insert("collect_first_party_data" , False); + FlagsStructure.Insert("measurement_enabled" , False); + FlagsStructure.Insert("use_in_benchmarks" , False); + FlagsStructure.Insert("direct_allow_use_goals_without_access", False); + + CounterStructure.Insert("counter_flags", FlagsStructure); + CounterStructure.Insert("favorite" , 0); + CounterStructure.Insert("filter_robots", 1); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + Options.Insert("fields", CounterStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "UpdateCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "UpdateCounter"); + +EndProcedure + +Procedure YandexMetrika_GetCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCounter"); + +EndProcedure + +Procedure YandexMetrika_RestoreCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "RestoreCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "RestoreCounter"); + +EndProcedure + +Procedure YandexMetrika_GetCountersList(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCountersList", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCountersList"); // SKIP + + // filter by IDs list + + Filter = New Structure; + + CountersArray = New Array; + CountersArray.Add(CounterID); + + Filter.Insert("counter_ids", CountersArray); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("filter", Filter); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCountersList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCountersList", "Filter"); + +EndProcedure + +Procedure YandexMetrika_GetActionsList(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetActionsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetActionsList"); + +EndProcedure + +#EndRegion // YandexMetrika + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ЯМетрика_УправлениеМетками() Export + YaMetrika_TagsManagement(); +EndProcedure + +Procedure ЯМетрика_УправлениеСчетчиками() Export + YaMetrika_CountersManagement(); +EndProcedure + +Procedure ЯМетрика_УправлениеОперациями() Export + YaMetrika_ActionsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPI_Tests.os b/src/en/OInt/tests/Modules/OPI_Tests.os deleted file mode 100644 index c420f4180e..0000000000 --- a/src/en/OInt/tests/Modules/OPI_Tests.os +++ /dev/null @@ -1,526 +0,0 @@ -// OneScript: ./OInt/tests/Modules/OPI_Tests.os - -// MIT License - -// Copyright (c) 2023-2026 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 - -// Test suite for YAxUnit - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:UsingServiceTag-off -// BSLLS:UnusedParameters-off -// BSLLS:DuplicateStringLiteral-off -// BSLLS:UsingHardcodePath-off -// BSLLS:UnusedLocalVariable-off -// BSLLS:DeprecatedMessage-off -// BSLLS:LineLength-off -// BSLLS:MagicNumber-off -// BSLLS:CommentedCode-off -// BSLLS:AssignAliasFieldsInQuery-off -// BSLLS:UsingHardcodeNetworkAddress-off -// BSLLS:UnreachableCode-off -// BSLLS:UnusedLocalMethod-off -// BSLLS:NestedFunctionInParameters-off -// BSLLS:MissingTemporaryFileDeletion-off -// BSLLS:UsingSynchronousCalls-off -// BSLLS:MagicNumber-off -// BSLLS:MagicDate-off -// BSLLS:MissingParameterDescription-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:MethodSize-off -// BSLLS:NestedConstructorsInStructureDeclaration-off -// BSLLS:NumberOfValuesInStructureConstructor-off -// BSLLS:UsingHardcodeSecretInformation-off -// BSLLS:SpaceAtStartComment-off - -//@skip-check undefined-variable -//@skip-check wrong-string-literal-content -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check undefined-function-or-procedure -//@skip-check wrong-string-literal-content -//@skip-check module-unused-local-variable -//@skip-check bsl-legacy-check-string-literal -//@skip-check bsl-legacy-check-method-for-statements-after-return -//@skip-check missing-temporary-file-deletion -//@skip-check module-unused-method - -#Use oint -#Use asserts -#Use "internal" - -#Region Internal - -// For YAxUnit - -Procedure ИсполняемыеСценарии() Export - - OPI_TestDataRetrieval.FormYAXTests("Airtable"); - -EndProcedure - -// For Asserts - -Function ПолучитьСписокТестов(UnitTesting) Export - - Return OPI_TestDataRetrieval.FormAssertsTests("Airtable"); - -EndFunction - -#Region RunnableTests - -#Region Airtable - -Procedure AT_CreateDatabase() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Workspace", TestParameters); - - Airtable_CreateDatabase(TestParameters); - Airtable_GetDatabaseTables(TestParameters); - Airtable_GetListOfBases(TestParameters); - -EndProcedure - -Procedure AT_CreateTable() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Base" , TestParameters); - - Airtable_GetNumberField(TestParameters); - Airtable_GetStringField(TestParameters); - Airtable_GetAttachmentField(TestParameters); - Airtable_GetCheckboxField(TestParameters); - Airtable_GetDateField(TestParameters); - Airtable_GetPhoneField(TestParameters); - Airtable_GetEmailField(TestParameters); - Airtable_GetLinkField(TestParameters); - Airtable_CreateTable(TestParameters); - Airtable_ModifyTable(TestParameters); - -EndProcedure - -Procedure AT_CreateField() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Base" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Table", TestParameters); - - Airtable_CreateField(TestParameters); - Airtable_ModifyField(TestParameters); - -EndProcedure - -Procedure AT_CreateDeleteRecords() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Base" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Table", TestParameters); - - Airtable_CreatePosts(TestParameters); - Airtable_GetRecord(TestParameters); - Airtable_CreateComment(TestParameters); - Airtable_EditComment(TestParameters); - Airtable_GetComments(TestParameters); - Airtable_DeleteComment(TestParameters); - Airtable_GetListOfRecords(TestParameters); - Airtable_DeleteRecords(TestParameters); - -EndProcedure - -#EndRegion // Airtable - -#EndRegion // RunnableTests - -#EndRegion // Internal - -#Region Private - -#Region AtomicTests - -#Region Airtable - -Procedure Airtable_CreateDatabase(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Region = FunctionParameters["Airtable_Workspace"]; - Name = "TestDatabase"; - - FieldArray = New Array; - FieldArray.Add(OPI_Airtable.GetNumberField("Number")); - FieldArray.Add(OPI_Airtable.GetStringField("String")); - - TableName = "TestTable"; - - TableMapping = New Map; - TableMapping.Insert(TableName, FieldArray); - - Result = OPI_Airtable.CreateDatabase(Token, Region, Name, TableMapping); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateDatabase", , FunctionParameters, TableName); - -EndProcedure - -Procedure Airtable_GetDatabaseTables(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - - Result = OPI_Airtable.GetDatabaseTables(Token, Base); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetDatabaseTables"); - -EndProcedure - -Procedure Airtable_GetListOfBases(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - - Result = OPI_Airtable.GetListOfBases(Token); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetListOfBases"); - -EndProcedure - -Procedure Airtable_GetNumberField(FunctionParameters) - - Result = OPI_Airtable.GetNumberField("Number"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetNumberField"); - -EndProcedure - -Procedure Airtable_GetStringField(FunctionParameters) - - Result = OPI_Airtable.GetStringField("String"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetStringField"); - -EndProcedure - -Procedure Airtable_GetAttachmentField(FunctionParameters) - - Result = OPI_Airtable.GetAttachmentField("Attachment"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetAttachmentField"); - -EndProcedure - -Procedure Airtable_GetCheckboxField(FunctionParameters) - - Result = OPI_Airtable.GetCheckboxField("Checkbox"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetCheckboxField"); - -EndProcedure - -Procedure Airtable_GetDateField(FunctionParameters) - - Result = OPI_Airtable.GetDateField("Date"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetDateField"); - -EndProcedure - -Procedure Airtable_GetPhoneField(FunctionParameters) - - Result = OPI_Airtable.GetPhoneField("Phone"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetPhoneField"); - -EndProcedure - -Procedure Airtable_GetEmailField(FunctionParameters) - - Result = OPI_Airtable.GetEmailField("Email"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetEmailField"); - -EndProcedure - -Procedure Airtable_GetLinkField(FunctionParameters) - - Result = OPI_Airtable.GetLinkField("Link"); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetLinkField"); - -EndProcedure - -Procedure Airtable_CreateTable(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - - FieldArray = New Array; - FieldArray.Add(OPI_Airtable.GetNumberField("Number")); - FieldArray.Add(OPI_Airtable.GetStringField("String")); - FieldArray.Add(OPI_Airtable.GetAttachmentField("Attachment")); - FieldArray.Add(OPI_Airtable.GetCheckboxField("Checkbox")); - FieldArray.Add(OPI_Airtable.GetDateField("Date")); - FieldArray.Add(OPI_Airtable.GetPhoneField("Phone")); - FieldArray.Add(OPI_Airtable.GetEmailField("Email")); - FieldArray.Add(OPI_Airtable.GetLinkField("Link")); - - Name = "TestTable2"; - Description = "NewTable"; - - Result = OPI_Airtable.CreateTable(Token, Base, Name, FieldArray, Description); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateTable", , FunctionParameters, Name, Description); - -EndProcedure - -Procedure Airtable_ModifyTable(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Name = "Test table 2 (change.)"; - Description = "New table (change.)"; - - Result = OPI_Airtable.ModifyTable(Token, Base, Table, Name, Description); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "ModifyTable", , Name, Description); - -EndProcedure - -Procedure Airtable_CreateField(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Name = String(New UUID); - - Field = OPI_Airtable.GetNumberField(Name); - Result = OPI_Airtable.CreateField(Token, Base, Table, Field); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateField", , FunctionParameters, Name); - -EndProcedure - -Procedure Airtable_ModifyField(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Field = FunctionParameters["Airtable_Field"]; - - Name = String(New UUID) + "(change.)"; - Description = "New description"; - - Result = OPI_Airtable.ModifyField(Token, Base, Table, Field, Name, Description); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "ModifyField", , Name, Description); - -EndProcedure - -Procedure Airtable_CreatePosts(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - - Number = 10; - String = "Hello"; - - RowDescription1 = New Structure("Number,String", Number, String); - RowDescription2 = New Structure("Number,String", Number, String); - - ArrayOfDescriptions = New Array; - ArrayOfDescriptions.Add(RowDescription1); - ArrayOfDescriptions.Add(RowDescription2); - - Result = OPI_Airtable.CreatePosts(Token, Base, Table, ArrayOfDescriptions); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreatePosts", , FunctionParameters); - - ArrayOfDeletions = New Array; - - For Each Record In Result["records"] Do - - CurrentRecord = Record["id"]; - ArrayOfDeletions.Add(CurrentRecord); - - EndDo; - - OPI_Airtable.DeleteRecords(Token, Base, Table, ArrayOfDeletions); - - // Single - - Result = OPI_Airtable.CreatePosts(Token, Base, Table, RowDescription1); - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreatePosts", "Single", FunctionParameters, Number, String); - -EndProcedure - -Procedure Airtable_GetRecord(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - - Result = OPI_Airtable.GetRecord(Token, Base, Table, Record); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetRecord", , Record); - -EndProcedure - -Procedure Airtable_CreateComment(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Text = "TestComment"; - - Result = OPI_Airtable.CreateComment(Token, Base, Table, Record, Text); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "CreateComment", , FunctionParameters, Text); - -EndProcedure - -Procedure Airtable_EditComment(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Comment = FunctionParameters["Airtable_Comment"]; - - Text = "Test comment (change.)"; - Result = OPI_Airtable.EditComment(Token, Base, Table, Record, Comment, Text); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "EditComment", , Text); - -EndProcedure - -Procedure Airtable_GetComments(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - - Result = OPI_Airtable.GetComments(Token, Base, Table, Record); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetComments"); - -EndProcedure - -Procedure Airtable_DeleteComment(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Comment = FunctionParameters["Airtable_Comment"]; - - Result = OPI_Airtable.DeleteComment(Token, Base, Table, Record, Comment); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "DeleteComment", , Comment); - -EndProcedure - -Procedure Airtable_GetListOfRecords(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - - Result = OPI_Airtable.GetListOfRecords(Token, Base, Table); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "GetListOfRecords"); - -EndProcedure - -Procedure Airtable_DeleteRecords(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - - Result = OPI_Airtable.DeleteRecords(Token, Base, Table, Record); - - // END - - OPI_TestDataRetrieval.Process(Result, "Airtable", "DeleteRecords"); - -EndProcedure - -#EndRegion // Airtable - -#EndRegion // AtomicTests - -#EndRegion // Private diff --git a/src/en/OInt/tests/Modules/OPI_TestsCLI.os b/src/en/OInt/tests/Modules/OPI_TestsCLI.os deleted file mode 100644 index e0f971d80b..0000000000 --- a/src/en/OInt/tests/Modules/OPI_TestsCLI.os +++ /dev/null @@ -1,39076 +0,0 @@ - // OneScript: ./OInt/tests/Modules/OPI_TestsCLI.os - -// MIT License - -// Copyright (c) 2023-2026 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 - -// Test suite for YAxUnit - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:UsingServiceTag-off -// BSLLS:UnusedParameters-off -// BSLLS:DuplicateStringLiteral-off -// BSLLS:UsingHardcodePath-off -// BSLLS:UnusedLocalVariable-off -// BSLLS:DeprecatedMessage-off -// BSLLS:LineLength-off -// BSLLS:MagicNumber-off -// BSLLS:CommentedCode-off -// BSLLS:AssignAliasFieldsInQuery-off -// BSLLS:UsingHardcodeNetworkAddress-off -// BSLLS:UnreachableCode-off -// BSLLS:UnusedLocalMethod-off -// BSLLS:NestedFunctionInParameters-off -// BSLLS:MissingTemporaryFileDeletion-off -// BSLLS:UsingSynchronousCalls-off -// BSLLS:MagicNumber-off -// BSLLS:MagicDate-off -// BSLLS:MissingParameterDescription-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:MethodSize-off -// BSLLS:NestedConstructorsInStructureDeclaration-off -// BSLLS:NumberOfValuesInStructureConstructor-off -// BSLLS:UsingHardcodeSecretInformation-off -// BSLLS:SpaceAtStartComment-off - -//@skip-check undefined-variable -//@skip-check wrong-string-literal-content -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check undefined-function-or-procedure -//@skip-check wrong-string-literal-content -//@skip-check module-unused-local-variable -//@skip-check bsl-legacy-check-string-literal -//@skip-check bsl-legacy-check-method-for-statements-after-return -//@skip-check missing-temporary-file-deletion -//@skip-check module-unused-method - -#Use "../../tools/main" - #Use "../../tools/http" - #Use "../../api" -#Use asserts -#Use "internal" - -#Region Internal - -// For YAxUnit - -Procedure ИсполняемыеСценарии() Export - - OPI_TestDataRetrieval.FormYAXTestsCLI(); - -EndProcedure - -// For Asserts - -Function ПолучитьСписокТестов(UnitTesting) Export - - Return OPI_TestDataRetrieval.FormAssertsTestsCLI(); - -EndFunction - -#Region RunnableTests - -#Region Service - -Procedure CheckIBToLastBuildCompliance() Export - - If OPI_TestDataRetrieval.IsCLITest() Then - - //@skip-check use-non-recommended-method - Message("CLI test check for hash sum"); - BuildSum = OPI_TestDataRetrieval.ExecuteTestCLI("hashsum", "", New Structure); - - Else - - BuildSum = OPI_Tools.GetLastBuildHashSum(); - - EndIf; - - URL = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/refs/heads/main/service/last_build_hash.txt"; - - LastSum = OPI_HTTPRequests - .NewRequest() - .Initialize(URL) - .ProcessRequest("GET") - .ReturnResponseAsString(False, True); - - Process(BuildSum, "BuildCheck", "CheckIBToLastBuildCompliance", , LastSum); - -EndProcedure - -#EndRegion - -#Region Telegram - -Procedure TelegramAPI_GetBotInfo() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); - - Telegram_GetBotInformation(TestParameters); - -EndProcedure - -Procedure TelegramAPI_GetUpdates() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); - - Telegram_DeleteWebhook(TestParameters); - Telegram_GetUpdates(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SetWebhook() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_URL" , TestParameters); - - Telegram_SetWebhook(TestParameters); - Telegram_DeleteWebhook(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendTextMessage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - - Telegram_SendTextMessage(TestParameters); - Telegram_ReplaceMessageText(TestParameters); - Telegram_ReplaceMessageKeyboard(TestParameters); - Telegram_FormKeyboardFromButtonArray(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendImage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Telegram_SendImage(TestParameters); - Telegram_ReplaceMessageCaption(TestParameters); - Telegram_DownloadFile(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendVideo() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); - - Telegram_SendVideo(TestParameters); - Telegram_DownloadFile(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendAudio() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters); - - Telegram_SendAudio(TestParameters); - Telegram_DownloadFile(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendDocument() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Telegram_SendDocument(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendGIF() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GIF" , TestParameters); - - Telegram_SendGif(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendMediaGroup() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Telegram_SendMediaGroup(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendLocation() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Long" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Lat" , TestParameters); - - Telegram_SendLocation(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendContact() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Name" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Surname" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Phone" , TestParameters); - - Telegram_SendContact(TestParameters); - -EndProcedure - -Procedure TelegramAPI_SendPoll() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - - Telegram_SendPoll(TestParameters); - -EndProcedure - -Procedure TelegramAPI_ForwardMessage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelMessageID", TestParameters); - - Telegram_ForwardMessage(TestParameters); - -EndProcedure - -Procedure TelegramAPI_BanUnban() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - - Telegram_Ban(TestParameters); - Telegram_Unban(TestParameters); - -EndProcedure - -Procedure TelegramAPI_CreateInvitationLink() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - - Telegram_CreateInvitationLink(TestParameters); - -EndProcedure - -Procedure TelegramAPI_PinUnpinMessage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelMessageID", TestParameters); - - Telegram_PinMessage(TestParameters); - Telegram_UnpinMessage(TestParameters); - Telegram_DeleteMessage(TestParameters); - -EndProcedure - -Procedure TelegramAPI_GetMemberCount() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); - - Telegram_GetParticipantCount(TestParameters); - -EndProcedure - -Procedure TelegramAPI_GetForumAvatarsList() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); - - Telegram_GetAvatarIconList(TestParameters); - -EndProcedure - -Procedure TelegramAPI_CreateDeleteForumTopic() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); - - Telegram_CreateForumTopic(TestParameters); - Telegram_EditForumTopic(TestParameters); - Telegram_CloseForumTopic(TestParameters); - Telegram_OpenForumTopic(TestParameters); - Telegram_ClearTopicPinnedMessagesList(TestParameters); - Telegram_DeleteForumTopic(TestParameters); - -EndProcedure - -Procedure TelegramAPI_HideShowMainTopic() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); - - Telegram_HideMainForumTopic(TestParameters); - Telegram_ShowMainForumTopic(TestParameters); - -EndProcedure - -Procedure TelegramAPI_ChangeMainTopicName() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); - - Telegram_EditMainForumTopicName(TestParameters); - -EndProcedure - -#EndRegion - -#Region VK - -Procedure VKAPI_CreateTokenLink() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("VK_AppID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VK_GroupID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VK_Token" , TestParameters); - - VK_CreateTokenRetrievalLink(TestParameters); - VK_GetAuthParameters(TestParameters); - -EndProcedure - -Procedure VKAPI_CreateDeletePost() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); - - VK_CreatePost(TestParameters); - VK_DeletePost(TestParameters); - -EndProcedure - -Procedure VKAPI_CreateCompositePost() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); - - VK_CreateCompositePost(TestParameters); - -EndProcedure - -Procedure VKAPI_CreatePoll() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); - - VK_CreatePoll(TestParameters); - -EndProcedure - -Procedure VKAPI_SaveDeleteImage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); - - VK_CreateAlbum(TestParameters); - VK_SaveImageToAlbum(TestParameters); - VK_DeleteImage(TestParameters); - VK_DeleteAlbum(TestParameters); - VK_UploadPhotoToServer(TestParameters); - -EndProcedure - -Procedure VKAPI_CreateStory() Export - - TestParameters = New Map; - OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); - - VK_CreateStory(TestParameters); - -EndProcedure - -Procedure VKAPI_LikeRepostComment() Export - - TestParameters = New Structure; - Parameters = GetVKParameters(); - Text = "Post from autotest"; - - Result = OPI_VK.CreatePost(Text, New Array, , , Parameters); - PostID = Result["response"]["post_id"]; - - OPI_TestDataRetrieval.WriteParameter("VK_PostID", PostID); - OPI_TestDataRetrieval.ParameterToCollection("VK_PostID", TestParameters); - - VK_MakeRepost(TestParameters); - VK_WriteComment(TestParameters); - VK_ShortenLink(TestParameters); - - OPI_VK.DeletePost(PostID , Parameters); - OPI_VK.DeletePost(TestParameters["Repost"], Parameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_GetStatistics() Export - - TestParameters = New Structure; - - VK_GetStatistics(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_GetPostStatistics() Export - - TestParameters = New Structure; - - VK_GetPostStatistics(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_CreateAdCampaign() Export - - Parameters = GetVKParameters(); - Text = "Post from autotest"; - - Result = OPI_VK.CreatePost(Text, New Array, , , Parameters); - PostID = Result["response"]["post_id"]; - - OPI_TestDataRetrieval.WriteParameter("VK_PostID", PostID); - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("VK_AdsCabinetID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VK_PostID" , TestParameters); - - // !DISABLED! VK_CreateAdvertisingCampaign(TestParameters); - // !DISABLED! VK_CreateAd(TestParameters); - // !DISABLED! VK_PauseAdvertising(TestParameters); - VK_GetAdvertisingCategoryList(TestParameters); - - OPI_VK.DeletePost(PostID, Parameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_SendMessage() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("VK_UserID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VK_CommunityToken", TestParameters); - - VK_FormKeyboard(TestParameters); - VK_WriteMessage(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_GetProductCategories() Export - - TestParameters = New Structure; - - VK_GetProductCategoryList(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_CreateProductSelection() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); - - VK_CreateProductCollection(TestParameters); - VK_EditProductCollection(TestParameters); - VK_GetSelectionsByID(TestParameters); - VK_AddProduct(TestParameters); - VK_EditProduct(TestParameters); - VK_AddProductToCollection(TestParameters); - VK_RemoveProductFromSelection(TestParameters); - VK_DeleteProduct(TestParameters); - VK_DeleteSelection(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VKAPI_CreateProductWithProperties() Export - - Parameters = GetVKParameters(); - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); - - VK_GetProductDescription(TestParameters); - VK_CreateProductProperty(TestParameters); - VK_EditProductProperty(TestParameters); - VK_AddProductPropertyVariant(TestParameters); - VK_EditProductPropertyVariant(TestParameters); - VK_CreateProductWithProp(TestParameters); - VK_GetProductsByID(TestParameters); - VK_GroupProducts(TestParameters); - - OPI_VK.DeleteProduct(TestParameters["VK_MarketItemID2"], Parameters); - OPI_VK.DeleteProduct(TestParameters["VK_MarketItemID3"], Parameters); - - VK_DeleteProductPropertyVariant(TestParameters); - VK_DeleteProductProperty(TestParameters); - -EndProcedure - -Procedure VKAPI_GetProductList() Export - - TestParameters = New Structure; - - VK_GetProductList(TestParameters); - -EndProcedure - -Procedure VKAPI_GetSelectionList() Export - - TestParameters = New Structure; - - VK_GetSelectionList(TestParameters); - -EndProcedure - -Procedure VKAPI_GetPropertyList() Export - - TestParameters = New Structure; - - VK_GetPropertyList(TestParameters); - -EndProcedure - -Procedure VKAPI_GetOrderList() Export - - TestParameters = New Structure; - - VK_GetOrderList(TestParameters); - -EndProcedure - -Procedure VKAPI_UploadVideo() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Video", TestParameters); - - VK_UploadVideoToServer(TestParameters); - -EndProcedure - -#EndRegion - -#Region YandexDisk - -Procedure YDisk_Authorization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_ClientID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_ClientSecret", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_RefreshToken", TestParameters); - - YandexDisk_GetConfirmationCode(TestParameters); - YandexDisk_ConvertCodeToToken(TestParameters); - YandexDisk_RefreshToken(TestParameters); - -EndProcedure - -Procedure YDisk_GetDiskInfo() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - - YandexDisk_GetDiskInformation(TestParameters); - -EndProcedure - -Procedure YDisk_CreateFolder() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - - YandexDisk_CreateFolder(TestParameters); - -EndProcedure - -Procedure YDisk_UploadByUrlAndGetObject() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - YandexDisk_UploadFileByURL(TestParameters); - YandexDisk_GetObject(TestParameters); - YandexDisk_DeleteObject(TestParameters); - -EndProcedure - -Procedure YDisk_UploadDeleteFile() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters); - - YandexDisk_UploadFileInParts(TestParameters); - YandexDisk_UploadFile(TestParameters); - -EndProcedure - -Procedure YDisk_CreateObjectCopy() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Token = TestParameters["YandexDisk_Token"]; - URL = TestParameters["Picture"]; - - OriginalPath = "/" + String(New UUID) + ".png"; - - OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); - OPI_Tools.Pause(35); - - OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); - TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); - - YandexDisk_CreateObjectCopy(TestParameters); - - CopyPath = TestParameters["YandexDisk_CopyFilePath"]; - - OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); - OPI_YandexDisk.DeleteObject(Token, CopyPath , False); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure YDisk_GetDownloadLink() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Token = TestParameters["YandexDisk_Token"]; - URL = TestParameters["Picture"]; - - Path = "/" + String(New UUID) + ".png"; - - OPI_YandexDisk.UploadFileByURL(Token, Path, URL); - OPI_Tools.Pause(35); - - OPI_TestDataRetrieval.WriteParameter("YandexDisk_PathForLink", Path); - TestParameters.Insert("YandexDisk_PathForLink", Path); - - YandexDisk_GetDownloadLink(TestParameters); - YandexDisk_DownloadFile(TestParameters); - - OPI_YandexDisk.DeleteObject(Token, Path, False); - -EndProcedure - -Procedure YDisk_GetFileList() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - - YandexDisk_GetFilesList(TestParameters); - -EndProcedure - -Procedure YDisk_MoveObject() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Token = TestParameters["YandexDisk_Token"]; - URL = TestParameters["Picture"]; - - OriginalPath = "/" + String(New UUID) + ".png"; - - OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); - OPI_Tools.Pause(35); - - OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); - TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); - - YandexDisk_MoveObject(TestParameters); - - NewPath = TestParameters["YandexDisk_NewFilePath"]; - - OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); - OPI_YandexDisk.DeleteObject(Token, NewPath , False); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure YDisk_PublicObjectActions() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Token = TestParameters["YandexDisk_Token"]; - URL = TestParameters["Picture"]; - - OriginalPath = "/" + String(New UUID) + ".png"; - - OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); - OPI_Tools.Pause(35); - - OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); - TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); - - YandexDisk_PublishObject(TestParameters); - YandexDisk_GetDownloadLinkForPublicObject(TestParameters); - YandexDisk_GetPublicObject(TestParameters); - YandexDisk_SavePublicObjectToDisk(TestParameters); - YandexDisk_CancelObjectPublication(TestParameters); - - OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure YDisk_GetPublishedList() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); - - YandexDisk_GetPublishedObjectsList(TestParameters); - -EndProcedure - -#EndRegion - -#Region Viber - -Procedure Viber_DataRetrieval() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelToken" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelAdminID", TestParameters); - - Return; - - //@skip-check unreachable-statements - // BSLLS:UnreachableCode-off - - Viber_GetChannelInformation(TestParameters); - Viber_GetUserData(TestParameters); - Viber_GetOnlineUsers(TestParameters); - Viber_SetWebhook(TestParameters); - - // BSLLS:UnreachableCode-on - -EndProcedure - -Procedure Viber_MessagesSending() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelToken" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelAdminID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Viber_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Viber_UserID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Viber_CreateKeyboardFromArrayButton(TestParameters); - - Return; - - //@skip-check unreachable-statement - // BSLLS:UnreachableCode-off - - Viber_SendTextMessage(TestParameters); - Viber_SendImage(TestParameters); - Viber_SendFile(TestParameters); - Viber_SendContact(TestParameters); - Viber_SendLocation(TestParameters); - Viber_SendLink(TestParameters); - - // BSLLS:UnreachableCode-on - -EndProcedure - -#EndRegion - -#Region GoogleWorkspace - -Procedure GW_Auth() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); - - GoogleWorkspace_FormCodeRetrievalLink(TestParameters); - GoogleWorkspace_GetTokenByCode(TestParameters); - GoogleWorkspace_RefreshToken(TestParameters); - GoogleWorkspace_GetServiceAccountToken(TestParameters); - -EndProcedure - -#EndRegion - -#Region GoogleCalendar - -Procedure GC_Authorization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); - - GoogleCalendar_FormCodeRetrievalLink(TestParameters); - GoogleCalendar_GetTokenByCode(TestParameters); - GoogleCalendar_RefreshToken(TestParameters); - GoogleCalendar_GetServiceAccountToken(TestParameters); - -EndProcedure - -Procedure GC_GetCalendarList() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - - GoogleCalendar_GetCalendarList(TestParameters); - -EndProcedure - -Procedure GC_CreateDeleteCalendar() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - - GoogleCalendar_CreateCalendar(TestParameters); - GoogleCalendar_EditCalendarMetadata(TestParameters); - GoogleCalendar_GetCalendarMetadata(TestParameters); - GoogleCalendar_AddCalendarToList(TestParameters); - GoogleCalendar_EditListCalendar(TestParameters); - GoogleCalendar_GetListCalendar(TestParameters); - GoogleCalendar_ClearMainCalendar(TestParameters); - // !DISABLED! GoogleCalendar_DeleteCalendarFromList(TestParameters); - GoogleCalendar_DeleteCalendar(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure GC_CreateDeleteEvent() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_NewCalendarID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_CalendarID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - - GoogleCalendar_CreateCalendar(TestParameters); - GoogleCalendar_CreateEvent(TestParameters); - GoogleCalendar_EditEvent(TestParameters); - GoogleCalendar_GetEvent(TestParameters); - GoogleCalendar_MoveEvent(TestParameters); - GoogleCalendar_GetEventList(TestParameters); - GoogleCalendar_GetEventDescription(TestParameters); - GoogleCalendar_DeleteEvent(TestParameters); - GoogleCalendar_DeleteCalendar(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -#EndRegion - -#Region GoogleDrive - -Procedure GD_Authorization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); - - GoogleDrive_FormCodeRetrievalLink(TestParameters); - GoogleDrive_GetTokenByCode(TestParameters); - GoogleDrive_RefreshToken(TestParameters); - GoogleDrive_GetServiceAccountToken(TestParameters); - -EndProcedure - -Procedure GD_GetCatalogList() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - - GoogleDrive_GetDirectoriesList(TestParameters); - GoogleDrive_GetObjectInformation(TestParameters); - -EndProcedure - -Procedure GD_UploadDeleteFile() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GD_Catalog" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Big" , TestParameters); - - TestParameters.Insert("ArrayOfDeletions", New Array); - - GoogleDrive_UploadFile(TestParameters); - GoogleDrive_CopyObject(TestParameters); - GoogleDrive_DownloadFile(TestParameters); - GoogleDrive_UpdateFile(TestParameters); - GoogleDrive_GetFilesList(TestParameters); - GoogleDrive_DeleteObject(TestParameters); - GoogleDrive_GetFileDescription(TestParameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure GD_CreateDeleteComment() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GD_Catalog" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - TestParameters.Insert("ArrayOfDeletions", New Array); - - GoogleDrive_UploadFile(TestParameters); - - GoogleDrive_CreateComment(TestParameters); - GoogleDrive_GetComment(TestParameters); - GoogleDrive_GetCommentList(TestParameters); - GoogleDrive_DeleteComment(TestParameters); - - GoogleDrive_DeleteObject(TestParameters); - -EndProcedure - -Procedure GD_CreateCatalog() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GD_Catalog" , TestParameters); - - GoogleDrive_CreateFolder(TestParameters); - -EndProcedure - -#EndRegion - -#Region GoogleSheets - -Procedure GT_Authorization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); - - GoogleSheets_FormCodeRetrievalLink(TestParameters); - GoogleSheets_GetTokenByCode(TestParameters); - GoogleSheets_RefreshToken(TestParameters); - GoogleSheets_GetServiceAccountToken(TestParameters); - -EndProcedure - -Procedure GT_CreateTable() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - - GoogleSheets_CreateSpreadsheet(TestParameters); - GoogleSheets_GetSpreadsheet(TestParameters); - GoogleSheets_CopySheet(TestParameters); - GoogleSheets_AddSheet(TestParameters); - GoogleSheets_DeleteSheet(TestParameters); - GoogleSheets_EditSpreadsheetTitle(TestParameters); - GoogleSheets_GetTable(TestParameters); - - OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet"]); - OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet2"]); - -EndProcedure - -Procedure GT_FillClearCells() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); - - GoogleSheets_CreateSpreadsheet(TestParameters); - GoogleSheets_SetCellValues(TestParameters); - GoogleSheets_GetCellValues(TestParameters); - GoogleSheets_ClearCells(TestParameters); - - OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet"]); - OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet2"]); - -EndProcedure - -#EndRegion - -#Region Twitter - -Procedure TwitterAPI_AccountData() Export - - TestParameters = New Structure; - - Twitter_GetToken(TestParameters); - Twitter_GetAuthorizationLink(TestParameters); - // !DISABLED! Twitter_UpdateToken(TestParameters); - -EndProcedure - -Procedure TwitterAPI_Tweets() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GIF" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); - - Twitter_CreateTextTweet(TestParameters); - Twitter_UploadAttachmentsArray(TestParameters); - Twitter_CreateVideoTweet(TestParameters); - Twitter_CreateImageTweet(TestParameters); - Twitter_CreateGifTweet(TestParameters); - Twitter_CreatePollTweet(TestParameters); - Twitter_CreateCustomTweet(TestParameters); - -EndProcedure - -#EndRegion - -#Region Notion - -Procedure NotionAPI_CreatePage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - - Notion_CreatePage(TestParameters); - Notion_GetPage(TestParameters); - Notion_EditPageProperties(TestParameters); - -EndProcedure - -Procedure NotionAPI_CreateUpdateBase() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Notion_CreateDatabase(TestParameters); - Notion_EditDatabaseProperties(TestParameters); - Notion_GetDatabase(TestParameters); - Notion_CreatePageInDatabase(TestParameters); - -EndProcedure - -Procedure NotionAPI_CreateDeleteBlock() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Notion_Block" , TestParameters); - - Notion_ReturnBlock(TestParameters); - Notion_CreateBlock(TestParameters); - Notion_ReturnChildBlocks(TestParameters); - Notion_DeleteBlock(TestParameters); - -EndProcedure - -Procedure NotionAPI_GetUsers() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Notion_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Notion_User" , TestParameters); - - Notion_UserList(TestParameters); - Notion_GetUserData(TestParameters); - -EndProcedure - -#EndRegion - -#Region Slack - -Procedure SlackGetData() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); - - Slack_GetBotInformation(TestParameters); - Slack_GetUserList(TestParameters); - Slack_GetWorkspaceList(TestParameters); - -EndProcedure - -Procedure Slack_SendDeleteMessage() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); - - Slack_SendMessage(TestParameters); - Slack_EditMessage(TestParameters); - Slack_GetMessageReplyList(TestParameters); - Slack_GetMessageLink(TestParameters); - Slack_DeleteMessage(TestParameters); - Slack_SendEphemeralMessage(TestParameters); - Slack_GetDelayedMessageList(TestParameters); - Slack_GenerateImageBlock(TestParameters); - -EndProcedure - -Procedure Slack_CreateArchiveChannel() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); - - Slack_CreateChannel(TestParameters); - Slack_SetChannelTopic(TestParameters); - Slack_SetChannelGoal(TestParameters); - Slack_GetChannel(TestParameters); - Slack_InviteUsersToChannel(TestParameters); - Slack_KickUserFromChannel(TestParameters); - Slack_GetChannelHistory(TestParameters); - Slack_GetChannelUserList(TestParameters); - Slack_LeaveChannel(TestParameters); - Slack_JoinChannel(TestParameters); - Slack_RenameChannel(TestParameters); - Slack_ArchiveChannel(TestParameters); - Slack_GetChannelList(TestParameters); - -EndProcedure - -Procedure Slack_OpenCloseDialog() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); - - Slack_OpenDialog(TestParameters); - Slack_CloseDialog(TestParameters); - -EndProcedure - -Procedure Slack_UploadDeleteFile() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Slack_GetFilesList(TestParameters); - Slack_UploadFile(TestParameters); - Slack_MakeFilePublic(TestParameters); - Slack_MakeFilePrivate(TestParameters); - Slack_GetFileData(TestParameters); - Slack_DeleteFile(TestParameters); - -EndProcedure - -Procedure Slack_UploadDeleteExternalFile() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Slack_GetExternalFileList(TestParameters); - Slack_AddExternalFile(TestParameters); - Slack_GetExternalFile(TestParameters); - Slack_SendExternalFile(TestParameters); - Slack_DeleteExternalFile(TestParameters); - -EndProcedure - -#EndRegion - -#Region Airtable - -Procedure AT_CreateDatabase() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Workspace", TestParameters); - - Airtable_CreateDatabase(TestParameters); - Airtable_GetDatabaseTables(TestParameters); - Airtable_GetListOfBases(TestParameters); - -EndProcedure - -Procedure AT_CreateTable() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Base" , TestParameters); - - Airtable_GetNumberField(TestParameters); - Airtable_GetStringField(TestParameters); - Airtable_GetAttachmentField(TestParameters); - Airtable_GetCheckboxField(TestParameters); - Airtable_GetDateField(TestParameters); - Airtable_GetPhoneField(TestParameters); - Airtable_GetEmailField(TestParameters); - Airtable_GetLinkField(TestParameters); - Airtable_CreateTable(TestParameters); - Airtable_ModifyTable(TestParameters); - -EndProcedure - -Procedure AT_CreateField() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Base" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Table", TestParameters); - - Airtable_CreateField(TestParameters); - Airtable_ModifyField(TestParameters); - -EndProcedure - -Procedure AT_CreateDeleteRecords() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Base" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Airtable_Table", TestParameters); - - Airtable_CreatePosts(TestParameters); - Airtable_GetRecord(TestParameters); - Airtable_CreateComment(TestParameters); - Airtable_EditComment(TestParameters); - Airtable_GetComments(TestParameters); - Airtable_DeleteComment(TestParameters); - Airtable_GetListOfRecords(TestParameters); - Airtable_DeleteRecords(TestParameters); - -EndProcedure - -#EndRegion - -#Region Dropbox - -Procedure DropboxAPI_GetUpdateToken() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Appkey" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Appsecret", TestParameters); - - Dropbox_GetAuthorizationLink(TestParameters); - - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Code", TestParameters); - - Dropbox_GetToken(TestParameters); - - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Refresh", TestParameters); - - Dropbox_RefreshToken(TestParameters); - -EndProcedure - -Procedure DropboxAPI_UploadFile() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Big" , TestParameters); - - Dropbox_UploadFile(TestParameters); - Dropbox_GetObjectInformation(TestParameters); - Dropbox_GetObjectVersionList(TestParameters); - Dropbox_RestoreObjectToVersion(TestParameters); - Dropbox_GetPreview(TestParameters); - Dropbox_DownloadFile(TestParameters); - Dropbox_MoveObject(TestParameters); - Dropbox_CopyObject(TestParameters); - Dropbox_DeleteObject(TestParameters); - -EndProcedure - -Procedure DropboxAPI_CreateFolder() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); - - Dropbox_CreateFolder(TestParameters); - Dropbox_DownloadFolder(TestParameters); - -EndProcedure - -Procedure DropboxAPI_GetFolderFileList() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); - - Dropbox_GetListOfFolderFiles(TestParameters); - -EndProcedure - -Procedure DropboxAPI_UploadFileByURL() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Dropbox_UploadFileByURL(TestParameters); - Dropbox_GetUploadStatusByURL(TestParameters); - -EndProcedure - -Procedure DropboxAPI_CreateDeleteTag() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); - - Dropbox_AddTag(TestParameters); - Dropbox_GetTagList(TestParameters); - Dropbox_DeleteTag(TestParameters); - -EndProcedure - -Procedure DropboxAPI_GetAccount() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); - - Dropbox_GetAccountInformation(TestParameters); - Dropbox_GetSpaceUsageData(TestParameters); - -EndProcedure - -Procedure DropboxAPI_AccessManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_OtherUser", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Dropbox_FileID" , TestParameters); - - Dropbox_AddUsersToFile(TestParameters); - Dropbox_PublishFolder(TestParameters); - Dropbox_AddUsersToFolder(TestParameters); - Dropbox_CancelFolderPublication(TestParameters); - Dropbox_GetAsynchronousChangeStatus(TestParameters); - Dropbox_CancelFilePublication(TestParameters); - -EndProcedure - -#EndRegion - -#Region Bitrix24 - -Procedure B24_TokenManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_ClientID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_ClientSecret", TestParameters); - - Bitrix24_GetAppAuthLink(TestParameters); - - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Code", TestParameters); - - Bitrix24_GetToken(TestParameters); - - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Refresh", TestParameters); - - Bitrix24_RefreshToken(TestParameters); - -EndProcedure - -Procedure B24_ServerTime() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - Bitrix24_ServerTime(TestParameters); - -EndProcedure - -Procedure B24_PostsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - - Bitrix24_CreatePost(TestParameters); - Bitrix24_UpdatePost(TestParameters); - Bitrix24_GetImportantPostViewers(TestParameters); - Bitrix24_GetPosts(TestParameters); - Bitrix24_AddPostComment(TestParameters); - Bitrix24_AddPostRecipients(TestParameters); - Bitrix24_DeletePost(TestParameters); - -EndProcedure - -Procedure B24_TaskManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_UserID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Bitrix24_GetTaskFieldsStructure(TestParameters); - Bitrix24_CreateTask(TestParameters); - Bitrix24_CreateTasksDependencies(TestParameters); - Bitrix24_DeleteTasksDependencies(TestParameters); - Bitrix24_UpdateTask(TestParameters); - Bitrix24_GetTask(TestParameters); - Bitrix24_MuteTask(TestParameters); - Bitrix24_UnmuteTask(TestParameters); - Bitrix24_AddTaskToFavorites(TestParameters); - Bitrix24_RemoveTaskFromFavorites(TestParameters); - Bitrix24_DelegateTask(TestParameters); - Bitrix24_DeferTask(TestParameters); - Bitrix24_CompleteTask(TestParameters); - Bitrix24_DisapproveTask(TestParameters); - Bitrix24_ApproveTask(TestParameters); - Bitrix24_RenewTask(TestParameters); - Bitrix24_StartTask(TestParameters); - Bitrix24_StartWatchingTask(TestParameters); - Bitrix24_StopWatchingTask(TestParameters); - Bitrix24_PauseTask(TestParameters); - Bitrix24_GetTaskHistory(TestParameters); - Bitrix24_GetTasksList(TestParameters); - Bitrix24_CheckTaskAccesses(TestParameters); - Bitrix24_AddTasksChecklistElement(TestParameters); - Bitrix24_UpdateTasksChecklistElement(TestParameters); - Bitrix24_GetTasksChecklist(TestParameters); - Bitrix24_GetTasksChecklistElement(TestParameters); - Bitrix24_CompleteTasksChecklistElement(TestParameters); - Bitrix24_RenewTasksChecklistElement(TestParameters); - Bitrix24_DeleteTasksChecklistElement(TestParameters); - Bitrix24_GetDailyPlan(TestParameters); - Bitrix24_GetTasksFilterStructure(TestParameters); - - Name = "Topic picture.jpg"; - Image = TestParameters["Picture"]; - DestinationID = 3; - - URL = TestParameters["Bitrix24_URL"]; - - Result = OPI_Bitrix24.UploadFileToStorage(URL, Name, Image, DestinationID); - FileID = Result["result"]["ID"]; - - OPI_TestDataRetrieval.WriteParameter("Bitrix24_TaskFileID", FileID); - TestParameters.Insert("Bitrix24_TaskFileID", FileID); - - Bitrix24_AttachFileToTopic(TestParameters); - - OPI_Bitrix24.DeleteFile(URL, FileID); - - Bitrix24_DeleteTask(TestParameters); - -EndProcedure - -Procedure B24_WorkingWithDrive() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - - Bitrix24_GetStoragesList(TestParameters); - Bitrix24_GetAppStorage(TestParameters); - Bitrix24_RenameStorage(TestParameters); - Bitrix24_GetStorage(TestParameters); - Bitrix24_UploadFileToStorage(TestParameters); - Bitrix24_GetStorageObjects(TestParameters); - Bitrix24_GetFileInformation(TestParameters); - Bitrix24_GetFileExternalLink(TestParameters); - Bitrix24_RenameFile(TestParameters); - Bitrix24_MarkFileAsDeleted(TestParameters); - Bitrix24_RestoreFile(TestParameters); - Bitrix24_CreateStorageFolder(TestParameters); - Bitrix24_RenameFolder(TestParameters); - Bitrix24_GetFolderInformation(TestParameters); - Bitrix24_GetFolderExternalLink(TestParameters); - Bitrix24_CreateSubfolder(TestParameters); - Bitrix24_MoveFileToFolder(TestParameters); - Bitrix24_MakeFolderCopy(TestParameters); - Bitrix24_UploadFileToFolder(TestParameters); - Bitrix24_MakeFileCopy(TestParameters); - Bitrix24_DeleteFile(TestParameters); - Bitrix24_GetFolderFilterStructure(TestParameters); - Bitrix24_GetFolderItems(TestParameters); - Bitrix24_MoveFolder(TestParameters); - Bitrix24_MarkFolderAsDeleted(TestParameters); - Bitrix24_RestoreFolder(TestParameters); - Bitrix24_DeleteFolder(TestParameters); - -EndProcedure - -Procedure B24_CommentsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - CurrentDate = OPI_Tools.GetCurrentDate(); - Hour = 3600; - Day = 24; - Responsible = 1; - - TaskData = New Structure; - TaskData.Insert("TITLE" , "New task"); - TaskData.Insert("DESCRIPTION" , "New task description"); - TaskData.Insert("PRIORITY" , "2"); - TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); - TaskData.Insert("RESPONSIBLE_ID", Responsible); - - URL = TestParameters["Bitrix24_URL"]; - - Result = OPI_Bitrix24.CreateTask(URL, TaskData); - TaskID = Result["result"]["task"]["id"]; - - OPI_TestDataRetrieval.WriteParameter("Bitrix24_CommentsTaskID", TaskID); - TestParameters.Insert("Bitrix24_CommentsTaskID", TaskID); - - Bitrix24_AddTaskComment(TestParameters); - Bitrix24_UpdateTaskComment(TestParameters); - // !DISABLED! Bitrix24_CreateResultFromComment(TestParameters); - // !DISABLED! Bitrix24_GetResultsList(TestParameters); - // !DISABLED! Bitrix24_DeleteResultFromComment(TestParameters); - // !DISABLED! Bitrix24_GetTaskCommentsList(TestParameters); - // !DISABLED! Bitrix24_GetTaskComment(TestParameters); - // !DISABLED! Bitrix24_DeleteTaskComment(TestParameters); - Bitrix24_GetCommentStructure(TestParameters); - - OPI_Bitrix24.DeleteTask(URL, TaskID); - -EndProcedure - -Procedure B24_Timekeeping() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - CurrentDate = OPI_Tools.GetCurrentDate(); - Hour = 3600; - Day = 24; - Responsible = 1; - - TaskData = New Structure; - TaskData.Insert("TITLE" , "New task"); - TaskData.Insert("DESCRIPTION" , "New task description"); - TaskData.Insert("PRIORITY" , "2"); - TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); - TaskData.Insert("RESPONSIBLE_ID", Responsible); - - URL = TestParameters["Bitrix24_URL"]; - - Result = OPI_Bitrix24.CreateTask(URL, TaskData); - TaskID = Result["result"]["task"]["id"]; - - OPI_TestDataRetrieval.WriteParameter("Bitrix24_ElapsedTaskID", TaskID); - TestParameters.Insert("Bitrix24_ElapsedTaskID", TaskID); - - Bitrix24_AddTaskTimeAccounting(TestParameters); - Bitrix24_GetTaskTimeAccounting(TestParameters); - Bitrix24_GetTaskTimeAccountingList(TestParameters); - Bitrix24_UpdateTaskTimeAccounting(TestParameters); - Bitrix24_DeleteTaskTimeAccounting(TestParameters); - Bitrix24_StartTimekeeping(TestParameters); - Bitrix24_PauseTimekeeping(TestParameters); - Bitrix24_GetTimekeepingStatus(TestParameters); - Bitrix24_StopTimekeeping(TestParameters); - Bitrix24_GetTimekeepingSettings(TestParameters); - - OPI_Bitrix24.DeleteTask(URL, TaskID); - -EndProcedure - -Procedure B24_Kanban() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - CurrentDate = OPI_Tools.GetCurrentDate(); - Hour = 3600; - Day = 24; - Responsible = 1; - - TaskData = New Structure; - TaskData.Insert("TITLE" , "New task"); - TaskData.Insert("DESCRIPTION" , "New task description"); - TaskData.Insert("PRIORITY" , "2"); - TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); - TaskData.Insert("RESPONSIBLE_ID", Responsible); - - URL = TestParameters["Bitrix24_URL"]; - - Result = OPI_Bitrix24.CreateTask(URL, TaskData); - TaskID = Result["result"]["task"]["id"]; - - OPI_TestDataRetrieval.WriteParameter("Bitrix24_KanbanTaskID", TaskID); - TestParameters.Insert("Bitrix24_KanbanTaskID", TaskID); - - Bitrix24_AddKanbanStage(TestParameters); - Bitrix24_GetKanbanStages(TestParameters); - Bitrix24_MoveTaskToKanbanStage(TestParameters); - Bitrix24_UpdateKanbansStage(TestParameters); - - OPI_Bitrix24.DeleteTask(URL, TaskID); - - Bitrix24_DeleteKanbanStage(TestParameters); - -EndProcedure - -Procedure B24_ChatManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Bitrix24_GetUserStatus(TestParameters); - Bitrix24_SetUserStatus(TestParameters); - Bitrix24_GetUsers(TestParameters); - Bitrix24_CreateChat(TestParameters); - - OPI_Tools.Pause(5); - - Bitrix24_GetChatUsers(TestParameters); - Bitrix24_DeleteUserFromChat(TestParameters); - Bitrix24_AddUsersToChat(TestParameters); - Bitrix24_ChangeChatTitle(TestParameters); - - OPI_Tools.Pause(5); - - Bitrix24_ChangeChatColor(TestParameters); - Bitrix24_ChangeChatPicture(TestParameters); - Bitrix24_DisableChatNotifications(TestParameters); - Bitrix24_EnableChatNotifications(TestParameters); - - OPI_Tools.Pause(5); - - Bitrix24_GetChatMessagesList(TestParameters); - Bitrix24_MarkMessageAsReaded(TestParameters); - Bitrix24_MarkMessageAsUnreaded(TestParameters); - Bitrix24_GetDialog(TestParameters); - - OPI_Tools.Pause(5); - - Bitrix24_GetChatMembersList(TestParameters); - Bitrix24_SendWritingNotification(TestParameters); - Bitrix24_SendMessage(TestParameters); - Bitrix24_EditMessage(TestParameters); - Bitrix24_GetPictureBlock(TestParameters); - Bitrix24_GetFileBlock(TestParameters); - - OPI_Tools.Pause(5); - - Bitrix24_SetMessageReaction(TestParameters); - Bitrix24_DeleteMessage(TestParameters); - Bitrix24_GetChatFilesFolder(TestParameters); - Bitrix24_SendFile(TestParameters); - - OPI_Tools.Pause(5); - - Bitrix24_ReadAll(TestParameters); - Bitrix24_ChangeChatOwner(TestParameters); - Bitrix24_LeaveChat(TestParameters); - - Bitrix24_GetChatStructure(TestParameters); - -EndProcedure - -Procedure B24_NotificationsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - Bitrix24_CreatePersonalNotification(TestParameters); - Bitrix24_CreateSystemNotification(TestParameters); - Bitrix24_DeleteNotification(TestParameters); - -EndProcedure - -Procedure B24_TasksFieldsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_HookTaskFieldID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_TaskFieldID" , TestParameters); - - Bitrix24_AddCustomTaskField(TestParameters); - Bitrix24_UpdateCustomTaskField(TestParameters); - Bitrix24_GetCustomTaskField(TestParameters); - Bitrix24_GetCustomTaskFieldsList(TestParameters); - Bitrix24_DeleteCustomTaskField(TestParameters); - -EndProcedure - -Procedure B24_DepartmentsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - Bitrix24_CreateDepartment(TestParameters); - Bitrix24_GetDepartments(TestParameters); - Bitrix24_UpdateDepartment(TestParameters); - Bitrix24_DeleteDepartment(TestParameters); - -EndProcedure - -Procedure B2_UsersManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - Bitrix24_GetCurrentUser(TestParameters); - Bitrix24_GetUserFieldsStructure(TestParameters); - Bitrix24_CreateUser(TestParameters); - Bitrix24_FindUsers(TestParameters); - Bitrix24_UpdateUser(TestParameters); - Bitrix24_GetUser(TestParameters); - Bitrix24_ChangeUserStatus(TestParameters); - Bitrix24_GetUserFilterStructure(TestParameters); - -EndProcedure - -Procedure B24_LeadsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - Bitrix24_GetLeadsList(TestParameters); - Bitrix24_GetLeadFilterStructure(TestParameters); - Bitrix24_GetLeadStructure(TestParameters); - Bitrix24_CreateLead(TestParameters); - Bitrix24_GetLead(TestParameters); - Bitrix24_UpdateLead(TestParameters); - Bitrix24_DeleteLead(TestParameters); - -EndProcedure - -Procedure B24_DealsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - Bitrix24_GetDealsFilterStructure(TestParameters); - Bitrix24_GetDealStructure(TestParameters); - Bitrix24_CreateDeal(TestParameters); - Bitrix24_GetDeal(TestParameters); - Bitrix24_UpdateDeal(TestParameters); - Bitrix24_DeleteDeal(TestParameters); - Bitrix24_GetDealsList(TestParameters); - -EndProcedure - -Procedure B24_CalendarsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); - - Bitrix24_CreateCalendar(TestParameters); - Bitrix24_UpdateCalendar(TestParameters); - Bitrix24_GetCalendarList(TestParameters); - Bitrix24_CreateCalendarEvent(TestParameters); - Bitrix24_SetUserParticipationStatus(TestParameters); - Bitrix24_GetUserParticipationStatus(TestParameters); - Bitrix24_GetCalendarEvent(TestParameters); - Bitrix24_GetCalendarEvents(TestParameters); - Bitrix24_UpdateCalendarEvent(TestParameters); - Bitrix24_GetUserBusy(TestParameters); - Bitrix24_DeleteCalendarEvent(TestParameters); - Bitrix24_DeleteCalendar(TestParameters); - Bitrix24_GetCustomCalendarSettings(TestParameters); - Bitrix24_SetCustomCalendarSettings(TestParameters); - Bitrix24_GetCalendarStructure(TestParameters); - Bitrix24_GetCalendarSettingsStructure(TestParameters); - Bitrix24_GetCalednarCustomSettingsStructure(TestParameters); - Bitrix24_GetCalendarEventsStructure(TestParameters); - Bitrix24_GetCalendarEventsFilterStructure(TestParameters); - -EndProcedure - -#EndRegion - -#Region VkTeams - -Procedure VKT_CommonMethods() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_FileID", TestParameters); - - VkTeams_CheckToken(TestParameters); - VkTeams_GetEvents(TestParameters); - VKTeams_GetFileInformation(TestParameters); - -EndProcedure - -Procedure VKT_MessagesSending() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID2" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_MessageID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Audio2" , TestParameters); - - VkTeams_SendTextMessage(TestParameters); - OPI_Tools.Pause(60); - - VKTeams_AnswerButtonEvent(TestParameters); - VKTeams_ForwardMessage(TestParameters); - VKTeams_SendFile(TestParameters); - VKTeams_ResendFile(TestParameters); - VKTeams_EditMessageText(TestParameters); - VKTeams_PinMessage(TestParameters); - VKTeams_UnpinMessage(TestParameters); - VKTeams_DeleteMessage(TestParameters); - VKTeams_SendVoice(TestParameters); - VKTeams_ResendVoice(TestParameters); - VKTeams_MakeActionButton(TestParameters); - -EndProcedure - -Procedure VKT_ChatManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID2", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture3" , TestParameters); - - VKTeams_RemoveChatMembers(TestParameters); - VKTeams_ChangeChatPicture(TestParameters); - VKTeams_GetChatInfo(TestParameters); - VKTeams_GetChatAdmins(TestParameters); - VKTeams_GetChatMembers(TestParameters); - VKTeams_GetChatBlockedUsers(TestParameters); - VKTeams_GetChatJoinRequests(TestParameters); - VKTeams_BlockChatUser(TestParameters); - VKTeams_UnblockChatUser(TestParameters); - VKTeams_ApprovePending(TestParameters); - VKTeams_DisapprovePending(TestParameters); - VKTeams_SetChatTitle(TestParameters); - VKTeams_SetChatDescription(TestParameters); - VKTeams_SetChatRules(TestParameters); - -EndProcedure - -#EndRegion - -#Region Neocities - -Procedure NC_FilesManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("NC_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Gif" , TestParameters); - - Neocities_UploadFile(TestParameters); - Neocities_UploadFiles(TestParameters); - Neocities_GetFilesList(TestParameters); - Neocities_DeleteSelectedFiles(TestParameters); - Neocities_SynchronizeFolders(TestParameters); - -EndProcedure - -Procedure NC_DataRetrieving() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("NC_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("NC_Login" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("NC_Password", TestParameters); - - Neocities_GetSiteData(TestParameters); - Neocities_GetToken(TestParameters); - -EndProcedure - -#EndRegion - -#Region CDEK - -Procedure CdekAPI_CommonMethods() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("CDEK_Account" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("CDEK_Password", TestParameters); - - CDEK_GetToken(TestParameters); - CDEK_GetCashboxChecksByDate(TestParameters); - CDEK_GetDeliveryCashRegistry(TestParameters); - CDEK_GetDeliveryCashTransfers(TestParameters); - CDEK_GetOfficeFilterDescription(TestParameters); - CDEK_GetOfficeList(TestParameters); - CDEK_GetRegionsList(TestParameters); - -EndProcedure - -Procedure CDEKAPI_OrdersManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("CDEK_Token", TestParameters); - - CDEK_GetOrderDescription(TestParameters); - CDEK_CreateOrder(TestParameters); - - OPI_Tools.Pause(25); - - CDEK_GetOrder(TestParameters); - CDEK_GetOrderByNumber(TestParameters); - CDEK_CreateReceipt(TestParameters); - CDEK_CreateBarcode(TestParameters); - CDEK_CreatePrealert(TestParameters); - - OPI_Tools.Pause(25); - - CDEK_GetReceipt(TestParameters); - CDEK_GetBarcode(TestParameters); - CDEK_GetPrealert(TestParameters); - CDEK_GetPassportDataStatus(TestParameters); - CDEK_GetCashboxCheck(TestParameters); - CDEK_UpdateOrder(TestParameters); - CDEK_CreateCustomerRefund(TestParameters); - CDEK_CreateRefusal(TestParameters); - CDEK_DeleteOrder(TestParameters); - -EndProcedure - -Procedure CdekAPI_CourierInvitationsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("CDEK_Token", TestParameters); - - CDEK_CreateOrder(TestParameters); - - OPI_Tools.Pause(25); - - CDEK_GetCourierInvitationsDescription(TestParameters); - CDEK_CreateCourierInvitation(TestParameters); - CDEK_GetCourierInvitation(TestParameters); - CDEK_DeleteCourierInvitation(TestParameters); - CDEK_GetAppointmentDescription(TestParameters); - - CDEK_GetAvailableDeliveryIntervals(TestParameters); - CDEK_RegisterDeliveryAppointment(TestParameters); - - OPI_Tools.Pause(25); - - CDEK_GetDeliveryAppointment(TestParameters); - CDEK_DeleteOrder(TestParameters); - -EndProcedure - -#EndRegion - -#Region YandexMetrika - -Procedure YaMetrika_TagsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); - - YandexMetrika_CreateTag(TestParameters); - YandexMetrika_GetTagsList(TestParameters); - YandexMetrika_UpdateTag(TestParameters); - YandexMetrika_GetTag(TestParameters); - YandexMetrika_DeleteTag(TestParameters); - -EndProcedure - -Procedure YaMetrika_CountersManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); - - YandexMetrika_GetCounterStructure(TestParameters); - YandexMetrika_CreateCounter(TestParameters); - YandexMetrika_GetCounter(TestParameters); - YandexMetrika_UpdateCounter(TestParameters); - YandexMetrika_DeleteCounter(TestParameters); - YandexMetrika_RestoreCounter(TestParameters); - YandexMetrika_GetCountersList(TestParameters); - YandexMetrika_DeleteCounter(TestParameters); - -EndProcedure - -Procedure YaMetrika_ActionsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); - - YandexMetrika_CreateCounter(TestParameters); - YandexMetrika_GetActionsList(TestParameters); - YandexMetrika_DeleteCounter(TestParameters); - -EndProcedure - -#EndRegion - -#Region S3 - -Procedure AWS_CommonMethods() Export - - OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); - - For Each TestParameters In OptionArray Do - - S3_GetBasicDataStructure(TestParameters); - S3_SendRequestWithoutBody(TestParameters); - S3_SendRequestWithBody(TestParameters); - - EndDo; - -EndProcedure - -Procedure AWS_BucketsManagement() Export - - OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); - - For Each TestParameters In OptionArray Do - - S3_CreateBucket(TestParameters); - S3_ListBuckets(TestParameters); - S3_HeadBucket(TestParameters); - S3_PutBucketTagging(TestParameters); - S3_GetBucketTagging(TestParameters); - S3_DeleteBucketTagging(TestParameters); - S3_PutBucketEncryption(TestParameters); - S3_GetBucketEncryption(TestParameters); - S3_DeleteBucketEncryption(TestParameters); - S3_PutBucketVersioning(TestParameters); - S3_GetBucketVersioning(TestParameters); - S3_DeleteBucket(TestParameters); - - EndDo; - -EndProcedure - -Procedure AWS_ObjectsManagement() Export - - OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); - - For Each TestParameters In OptionArray Do - - S3_CreateBucket(TestParameters); - S3_PutObject(TestParameters); - S3_UploadFullObject(TestParameters); - S3_InitPartsUpload(TestParameters); - S3_UploadObjectPart(TestParameters); - S3_FinishPartsUpload(TestParameters); - S3_AbortMultipartUpload(TestParameters); - S3_HeadObject(TestParameters); - S3_CopyObject(TestParameters); - S3_PutObjectTagging(TestParameters); - S3_GetObjectTagging(TestParameters); - S3_DeleteObjectTagging(TestParameters); - S3_ListObjects(TestParameters); - S3_ListObjectVersions(TestParameters); - S3_GetObject(TestParameters); - S3_GetObjectDownloadLink(TestParameters); - S3_DeleteObject(TestParameters); - S3_DeleteBucket(TestParameters); - S3_GetObjectUploadLink(TestParameters); - - EndDo; - -EndProcedure - -#EndRegion - -#Region TCP - -Procedure TC_Client() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("TCP_Address" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("TCP_AddressTLS", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Proxy_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Proxy_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Socks5_IP" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Socks5_Port" , TestParameters); - - TCP_CreateConnection(TestParameters); - TCP_CloseConnection(TestParameters); - TCP_ReadBinaryData(TestParameters); - TCP_SendBinaryData(TestParameters); - TCP_ReadLine(TestParameters); - TCP_SendLine(TestParameters); - TCP_ProcessRequest(TestParameters); - TCP_GetTLSSettings(TestParameters); - TCP_GetLastError(TestParameters); - TCP_GetProxySettings(TestParameters); - -EndProcedure - -Procedure TC_Server() Export - - TestParameters = New Structure; - - TCP_StartServer(TestParameters); - TCP_StopServer(TestParameters); - TCP_GetNextConnectionData(TestParameters); - TCP_GetConnectionData(TestParameters); - TCP_SendData(TestParameters); - TCP_CloseIncomingConnection(TestParameters); - TCP_CompleteSend(TestParameters); - TCP_FinishReceiving(TestParameters); - TCP_GetConnectionList(TestParameters); - TCP_IsServerObject(TestParameters); - TCP_GetLog(TestParameters); - TCP_GetLoggingSettings(TestParameters); - -EndProcedure - -#EndRegion - -#Region SQLite - -Procedure SQLL_CommonMethods() Export - - TestParameters = New Structure; - - Base = GetTempFileName("sqlite"); - OPI_TestDataRetrieval.WriteParameter("SQLite_DB", Base); - OPI_Tools.AddField("SQLite_DB", Base, "String", TestParameters); - - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("SQLite_Ext" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("SQLite_ExtLinux", TestParameters); - - SQLite_CreateConnection(TestParameters); - SQLite_CloseConnection(TestParameters); - SQLite_ExecuteSQLQuery(TestParameters); - SQLite_IsConnector(TestParameters); - SQLite_ConnectExtension(TestParameters); - - OPI_Tools.RemoveFileWithTry(Base, "Database file deletion error"); - -EndProcedure - -Procedure SQLL_ORM() Export - - TestParameters = New Structure; - - Base = GetTempFileName("sqlite"); - - Connection = OPI_SQLite.CreateConnection(Base); - TestParameters.Insert("SQLite_DB", Connection); - - OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); - - SQLite_CreateTable(TestParameters); - SQLite_AddRecords(TestParameters); - SQLite_EnsureRecords(TestParameters); - SQLite_GetRecords(TestParameters); - SQLite_UpdateRecords(TestParameters); - SQLite_DeleteRecords(TestParameters); - SQLite_GetTableInformation(TestParameters); - SQLite_AddTableColumn(TestParameters); - SQLite_DeleteTableColumn(TestParameters); - SQLite_EnsureTable(TestParameters); - SQLite_ClearTable(TestParameters); - SQLite_DeleteTable(TestParameters); - SQLite_GetRecordsFilterStructure(TestParameters); - - OPI_TestDataRetrieval.WriteParameter("SQLite_DB", Base); - OPI_Tools.AddField("SQLite_DB", Base, "String", TestParameters); - - SQLite_CreateTable(TestParameters); - SQLite_AddRecords(TestParameters); - SQLite_EnsureRecords(TestParameters); - SQLite_GetRecords(TestParameters); - SQLite_UpdateRecords(TestParameters); - SQLite_DeleteRecords(TestParameters); - SQLite_GetTableInformation(TestParameters); - SQLite_AddTableColumn(TestParameters); - SQLite_DeleteTableColumn(TestParameters); - SQLite_EnsureTable(TestParameters); - SQLite_ClearTable(TestParameters); - SQLite_DeleteTable(TestParameters); - SQLite_GetRecordsFilterStructure(TestParameters); - - OPI_Tools.RemoveFileWithTry(Base, "Database file deletion error"); - -EndProcedure - -#EndRegion - -#Region PostgreSQL - -Procedure Postgres_CommonMethods() Export - - OptionArray = OPI_TestDataRetrieval.GetPostgresParameterOptions(); - - For Each TestParameters In OptionArray Do - - PostgreSQL_GenerateConnectionString(TestParameters); - PostgreSQL_CreateConnection(TestParameters); - PostgreSQL_CloseConnection(TestParameters); - PostgreSQL_IsConnector(TestParameters); - PostgreSQL_ExecuteSQLQuery(TestParameters); - PostgreSQL_GetTLSSettings(TestParameters); - - EndDo; - -EndProcedure - -Procedure Postgres_ORM() Export - - OptionArray = OPI_TestDataRetrieval.GetPostgresParameterOptions(); - - For Each TestParameters In OptionArray Do - - PostgreSQL_CreateDatabase(TestParameters); - PostgreSQL_CreateTable(TestParameters); - PostgreSQL_AddRecords(TestParameters); - PostgreSQL_EnsureRecords(TestParameters); - PostgreSQL_GetRecords(TestParameters); - PostgreSQL_UpdateRecords(TestParameters); - PostgreSQL_DeleteRecords(TestParameters); - PostgreSQL_ClearTable(TestParameters); - PostgreSQL_GetTableInformation(TestParameters); - PostgreSQL_AddTableColumn(TestParameters); - PostgreSQL_DeleteTableColumn(TestParameters); - PostgreSQL_EnsureTable(TestParameters); - PostgreSQL_DeleteTable(TestParameters); - PostgreSQL_DisableAllDatabaseConnections(TestParameters); - PostgreSQL_DeleteDatabase(TestParameters); - PostgreSQL_GetRecordsFilterStructure(TestParameters); - - EndDo; - -EndProcedure - -#EndRegion - -#Region MySQL - -Procedure MYS_CommonMethods() Export - - OptionArray = OPI_TestDataRetrieval.GetMySQLParameterOptions(); - - For Each TestParameters In OptionArray Do - - MySQL_GenerateConnectionString(TestParameters); - MySQL_CreateConnection(TestParameters); - MySQL_CloseConnection(TestParameters); - MySQL_IsConnector(TestParameters); - MySQL_ExecuteSQLQuery(TestParameters); - MySQL_GetTLSSettings(TestParameters); - - EndDo; - -EndProcedure - -Procedure MYS_ORM() Export - - OptionArray = OPI_TestDataRetrieval.GetMySQLParameterOptions(); - - For Each TestParameters In OptionArray Do - - MySQL_CreateDatabase(TestParameters); - MySQL_CreateTable(TestParameters); - MySQL_AddRecords(TestParameters); - MySQL_EnsureRecords(TestParameters); - MySQL_GetRecords(TestParameters); - MySQL_UpdateRecords(TestParameters); - MySQL_DeleteRecords(TestParameters); - MySQL_ClearTable(TestParameters); - MySQL_GetTableInformation(TestParameters); - MySQL_AddTableColumn(TestParameters); - MySQL_DeleteTableColumn(TestParameters); - MySQL_EnsureTable(TestParameters); - MySQL_DeleteTable(TestParameters); - MySQL_DeleteDatabase(TestParameters); - MySQL_GetRecordsFilterStructure(TestParameters); - - EndDo; - -EndProcedure - -#EndRegion - -#Region GreenAPI - -Procedure GAPI_Account() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - GreenAPI_ArchiveChat(TestParameters); - GreenAPI_UnarchiveChat(TestParameters); - GreenAPI_FormAccessParameters(TestParameters); - GreenAPI_GetInstanceSettings(TestParameters); - GreenAPI_GetAccountInformation(TestParameters); - GreenAPI_GetInstanceSettingsStructure(TestParameters); - GreenAPI_SetInstanceSettings(TestParameters); - GreenAPI_GetInstanceStatus(TestParameters); - GreenAPI_SetProfilePicture(TestParameters); - // !DISABLED! GreenMax_RebootInstance(TestParameters); - // !DISABLED! GreenAPI_GetAuthorizationCode(TestParameters); - // !DISABLED! GreenAPI_LogoutInstance(TestParameters); - // !DISABLED! GreenAPI_GetQR(TestParameters); - -EndProcedure - -Procedure GAPI_GroupManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - GreenAPI_CreateGroup(TestParameters); - GreenAPI_GetGroupInformation(TestParameters); - GreenAPI_UpdateGroupName(TestParameters); - GreenAPI_SetGroupPicture(TestParameters); - GreenAPI_AddGroupMember(TestParameters); - GreenAPI_ExcludeGroupMember(TestParameters); - GreenAPI_SetAdminRights(TestParameters); - GreenAPI_RevokeAdminRights(TestParameters); - GreenAPI_LeaveGroup(TestParameters); - -EndProcedure - -Procedure GAPI_MessageSending() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); - - GreenAPI_SendTextMessage(TestParameters); - GreenAPI_SendFile(TestParameters); - GreenAPI_SendFileByURL(TestParameters); - GreenAPI_SendPoll(TestParameters); - GreenAPI_SendLocation(TestParameters); - GreenAPI_SendContact(TestParameters); - GreenAPI_ForwardMessages(TestParameters); - GreenAPI_GetLocationDescription(TestParameters); - GreenAPI_GetContactDescription(TestParameters); - GreenAPI_EditMessageText(TestParameters); - GreenAPI_DeleteMessage(TestParameters); - -EndProcedure - -Procedure GAPI_NotificationsReceiving() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_FileMessageID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_DownloadMessageID", TestParameters); - - GreenAPI_GetNotification(TestParameters); - GreenAPI_SetReadMark(TestParameters); - // !DISABLED! GreenAPI_DownloadMessageFile(TestParameters); - GreenAPI_DeleteNotificationFromQueue(TestParameters); - -EndProcedure - -Procedure GAPI_MessageQueue() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); - - GreenAPI_GetMessageQueue(TestParameters); - GreenAPI_ClearMessageQueue(TestParameters); - -EndProcedure - -Procedure GAPI_MessageLogs() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MessageID" , TestParameters); - - GreenAPI_GetChatHistory(TestParameters); - GreenAPI_GetMessage(TestParameters); - GreenAPI_GetIncomingMessageLog(TestParameters); - GreenAPI_GetOutgoingMessageLog(TestParameters); - -EndProcedure - -#EndRegion - -#Region RCON - -Procedure RC_CommandsExecution() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("RCON_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RCON_Password", TestParameters); - - RCON_FormConnectionParameters(TestParameters); - RCON_CreateConnection(TestParameters); - RCON_ExecuteCommand(TestParameters); - RCON_IsConnector(TestParameters); - -EndProcedure - -#EndRegion - -#Region Ollama - -Procedure OLLM_RequestsProcessing() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); - - Ollama_PullModel(TestParameters); - Ollama_GetVersion(TestParameters); - Ollama_GetResponse(TestParameters); - Ollama_GetContextResponse(TestParameters); - Ollama_GetEmbeddings(TestParameters); - Ollama_GetRequestParameterStructure(TestParameters); - Ollama_GetContextParameterStructure(TestParameters); - Ollama_GetContextMessageStructure(TestParameters); - Ollama_GetEmbeddingsParameterStructure(TestParameters); - -EndProcedure - -Procedure OLLM_ModelsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); - - Ollama_PullModel(TestParameters); - Ollama_LoadModelToMemory(TestParameters); - Ollama_UnloadModelFromMemory(TestParameters); - Ollama_CreateModel(TestParameters); - Ollama_GetModelInformation(TestParameters); - Ollama_GetModelList(TestParameters); - Ollama_ListRunningModels(TestParameters); - Ollama_CopyModel(TestParameters); - Ollama_PushModel(TestParameters); - Ollama_GetModelSettingsStructure(TestParameters); - Ollama_DeleteModel(TestParameters); - -EndProcedure - -Procedure OLLM_WorkingWithBlob() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - Ollama_PushBlob(TestParameters); - Ollama_CheckBlob(TestParameters); - -EndProcedure - -#EndRegion - -#Region HTTP - -Procedure HTTP_Initialization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL" , TestParameters); - - HTTP_Initialize(TestParameters); - HTTP_SetURL(TestParameters); - HTTP_SetURLParams(TestParameters); - HTTP_SetResponseFile(TestParameters); - HTTP_SetDataType(TestParameters); - HTTP_GetLog(TestParameters); - HTTP_SetProxy(TestParameters); - HTTP_SetTimeout(TestParameters); - -EndProcedure - -Procedure HTTP_BodySet() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - HTTP_SetBinaryBody(TestParameters); - HTTP_SetStringBody(TestParameters); - HTTP_SetJsonBody(TestParameters); - HTTP_SetFormBody(TestParameters); - HTTP_StartMultipartBody(TestParameters); - HTTP_AddMultipartFormDataField(TestParameters); - HTTP_AddMultipartFormDataFile(TestParameters); - HTTP_AddDataAsRelated(TestParameters); - -EndProcedure - -Procedure HTTP_Settings() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - HTTP_UseEncoding(TestParameters); - HTTP_UseGzipCompression(TestParameters); - HTTP_UseBodyFiledsAtOAuth(TestParameters); - HTTP_UseURLEncoding(TestParameters); - HTTP_SplitArraysInURL(TestParameters); - HTTP_MaxRedirects(TestParameters); - HTTP_MaxAttempts(TestParameters); - HTTP_ReturnSettings(TestParameters); - -EndProcedure - -Procedure HTTP_HeadersSetting() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); - - HTTP_SetHeaders(TestParameters); - HTTP_AddHeader(TestParameters); - -EndProcedure - -Procedure HTTP_Authorization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); - - HTTP_AddBasicAuthorization(TestParameters); - HTTP_AddBearerAuthorization(TestParameters); - HTTP_AddAWS4Authorization(TestParameters); - HTTP_AddOAuthV1Authorization(TestParameters); - HTTP_SetOAuthV1Algorithm(TestParameters); - -EndProcedure - -Procedure HTTP_RequestProcessing() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - HTTP_ProcessRequest(TestParameters); - HTTP_ExecuteRequest(TestParameters); - HTTP_ReturnRequest(TestParameters); - HTTP_ReturnConnection(TestParameters); - HTTP_SendDataInParts(TestParameters); - HTTP_SendPart(TestParameters); - -EndProcedure - -Procedure HTTP_ResponseReceiving() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - HTTP_ReturnResponse(TestParameters); - HTTP_ReturnResponseAsJSONObject(TestParameters); - HTTP_ReturnResponseAsBinaryData(TestParameters); - HTTP_ReturnResponseAsString(TestParameters); - HTTP_ReturnResponseFilename(TestParameters); - -EndProcedure - -#EndRegion - -#Region OpenAI - -Procedure OAI_RequestsProcessing() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token2" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL2" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_File" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - OpenAI_GetResponse(TestParameters); - OpenAI_GetEmbeddings(TestParameters); - OpenAI_GetMessageStructure(TestParameters); - OpenAI_GetImageMessageStructure(TestParameters); - OpenAI_GetImages(TestParameters); - OpenAI_GetAssistantMessage(TestParameters); - OpenAI_GetUserMessage(TestParameters); - OpenAI_GetSystemMessage(TestParameters); - -EndProcedure - -Procedure OAI_Assistants() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); - - OpenAI_CreateAssistant(TestParameters); - OpenAI_RetrieveAssistant(TestParameters); - OpenAI_GetAssistantsList(TestParameters); - OpenAI_DeleteAssistant(TestParameters); - -EndProcedure - -Procedure OAI_FileManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - OpenAI_UploadFile(TestParameters); - OpenAI_GetFileInformation(TestParameters); - OpenAI_GetFilesList(TestParameters); - OpenAI_DownloadFile(TestParameters); - OpenAI_DeleteFile(TestParameters); - -EndProcedure - -Procedure OAI_AudioProcessing() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); - - OpenAI_GenerateSpeech(TestParameters); - OpenAI_CreateTranscription(TestParameters); - -EndProcedure - -Procedure OAI_ModelsManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); - - OpenAI_GetModelList(TestParameters); - -EndProcedure - -#EndRegion - -#Region MSSQL - -Procedure MSS_CommonMethods() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("SQL2" , TestParameters); - - MSSQL_GenerateConnectionString(TestParameters); - MSSQL_CreateConnection(TestParameters); - MSSQL_CloseConnection(TestParameters); - MSSQL_IsConnector(TestParameters); - MSSQL_ExecuteSQLQuery(TestParameters); - MSSQL_GetTLSSettings(TestParameters); - -EndProcedure - -Procedure MSS_ORM() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - MSSQL_CreateDatabase(TestParameters); - MSSQL_CreateTable(TestParameters); - MSSQL_AddRecords(TestParameters); - MSSQL_EnsureRecords(TestParameters); - MSSQL_GetRecords(TestParameters); - MSSQL_UpdateRecords(TestParameters); - MSSQL_DeleteRecords(TestParameters); - MSSQL_ClearTable(TestParameters); - MSSQL_GetTableInformation(TestParameters); - MSSQL_AddTableColumn(TestParameters); - MSSQL_DeleteTableColumn(TestParameters); - MSSQL_EnsureTable(TestParameters); - MSSQL_DeleteTable(TestParameters); - MSSQL_DeleteDatabase(TestParameters); - MSSQL_GetRecordsFilterStructure(TestParameters); - -EndProcedure - -#EndRegion - -#Region FTP - -Procedure FT_DirecotryManagement() Export - - OptionArray = OPI_TestDataRetrieval.GetFTPParameterOptions(); - - For Each TestParameters In OptionArray Do - - FTP_ClearDirectory(TestParameters); - FTP_CreateNewDirectory(TestParameters); - FTP_GetCurrentDirectory(TestParameters); - FTP_ChangeCurrentDirectory(TestParameters); - FTP_ListObjects(TestParameters); - FTP_DeleteDirectory(TestParameters); - - EndDo; - -EndProcedure - -Procedure FT_FileOperations() Export - - OptionArray = OPI_TestDataRetrieval.GetFTPParameterOptions(); - - For Each TestParameters In OptionArray Do - - FTP_UploadFile(TestParameters); - FTP_SaveFile(TestParameters); - FTP_GetFileData(TestParameters); - FTP_DeleteFile(TestParameters); - - EndDo; - -EndProcedure - -Procedure FT_CommonMethods() Export - - OptionArray = OPI_TestDataRetrieval.GetFTPParameterOptions(); - - For Each TestParameters In OptionArray Do - - FTP_CreateConnection(TestParameters); - FTP_GetWelcomeMessage(TestParameters); - FTP_GetProtocolFeatureList(TestParameters); - FTP_GetConnectionConfiguration(TestParameters); - FTP_CloseConnection(TestParameters); - FTP_IsConnector(TestParameters); - FTP_GetConnectionSettings(TestParameters); - FTP_GetProxySettings(TestParameters); - FTP_GetTLSSettings(TestParameters); - FTP_GetObjectSize(TestParameters); - FTP_UpdatePath(TestParameters); - FTP_ExecuteCustomCommand(TestParameters); - FTP_ExecuteArbitraryCommand(TestParameters); - FTP_Ping(TestParameters); - - EndDo; - -EndProcedure - -#EndRegion - -#Region ReportPortal - -Procedure RPortal_Authorization() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_Login" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_UserID" , TestParameters); - - ReportPortal_GetTemporaryToken(TestParameters); - ReportPortal_GetPermanentToken(TestParameters); - ReportPortal_DeletePermanentToken(TestParameters); - ReportPortal_GetUserTokens(TestParameters); - -EndProcedure - -Procedure RPortal_TestManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); - - ReportPortal_CreateLaunch(TestParameters); - ReportPortal_GetLaunch(TestParameters); - ReportPortal_GetLaunchItems(TestParameters); - ReportPortal_UpdateLaunch(TestParameters); - ReportPortal_CreateItem(TestParameters); - ReportPortal_GetItem(TestParameters); - ReportPortal_GetItemLogs(TestParameters); - ReportPortal_UpdateItem(TestParameters); - ReportPortal_FinishItem(TestParameters); - ReportPortal_FinishLaunch(TestParameters); - ReportPortal_DeleteItem(TestParameters); - ReportPortal_GetLaunchReport(TestParameters); - ReportPortal_DeleteLaunch(TestParameters); - ReportPortal_GetLaunchStructure(TestParameters); - ReportPortal_GetItemStructure(TestParameters); - ReportPortal_GetItemCompletionStructure(TestParameters); - ReportPortal_GetLaunchCompletionStructure(TestParameters); - -EndProcedure - -Procedure RPortal_LogRecording() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); - - ReportPortal_CreateLaunch(TestParameters); - ReportPortal_CreateItem(TestParameters); - - ReportPortal_WriteLog(TestParameters); - ReportPortal_GetLogStructure(TestParameters); - ReportPortal_GetLog(TestParameters); - ReportPortal_DeleteLog(TestParameters); - - ReportPortal_FinishItem(TestParameters); - ReportPortal_FinishLaunch(TestParameters); - -EndProcedure - -Procedure RPortal_ProjectManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); - - ReportPortal_CreateProject(TestParameters); - ReportPortal_GetProject(TestParameters); - ReportPortal_GetProjects(TestParameters); - ReportPortal_AddUsersToProject(TestParameters); - ReportPortal_ExcludeUsersFromProject(TestParameters); - ReportPortal_DeleteProject(TestParameters); - -EndProcedure - -Procedure RPortal_UserManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); - - ReportPortal_CreateUser(TestParameters); - ReportPortal_GetCurrentUser(TestParameters); - ReportPortal_GetUser(TestParameters); - ReportPortal_GetUsers(TestParameters); - ReportPortal_GetUserProjects(TestParameters); - ReportPortal_UpdateUser(TestParameters); - ReportPortal_DeleteUser(TestParameters); - ReportPortal_GetUserFieldsStructure(TestParameters); - -EndProcedure - -#EndRegion - -#Region SSH - -Procedure SShell_CommonMethods() Export - - OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); - - For Each TestParameters In OptionArray Do - - SSH_CreateConnection(TestParameters); - SSH_GetConnectionConfiguration(TestParameters); - SSH_ExecuteCommand(TestParameters); - SSH_CloseConnection(TestParameters); - SSH_IsConnector(TestParameters); - SSH_GetSettingsLoginPassword(TestParameters); - SSH_GetSettingsPrivateKey(TestParameters); - SSH_GetSettingsViaAgent(TestParameters); - SSH_GetSettingsKI(TestParameters); - SSH_GetProxySettings(TestParameters); - - EndDo; - - OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); - -EndProcedure - -#EndRegion - -#Region SFTP - -Procedure SF_CommonMethods() Export - - OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); - - For Each TestParameters In OptionArray Do - - SFTP_CreateConnection(TestParameters); - SFTP_GetConnectionConfiguration(TestParameters); - SFTP_IsConnector(TestParameters); - SFTP_CloseConnection(TestParameters); - SFTP_GetSettingsLoginPassword(TestParameters); - SFTP_GetSettingsPrivateKey(TestParameters); - SFTP_GetSettingsViaAgent(TestParameters); - SFTP_GetSettingsKI(TestParameters); - SFTP_GetProxySettings(TestParameters); - - EndDo; - - OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); - -EndProcedure - -Procedure SF_DirectoryManagement() Export - - OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); - - For Each TestParameters In OptionArray Do - - SFTP_GetCurrentDirectory(TestParameters); - SFTP_ListObjects(TestParameters); - SFTP_CreateNewDirectory(TestParameters); - SFTP_DeleteDirectory(TestParameters); - - EndDo; - - OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); - -EndProcedure - -Procedure SF_FileManagement() Export - - OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); - - For Each TestParameters In OptionArray Do - - SFTP_UploadFile(TestParameters); - SFTP_GetFileInformation(TestParameters); - SFTP_GetFileData(TestParameters); - SFTP_SaveFile(TestParameters); - SFTP_UpdatePath(TestParameters); - SFTP_DeleteFile(TestParameters); - - EndDo; - - OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); - -EndProcedure - -#EndRegion - -#Region GreenMax - -Procedure GMax_Account() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); - //OPI_TestDataRetrieval.ParameterToCollection("GreenMax_TestGroupID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - GreenMax_FormAccessParameters(TestParameters); - // !DISABLED! GreenMax_LogoutInstance(TestParameters); - // !DISABLED! GreenMax_GetAuthorizationCode(TestParameters); - // !DISABLED! GreenMax_SendAuthorizationCode(TestParameters); - GreenMax_GetInstanceStatus(TestParameters); - GreenMax_GetInstanceSettings(TestParameters); - GreenMax_SetInstanceSettings(TestParameters); - GreenMax_GetInstanceSettingsStructure(TestParameters); - GreenMax_SetProfilePicture(TestParameters); - GreenMax_GetAccountInformation(TestParameters); - GreenMax_CheckAccount(TestParameters); - GreenMax_GetContactList(TestParameters); - GreenMax_GetContactInformation(TestParameters); - GreenMax_GetChatList(TestParameters); - GreenMax_GetChatAvatar(TestParameters); - GreenMax_RebootInstance(TestParameters); - -EndProcedure - -Procedure GMax_GroupManagement() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MainGroupID", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture3" , TestParameters); - - GreenMax_GetContactList(TestParameters); - OPI_Tools.Pause(1); - GreenMax_CreateGroup(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetGroupInformation(TestParameters); - OPI_Tools.Pause(1); - GreenMax_UpdateGroupName(TestParameters); - OPI_Tools.Pause(1); - GreenMax_ChangeGroupSettings(TestParameters); - OPI_Tools.Pause(1); - GreenMax_SetAdminRights(TestParameters); - OPI_Tools.Pause(1); - GreenMax_RevokeAdminRights(TestParameters); - OPI_Tools.Pause(1); - GreenMax_RemoveGroupMember(TestParameters); - OPI_Tools.Pause(1); - GreenMax_AddGroupMember(TestParameters); - OPI_Tools.Pause(1); - GreenMax_SetGroupPicture(TestParameters); - OPI_Tools.Pause(1); - GreenMax_LeaveGroup(TestParameters); - GreenMax_GetGroupSettingsStructure(TestParameters); - -EndProcedure - -Procedure GMax_MessageSending() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); - - GreenMax_GetContactList(TestParameters); - OPI_Tools.Pause(1); - GreenMax_CreateGroup(TestParameters); - OPI_Tools.Pause(1); - GreenMax_SendTextMessage(TestParameters); - OPI_Tools.Pause(1); - GreenMax_SendFile(TestParameters); - OPI_Tools.Pause(1); - GreenMax_SendFileByURL(TestParameters); - OPI_Tools.Pause(1); - GreenMax_RemoveGroupMember(TestParameters); - OPI_Tools.Pause(1); - GreenMax_LeaveGroup(TestParameters); - OPI_Tools.Pause(1); - -EndProcedure - -Procedure GMax_Notifications() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); - - GreenMax_GetNotification(TestParameters); - GreenMax_DeleteNotification(TestParameters); - -EndProcedure - -Procedure GMax_MessageHistory() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MainGroupID", TestParameters); - - GreenMax_MarkMessagesAsRead(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetChatMessageHistory(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetChatMessage(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetIncomingMessageLog(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetOutgoingMessageLog(TestParameters); - OPI_Tools.Pause(1); - -EndProcedure - -Procedure GMax_Queues() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MainGroupID", TestParameters); - - GreenMax_GetOutgoingMessageCount(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetOutgoingMessageQueue(TestParameters); - OPI_Tools.Pause(1); - GreenMax_ClearOutgoingMessageQueue(TestParameters); - OPI_Tools.Pause(1); - GreenMax_GetIncomingNotificationCount(TestParameters); - OPI_Tools.Pause(1); - GreenMax_ClearIncomingNotificationQueue(TestParameters); - OPI_Tools.Pause(1); - -EndProcedure - -#EndRegion - -#Region MongoDB - -Procedure Mongo_CommonMethods() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); - - MongoDB_GenerateConnectionString(TestParameters); - MongoDB_CreateConnection(TestParameters); - MongoDB_CloseConnection(TestParameters); - MongoDB_IsConnector(TestParameters); - MongoDB_ExecuteCommand(TestParameters); - -EndProcedure - -Procedure Mong_DatabaseManagement() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); - - MongoDB_GetDatabase(TestParameters); - MongoDB_GetListOfBases(TestParameters); - MongoDB_DeleteDatabase(TestParameters); - -EndProcedure - -Procedure Mongo_CollectionManagement() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); - - MongoDB_CreateCollection(TestParameters); - MongoDB_GetCollectionList(TestParameters); - MongoDB_DeleteCollection(TestParameters); - -EndProcedure - -Procedure Mongo_DocumentsManagement() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); - - MongoDB_InsertDocuments(TestParameters); - MongoDB_GetDocuments(TestParameters); - MongoDB_GetCursor(TestParameters); - MongoDB_GetDocumentBatch(TestParameters); - MongoDB_UpdateDocuments(TestParameters); - MongoDB_DeleteDocuments(TestParameters); - MongoDB_GetDocumentUpdateStructure(TestParameters); - MongoDB_GetDocumentDeletionStructure(TestParameters); - -EndProcedure - -Procedure Mongo_UserManagement() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); - - MongoDB_CreateUser(TestParameters); - MongoDB_UpdateUser(TestParameters); - MongoDB_GetUsers(TestParameters); - MongoDB_GetDatabaseUsers(TestParameters); - MongoDB_DeleteUser(TestParameters); - -EndProcedure - -Procedure Mongo_RoleManagement() Export - - TestParameters = New Structure; - - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); - - MongoDB_CreateRole(TestParameters); - MongoDB_GetRoles(TestParameters); - MongoDB_GrantRoles(TestParameters); - MongoDB_RevokeRoles(TestParameters); - MongoDB_UpdateRole(TestParameters); - MongoDB_DeleteRole(TestParameters); - MongoDB_GetRolePrivilegeStructure(TestParameters); - -EndProcedure - -#EndRegion - -#Region GRPC - -Procedure GR_CommonMethods() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GRPC_Address" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_AddressNoTls", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_Proto" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoTS" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoImport" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - GRPC_CreateConnection(TestParameters); - GRPC_CloseConnection(TestParameters); - GRPC_IsConnector(TestParameters); - GRPC_SetMetadata(TestParameters); - GRPC_ExecuteMethod(TestParameters); - GRPC_GetTlsSettings(TestParameters); - GRPC_GetConnectionParameters(TestParameters); - -EndProcedure - -Procedure GR_Introspection() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GRPC_Address" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_Proto" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoImport", TestParameters); - - GRPC_GetServiceList(TestParameters); - GRPC_GetMethodList(TestParameters); - GRPC_GetMethod(TestParameters); - -EndProcedure - -Procedure GR_Streaming() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("GRPC_Address" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_AddressNoTls", TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_Proto" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoTS" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoImport" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); - - GRPC_InitializeServerStream(TestParameters); - GRPC_InitializeClientStream(TestParameters); - GRPC_InitializeBidirectionalStream(TestParameters); - GRPC_SendMessage(TestParameters); - GRPC_GetMessage(TestParameters); - GRPC_CloseStream(TestParameters); - GRPC_ProcessServerStream(TestParameters); - GRPC_ProcessClientStream(TestParameters); - GRPC_ProcessBidirectionalStream(TestParameters); - GRPC_CompleteSend(TestParameters); - -EndProcedure - -#EndRegion - -#Region ClickHouse - -Procedure CH_CommonMethods() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Port" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_PortGRPC" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters); - - ClickHouse_ExecuteRequest(TestParameters); - ClickHouse_GetHTTPConnectionSettings(TestParameters); - ClickHouse_GetGRPCConnectionSettings(TestParameters); - ClickHouse_GetRequestSettings(TestParameters); - ClickHouse_GetExternalTableStructure(TestParameters); - ClickHouse_GetSessionSettings(TestParameters); - -EndProcedure - -Procedure CH_GRPC() Export - - TestParameters = New Structure; - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_PortGRPC" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters); - OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters); - - ClickHouse_CreateGRPCConnection(TestParameters); - ClickHouse_GetTlsSettings(TestParameters); - - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), TestParameters["ClickHouse_PortGRPC"]); - - Login = TestParameters["ClickHouse_User"]; - Password = TestParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - ConnectionSettings = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - TableCreationText = "CREATE TABLE IF NOT EXISTS events_stream_test ( - | id UInt64, - | timestamp DateTime, - | user_id UInt32, - | event_type String, - | payload String - |) ENGINE = MergeTree() - |ORDER BY (timestamp, id)"; - - Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_stream_test"); - Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); - - Request = OPI_ClickHouse.GetRequestSettings(TableCreationText); - Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); - - ClickHouse_OpenGRPCStream(TestParameters); - ClickHouse_SendGRPCMessage(TestParameters); - ClickHouse_SendGRPCData(TestParameters); - ClickHouse_GetGRPCMessage(TestParameters); - ClickHouse_CompleteGRPCSending(TestParameters); - ClickHouse_CloseGRPCStream(TestParameters); - ClickHouse_ProcessGRPCSending(TestParameters); - ClickHouse_ProcessGRPCReceiving(TestParameters); - -EndProcedure - -#EndRegion - -#Region RSS - -Procedure RSS_RSSMethods() Export - - TestParameters = New Structure; - - RSS_CreateFeedRSS(TestParameters); - RSS_GetFeedItemStructureRSS(TestParameters); - RSS_ParseFeedRSS(TestParameters); - -EndProcedure - -Procedure RSS_AtomMethods() Export - - TestParameters = New Structure; - - RSS_CreateFeedAtom(TestParameters); - RSS_GetFeedItemStructureAtom(TestParameters); - RSS_ParseFeedAtom(TestParameters); - -EndProcedure - -#EndRegion - -#EndRegion - -#EndRegion - -#Region Private - -Function GetVKParameters() - - Parameters = New Structure; - GroupNumber = OPI_TestDataRetrieval.GetParameter("VK_GroupID"); - - Parameters.Insert("access_token", OPI_TestDataRetrieval.GetParameter("VK_Token")); - Parameters.Insert("owner_id" , "-" + GroupNumber); - Parameters.Insert("app_id" , OPI_TestDataRetrieval.GetParameter("VK_AppID")); - Parameters.Insert("group_id" , GroupNumber); - - Return Parameters; - -EndFunction - -Function GetTwitterAuthData() - - Parameters = New Map; - - ServerToken = OPI_TestDataRetrieval.GetParameter("Access_Token"); - - URL = OPI_TestDataRetrieval.GetParameter("Twitter_TokenURL"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddBearerAuthorization(ServerToken) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - Token = Result["data"]; - - Parameters.Insert("redirect_uri" , OPI_TestDataRetrieval.GetParameter("Twitter_Redirect")); - Parameters.Insert("client_id" , OPI_TestDataRetrieval.GetParameter("Twitter_ClientID")); - Parameters.Insert("client_secret" , OPI_TestDataRetrieval.GetParameter("Twitter_ClientSecret")); - Parameters.Insert("access_token" , Token); - Parameters.Insert("refresh_token" , OPI_TestDataRetrieval.GetParameter("Twitter_Refresh")); - Parameters.Insert("oauth_token" , OPI_TestDataRetrieval.GetParameter("Twitter_OAuthToken")); - Parameters.Insert("oauth_token_secret", OPI_TestDataRetrieval.GetParameter("Twitter_OAuthSecret")); - - Parameters.Insert("oauth_consumer_key" , OPI_TestDataRetrieval.GetParameter("Twitter_OAuthConsumerKey")); - Parameters.Insert("oauth_consumer_secret", OPI_TestDataRetrieval.GetParameter( - "Twitter_OAuthConsumerSecret")); - - Return Parameters; - -EndFunction - -//@skip-check method-too-many-params -Procedure Process(Val Result - , Val Library - , Val Method - , Val Option = "" - , AddParam1 = Undefined - , AddParam2 = Undefined - , AddParam3 = Undefined) - - CLITestsMark = 1; - - SetEnvironmentVariable("OINT_TESTS_CLI", CLITestsMark); - - OPI_TestDataRetrieval.ProcessTestingResult(Result - , Method - , Library - , Option - , AddParam1 - , AddParam2 - , AddParam3); - -EndProcedure - -#Region AtomicTests - -#Region Telegram - -Procedure Telegram_GetBotInformation(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetBotInformation", Options); - - // END - - Process(Result, "Telegram", "GetBotInformation"); - -EndProcedure - -Procedure Telegram_GetUpdates(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetUpdates", Options); - - // END - - Process(Result, "Telegram", "GetUpdates"); - -EndProcedure - -Procedure Telegram_SetWebhook(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - URL = FunctionParameters["Telegram_URL"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SetWebhook", Options); - - // END - - Process(Result, "Telegram", "SetWebhook"); - -EndProcedure - -Procedure Telegram_DeleteWebhook(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteWebhook", Options); - - // END - - Process(Result, "Telegram", "DeleteWebhook"); - -EndProcedure - -Procedure Telegram_SendTextMessage(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Text = FunctionParameters["String"]; - - KeyboardButtonsArray = New Array; - KeyboardButtonsArray.Add("Button1"); - KeyboardButtonsArray.Add("Button2"); - - // With keyboard, in chat - Options = New Structure; - Options.Insert("buttons", KeyboardButtonsArray); - Options.Insert("under", True); - - Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("keyboard", Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "SendTextMessage", , FunctionParameters, Text); // SKIP - - // Simple, to channel - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - // END - - Process(Result, "Telegram", "SendTextMessage", "Channel", FunctionParameters, Text); - - Text = "Text html %F0%9F%93%9E 10%"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("text" , Text); - Options.Insert("parsemode", "HTML"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "SendTextMessage", "HTML"); - - Text = "%F0%9F%A4%BC"; - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "SendTextMessage", "Emoji"); - - Text = "Text %F0%9F%A5%9D and emoji \(10%\)"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("text" , Text); - Options.Insert("parsemode", "MarkdownV2"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "SendTextMessage", "Text + Emoji"); - - Keyboard = OPI_Tools.JsonToStructure(Keyboard, False); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("keyboard", Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "SendTextMessage", "Keyboard structure"); - - Text = "%F0%9F%94%A5 *New release\!* - | - |%F0%9F%8F%B0 *Repository*: [240596448/devtools](https://github.com/240596448/devtools) - |%F0%9F%94%A2 *Version*: \{0.6.0} - |%F0%9F%93%85 *Date release*: 6 december 2025 y. - | - |>*AI summary* - |>Devtools - this tool for automation work with configurations\extensions 1C:Enterprise and integration with Git. Application allows dump and upload objects, a also synchronize change between Git and repository 1C. In release 0.6.0 realized optimization logic work and added logging, that contributes stability and simplifies analysis work applications. - | - | - |_Not forget put %E2%AD%90 liked projects_"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("parsemode", "MarkdownV2"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "SendTextMessage", "Complex"); - -EndProcedure - -Procedure Telegram_FormKeyboardFromButtonArray(FunctionParameters) - - ButtonArray = New Array; - ButtonArray.Add("Button1"); - ButtonArray.Add("Button2"); - ButtonArray.Add("Button3"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); - - // END - - Process(Result, "Telegram", "FormKeyboardFromButtonArray"); - -EndProcedure - -Procedure Telegram_SendImage(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Text = FunctionParameters["String"]; - Image = FunctionParameters["Picture"]; - - ImagePath = GetTempFileName("png"); - CopyFile(Image, ImagePath); - - ImageDD = New BinaryData(ImagePath); - - // In chat, by URL - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChatID); - Options.Insert("text", Text); - Options.Insert("picture", Image); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - Process(Result, "Telegram", "SendImage", , FunctionParameters, Text); // SKIP - - // To channel, on disk - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("picture", ImagePath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - Process(Result, "Telegram", "SendImage", "Path", FunctionParameters, Text); // SKIP - - // To channel, from binary data - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("picture", ImageDD); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - // END - - Process(Result, "Telegram", "SendImage", "Binary", FunctionParameters, Text); - - ButtonArray = New Array; - ButtonArray.Add("Button1"); - ButtonArray.Add("Button2"); - ButtonArray.Add("Button3"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - Options.Insert("under" , True); - - Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("picture" , Image); - Options.Insert("keyboard", Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - Process(Result, "Telegram", "SendImage", "Keyboard", FunctionParameters, Text); - - Keyboard = OPI_Tools.JsonToStructure(Keyboard); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("text" , Text); - Options.Insert("picture" , Image); - Options.Insert("keyboard", Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - Process(Result, "Telegram", "SendImage", "Keyboard collection", FunctionParameters, Text); - - Text = "Text %F0%9F%A5%9D and emoji \(10%\)"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("text" , Text); - Options.Insert("picture" , Image); - Options.Insert("parsemode", "MarkdownV2"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - Process(Result, "Telegram", "SendImage", "Text + Emoji"); - - Text = "%F0%9F%94%A5 *New release\!* - | - |%F0%9F%8F%B0 *Repository*: [240596448/devtools](https://github.com/240596448/devtools) - |%F0%9F%94%A2 *Version*: \{0.6.0} - |%F0%9F%93%85 *Date release*: 6 december 2025 y. - | - |>*AI summary* - |>Devtools - this tool for automation work with configurations\extensions 1C:Enterprise and integration with Git. Application allows dump and upload objects, a also synchronize change between Git and repository 1C. In release 0.6.0 realized optimization logic work and added logging, that contributes stability and simplifies analysis work applications. - | - | - |_Not forget put %E2%AD%90 liked projects_"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("picture" , Image); - Options.Insert("parsemode", "MarkdownV2"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); - - Process(Result, "Telegram", "SendImage", "Complex"); - - OPI_Tools.RemoveFileWithTry(ImagePath, "Failed to delete the temporary file after the test!!"); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendVideo(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Text = FunctionParameters["String"]; - Video = FunctionParameters["Video"]; - - VideoPath = GetTempFileName("mp4"); - CopyFile(Video, VideoPath); - - VideoDD = New BinaryData(VideoPath); - - // In chat, by URL - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChatID); - Options.Insert("text", Text); - Options.Insert("video", Video); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); - - Process(Result, "Telegram", "SendVideo", , FunctionParameters, Text); // SKIP - - // To channel, on disk - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("video", VideoPath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); - - Process(Result, "Telegram", "SendVideo", "Path", FunctionParameters, Text); // SKIP - - // To channel, from binary data - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("video", VideoDD); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); - - // END - - OPI_Tools.RemoveFileWithTry(VideoPath, "Failed to delete the temporary file after the test!!"); - Process(Result, "Telegram", "SendVideo", "Binary", FunctionParameters, Text); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendAudio(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Text = FunctionParameters["String"]; - Audio = FunctionParameters["Audio"]; - - AudioPath = GetTempFileName("mp3"); - CopyFile(Audio, AudioPath); - - AudioDD = New BinaryData(AudioPath); - - // In chat, by URL - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChatID); - Options.Insert("text", Text); - Options.Insert("audio", Audio); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); - - Process(Result, "Telegram", "SendAudio", , FunctionParameters, Text); // SKIP - - // To channel, on disk - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("audio", AudioPath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); - - Process(Result, "Telegram", "SendAudio", "Path", FunctionParameters, Text); // SKIP - - // To channel, from binary data - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("audio", AudioDD); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); - - // END - - OPI_Tools.RemoveFileWithTry(AudioPath, "Failed to delete the temporary file after the test!!"); - Process(Result, "Telegram", "SendAudio", "Binary", FunctionParameters, Text); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendDocument(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Text = FunctionParameters["String"]; - Document = FunctionParameters["Document"]; - - DocumentPath = GetTempFileName("docx"); - CopyFile(Document, DocumentPath); - - DocumentDD = New BinaryData(DocumentPath); - - // In chat, by URL - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChatID); - Options.Insert("text", Text); - Options.Insert("doc", Document); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); - - Process(Result, "Telegram", "SendDocument", , FunctionParameters, Text); // SKIP - - // In chat, by URL, with file name - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChatID); - Options.Insert("text", Text); - Options.Insert("doc", Document); - Options.Insert("filename", "customname.docx"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); - - Process(Result, "Telegram", "SendDocument", "With name", FunctionParameters, Text); // SKIP - - // To channel, on disk - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("doc", DocumentPath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); - - Process(Result, "Telegram", "SendDocument", "Path", FunctionParameters, Text); // SKIP - - // To channel, from binary data, with file name - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("doc", DocumentDD); - Options.Insert("filename", "customname.docx"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); - - // END - - OPI_Tools.RemoveFileWithTry(DocumentPath, "Failed to delete the temporary file after the test!!"); - Process(Result, "Telegram", "SendDocument", "Binary", FunctionParameters, Text); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendGif(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Text = FunctionParameters["String"]; - GIF = FunctionParameters["GIF"]; - - GifPath = GetTempFileName("gif"); - CopyFile(GIF, GifPath); - - GifDD = New BinaryData(GifPath); - - // In chat, by URL - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChatID); - Options.Insert("text", Text); - Options.Insert("gif", GIF); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); - - Process(Result, "Telegram", "SendGif", , FunctionParameters, Text); // SKIP - - // To channel, on disk - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("gif", GifPath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); - - Process(Result, "Telegram", "SendGif", "Path", FunctionParameters, Text); // SKIP - - // To channel, from binary data - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat", ChannelID); - Options.Insert("text", Text); - Options.Insert("gif", GifDD); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); - - // END - - OPI_Tools.RemoveFileWithTry(GifPath, "Failed to delete the temporary file after the test!!"); - Process(Result, "Telegram", "SendGif", "Binary", FunctionParameters, Text); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendMediaGroup(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - Text = FunctionParameters["String"]; - Image = FunctionParameters["Picture"]; - Video = FunctionParameters["Video"]; - - ImagePath = GetTempFileName("png"); - CopyFile(Image, ImagePath); - - VideoPath = GetTempFileName("mp4"); - CopyFile(Video, VideoPath); - - VideoDD = New BinaryData(VideoPath); - - MediaGroup = New Map; - MediaGroup.Insert(ImagePath, "photo"); - MediaGroup.Insert(VideoDD , "video"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("media", MediaGroup); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendMediaGroup", Options); - - // END - - Process(Result, "Telegram", "SendMediaGroup"); - - DocumentURL = FunctionParameters["Document"]; - DocumentPath = GetTempFileName("docx"); - ChannelID = FunctionParameters["Telegram_ChannelID"]; - - CopyFile(DocumentURL, DocumentPath); - - MediaGroup = New Map; - MediaGroup.Insert(DocumentURL , "document"); - MediaGroup.Insert(DocumentPath, "document"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChannelID); - Options.Insert("text" , Text); - Options.Insert("media", MediaGroup); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendMediaGroup", Options); - - OPI_Tools.RemoveFileWithTry(VideoPath , "Failed to delete the temporary file after the test!!"); - OPI_Tools.RemoveFileWithTry(ImagePath , "Failed to delete the temporary file after the test!!"); - OPI_Tools.RemoveFileWithTry(DocumentPath, "Failed to delete the temporary file after the test!!"); - - Process(Result, "Telegram", "SendMediaGroup", "Documents"); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendLocation(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Width = FunctionParameters["Lat"]; - Longitude = FunctionParameters["Long"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChatID); - Options.Insert("lat" , Width); - Options.Insert("long" , Longitude); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendLocation", Options); - - Process(Result, "Telegram", "SendLocation"); // SKIP - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChannelID); - Options.Insert("lat" , Width); - Options.Insert("long" , Longitude); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendLocation", Options); - - // END - - Process(Result, "Telegram", "SendLocation", "Channel"); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_SendContact(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Name = FunctionParameters["Name"]; - LastName = FunctionParameters["Surname"]; - Phone = FunctionParameters["Phone"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("name" , Name); - Options.Insert("surname", LastName); - Options.Insert("phone" , Phone); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendContact", Options); - - Process(Result, "Telegram", "SendContact", , Name); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("name" , Name); - Options.Insert("surname", LastName); - Options.Insert("phone" , Phone); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendContact", Options); - - // END - - Process(Result, "Telegram", "SendContact", "Channel", Name); - -EndProcedure - -Procedure Telegram_SendPoll(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Question = "What's your favorite color??"; - - AnswersArray = New Array; - AnswersArray.Add("Red"); - AnswersArray.Add("Yellow"); - AnswersArray.Add("Green"); - AnswersArray.Add("Blue"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("question" , Question); - Options.Insert("options" , AnswersArray); - Options.Insert("anonymous", False); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); - - Process(Result, "Telegram", "SendPoll", , Question); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("question" , Question); - Options.Insert("options" , AnswersArray); - Options.Insert("anonymous", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); - - Process(Result, "Telegram", "SendPoll", "Channel", Question); // SKIP - - // END - - StringArray = "['Red', 'Yellow', 'Green', 'Blue']"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("question" , Question); - Options.Insert("options" , StringArray); - Options.Insert("anonymous", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); - - Process(Result, "Telegram", "SendPoll", "Questions as string", Question); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure Telegram_DownloadFile(FunctionParameters) - - FileID = FunctionParameters["Telegram_FileID"]; - Token = FunctionParameters["Telegram_Token"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DownloadFile", Options); - - // END - - Process(Result, "Telegram", "DownloadFile"); - -EndProcedure - -Procedure Telegram_ForwardMessage(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - MessageID = FunctionParameters["Telegram_ChannelMessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("message", MessageID); - Options.Insert("from" , ChannelID); - Options.Insert("to" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ForwardMessage", Options); - - // END - - Process(Result, "Telegram", "ForwardMessage", , MessageID); - -EndProcedure - -Procedure Telegram_Ban(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - UserID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChannelID); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "Ban", Options); - - // END - - Process(Result, "Telegram", "Ban"); - -EndProcedure - -Procedure Telegram_Unban(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - UserID = FunctionParameters["Telegram_ChatID"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChannelID); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "Unban", Options); - - // END - - Process(Result, "Telegram", "Unban"); - -EndProcedure - -Procedure Telegram_CreateInvitationLink(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - Day = 86400; - CurrentDate = OPI_Tools.GetCurrentDate(); - - Title = "Link " + String(CurrentDate); - Expiration = CurrentDate + Day; - UnixExpiration = OPI_Tools.UNIXTime(Expiration); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("title" , Title); - Options.Insert("expire", Expiration); - Options.Insert("limit" , 200); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CreateInvitationLink", Options); - - // END - - Process(Result, "Telegram", "CreateInvitationLink", , Title, UnixExpiration); - -EndProcedure - -Procedure Telegram_PinMessage(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - MessageID = FunctionParameters["Telegram_ChannelMessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "PinMessage", Options); - - // END - - Process(Result, "Telegram", "PinMessage"); - -EndProcedure - -Procedure Telegram_UnpinMessage(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - MessageID = FunctionParameters["Telegram_ChannelMessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChannelID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "UnpinMessage", Options); - - // END - - Process(Result, "Telegram", "UnpinMessage"); - -EndProcedure - -Procedure Telegram_GetParticipantCount(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChannelID = FunctionParameters["Telegram_ChannelID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChannelID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetParticipantCount", Options); - - // END - - Process(Result, "Telegram", "GetParticipantCount"); - -EndProcedure - -Procedure Telegram_GetAvatarIconList(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetAvatarIconList", Options); - - // END - - Process(Result, "Telegram", "GetAvatarIconList"); - -EndProcedure - -Procedure Telegram_CreateForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - Icon = "5357419403325481346"; - Name = "TestTopic " + String(New UUID); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - Options.Insert("title", Name); - Options.Insert("icon" , Icon); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CreateForumTopic", Options); - - // END - - Process(Result, "Telegram", "CreateForumTopic", , FunctionParameters, Name, Icon); - - ChatTopic = Chat + "*" + FunctionParameters["Telegram_TopicID"]; - Text = FunctionParameters["String"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("chat" , ChatTopic); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); - - Process(Result, "Telegram", "CreateForumTopic", "Message", FunctionParameters, Text); - -EndProcedure - -Procedure Telegram_EditForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - Topic = FunctionParameters["Telegram_TopicID"]; - NewName = "NewTestTitle"; - NewIcon = "5310132165583840589"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - Options.Insert("topic", Topic); - Options.Insert("title", NewName); - Options.Insert("icon" , NewIcon); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "EditForumTopic", Options); - - // END - - Process(Result, "Telegram", "EditForumTopic"); - -EndProcedure - -Procedure Telegram_CloseForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - Topic = FunctionParameters["Telegram_TopicID"]; - - OPI_Telegram.OpenForumTopic(Token, Chat); // SKIP - - Result = OPI_Telegram.CloseForumTopic(Token, Chat); // Closes main topic - - Process(Result, "Telegram", "CloseForumTopic", "Main"); // SKIP - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - Options.Insert("topic", Topic); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CloseForumTopic", Options); - - // END - - Process(Result, "Telegram", "CloseForumTopic"); - -EndProcedure - -Procedure Telegram_OpenForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - Topic = FunctionParameters["Telegram_TopicID"]; - - Result = OPI_Telegram.OpenForumTopic(Token, Chat); // Opens main topic - - Process(Result, "Telegram", "OpenForumTopic", "Main"); // SKIP - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - Options.Insert("topic", Topic); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "OpenForumTopic", Options); - - // END - - Process(Result, "Telegram", "OpenForumTopic"); - -EndProcedure - -Procedure Telegram_DeleteForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - Topic = FunctionParameters["Telegram_TopicID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - Options.Insert("topic", Topic); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteForumTopic", Options); - - // END - - Process(Result, "Telegram", "DeleteForumTopic"); - -EndProcedure - -Procedure Telegram_ClearTopicPinnedMessagesList(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - Topic = FunctionParameters["Telegram_TopicID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ClearTopicPinnedMessagesList", Options); - - Process(Result, "Telegram", "ClearTopicPinnedMessagesList", "Main"); // SKIP - - // END - - Process(Result, "Telegram", "ClearTopicPinnedMessagesList"); - -EndProcedure - -Procedure Telegram_HideMainForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "HideMainForumTopic", Options); - - // END - - Process(Result, "Telegram", "HideMainForumTopic"); - -EndProcedure - -Procedure Telegram_ShowMainForumTopic(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ShowMainForumTopic", Options); - - // END - - Process(Result, "Telegram", "ShowMainForumTopic"); - -EndProcedure - -Procedure Telegram_EditMainForumTopicName(FunctionParameters) - - Title = "New main topic name " + String(New UUID); - Token = FunctionParameters["Telegram_Token"]; - Chat = FunctionParameters["Telegram_ForumID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("forum", Chat); - Options.Insert("title", Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "EditMainForumTopicName", Options); - - // END - - Process(Result, "Telegram", "EditMainForumTopicName"); - -EndProcedure - -Procedure Telegram_DeleteMessage(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChannelID"]; - MessageID = FunctionParameters["Telegram_ChannelMessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteMessage", Options); - - // END - - Process(Result, "Telegram", "DeleteMessage"); - -EndProcedure - -Procedure Telegram_ReplaceMessageText(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChannelID"]; - MessageID = FunctionParameters["Telegram_ChannelMessageID"]; - Text = "New message text"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageText", Options); - - // END - - Process(Result, "Telegram", "ReplaceMessageText", , Text); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("message" , MessageID); - Options.Insert("text" , "Bold text"); - Options.Insert("parsemode", "HTML"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageText", Options); - - Process(Result, "Telegram", "ReplaceMessageText", "Markup", "Bold text"); - -EndProcedure - -Procedure Telegram_ReplaceMessageKeyboard(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - MessageID = FunctionParameters["Telegram_MessageID"]; - - ButtonArray = New Array; - ButtonArray.Add("New button 3"); - ButtonArray.Add("New button 2"); - ButtonArray.Add("New button 1"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - Options.Insert("under" , True); - Options.Insert("column" , False); - - Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("message" , MessageID); - Options.Insert("keyboard", Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageKeyboard", Options); - - // END - - Process(Result, "Telegram", "ReplaceMessageKeyboard", , Keyboard); - -EndProcedure - -Procedure Telegram_ReplaceMessageCaption(FunctionParameters) - - Token = FunctionParameters["Telegram_Token"]; - ChatID = FunctionParameters["Telegram_ChatID"]; - MessageID = FunctionParameters["Telegram_PicMessageID"]; - - Description = "New picture description"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - Options.Insert("caption", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageCaption", Options); - - // END - - Process(Result, "Telegram", "ReplaceMessageCaption", , Description); - -EndProcedure - -#EndRegion - -#Region VK - -Procedure VK_CreateTokenRetrievalLink(FunctionParameters) - - Application = FunctionParameters["VK_AppID"]; - Options = New Structure; - Options.Insert("app", Application); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateTokenRetrievalLink", Options); - - // END - - Process(Result, "VK", "CreateTokenRetrievalLink"); - -EndProcedure - -Procedure VK_GetAuthParameters(FunctionParameters) - - GroupID = FunctionParameters["VK_GroupID"]; - AppID = FunctionParameters["VK_AppID"]; - Token = FunctionParameters["VK_Token"]; - - Options = New Structure; - Options.Insert("group", GroupID); - Options.Insert("app" , AppID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetAuthParameters", Options); - - // END - - Process(Result, "VK", "GetAuthParameters"); - -EndProcedure - -Procedure VK_CreatePost(FunctionParameters) - - Parameters = GetVKParameters(); - Text = "Post from autotest"; - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data - - TFN = GetTempFileName("png"); - CopyFile(Image2, TFN); - - ImageArray = New Array; - ImageArray.Add(Image); - ImageArray.Add(TFN); - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("pictures", ImageArray); - Options.Insert("ad" , True); - Options.Insert("url" , URL); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); - - Process(Result, "VK", "CreatePost", , Parameters); // SKIP - - PostID = Result["response"]["post_id"]; // SKIP - OPI_VK.DeletePost(PostID, Parameters); // SKIP - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("pictures", Image); - Options.Insert("ad" , False); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); - - // END - - Process(Result, "VK", "CreatePost", "Image", Parameters); - - PostID = Result["response"]["post_id"]; - OPI_VK.DeletePost(PostID, Parameters); - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("pictures", TFN); - Options.Insert("ad" , True); - Options.Insert("url" , URL); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); - - Process(Result, "VK", "CreatePost", "Path", FunctionParameters); - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure VK_DeletePost(FunctionParameters) - - Parameters = GetVKParameters(); - PostID = FunctionParameters["VK_PostID"]; - - Options = New Structure; - Options.Insert("post", PostID); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeletePost", Options); - - // END - - Process(Result, "VK", "DeletePost"); - -EndProcedure - -Procedure VK_CreateCompositePost(FunctionParameters) - - Parameters = GetVKParameters(); - Text = "Post from autotest"; - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - Video = FunctionParameters["Video"]; // URL, Path or Binary Data - - TFN = GetTempFileName("png"); - CopyFile(Image, TFN); - - ImageUpload = OPI_VK.UploadPhotoToServer(TFN, Parameters)["response"][0]; - Options = New Structure; - Options.Insert("file" , Video); - Options.Insert("title", "NewVideo"); - Options.Insert("auth" , Parameters); - - VideoUpload = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadVideoToServer", Options); - - ImageOwner = OPI_Tools.NumberToString(ImageUpload["owner_id"]); - VideoOwner = OPI_Tools.NumberToString(VideoUpload["owner_id"]); - - ImageID = OPI_Tools.NumberToString(ImageUpload["id"]); - VideoID = OPI_Tools.NumberToString(VideoUpload["video_id"]); - - AttachmentsArray = New Array; - AttachmentsArray.Add("photo" + ImageOwner + "_" + ImageID); - AttachmentsArray.Add("video" + VideoOwner + "_" + VideoID); - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("objects", AttachmentsArray); - Options.Insert("ad" , False); - Options.Insert("url" , URL); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateCompositePost", Options); - - // END - - Process(Result, "VK", "CreateCompositePost"); - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure VK_CreatePoll(FunctionParameters) - - Parameters = GetVKParameters(); - Question = "What's your favorite color??"; - - OptionArray = New Array; - OptionArray.Add("Red"); - OptionArray.Add("Yellow"); - OptionArray.Add("Green"); - - Options = New Structure; - Options.Insert("question", Question); - Options.Insert("options" , OptionArray); - Options.Insert("text" , "Post text"); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePoll", Options); - - Process(Result, "VK", "CreatePoll", "Text"); // SKIP - - // With picture - - Image = FunctionParameters["Picture"]; // URL, File path or Binary Data - - Options = New Structure; - Options.Insert("question", Question); - Options.Insert("options" , OptionArray); - Options.Insert("picture" , Image); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePoll", Options); - - // END - - Process(Result, "VK", "CreatePoll"); - - PostID = Result["response"]["post_id"]; - OPI_VK.DeletePost(PostID, Parameters); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VK_CreateAlbum(FunctionParameters) - - Parameters = GetVKParameters(); - Name = "AlbumFromAutoTest"; - Description = "NewAlbumFromAutoTest"; - - Options = New Structure; - Options.Insert("title" , Name); - Options.Insert("description", Description); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAlbum", Options); - - // END - - Process(Result, "VK", "CreateAlbum", , FunctionParameters, Description); - -EndProcedure - -Procedure VK_SaveImageToAlbum(FunctionParameters) - - Parameters = GetVKParameters(); - ImageDescription = "AutoTestImage"; - AlbumID = FunctionParameters["VK_AlbumID"]; - - Image = FunctionParameters["Picture"]; // URL, File path or Binary Data - - Options = New Structure; - Options.Insert("album" , AlbumID); - Options.Insert("picture" , Image); - Options.Insert("description", ImageDescription); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "SaveImageToAlbum", Options); - - // END - - Process(Result, "VK", "SaveImageToAlbum", , FunctionParameters, ImageDescription, AlbumID); - -EndProcedure - -Procedure VK_DeleteImage(FunctionParameters) - - Parameters = GetVKParameters(); - ImageID = FunctionParameters["VK_PictureID"]; - - Options = New Structure; - Options.Insert("pictureid", ImageID); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteImage", Options); - - // END - - Process(Result, "VK", "DeleteImage"); - -EndProcedure - -Procedure VK_DeleteAlbum(FunctionParameters) - - Parameters = GetVKParameters(); - AlbumID = FunctionParameters["VK_AlbumID"]; - - Options = New Structure; - Options.Insert("album", AlbumID); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteAlbum", Options); - - // END - - Process(Result, "VK", "DeleteAlbum"); - -EndProcedure - -Procedure VK_CreateStory(FunctionParameters) - - Parameters = GetVKParameters(); - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Image = FunctionParameters["Picture"]; // URL, File path or Binary Data - TFN = GetTempFileName("png"); - CopyFile(Image, TFN); - Image = New BinaryData(TFN); - - Options = New Structure; - Options.Insert("picture", Image); - Options.Insert("url" , URL); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateStory", Options); - - Process(Result, "VK", "CreateStory"); // SKIP - - // END - - Options = New Structure; - Options.Insert("picture", TFN); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateStory", Options); - - Process(Result, "VK", "CreateStory", "Path"); - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure VK_MakeRepost(FunctionParameters) - - Parameters = GetVKParameters(); - PostID = 2571; - WallID = -218704372; - - Options = New Structure; - Options.Insert("post", PostID); - Options.Insert("from", WallID); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "MakeRepost", Options); - - // END - - Process(Result, "VK", "MakeRepost", , FunctionParameters); - -EndProcedure - -Procedure VK_WriteComment(FunctionParameters) - - Parameters = GetVKParameters(); - Text = "NewComment"; - PostID = FunctionParameters["VK_PostID"]; - WallID = Parameters["owner_id"]; - - Options = New Structure; - Options.Insert("post", PostID); - Options.Insert("wall", WallID); - Options.Insert("text", Text); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "WriteComment", Options); - - // END - - Process(Result, "VK", "WriteComment"); - -EndProcedure - -Procedure VK_GetStatistics(FunctionParameters) - - Parameters = GetVKParameters(); - - CurrentDate = OPI_Tools.GetCurrentDate(); - StartDate = BegOfDay(CurrentDate); - EndDate = EndOfDay(StartDate); - - Options = New Structure; - Options.Insert("datefrom", StartDate); - Options.Insert("dateto" , EndDate); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetStatistics", Options); - - // END - - Process(Result, "VK", "GetStatistics"); - -EndProcedure - -Procedure VK_GetPostStatistics(FunctionParameters) - - Parameters = GetVKParameters(); - - ArrayOfPosts = New Array; - ArrayOfPosts.Add(214); - ArrayOfPosts.Add(215); - - Options = New Structure; - Options.Insert("posts", ArrayOfPosts); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetPostStatistics", Options); - - // END - - Process(Result, "VK", "GetPostStatistics"); - -EndProcedure - -Procedure VK_CreateAdvertisingCampaign(FunctionParameters) - - Parameters = GetVKParameters(); - - AccountID = FunctionParameters["VK_AdsCabinetID"]; - Name = "New campaign"; - - Options = New Structure; - Options.Insert("cabinet", AccountID); - Options.Insert("title" , Name); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAdvertisingCampaign", Options); - - // END - - Process(Result, "VK", "CreateAdvertisingCampaign", , FunctionParameters); - -EndProcedure - -Procedure VK_CreateAd(FunctionParameters) - - Parameters = GetVKParameters(); - - CampaignNumber = FunctionParameters["VK_AdsCampaignID"]; - DailyLimit = 150; - CategoryNumber = 126; - PostID = FunctionParameters["VK_PostID"]; - AccountID = FunctionParameters["VK_AdsCabinetID"]; - - Options = New Structure; - Options.Insert("campaign", CampaignNumber); - Options.Insert("limit" , DailyLimit); - Options.Insert("category", CategoryNumber); - Options.Insert("post" , PostID); - Options.Insert("cabinet" , AccountID); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAd", Options); - - // END - - Process(Result, "VK", "CreateAd", , FunctionParameters); - -EndProcedure - -Procedure VK_PauseAdvertising(FunctionParameters) - - Parameters = GetVKParameters(); - - AccountID = FunctionParameters["VK_AdsCabinetID"]; - AdID = FunctionParameters["VK_AdsPostID"]; - - Options = New Structure; - Options.Insert("cabinet", AccountID); - Options.Insert("adv" , AdID); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "PauseAdvertising", Options); - - // END - - Process(Result, "VK", "PauseAdvertising"); - -EndProcedure - -Procedure VK_FormKeyboard(FunctionParameters) - - ButtonArray = New Array; - ButtonArray.Add("Button 1"); - ButtonArray.Add("Button 2"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "FormKeyboard", Options); - - // END - - Process(Result, "VK", "FormKeyboard"); - -EndProcedure - -Procedure VK_WriteMessage(FunctionParameters) - - Parameters = GetVKParameters(); - - Text = "Message from autotest"; - UserID = FunctionParameters["VK_UserID"]; - Communitytoken = FunctionParameters["VK_CommunityToken"]; - - ButtonArray = New Array; - ButtonArray.Add("Button 1"); - ButtonArray.Add("Button 2"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - - Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "FormKeyboard", Options); - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("user" , UserID); - Options.Insert("ct" , Communitytoken); - Options.Insert("keyboard", Keyboard); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "WriteMessage", Options); - - // END - - Process(Result, "VK", "WriteMessage"); - -EndProcedure - -Procedure VK_GetProductCategoryList(FunctionParameters) - - Parameters = GetVKParameters(); - - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductCategoryList", Options); - - // END - - Process(Result, "VK", "GetProductCategoryList"); - -EndProcedure - -Procedure VK_CreateProductCollection(FunctionParameters) - - Parameters = GetVKParameters(); - - Name = "TestCollection"; - Image = FunctionParameters["Picture"]; - Main = True; - Hidden = False; - - Options = New Structure; - Options.Insert("title" , Name); - Options.Insert("picture", Image); - Options.Insert("main" , Main); - Options.Insert("hidden" , Hidden); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateProductCollection", Options); - - // END - - Process(Result, "VK", "CreateProductCollection", , FunctionParameters); - -EndProcedure - -Procedure VK_EditProductCollection(FunctionParameters) - - Parameters = GetVKParameters(); - - Name = "EditedCollection"; - Selection = FunctionParameters["VK_MarketAlbumID"]; - - Options = New Structure; - Options.Insert("title", Name); - Options.Insert("sel" , Selection); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductCollection", Options); - - // END - - Process(Result, "VK", "EditProductCollection"); - -EndProcedure - -Procedure VK_GetSelectionsByID(FunctionParameters) - - Parameters = GetVKParameters(); - Selection = FunctionParameters["VK_MarketAlbumID"]; - - Options = New Structure; - Options.Insert("sels", Selection); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetSelectionsByID", Options); - - // END - - Process(Result, "VK", "GetSelectionsByID"); - -EndProcedure - -Procedure VK_AddProduct(FunctionParameters) - - Parameters = GetVKParameters(); - - Image1 = FunctionParameters["Picture"]; // URL, Binary or File path - Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path - Selection = FunctionParameters["VK_MarketAlbumID"]; - - ImageArray = New Array; - ImageArray.Add(Image1); - ImageArray.Add(Image2); - - ProductDescription = New Map; - ProductDescription.Insert("Name" , "TestProduct"); - ProductDescription.Insert("Description" , "Product description"); - ProductDescription.Insert("Category" , "20173"); - ProductDescription.Insert("Price" , 1); - ProductDescription.Insert("OldPrice" , 15); - ProductDescription.Insert("MainPhoto" , Image1); - ProductDescription.Insert("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); - ProductDescription.Insert("AdditionalPhotos" , ImageArray); - ProductDescription.Insert("MainInGroup" , True); - ProductDescription.Insert("Width" , 20); - ProductDescription.Insert("Height" , 30); - ProductDescription.Insert("Depth" , 40); - ProductDescription.Insert("Weight" , 100); - ProductDescription.Insert("SKU" , "12345"); - ProductDescription.Insert("AvailableBalance" , "10"); - - Options = New Structure; - Options.Insert("product", ProductDescription); - Options.Insert("sel" , Selection); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); - - // END - - Process(Result, "VK", "AddProduct", , FunctionParameters); - -EndProcedure - -Procedure VK_EditProduct(FunctionParameters) - - Parameters = GetVKParameters(); - - Product = FunctionParameters["VK_MarketItemID"]; - - ProductDescription = New Map; - ProductDescription.Insert("Name", "EditedTestProduct"); - - Options = New Structure; - Options.Insert("item" , Product); - Options.Insert("product", ProductDescription); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProduct", Options); - - // END - - Process(Result, "VK", "EditProduct"); - -EndProcedure - -Procedure VK_AddProductToCollection(FunctionParameters) - - Parameters = GetVKParameters(); - - Product = FunctionParameters["VK_MarketItemID"]; - Selection = FunctionParameters["VK_MarketAlbumID"]; - - Options = New Structure; - Options.Insert("items", Product); - Options.Insert("sel" , Selection); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProductToCollection", Options); - - // END - - Process(Result, "VK", "AddProductToCollection"); - -EndProcedure - -Procedure VK_RemoveProductFromSelection(FunctionParameters) - - Parameters = GetVKParameters(); - - Product = FunctionParameters["VK_MarketItemID"]; - Selection = FunctionParameters["VK_MarketAlbumID"]; - - Options = New Structure; - Options.Insert("item", Product); - Options.Insert("sel" , Selection); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "RemoveProductFromSelection", Options); - - // END - - Process(Result, "VK", "RemoveProductFromSelection"); - -EndProcedure - -Procedure VK_DeleteProduct(FunctionParameters) - - Parameters = GetVKParameters(); - - Product = FunctionParameters["VK_MarketItemID"]; - - Options = New Structure; - Options.Insert("item", Product); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProduct", Options); - - // END - - Process(Result, "VK", "DeleteProduct"); - -EndProcedure - -Procedure VK_DeleteSelection(FunctionParameters) - - Parameters = GetVKParameters(); - - Selection = FunctionParameters["VK_MarketAlbumID"]; - - Options = New Structure; - Options.Insert("sel" , Selection); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteSelection", Options); - - // END - - Process(Result, "VK", "DeleteSelection"); - -EndProcedure - -Procedure VK_CreateProductProperty(FunctionParameters) - - Parameters = GetVKParameters(); - - Name = "Color"; - - Options = New Structure; - Options.Insert("title", Name); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateProductProperty", Options); - - // END - - Process(Result, "VK", "CreateProductProperty", , FunctionParameters); - -EndProcedure - -Procedure VK_EditProductProperty(FunctionParameters) - - Parameters = GetVKParameters(); - - Name = "Color (change.)"; - Property = FunctionParameters["VK_PropID"]; - - Options = New Structure; - Options.Insert("title", Name); - Options.Insert("prop" , Property); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductProperty", Options); - - // END - - Process(Result, "VK", "EditProductProperty"); - -EndProcedure - -Procedure VK_AddProductPropertyVariant(FunctionParameters) - - Counter = 1; // SKIP - Parameters = GetVKParameters(); - - Property = FunctionParameters["VK_PropID"]; - OptionArray = New Array; - OptionArray.Add("Yellow"); - OptionArray.Add("Blue"); - OptionArray.Add("Red"); - - For Each Value In OptionArray Do - - Result = OPI_VK.AddProductPropertyVariant(Value, Property, Parameters); - - Process(Result, "VK", "AddProductPropertyVariant", , FunctionParameters, Counter); // SKIP - - Counter = Counter + 1; // SKIP - - EndDo; - - // END - -EndProcedure - -Procedure VK_EditProductPropertyVariant(FunctionParameters) - - Parameters = GetVKParameters(); - - Property = FunctionParameters["VK_PropID"]; - Option = FunctionParameters["VK_PropVarID1"]; - Value = "New variant name"; - - Options = New Structure; - Options.Insert("value" , Value); - Options.Insert("prop" , Property); - Options.Insert("option", Option); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductPropertyVariant", Options); - - // END - - Process(Result, "VK", "EditProductPropertyVariant"); - -EndProcedure - -Procedure VK_CreateProductWithProp(FunctionParameters) - - Parameters = GetVKParameters(); - - Image1 = FunctionParameters["Picture"]; - Image2 = FunctionParameters["Picture2"]; - PropVariant1 = FunctionParameters["VK_PropVarID1"]; - PropVariant2 = FunctionParameters["VK_PropVarID2"]; - - ImageArray = New Array; - ImageArray.Add(Image1); - ImageArray.Add(Image2); - - Product = New Map; - Product.Insert("Name" , "Test product (with prop)"); - Product.Insert("Description" , "Product description"); - Product.Insert("Category" , "20173"); - Product.Insert("Price" , 1); - Product.Insert("OldPrice" , 15); - Product.Insert("MainPhoto" , Image1); - Product.Insert("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); - Product.Insert("AdditionalPhotos" , ImageArray); - Product.Insert("MainInGroup" , True); - Product.Insert("Width" , 20); - Product.Insert("Height" , 30); - Product.Insert("Depth" , 40); - Product.Insert("Weight" , 100); - Product.Insert("SKU" , 12345); - Product.Insert("AvailableBalance" , "10"); - Product.Insert("PropertyValues" , PropVariant1); - - Options = New Structure; - Options.Insert("product", Product); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); - - // END - - Process(Result, "VK", "CreateProductWithProp", "First", FunctionParameters, 2); - - Product.Insert("Name" , "Test product (another)"); - Product.Insert("PropertyValues", PropVariant2); - - Options = New Structure; - Options.Insert("product", Product); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); - - Process(Result, "VK", "CreateProductWithProp", "Second", FunctionParameters, 3); - - OPI_Tools.Pause(5); - -EndProcedure - -Procedure VK_GetProductsByID(FunctionParameters) - - Parameters = GetVKParameters(); - - Item1 = FunctionParameters["VK_MarketItemID2"]; - Item2 = FunctionParameters["VK_MarketItemID3"]; - - ProductsArray = New Array; - ProductsArray.Add(Item1); - ProductsArray.Add(Item2); - - Options = New Structure; - Options.Insert("items", ProductsArray); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductsByID", Options); - - // END - - Process(Result, "VK", "GetProductsByID"); - -EndProcedure - -Procedure VK_GroupProducts(FunctionParameters) - - Parameters = GetVKParameters(); - - Item1 = FunctionParameters["VK_MarketItemID2"]; - Item2 = FunctionParameters["VK_MarketItemID3"]; - - ProductsArray = New Array; - ProductsArray.Add(Item1); - ProductsArray.Add(Item2); - - Options = New Structure; - Options.Insert("items", ProductsArray); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GroupProducts", Options); - - // END - - Process(Result, "VK", "GroupProducts"); - -EndProcedure - -Procedure VK_DeleteProductPropertyVariant(FunctionParameters) - - Parameters = GetVKParameters(); - - Option = FunctionParameters["VK_PropVarID1"]; - - Options = New Structure; - Options.Insert("option", Option); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProductPropertyVariant", Options); - - // END - - Process(Result, "VK", "DeleteProductPropertyVariant"); - -EndProcedure - -Procedure VK_DeleteProductProperty(FunctionParameters) - - Parameters = GetVKParameters(); - - Property = FunctionParameters["VK_PropID"]; - - Options = New Structure; - Options.Insert("prop", Property); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProductProperty", Options); - - // END - - Process(Result, "VK", "DeleteProductProperty"); - -EndProcedure - -Procedure VK_GetProductList(FunctionParameters) - - Parameters = GetVKParameters(); - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductList", Options); - - // END - - Process(Result, "VK", "GetProductList"); - -EndProcedure - -Procedure VK_GetSelectionList(FunctionParameters) - - Parameters = GetVKParameters(); - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetSelectionList", Options); - - // END - - Process(Result, "VK", "GetSelectionList"); - -EndProcedure - -Procedure VK_GetPropertyList(FunctionParameters) - - Parameters = GetVKParameters(); - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetPropertyList", Options); - - // END - - Process(Result, "VK", "GetPropertyList"); - -EndProcedure - -Procedure VK_GetOrderList(FunctionParameters) - - Parameters = GetVKParameters(); - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetOrderList", Options); - - // END - - Process(Result, "VK", "GetOrderList"); - -EndProcedure - -Procedure VK_UploadVideoToServer(FunctionParameters) - - Parameters = GetVKParameters(); - - Video = FunctionParameters["Video"]; // URL, Binary Data or File path - Name = "NewVideo"; - Description = "Video description"; - - Options = New Structure; - Options.Insert("file" , Video); - Options.Insert("title" , Name); - Options.Insert("description", Description); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadVideoToServer", Options); - - // END - - Process(Result, "VK", "UploadVideoToServer"); - -EndProcedure - -Procedure VK_UploadPhotoToServer(FunctionParameters) - - Parameters = GetVKParameters(); - - Image = FunctionParameters["Picture"]; // URL, Binary Data or File path - View = "Post"; - - Options = New Structure; - Options.Insert("file", Image); - Options.Insert("auth", Parameters); - Options.Insert("type", View); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadPhotoToServer", Options); - - // END - - Process(Result, "VK", "UploadPhotoToServer"); - -EndProcedure - -Procedure VK_ShortenLink(FunctionParameters) - - Parameters = GetVKParameters(); - - Options = New Structure; - Options.Insert("url" , "https://github.com/Bayselonarrend/OpenIntegrations"); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "ShortenLink", Options); - -EndProcedure - -Procedure VK_GetAdvertisingCategoryList(FunctionParameters) - - Parameters = GetVKParameters(); - - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetAdvertisingCategoryList", Options); - - // END - - Process(Result, "VK", "GetAdvertisingCategoryList"); - -EndProcedure - -Procedure VK_GetProductDescription(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductDescription", Options); - - // END - - Process(Result, "VK", "GetProductDescription"); - -EndProcedure - -#EndRegion - -#Region YandexDisk - -Procedure YandexDisk_GetConfirmationCode(FunctionParameters) - - ClientID = FunctionParameters["YandexDisk_ClientID"]; - - Options = New Structure; - Options.Insert("id", ClientID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetConfirmationCode", Options); - - // END - - Process(Result, "YandexDisk", "GetConfirmationCode"); - -EndProcedure - -Procedure YandexDisk_ConvertCodeToToken(FunctionParameters) - - ClientID = FunctionParameters["YandexDisk_ClientID"]; - ClientSecret = FunctionParameters["YandexDisk_ClientSecret"]; - DeviceCode = "12345678"; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret", ClientSecret); - Options.Insert("device", DeviceCode); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "ConvertCodeToToken", Options); - - // END - - Process(Result, "YandexDisk", "ConvertCodeToToken", , FunctionParameters); - -EndProcedure - -Procedure YandexDisk_RefreshToken(FunctionParameters) - - ClientID = FunctionParameters["YandexDisk_ClientID"]; - ClientSecret = FunctionParameters["YandexDisk_ClientSecret"]; - RefreshToken = FunctionParameters["YandexDisk_RefreshToken"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret" , ClientSecret); - Options.Insert("refresh", RefreshToken); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "RefreshToken", Options); - - // END - - Process(Result, "YandexDisk", "RefreshToken", , FunctionParameters); - -EndProcedure - -Procedure YandexDisk_GetDiskInformation(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDiskInformation", Options); - - // END - - Process(Result, "YandexDisk", "GetDiskInformation"); - -EndProcedure - -Procedure YandexDisk_CreateFolder(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = "/" + String(New UUID); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CreateFolder", Options); - - // END - - Process(Result, "YandexDisk", "CreateFolder", , Token, Path); - - OPI_YandexDisk.DeleteObject(Token, Path, False); - -EndProcedure - -Procedure YandexDisk_UploadFileByURL(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Address = FunctionParameters["Picture"]; - Path = "/" + String(New UUID) + ".png"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("url" , Address); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFileByURL", Options); - - // END - - Process(Result, "YandexDisk", "UploadFileByURL", , FunctionParameters, Path); - -EndProcedure - -Procedure YandexDisk_GetObject(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = FunctionParameters["YandexDisk_FileByURLPath"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetObject", Options); - - // END - - Process(Result, "YandexDisk", "GetObject", , Path); - -EndProcedure - -Procedure YandexDisk_DeleteObject(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = FunctionParameters["YandexDisk_FileByURLPath"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("can" , False); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DeleteObject", Options); - - // END - - Process(Result, "YandexDisk", "DeleteObject"); - -EndProcedure - -Procedure YandexDisk_UploadFile(FunctionParameters) - - Path1 = "/" + String(New UUID) + ".png"; - Path2 = "/" + String(New UUID) + ".png"; - - Token = FunctionParameters["YandexDisk_Token"]; - Image = FunctionParameters["Picture"]; // URL - - TFN = GetTempFileName("png"); // Path - CopyFile(Image, TFN); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("path" , Path1); - Options.Insert("file" , Image); - Options.Insert("rewrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFile", Options); - - Process(Result, "YandexDisk", "UploadFile", "URL"); // SKIP - - OPI_YandexDisk.DeleteObject(Token, Path1, False); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("path" , Path2); - Options.Insert("file" , TFN); - Options.Insert("rewrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFile", Options); - - // END - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - - Process(Result, "YandexDisk", "UploadFile"); - - OPI_YandexDisk.DeleteObject(Token, Path2, False); // SKIP - -EndProcedure - -Procedure YandexDisk_CreateObjectCopy(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Original = FunctionParameters["YandexDisk_OriginalFilePath"]; - Path = "/" + String(New UUID) + ".png"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("from" , Original); - Options.Insert("to" , Path); - Options.Insert("rewrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CreateObjectCopy", Options); - - // END - - Process(Result, "YandexDisk", "CreateObjectCopy", , FunctionParameters, Path); - -EndProcedure - -Procedure YandexDisk_GetDownloadLink(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = FunctionParameters["YandexDisk_PathForLink"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDownloadLink", Options); - - // END - - Process(Result, "YandexDisk", "GetDownloadLink"); - -EndProcedure - -Procedure YandexDisk_DownloadFile(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = FunctionParameters["YandexDisk_PathForLink"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DownloadFile", Options); - - // END - - Process(Result, "YandexDisk", "DownloadFile"); - -EndProcedure - -Procedure YandexDisk_GetFilesList(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Count = 2; - OffsetFromStart = 1; - FilterByType = "image"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("amount", Count); - Options.Insert("offset", OffsetFromStart); - Options.Insert("type" , FilterByType); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetFilesList", Options); - - // END - - Process(Result, "YandexDisk", "GetFilesList", , Count, OffsetFromStart); - -EndProcedure - -Procedure YandexDisk_MoveObject(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Original = FunctionParameters["YandexDisk_OriginalFilePath"]; - Path = "/" + String(New UUID) + ".png"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("from" , Original); - Options.Insert("to" , Path); - Options.Insert("rewrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "MoveObject", Options); - - // END - - Process(Result, "YandexDisk", "MoveObject", , FunctionParameters, Path); - -EndProcedure - -Procedure YandexDisk_GetPublishedObjectsList(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Count = 2; - OffsetFromStart = 1; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("amount", Count); - Options.Insert("offset", OffsetFromStart); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetPublishedObjectsList", Options); - - // END - - Process(Result, "YandexDisk", "GetPublishedObjectsList", , Count, OffsetFromStart); - -EndProcedure - -Procedure YandexDisk_PublishObject(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = FunctionParameters["YandexDisk_OriginalFilePath"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "PublishObject", Options); - - // END - - Process(Result, "YandexDisk", "PublishObject", , FunctionParameters, Path); - -EndProcedure - -Procedure YandexDisk_GetDownloadLinkForPublicObject(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - URL = FunctionParameters["YandexDisk_PublicURL"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDownloadLinkForPublicObject", Options); - - // END - - Process(Result, "YandexDisk", "GetDownloadLinkForPublicObject"); - -EndProcedure - -Procedure YandexDisk_GetPublicObject(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - URL = FunctionParameters["YandexDisk_PublicURL"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetPublicObject", Options); - - // END - - Process(Result, "YandexDisk", "GetPublicObject"); - -EndProcedure - -Procedure YandexDisk_SavePublicObjectToDisk(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - URL = FunctionParameters["YandexDisk_PublicURL"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "SavePublicObjectToDisk", Options); - - // END - - Process(Result, "YandexDisk", "SavePublicObjectToDisk"); - -EndProcedure - -Procedure YandexDisk_CancelObjectPublication(FunctionParameters) - - Token = FunctionParameters["YandexDisk_Token"]; - Path = FunctionParameters["YandexDisk_OriginalFilePath"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CancelObjectPublication", Options); - - // END - - Process(Result, "YandexDisk", "CancelObjectPublication", , Path); - -EndProcedure - -Procedure YandexDisk_UploadFileInParts(FunctionParameters) - - Path = "/song.mp3"; - - Token = FunctionParameters["YandexDisk_Token"]; - File = FunctionParameters["Audio"]; // URL, Binary or File path - - ChunkSize = 1048576; // 1 MB - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("path" , Path); - Options.Insert("file" , File); - Options.Insert("psize" , ChunkSize); - Options.Insert("rewrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFileInParts", Options); - - // END - - Process(Result, "YandexDisk", "UploadFileInParts", , File); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DownloadFile", Options); - - Process(Result, "YandexDisk", "UploadFileInParts", "Downloading", File); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("can" , False); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DeleteObject", Options); - - Process(Result, "YandexDisk", "UploadFileInParts", "Deletion"); - -EndProcedure - -#EndRegion - -#Region Viber - -Procedure Viber_SetWebhook(FunctionParameters) - - Token = FunctionParameters["Viber_ChannelToken"]; - URL = "http://api.athenaeum.digital/hs/viber"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SetWebhook", Options); - - // END - - Process(Result, "Viber", "SetWebhook"); - -EndProcedure - -Procedure Viber_GetChannelInformation(FunctionParameters) - - Token = FunctionParameters["Viber_ChannelToken"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetChannelInformation", Options); - - // END - - Process(Result, "Viber", "GetChannelInformation"); - -EndProcedure - -Procedure Viber_GetUserData(FunctionParameters) - - Token = FunctionParameters["Viber_ChannelToken"]; - UserID = FunctionParameters["Viber_ChannelAdminID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetUserData", Options); - - // END - - Process(Result, "Viber", "GetUserData"); - -EndProcedure - -Procedure Viber_GetOnlineUsers(FunctionParameters) - - Token = FunctionParameters["Viber_ChannelToken"]; - UserID = FunctionParameters["Viber_ChannelAdminID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("users", UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetOnlineUsers", Options); - - // END - - Process(Result, "Viber", "GetOnlineUsers"); - -EndProcedure - -Procedure Viber_CreateKeyboardFromArrayButton(FunctionParameters) - - ButtonArray = New Array; - ButtonArray.Add("Button 1"); - ButtonArray.Add("Button 2"); - ButtonArray.Add("Button 3"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "CreateKeyboardFromArrayButton", Options); - - // END - - Process(Result, "Viber", "CreateKeyboardFromArrayButton"); - -EndProcedure - -Procedure Viber_SendTextMessage(FunctionParameters) - - Text = "TestMessage"; - - UserID = FunctionParameters["Viber_UserID"]; - Token = FunctionParameters["Viber_Token"]; - SendingToChannel = False; - - ButtonArray = New Array; - ButtonArray.Add("Button 1"); - ButtonArray.Add("Button 2"); - ButtonArray.Add("Button 3"); - - Options = New Structure; - Options.Insert("buttons", ButtonArray); - - Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "CreateKeyboardFromArrayButton", Options); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("text" , Text); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - Options.Insert("keyboard" , Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendTextMessage", Options); - - Process(Result, "Viber", "SendTextMessage"); // SKIP - - UserID = FunctionParameters["Viber_ChannelAdminID"]; - Token = FunctionParameters["Viber_ChannelToken"]; - SendingToChannel = True; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("text" , Text); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - Options.Insert("keyboard" , Keyboard); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendTextMessage", Options); - - // END - - Process(Result, "Viber", "SendTextMessage", "Channel"); - -EndProcedure - -Procedure Viber_SendImage(FunctionParameters) - - Description = "TestMessage"; - URL = FunctionParameters["Picture"]; - - UserID = FunctionParameters["Viber_UserID"]; - Token = FunctionParameters["Viber_Token"]; - SendingToChannel = False; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("picture" , URL); - Options.Insert("user" , UserID); - Options.Insert("ischannel" , SendingToChannel); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendImage", Options); - - Process(Result, "Viber", "SendImage"); // SKIP - - UserID = FunctionParameters["Viber_ChannelAdminID"]; - Token = FunctionParameters["Viber_ChannelToken"]; - SendingToChannel = True; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("picture" , URL); - Options.Insert("user" , UserID); - Options.Insert("ischannel" , SendingToChannel); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendImage", Options); - - // END - - Process(Result, "Viber", "SendImage", "Channel"); - -EndProcedure - -Procedure Viber_SendFile(FunctionParameters) - - Extension = "docx"; - URL = FunctionParameters["Document"]; - - UserID = FunctionParameters["Viber_UserID"]; - Token = FunctionParameters["Viber_Token"]; - SendingToChannel = False; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("file" , URL); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - Options.Insert("ext" , Extension); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendFile", Options); - - Process(Result, "Viber", "SendFile"); // SKIP - - UserID = FunctionParameters["Viber_ChannelAdminID"]; - Token = FunctionParameters["Viber_ChannelToken"]; - SendingToChannel = True; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("file" , URL); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - Options.Insert("ext" , Extension); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendFile", Options); - - // END - - Process(Result, "Viber", "SendFile", "Channel"); - -EndProcedure - -Procedure Viber_SendContact(FunctionParameters) - - Name = "Petr Petrov"; - Phone = "+123456789"; - - UserID = FunctionParameters["Viber_UserID"]; - Token = FunctionParameters["Viber_Token"]; - SendingToChannel = False; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("name" , Name); - Options.Insert("phone" , Phone); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendContact", Options); - - Process(Result, "Viber", "SendContact"); // SKIP - - UserID = FunctionParameters["Viber_ChannelAdminID"]; - Token = FunctionParameters["Viber_ChannelToken"]; - SendingToChannel = True; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("name" , Name); - Options.Insert("phone" , Phone); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendContact", Options); - - // END - - Process(Result, "Viber", "SendContact", "Channel"); - -EndProcedure - -Procedure Viber_SendLocation(FunctionParameters) - - Latitude = "48.87373649724122"; - Longitude = "2.2954639195323967"; - - UserID = FunctionParameters["Viber_UserID"]; - Token = FunctionParameters["Viber_Token"]; - SendingToChannel = False; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("lat" , Latitude); - Options.Insert("long" , Longitude); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLocation", Options); - - Process(Result, "Viber", "SendLocation"); // SKIP - - UserID = FunctionParameters["Viber_ChannelAdminID"]; - Token = FunctionParameters["Viber_ChannelToken"]; - SendingToChannel = True; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("lat" , Latitude); - Options.Insert("long" , Longitude); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLocation", Options); - - // END - - Process(Result, "Viber", "SendLocation", "Channel"); - -EndProcedure - -Procedure Viber_SendLink(FunctionParameters) - - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - UserID = FunctionParameters["Viber_UserID"]; - Token = FunctionParameters["Viber_Token"]; - SendingToChannel = False; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("url" , URL); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLink", Options); - - Process(Result, "Viber", "SendLink"); // SKIP - - UserID = FunctionParameters["Viber_ChannelAdminID"]; - Token = FunctionParameters["Viber_ChannelToken"]; - SendingToChannel = True; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("url" , URL); - Options.Insert("user" , UserID); - Options.Insert("ischannel", SendingToChannel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLink", Options); - - // END - - Process(Result, "Viber", "SendLink", "Channel"); - -EndProcedure - -#EndRegion - -#Region GoogleWorkspace - -Procedure GoogleWorkspace_FormCodeRetrievalLink(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - Options = New Structure; - Options.Insert("id", ClientID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "FormCodeRetrievalLink", Options); - - // END - - Process(Result, "GoogleWorkspace", "FormCodeRetrievalLink"); - -EndProcedure - -Procedure GoogleWorkspace_GetTokenByCode(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - Code = FunctionParameters["Google_Code"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret", ClientSecret); - Options.Insert("code" , Code); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "GetTokenByCode", Options); - - // END - - Process(Result, "GoogleWorkspace", "GetTokenByCode"); - -EndProcedure - -Procedure GoogleWorkspace_RefreshToken(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - RefreshToken = FunctionParameters["Google_Refresh"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret" , ClientSecret); - Options.Insert("refresh", RefreshToken); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "RefreshToken", Options); - - // END - - Process(Result, "GoogleWorkspace", "RefreshToken"); - -EndProcedure - -Procedure GoogleWorkspace_GetServiceAccountToken(FunctionParameters) - - Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection - - Token = FunctionParameters["Access_Token"]; // SKIP - Data = OPI_HTTPRequests // SKIP - .NewRequest() // SKIP - .Initialize(Data) // SKIP - .AddBearerAuthorization(Token) // SKIP - .ProcessRequest("GET") // SKIP - .ReturnResponseAsBinaryData(); // SKIP - - Scope = New Array; - Scope.Add("https://www.googleapis.com/auth/calendar"); - Scope.Add("https://www.googleapis.com/auth/drive"); - Scope.Add("https://www.googleapis.com/auth/spreadsheets"); - - Options = New Structure; - Options.Insert("auth" , Data); - Options.Insert("scope", Scope); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "GetServiceAccountToken", Options); - - // END - - Process(Result, "GoogleWorkspace", "GetServiceAccountToken"); - -EndProcedure - -#EndRegion - -#Region GoogleCalendar - -Procedure GoogleCalendar_FormCodeRetrievalLink(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - Options = New Structure; - Options.Insert("id", ClientID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "FormCodeRetrievalLink", Options); - - // END - - Process(Result, "GoogleCalendar", "FormCodeRetrievalLink"); - -EndProcedure - -Procedure GoogleCalendar_GetTokenByCode(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - Code = FunctionParameters["Google_Code"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret", ClientSecret); - Options.Insert("code" , Code); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetTokenByCode", Options); - - // END - - Process(Result, "GoogleCalendar", "GetTokenByCode"); - -EndProcedure - -Procedure GoogleCalendar_RefreshToken(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - RefreshToken = FunctionParameters["Google_Refresh"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret" , ClientSecret); - Options.Insert("refresh", RefreshToken); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "RefreshToken", Options); - - // END - - Process(Result, "GoogleCalendar", "RefreshToken"); - -EndProcedure - -Procedure GoogleCalendar_GetServiceAccountToken(FunctionParameters) - - Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection - - Token = FunctionParameters["Access_Token"]; // SKIP - Data = OPI_HTTPRequests // SKIP - .NewRequest() // SKIP - .Initialize(Data) // SKIP - .AddBearerAuthorization(Token) // SKIP - .ProcessRequest("GET") // SKIP - .ReturnResponseAsBinaryData(); // SKIP - - Scope = New Array; - Scope.Add("https://www.googleapis.com/auth/calendar"); - Scope.Add("https://www.googleapis.com/auth/drive"); - Scope.Add("https://www.googleapis.com/auth/spreadsheets"); - - Options = New Structure; - Options.Insert("auth" , Data); - Options.Insert("scope", Scope); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetServiceAccountToken", Options); - - // END - - Process(Result, "GoogleCalendar", "GetServiceAccountToken"); - -EndProcedure - -Procedure GoogleCalendar_GetCalendarList(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetCalendarList", Options); - - // END - - Process(Result, "GoogleCalendar", "GetCalendarList"); - -EndProcedure - -Procedure GoogleCalendar_CreateCalendar(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Name = "TestCalendar"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("title", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "CreateCalendar", Options); - - // END - - Process(Result, "GoogleCalendar", "CreateCalendar", , FunctionParameters, Name); - -EndProcedure - -Procedure GoogleCalendar_EditCalendarMetadata(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - Name = "New name"; - Description = "New description"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar" , Calendar); - Options.Insert("title" , Name); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "EditCalendarMetadata", Options); - - // END - - Process(Result, "GoogleCalendar", "EditCalendarMetadata", , Name, Description); - -EndProcedure - -Procedure GoogleCalendar_GetCalendarMetadata(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetCalendarMetadata", Options); - - // END - - Name = "New name"; - Description = "New description"; - - Process(Result, "GoogleCalendar", "GetCalendarMetadata", , Name, Description); - -EndProcedure - -Procedure GoogleCalendar_AddCalendarToList(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "AddCalendarToList", Options); - - // END - - Name = "New name"; - Description = "New description"; - - Process(Result, "GoogleCalendar", "AddCalendarToList", , Name, Description); - -EndProcedure - -Procedure GoogleCalendar_EditListCalendar(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - PrimaryColor = "#000000"; - SecondaryColor = "#ffd800"; - Hidden = False; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar" , Calendar); - Options.Insert("primary" , PrimaryColor); - Options.Insert("secondary", SecondaryColor); - Options.Insert("hidden" , Hidden); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "EditListCalendar", Options); - - // END - - Process(Result, "GoogleCalendar", "EditListCalendar", , PrimaryColor, SecondaryColor); - -EndProcedure - -Procedure GoogleCalendar_GetListCalendar(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetListCalendar", Options); - - // END - - PrimaryColor = "#000000"; - SecondaryColor = "#ffd800"; - - Process(Result, "GoogleCalendar", "GetListCalendar", , PrimaryColor, SecondaryColor); - -EndProcedure - -Procedure GoogleCalendar_ClearMainCalendar(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "ClearMainCalendar", Options); - - // END - - Process(Result, "GoogleCalendar", "ClearMainCalendar"); - -EndProcedure - -Procedure GoogleCalendar_DeleteCalendarFromList(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "DeleteCalendarFromList", Options); - - // END - - Process(Result, "GoogleCalendar", "DeleteCalendarFromList"); - -EndProcedure - -Procedure GoogleCalendar_DeleteCalendar(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "DeleteCalendar", Options); - - // END - - Process(Result, "GoogleCalendar", "DeleteCalendar"); - -EndProcedure - -Procedure GoogleCalendar_CreateEvent(FunctionParameters) - - CurrentDate = OPI_Tools.GetCurrentDate(); - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - Name = "New event"; - Description = "TestEventDescription"; - Hour = 3600; - - Image1 = FunctionParameters["Picture"]; // URL, Binary or File path - Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path - Attachments = New Map; - - Attachments.Insert("Image1", Image1); - Attachments.Insert("Image2", Image2); - - EventDescription = New Map; - EventDescription.Insert("Description" , Description); - EventDescription.Insert("Title" , Name); - EventDescription.Insert("Venue" , "InOffice"); - EventDescription.Insert("StartDate" , CurrentDate); - EventDescription.Insert("EndDate" , EventDescription["StartDate"] + Hour); - EventDescription.Insert("ArrayOfAttachmentURLs", Attachments); - EventDescription.Insert("SendNotifications" , True); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - Options.Insert("props" , EventDescription); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "CreateEvent", Options); - - // END - - Process(Result, "GoogleCalendar", "CreateEvent", , FunctionParameters, Name, Description); - -EndProcedure - -Procedure GoogleCalendar_EditEvent(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - Event = FunctionParameters["Google_EventID"]; - Description = "New event description"; - - EventDescription = New Map; - EventDescription.Insert("Description", Description); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - Options.Insert("props" , EventDescription); - Options.Insert("event" , Event); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "EditEvent", Options); - - // END - - Name = "New event"; - - Process(Result, "GoogleCalendar", "EditEvent", , Name, Description); - -EndProcedure - -Procedure GoogleCalendar_GetEvent(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - Event = FunctionParameters["Google_EventID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - Options.Insert("event" , Event); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetEvent", Options); - - // END - - Name = "New event"; - Description = "New event description"; - - Process(Result, "GoogleCalendar", "GetEvent", , Name, Description); - -EndProcedure - -Procedure GoogleCalendar_MoveEvent(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Event = FunctionParameters["Google_EventID"]; - - SourceCalendar = FunctionParameters["Google_NewCalendarID"]; - TargetCalendar = FunctionParameters["Google_CalendarID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("from" , SourceCalendar); - Options.Insert("to" , TargetCalendar); - Options.Insert("event", Event); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "MoveEvent", Options); - - // END - - Name = "New event"; - Description = "New event description"; - - Process(Result, "GoogleCalendar", "MoveEvent", , Name, Description); - - OPI_GoogleCalendar.MoveEvent(Token, TargetCalendar, SourceCalendar, Event); - -EndProcedure - -Procedure GoogleCalendar_DeleteEvent(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - Event = FunctionParameters["Google_EventID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - Options.Insert("event" , Event); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "DeleteEvent", Options); - - // END - - Process(Result, "GoogleCalendar", "DeleteEvent"); - -EndProcedure - -Procedure GoogleCalendar_GetEventList(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Calendar = FunctionParameters["Google_NewCalendarID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("calendar", Calendar); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetEventList", Options); - - // END - - Process(Result, "GoogleCalendar", "GetEventList"); - -EndProcedure - -Procedure GoogleCalendar_GetEventDescription(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetEventDescription", Options); - - // END - - Process(Result, "GoogleCalendar", "GetEventDescription"); - -EndProcedure - -#EndRegion - -#Region GoogleDrive - -Procedure GoogleDrive_FormCodeRetrievalLink(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - Options = New Structure; - Options.Insert("id", ClientID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "FormCodeRetrievalLink", Options); - - // END - - Process(Result, "GoogleDrive", "FormCodeRetrievalLink"); - -EndProcedure - -Procedure GoogleDrive_GetTokenByCode(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - Code = FunctionParameters["Google_Code"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret", ClientSecret); - Options.Insert("code" , Code); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetTokenByCode", Options); - - // END - - Process(Result, "GoogleDrive", "GetTokenByCode"); - -EndProcedure - -Procedure GoogleDrive_RefreshToken(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - RefreshToken = FunctionParameters["Google_Refresh"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret" , ClientSecret); - Options.Insert("refresh", RefreshToken); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "RefreshToken", Options); - - // END - - Process(Result, "GoogleDrive", "RefreshToken"); - -EndProcedure - -Procedure GoogleDrive_GetServiceAccountToken(FunctionParameters) - - Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection - - Token = FunctionParameters["Access_Token"]; // SKIP - Data = OPI_HTTPRequests // SKIP - .NewRequest() // SKIP - .Initialize(Data) // SKIP - .AddBearerAuthorization(Token) // SKIP - .ProcessRequest("GET") // SKIP - .ReturnResponseAsBinaryData(); // SKIP - - Scope = New Array; - Scope.Add("https://www.googleapis.com/auth/calendar"); - Scope.Add("https://www.googleapis.com/auth/drive"); - Scope.Add("https://www.googleapis.com/auth/spreadsheets"); - - Options = New Structure; - Options.Insert("auth" , Data); - Options.Insert("scope", Scope); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetServiceAccountToken", Options); - - // END - - Process(Result, "GoogleDrive", "GetServiceAccountToken"); - -EndProcedure - -Procedure GoogleDrive_GetDirectoriesList(FunctionParameters) - - Name = "TestFolder"; - Token = FunctionParameters["Google_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("query", Name); - Options.Insert("depth", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetDirectoriesList", Options); - - // END - - Process(Result, "GoogleDrive", "GetDirectoriesList", , FunctionParameters); - -EndProcedure - -Procedure GoogleDrive_GetObjectInformation(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_Catalog"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Identifier); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetObjectInformation", Options); - - // END - - Process(Result, "GoogleDrive", "GetObjectInformation"); - -EndProcedure - -Procedure GoogleDrive_UploadFile(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Directory = FunctionParameters["GD_Catalog"]; - Image = FunctionParameters["Picture"]; // URL, Binary Data or File path - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Description = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetFileDescription", Options); - - Description.Insert("Parent", Directory); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("file" , Image); - Options.Insert("props", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "UploadFile", Options); - - // END - - Process(Result, "GoogleDrive", "UploadFile", , FunctionParameters, Description); - - If Not OPI_Tools.IsOneScript() And FunctionParameters.Property("Big") Then - - BigFile = FunctionParameters["Big"]; - Description.Insert("Name", "big.rar"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("file" , BigFile); - Options.Insert("props", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "UploadFile", Options); - - Process(Result, "GoogleDrive", "UploadFile", "Big", FunctionParameters, Description); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Result); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DownloadFile", Options); - - Process(Result, "GoogleDrive", "UploadFile", "Check", FunctionParameters, Description); - - EndIf; - -EndProcedure - -Procedure GoogleDrive_CopyObject(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - NewName = "CopiedFile.jpeg"; - NewParent = "root"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object" , Identifier); - Options.Insert("title" , NewName); - Options.Insert("catalog", NewParent); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CopyObject", Options); - - // END - - Process(Result, "GoogleDrive", "CopyObject", , FunctionParameters, NewName); - -EndProcedure - -Procedure GoogleDrive_DownloadFile(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Identifier); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DownloadFile", Options); - - // END - - Process(Result, "GoogleDrive", "DownloadFile", , FunctionParameters); - -EndProcedure - -Procedure GoogleDrive_UpdateFile(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - NewName = "UpdatedFile.jpg"; - Identifier = FunctionParameters["GD_File"]; - File = FunctionParameters["Picture2"]; // URL, Binary Data or File path - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Identifier); - Options.Insert("file" , File); - Options.Insert("title" , NewName); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "UpdateFile", Options); - - // END - - Process(Result, "GoogleDrive", "UpdateFile", , NewName); - -EndProcedure - -Procedure GoogleDrive_GetFilesList(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Directory = "root"; - NameContains = "data"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("query" , NameContains); - Options.Insert("catalog", Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetFilesList", Options); - - // END - - Process(Result, "GoogleDrive", "GetFilesList"); - -EndProcedure - -Procedure GoogleDrive_DeleteObject(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Identifier); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DeleteObject", Options); - - // END - - Process(Result, "GoogleDrive", "DeleteObject"); - - For Each Deletable In FunctionParameters["ArrayOfDeletions"] Do - - Result = OPI_GoogleDrive.DeleteObject(Token, Deletable); - - Process(Result, "GoogleDrive", "DeleteObject", "Additional"); - - OPI_Tools.Pause(2); - - EndDo; - -EndProcedure - -Procedure GoogleDrive_GetFileDescription(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetFileDescription", Options); - - // END - - Process(Result, "GoogleDrive", "GetFileDescription"); - -EndProcedure - -Procedure GoogleDrive_CreateComment(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - Comment = "Comment text"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Identifier); - Options.Insert("text" , Comment); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CreateComment", Options); - - // END - - Process(Result, "GoogleDrive", "CreateComment", , FunctionParameters, Comment); - -EndProcedure - -Procedure GoogleDrive_GetComment(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - CommentID = FunctionParameters["GD_Comment"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object" , Identifier); - Options.Insert("comment", CommentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetComment", Options); - - // END - - Process(Result, "GoogleDrive", "GetComment"); - -EndProcedure - -Procedure GoogleDrive_GetCommentList(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object", Identifier); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetCommentList", Options); - - // END - - Process(Result, "GoogleDrive", "GetCommentList"); - -EndProcedure - -Procedure GoogleDrive_DeleteComment(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GD_File"]; - CommentID = FunctionParameters["GD_Comment"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("object" , Identifier); - Options.Insert("comment", CommentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DeleteComment", Options); - - // END - - Process(Result, "GoogleDrive", "DeleteComment"); - -EndProcedure - -Procedure GoogleDrive_CreateFolder(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Directory = FunctionParameters["GD_Catalog"]; - Name = "TestFolder"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("title" , Name); - Options.Insert("catalog", Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CreateFolder", Options); - - // END - - Process(Result, "GoogleDrive", "CreateFolder"); - - CatalogID = Result["id"]; - OPI_GoogleDrive.DeleteObject(Token, CatalogID); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("title", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CreateFolder", Options); - - Process(Result, "GoogleDrive", "CreateFolder", "Root"); - - CatalogID = Result["id"]; - OPI_GoogleDrive.DeleteObject(Token, CatalogID); - -EndProcedure - -#EndRegion - -#Region GoogleSheets - -Procedure GoogleSheets_FormCodeRetrievalLink(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - Options = New Structure; - Options.Insert("id", ClientID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "FormCodeRetrievalLink", Options); - - // END - - Process(Result, "GoogleSheets", "FormCodeRetrievalLink"); - -EndProcedure - -Procedure GoogleSheets_GetTokenByCode(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - Code = FunctionParameters["Google_Code"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret", ClientSecret); - Options.Insert("code" , Code); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetTokenByCode", Options); - - // END - - Process(Result, "GoogleSheets", "GetTokenByCode"); - -EndProcedure - -Procedure GoogleSheets_RefreshToken(FunctionParameters) - - ClientID = FunctionParameters["Google_ClientID"]; - ClientSecret = FunctionParameters["Google_ClientSecret"]; - RefreshToken = FunctionParameters["Google_Refresh"]; - - Options = New Structure; - Options.Insert("id" , ClientID); - Options.Insert("secret" , ClientSecret); - Options.Insert("refresh", RefreshToken); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "RefreshToken", Options); - - // END - - Process(Result, "GoogleSheets", "RefreshToken"); - -EndProcedure - -Procedure GoogleSheets_GetServiceAccountToken(FunctionParameters) - - Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection - - Token = FunctionParameters["Access_Token"]; // SKIP - Data = OPI_HTTPRequests // SKIP - .NewRequest() // SKIP - .Initialize(Data) // SKIP - .AddBearerAuthorization(Token) // SKIP - .ProcessRequest("GET") // SKIP - .ReturnResponseAsBinaryData(); // SKIP - - Scope = New Array; - Scope.Add("https://www.googleapis.com/auth/calendar"); - Scope.Add("https://www.googleapis.com/auth/drive"); - Scope.Add("https://www.googleapis.com/auth/spreadsheets"); - - Options = New Structure; - Options.Insert("auth" , Data); - Options.Insert("scope", Scope); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetServiceAccountToken", Options); - - // END - - Process(Result, "GoogleSheets", "GetServiceAccountToken"); - -EndProcedure - -Procedure GoogleSheets_CreateSpreadsheet(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Name = "TestTable"; - - SheetArray = New Array; - SheetArray.Add("Sheet1"); - SheetArray.Add("Sheet2"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("title" , Name); - Options.Insert("sheets", SheetArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "CreateSpreadsheet", Options); - - // END - - Process(Result, "GoogleSheets", "CreateSpreadsheet", , FunctionParameters, Name, SheetArray); - - Name = "Test table (new.)"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("title" , Name); - Options.Insert("sheets", SheetArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "CreateSpreadsheet", Options); - - Process(Result, "GoogleSheets", "CreateSpreadsheet", "Additionally", FunctionParameters, Name); - -EndProcedure - -Procedure GoogleSheets_GetSpreadsheet(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Identifier = FunctionParameters["GS_Spreadsheet"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Identifier); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetSpreadsheet", Options); - - // END - - Process(Result, "GoogleSheets", "GetSpreadsheet"); - -EndProcedure - -Procedure GoogleSheets_CopySheet(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - From = FunctionParameters["GS_Spreadsheet"]; - Target = FunctionParameters["GS_Spreadsheet2"]; - Sheet = FunctionParameters["GS_Sheet"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("from" , From); - Options.Insert("to" , Target); - Options.Insert("sheet", Sheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "CopySheet", Options); - - // END - - Process(Result, "GoogleSheets", "CopySheet"); - -EndProcedure - -Procedure GoogleSheets_AddSheet(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - Name = "TestSheet"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("title" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "AddSheet", Options); - - // END - - Process(Result, "GoogleSheets", "AddSheet"); - -EndProcedure - -Procedure GoogleSheets_DeleteSheet(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - Sheet = FunctionParameters["GS_Sheet"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("sheet" , Sheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "DeleteSheet", Options); - - // END - - Process(Result, "GoogleSheets", "DeleteSheet", , Spreadsheet); - -EndProcedure - -Procedure GoogleSheets_EditSpreadsheetTitle(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - Name = "Test table (changed.)"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("title" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "EditSpreadsheetTitle", Options); - - // END - - Process(Result, "GoogleSheets", "EditSpreadsheetTitle", , Spreadsheet); - -EndProcedure - -Procedure GoogleSheets_GetTable(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetSpreadsheet", Options); - - // END - - Process(Result, "GoogleSheets", "GetTable"); - -EndProcedure - -Procedure GoogleSheets_SetCellValues(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - Sheet = "Sheet2"; - - ValueMapping = New Map; - ValueMapping.Insert("A1", "ThisIsA1"); - ValueMapping.Insert("A2", "ThisIsA2"); - ValueMapping.Insert("B2", "ThisIsB2"); - ValueMapping.Insert("B3", "ThisIsB3"); - ValueMapping.Insert("A3", "ThisIsA3"); - ValueMapping.Insert("A4", "ThisIsA4"); - ValueMapping.Insert("B1", "ThisIsB1"); - ValueMapping.Insert("B4", "ThisIsB4"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("data" , ValueMapping); - Options.Insert("sheetname" , Sheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "SetCellValues", Options); - - // END - - Process(Result, "GoogleSheets", "SetCellValues", , ValueMapping.Count()); - -EndProcedure - -Procedure GoogleSheets_GetCellValues(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - Sheet = "Sheet2"; - - CellsArray = New Array; - CellsArray.Add("B2"); - CellsArray.Add("A3"); - CellsArray.Add("B4"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("cells" , CellsArray); - Options.Insert("sheetname" , Sheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetCellValues", Options); - - // END - - Process(Result, "GoogleSheets", "GetCellValues", , CellsArray.Count()); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("sheetname" , Sheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetCellValues", Options); - - Process(Result, "GoogleSheets", "GetCellValues", "All", Spreadsheet); - -EndProcedure - -Procedure GoogleSheets_ClearCells(FunctionParameters) - - Token = FunctionParameters["Google_Token"]; - Spreadsheet = FunctionParameters["GS_Spreadsheet"]; - Sheet = "Sheet2"; - - CellsArray = New Array; - CellsArray.Add("B2"); - CellsArray.Add("A3"); - CellsArray.Add("B4"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("spreadsheet", Spreadsheet); - Options.Insert("cells" , CellsArray); - Options.Insert("sheetname" , Sheet); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "ClearCells", Options); - - // END - - Process(Result, "GoogleSheets", "ClearCells", , CellsArray.Count()); - -EndProcedure - -#EndRegion - -#Region Slack - -Procedure Slack_GetBotInformation(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetBotInformation", Options); - - // END - - Process(Result, "Slack", "GetBotInformation"); - -EndProcedure - -Procedure Slack_GetUserList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetUserList", Options); - - // END - - Process(Result, "Slack", "GetUserList"); - -EndProcedure - -Procedure Slack_GetWorkspaceList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetWorkspaceList", Options); - - // END - - Process(Result, "Slack", "GetWorkspaceList"); - -EndProcedure - -Procedure Slack_SendMessage(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - - // Text - - Text = "TestMessage1"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); - - Process(Result, "Slack", "SendMessage", , FunctionParameters, Text, Channel); // SKIP - - // With attachments (picture block in the example) - - Text = "Message with picture"; - Image = FunctionParameters["Picture"]; - BlockArray = New Array; - - Options = New Structure; - Options.Insert("picture", Image); - Options.Insert("alt" , "Image"); - - Block = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); - BlockArray.Add(Block); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("text" , Text); - Options.Insert("blocks" , BlockArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); - - Process(Result, "Slack", "SendMessage", "Image", FunctionParameters, Text, Channel); // SKIP - - // Sheduled - - Text = "Sheduled message"; - Hour = 3600; - Day = 24; - - SendingDate = OPI_Tools.GetCurrentDate() + (Day * Hour); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("text" , Text); - Options.Insert("date" , SendingDate); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); - - // END - - Process(Result, "Slack", "SendMessage", "Sheduled", FunctionParameters, Text, Channel); - - Token = FunctionParameters["Slack_Token"]; - Timestamp = Result["scheduled_message_id"]; - - OPI_Slack.DeleteMessage(Token, Channel, Timestamp, True); - -EndProcedure - -Procedure Slack_GenerateImageBlock(FunctionParameters) - - Image = FunctionParameters["Picture"]; - - Options = New Structure; - Options.Insert("picture", Image); - Options.Insert("alt" , "Image"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); - - // END - - Process(Result, "Slack", "GenerateImageBlock"); - -EndProcedure - -Procedure Slack_EditMessage(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - Timestamp = FunctionParameters["Slack_MessageTS"]; - - Text = "TestMessage2"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("stamp" , Timestamp); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "EditMessage", Options); - - // END - - Process(Result, "Slack", "EditMessage", , Text, Channel); - -EndProcedure - -Procedure Slack_GetMessageReplyList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - Timestamp = FunctionParameters["Slack_MessageTS"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("stamp" , Timestamp); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetMessageReplyList", Options); - - // END - - Process(Result, "Slack", "GetMessageReplyList"); - -EndProcedure - -Procedure Slack_GetMessageLink(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - Timestamp = FunctionParameters["Slack_MessageTS"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("stamp" , Timestamp); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetMessageLink", Options); - - // END - - Process(Result, "Slack", "GetMessageLink", , Channel); - -EndProcedure - -Procedure Slack_DeleteMessage(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - Timestamp = FunctionParameters["Slack_MessageTS"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("stamp" , Timestamp); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteMessage", Options); - - // END - - Process(Result, "Slack", "DeleteMessage"); - -EndProcedure - -Procedure Slack_SendEphemeralMessage(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - User = FunctionParameters["Slack_User"]; - Image = FunctionParameters["Picture"]; - Text = "Ephemeral message"; - - Options = New Structure; - Options.Insert("picture", Image); - Options.Insert("alt" , "Image"); - - Block = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("text" , Text); - Options.Insert("user" , User); - Options.Insert("blocks" , Block); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendEphemeralMessage", Options); - - // END - - Process(Result, "Slack", "SendEphemeralMessage"); - -EndProcedure - -Procedure Slack_GetDelayedMessageList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetDelayedMessageList", Options); - - // END - - Process(Result, "Slack", "GetDelayedMessageList"); - -EndProcedure - -Procedure Slack_CreateChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Name = "testconv" + String(New UUID); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("title", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "CreateChannel", Options); - - // END - - Process(Result, "Slack", "CreateChannel", , FunctionParameters, Name); - -EndProcedure - -Procedure Slack_SetChannelTopic(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - Topic = "TestTopic"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("theme" , Topic); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SetChannelTopic", Options); - - // END - - Process(Result, "Slack", "SetChannelTopic", , Topic); - -EndProcedure - -Procedure Slack_SetChannelGoal(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - Purpose = "TestGoal"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("purpose", Purpose); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SetChannelGoal", Options); - - // END - - Process(Result, "Slack", "SetChannelGoal"); - -EndProcedure - -Procedure Slack_GetChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannel", Options); - - // END - - Process(Result, "Slack", "GetChannel", , FunctionParameters["Slack_NewChannelName"]); - -EndProcedure - -Procedure Slack_InviteUsersToChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - User = FunctionParameters["Slack_User"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("users" , User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "InviteUsersToChannel", Options); - - // END - - Process(Result, "Slack", "InviteUsersToChannel", , FunctionParameters["Slack_NewChannelName"]); - -EndProcedure - -Procedure Slack_KickUserFromChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - User = FunctionParameters["Slack_User"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("user" , User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "KickUserFromChannel", Options); - - // END - - Process(Result, "Slack", "KickUserFromChannel"); - -EndProcedure - -Procedure Slack_GetChannelHistory(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelHistory", Options); - - // END - - Process(Result, "Slack", "GetChannelHistory"); - -EndProcedure - -Procedure Slack_GetChannelUserList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelUserList", Options); - - // END - - Process(Result, "Slack", "GetChannelUserList"); - -EndProcedure - -Procedure Slack_LeaveChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "LeaveChannel", Options); - - // END - - Process(Result, "Slack", "LeaveChannel"); - -EndProcedure - -Procedure Slack_JoinChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "JoinChannel", Options); - - // END - - Process(Result, "Slack", "JoinChannel", , FunctionParameters["Slack_NewChannelName"]); - -EndProcedure - -Procedure Slack_RenameChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - Name = "testconv" + String(New UUID); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("title" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "RenameChannel", Options); - - // END - - Process(Result, "Slack", "RenameChannel", , Name); - -EndProcedure - -Procedure Slack_ArchiveChannel(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_NewChannel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "ArchiveChannel", Options); - - // END - - Process(Result, "Slack", "ArchiveChannel"); - -EndProcedure - -Procedure Slack_GetChannelList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelList", Options); - - // END - - Process(Result, "Slack", "GetChannelList"); - -EndProcedure - -Procedure Slack_OpenDialog(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - User = FunctionParameters["Slack_User"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("users", User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "OpenDialog", Options); - - // END - - Process(Result, "Slack", "OpenDialog", , FunctionParameters); - - Channel = Result["channel"]["id"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - Options.Insert("text" , "Test dialog"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); - - Process(Result, "Slack", "OpenDialog", "Message", FunctionParameters); - -EndProcedure - -Procedure Slack_CloseDialog(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Dialog = FunctionParameters["Slack_Dialog"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("conv" , Dialog); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "CloseDialog", Options); - - // END - - Process(Result, "Slack", "CloseDialog"); - -EndProcedure - -Procedure Slack_GetFilesList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFilesList", Options); - - // END - - Process(Result, "Slack", "GetFilesList"); - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFilesList", Options); - - Process(Result, "Slack", "GetFilesList", "All"); - -EndProcedure - -Procedure Slack_UploadFile(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - File = FunctionParameters["Document"]; // URL, Binary Data or File path - - FileName = "megadoc.docx"; - Title = "NewFile"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("file" , File); - Options.Insert("filename", FileName); - Options.Insert("title" , Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "UploadFile", Options); - - Process(Result, "Slack", "UploadFile", , FunctionParameters, FileName); // SKIP - Process(Result, "Slack", "MakeFilePublic"); // SKIP - Process(Result, "Slack", "MakeFilePrivate"); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("file" , File); - Options.Insert("filename", FileName); - Options.Insert("title" , Title); - Options.Insert("channel" , Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "UploadFile", Options); - - // END - - Process(Result, "Slack", "UploadFile", "Channel", FunctionParameters, FileName); - OPI_Slack.DeleteFile(FunctionParameters["Slack_Token"], Result["files"][0]["id"]); - -EndProcedure - -Procedure Slack_MakeFilePublic(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - FileID = FunctionParameters["Slack_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "MakeFilePublic", Options); - - // END - - Process(Result, "Slack", "MakeFilePublic", "No record"); - -EndProcedure - -Procedure Slack_MakeFilePrivate(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - FileID = FunctionParameters["Slack_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "MakeFilePrivate", Options); - - // END - - Process(Result, "Slack", "MakeFilePrivate", "No record"); - -EndProcedure - -Procedure Slack_GetFileData(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - FileID = FunctionParameters["Slack_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFileData", Options); - - // END - - Process(Result, "Slack", "GetFileData", , "megadoc.docx"); - -EndProcedure - -Procedure Slack_DeleteFile(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - FileID = FunctionParameters["Slack_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteFile", Options); - - // END - - Process(Result, "Slack", "DeleteFile"); - -EndProcedure - -Procedure Slack_GetExternalFileList(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("channel", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFileList", Options); - - // END - - Process(Result, "Slack", "GetExternalFileList"); - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFileList", Options); - - Process(Result, "Slack", "GetExternalFileList", "All"); - -EndProcedure - -Procedure Slack_AddExternalFile(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Title = "NewFile"; - File = FunctionParameters["Document"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , File); - Options.Insert("title", Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "AddExternalFile", Options); - - // END - - Process(Result, "Slack", "AddExternalFile", , FunctionParameters, Title); - -EndProcedure - -Procedure Slack_GetExternalFile(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - FileID = FunctionParameters["Slack_ExtFileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFile", Options); - - // END - - Process(Result, "Slack", "GetExternalFile"); - -EndProcedure - -Procedure Slack_SendExternalFile(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - Channel = FunctionParameters["Slack_Channel"]; - FileID = FunctionParameters["Slack_ExtFileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid" , FileID); - Options.Insert("channels", Channel); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendExternalFile", Options); - - // END - - Process(Result, "Slack", "SendExternalFile"); - -EndProcedure - -Procedure Slack_DeleteExternalFile(FunctionParameters) - - Token = FunctionParameters["Slack_Token"]; - FileID = FunctionParameters["Slack_ExtFileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteExternalFile", Options); - - // END - - Process(Result, "Slack", "DeleteExternalFile"); - -EndProcedure - -#EndRegion - -#Region Airtable - -Procedure Airtable_CreateDatabase(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Region = FunctionParameters["Airtable_Workspace"]; - Name = "TestDatabase"; - - FieldArray = New Array; - FieldArray.Add(OPI_Airtable.GetNumberField("Number")); - FieldArray.Add(OPI_Airtable.GetStringField("String")); - - TableName = "TestTable"; - - TableMapping = New Map; - TableMapping.Insert(TableName, FieldArray); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("ws" , Region); - Options.Insert("title" , Name); - Options.Insert("tablesdata", TableMapping); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "CreateDatabase", Options); - - // END - - Process(Result, "Airtable", "CreateDatabase", , FunctionParameters, TableName); - -EndProcedure - -Procedure Airtable_GetDatabaseTables(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("base" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetDatabaseTables", Options); - - // END - - Process(Result, "Airtable", "GetDatabaseTables"); - -EndProcedure - -Procedure Airtable_GetListOfBases(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetListOfBases", Options); - - // END - - Process(Result, "Airtable", "GetListOfBases"); - -EndProcedure - -Procedure Airtable_GetNumberField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Number"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetNumberField", Options); - - // END - - Process(Result, "Airtable", "GetNumberField"); - -EndProcedure - -Procedure Airtable_GetStringField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "String"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetStringField", Options); - - // END - - Process(Result, "Airtable", "GetStringField"); - -EndProcedure - -Procedure Airtable_GetAttachmentField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Attachment"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetAttachmentField", Options); - - // END - - Process(Result, "Airtable", "GetAttachmentField"); - -EndProcedure - -Procedure Airtable_GetCheckboxField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Checkbox"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetCheckboxField", Options); - - // END - - Process(Result, "Airtable", "GetCheckboxField"); - -EndProcedure - -Procedure Airtable_GetDateField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Date"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetDateField", Options); - - // END - - Process(Result, "Airtable", "GetDateField"); - -EndProcedure - -Procedure Airtable_GetPhoneField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Phone"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetPhoneField", Options); - - // END - - Process(Result, "Airtable", "GetPhoneField"); - -EndProcedure - -Procedure Airtable_GetEmailField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Email"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetEmailField", Options); - - // END - - Process(Result, "Airtable", "GetEmailField"); - -EndProcedure - -Procedure Airtable_GetLinkField(FunctionParameters) - - Options = New Structure; - Options.Insert("title", "Link"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetLinkField", Options); - - // END - - Process(Result, "Airtable", "GetLinkField"); - -EndProcedure - -Procedure Airtable_CreateTable(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - - FieldArray = New Array; - FieldArray.Add(OPI_Airtable.GetNumberField("Number")); - FieldArray.Add(OPI_Airtable.GetStringField("String")); - FieldArray.Add(OPI_Airtable.GetAttachmentField("Attachment")); - FieldArray.Add(OPI_Airtable.GetCheckboxField("Checkbox")); - FieldArray.Add(OPI_Airtable.GetDateField("Date")); - FieldArray.Add(OPI_Airtable.GetPhoneField("Phone")); - FieldArray.Add(OPI_Airtable.GetEmailField("Email")); - FieldArray.Add(OPI_Airtable.GetLinkField("Link")); - - Name = "TestTable2"; - Description = "NewTable"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("title" , Name); - Options.Insert("fieldsdata" , FieldArray); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "CreateTable", Options); - - // END - - Process(Result, "Airtable", "CreateTable", , FunctionParameters, Name, Description); - -EndProcedure - -Procedure Airtable_ModifyTable(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Name = "Test table 2 (change.)"; - Description = "New table (change.)"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("title" , Name); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "ModifyTable", Options); - - // END - - Process(Result, "Airtable", "ModifyTable", , Name, Description); - -EndProcedure - -Procedure Airtable_CreateField(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Name = String(New UUID); - - Options = New Structure; - Options.Insert("title", Name); - - Field = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetNumberField", Options); - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("fielddata", Field); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "CreateField", Options); - - // END - - Process(Result, "Airtable", "CreateField", , FunctionParameters, Name); - -EndProcedure - -Procedure Airtable_ModifyField(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Field = FunctionParameters["Airtable_Field"]; - - Name = String(New UUID) + "(change.)"; - Description = "New description"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("field" , Field); - Options.Insert("title" , Name); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "ModifyField", Options); - - // END - - Process(Result, "Airtable", "ModifyField", , Name, Description); - -EndProcedure - -Procedure Airtable_CreatePosts(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - - Number = 10; - String = "Hello"; - - RowDescription1 = New Structure("Number,String", Number, String); - RowDescription2 = New Structure("Number,String", Number, String); - - ArrayOfDescriptions = New Array; - ArrayOfDescriptions.Add(RowDescription1); - ArrayOfDescriptions.Add(RowDescription2); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("base" , Base); - Options.Insert("table", Table); - Options.Insert("data" , ArrayOfDescriptions); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "CreatePosts", Options); - - // END - - Process(Result, "Airtable", "CreatePosts", , FunctionParameters); - - ArrayOfDeletions = New Array; - - For Each Record In Result["records"] Do - - CurrentRecord = Record["id"]; - ArrayOfDeletions.Add(CurrentRecord); - - EndDo; - - OPI_Airtable.DeleteRecords(Token, Base, Table, ArrayOfDeletions); - - // Single - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("base" , Base); - Options.Insert("table", Table); - Options.Insert("data" , RowDescription1); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "CreatePosts", Options); - - Process(Result, "Airtable", "CreatePosts", "Single", FunctionParameters, Number, String); - -EndProcedure - -Procedure Airtable_GetRecord(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("record", Record); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetRecord", Options); - - // END - - Process(Result, "Airtable", "GetRecord", , Record); - -EndProcedure - -Procedure Airtable_CreateComment(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Text = "TestComment"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("record", Record); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "CreateComment", Options); - - // END - - Process(Result, "Airtable", "CreateComment", , FunctionParameters, Text); - -EndProcedure - -Procedure Airtable_EditComment(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Comment = FunctionParameters["Airtable_Comment"]; - - Text = "Test comment (change.)"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("record" , Record); - Options.Insert("comment", Comment); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "EditComment", Options); - - // END - - Process(Result, "Airtable", "EditComment", , Text); - -EndProcedure - -Procedure Airtable_GetComments(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("record", Record); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetComments", Options); - - // END - - Process(Result, "Airtable", "GetComments"); - -EndProcedure - -Procedure Airtable_DeleteComment(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - Comment = FunctionParameters["Airtable_Comment"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("record" , Record); - Options.Insert("comment", Comment); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "DeleteComment", Options); - - // END - - Process(Result, "Airtable", "DeleteComment", , Comment); - -EndProcedure - -Procedure Airtable_GetListOfRecords(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("base" , Base); - Options.Insert("table", Table); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "GetListOfRecords", Options); - - // END - - Process(Result, "Airtable", "GetListOfRecords"); - -EndProcedure - -Procedure Airtable_DeleteRecords(FunctionParameters) - - Token = FunctionParameters["Airtable_Token"]; - Base = FunctionParameters["Airtable_Base"]; - Table = FunctionParameters["Airtable_Table"]; - Record = FunctionParameters["Airtable_Record"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("table" , Table); - Options.Insert("records", Record); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("airtable", "DeleteRecords", Options); - - // END - - Process(Result, "Airtable", "DeleteRecords"); - -EndProcedure - -#EndRegion - -#Region Twitter - -Procedure Twitter_GetToken(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Code = "123456"; - - Options = New Structure; - Options.Insert("code", Code); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "GetToken", Options); - - // END - - Process(Result, "Twitter", "GetToken"); - -EndProcedure - -Procedure Twitter_GetAuthorizationLink(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "GetAuthorizationLink", Options); - - // END - - Process(Result, "Twitter", "GetAuthorizationLink"); - -EndProcedure - -Procedure Twitter_RefreshToken(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Options = New Structure; - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "RefreshToken", Options); - - // END - - Process(Result, "Twitter", "RefreshToken"); - -EndProcedure - -Procedure Twitter_CreateTextTweet(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Text = "TestTweet" + String(New UUID); - - Options = New Structure; - Options.Insert("text", Text); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateTextTweet", Options); - - // END - - Process(Result, "Twitter", "CreateTextTweet", , Text); - -EndProcedure - -Procedure Twitter_CreateImageTweet(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Text = "TestTweet" + String(New UUID); - - Image = FunctionParameters["Picture"]; // URL, Binary or File path - Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path - - ImageArray = New Array; - ImageArray.Add(Image); - ImageArray.Add(Image2); - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("pictures", ImageArray); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); - - Process(Result, "Twitter", "CreateImageTweet", , Text); // SKIP - - Text = "TestTweet" + String(New UUID); - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("pictures", Image); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); - - // END - - Process(Result, "Twitter", "CreateImageTweet", "Single", Text); - - Image = OPI_HTTPRequests.Get(Image); - - Text = "TestTweet" + String(New UUID); - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("pictures", Image); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); - - Process(Result, "Twitter", "CreateImageTweet", "Binary", Text); - -EndProcedure - -Procedure Twitter_CreateVideoTweet(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Text = "TestTweet" + String(New UUID); - - Video = FunctionParameters["Video"]; // URL, Binary or File path - Video2 = FunctionParameters["Video"]; // URL, Binary or File path - - VideosArray = New Array; - VideosArray.Add(Video); - VideosArray.Add(Video2); - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("videos", VideosArray); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); - - Process(Result, "Twitter", "CreateVideoTweet", , Text); // SKIP - - Text = "TestTweet" + String(New UUID); - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("videos", Video); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); - - // END - - Process(Result, "Twitter", "CreateVideoTweet", "Single", Text); - - Video = OPI_HTTPRequests.Get(Video); - - Text = "TestTweet" + String(New UUID); - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("videos", Video); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); - - Process(Result, "Twitter", "CreateVideoTweet", "Binary", Text); - -EndProcedure - -Procedure Twitter_CreateGifTweet(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Text = "TestTweet" + String(New UUID); - - GIF = FunctionParameters["GIF"]; // URL, Binary or File path - Gif2 = FunctionParameters["GIF"]; // URL, Binary or File path - - GifsArray = New Array; - GifsArray.Add(GIF); - GifsArray.Add(Gif2); - - Options = New Structure; - Options.Insert("text", Text); - Options.Insert("gifs", GifsArray); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); - - Process(Result, "Twitter", "CreateGifTweet", , Text); // SKIP - - Text = "TestTweet" + String(New UUID); - Options = New Structure; - Options.Insert("text", Text); - Options.Insert("gifs", GIF); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); - - // END - - Process(Result, "Twitter", "CreateGifTweet", "Single", Text); - - GIF = OPI_HTTPRequests.Get(GIF); - - Text = "TestTweet" + String(New UUID); - Options = New Structure; - Options.Insert("text", Text); - Options.Insert("gifs", GIF); - Options.Insert("auth", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); - - Process(Result, "Twitter", "CreateGifTweet", "Binary", Text); - -EndProcedure - -Procedure Twitter_CreatePollTweet(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Text = "TestTweet" + String(New UUID); - - AnswersArray = New Array; - AnswersArray.Add("Option 1"); - AnswersArray.Add("Option 2"); - - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("options" , AnswersArray); - Options.Insert("duration", 60); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreatePollTweet", Options); - - // END - - Process(Result, "Twitter", "CreatePollTweet", , Text); - -EndProcedure - -Procedure Twitter_CreateCustomTweet(FunctionParameters) - - Parameters = GetTwitterAuthData(); - Text = "TestTweet" + String(New UUID); - - Image1 = FunctionParameters["Picture"]; // URL, Binary Data or File path - Image2 = FunctionParameters["Picture2"]; // URL, Binary Data or File path - - ImageArray = New Array; - ImageArray.Add(Image1); - ImageArray.Add(Image2); - - Options = New Structure; - Options.Insert("files", ImageArray); - Options.Insert("type" , "tweet_image"); - Options.Insert("auth" , Parameters); - - MediaArray = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "UploadAttachmentsArray", Options); - Options = New Structure; - Options.Insert("text" , Text); - Options.Insert("media", MediaArray); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateCustomTweet", Options); - - // END - - Process(Result, "Twitter", "CreateCustomTweet", , Text); - -EndProcedure - -Procedure Twitter_UploadAttachmentsArray(FunctionParameters) - - Parameters = GetTwitterAuthData(); - - Image1 = FunctionParameters["Picture"]; // URL, Binary Data or File path - Image2 = FunctionParameters["Picture2"]; // URL, Binary Data or File path - - ImageArray = New Array; - ImageArray.Add(Image1); - ImageArray.Add(Image2); - - Options = New Structure; - Options.Insert("files", ImageArray); - Options.Insert("type" , "tweet_image"); - Options.Insert("auth" , Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "UploadAttachmentsArray", Options); - - // END - - Process(Result, "Twitter", "UploadAttachmentsArray"); - -EndProcedure - -#EndRegion - -#Region Notion - -Procedure Notion_CreatePage(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Parent = FunctionParameters["Notion_Parent"]; - Title = "TestTitle"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("page" , Parent); - Options.Insert("title", Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreatePage", Options); - - // END - - Process(Result, "Notion", "CreatePage", , FunctionParameters); - -EndProcedure - -Procedure Notion_CreateDatabase(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Parent = FunctionParameters["Notion_Parent"]; - Title = "TestTitle"; - - Properties = New Map; - Properties.Insert("Name" , "title"); - Properties.Insert("Description" , "rich_text"); - Properties.Insert("Number" , "number"); - Properties.Insert("CreationDate", "date"); - Properties.Insert("Image" , "files"); - Properties.Insert("Active" , "checkbox"); - Properties.Insert("Website" , "url"); - Properties.Insert("Email" , "email"); - Properties.Insert("Phone" , "phone_number"); - Properties.Insert("User" , "people"); - - ValueSelection = New Map; - ValueSelection.Insert("New" , "green"); - ValueSelection.Insert("InProgress" , "yellow"); - ValueSelection.Insert("Remote" , "red"); - - Properties.Insert("Status", ValueSelection); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("page" , Parent); - Options.Insert("title", Title); - Options.Insert("props", Properties); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreateDatabase", Options); - - // END - - Process(Result, "Notion", "CreateDatabase", , FunctionParameters); - -EndProcedure - -Procedure Notion_EditDatabaseProperties(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Base = FunctionParameters["Notion_Base"]; - - Title = "TestTitle"; - Description = "TestDescription"; - - Properties = New Map; - Properties.Insert("Email", "rich_text"); // Type fields "Email" will changed with email to text - Properties.Insert("Website"); // Field "Website" will deleted - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("base" , Base); - Options.Insert("props" , Properties); - Options.Insert("title" , Title); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "EditDatabaseProperties", Options); - - // END - - Process(Result, "Notion", "EditDatabaseProperties"); - -EndProcedure - -Procedure Notion_GetPage(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Page = FunctionParameters["Notion_Page"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("page" , Page); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetPage", Options); - - // END - - Process(Result, "Notion", "GetPage"); - -EndProcedure - -Procedure Notion_GetDatabase(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Base = FunctionParameters["Notion_Base"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("base" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetDatabase", Options); - - // END - - Process(Result, "Notion", "GetDatabase"); - -EndProcedure - -Procedure Notion_CreatePageInDatabase(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Base = FunctionParameters["Notion_Base"]; - Image_ = FunctionParameters["Picture"]; // URL, Binary Data or File path - - Image = New Map; - Image.Insert("Logo", Image_); - - Properties = New Map; - Properties.Insert("Name" , "LLC Vector"); - Properties.Insert("Description" , "OurFirstClient"); - Properties.Insert("Number" , 1); - Properties.Insert("CreationDate", OPI_Tools.GetCurrentDate()); - Properties.Insert("Image" , Image); - Properties.Insert("Active" , True); - Properties.Insert("Website" , "https://vector.ru"); - Properties.Insert("Email" , "mail@vector.ru"); - Properties.Insert("Phone" , "88005553535"); - Properties.Insert("Status" , "New"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("base" , Base); - Options.Insert("data" , Properties); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreatePageInDatabase", Options); - - // END - - Process(Result, "Notion", "CreatePageInDatabase", , Base); - -EndProcedure - -Procedure Notion_EditPageProperties(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Page = FunctionParameters["Notion_Page"]; - Icon = FunctionParameters["Picture"]; - Cover = FunctionParameters["Picture2"]; - Archive = False; - - Properties = New Map; - Properties.Insert("Active", False); - Properties.Insert("Email" , "vector@mail.ru"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("page" , Page); - Options.Insert("data" , Properties); - Options.Insert("icon" , Icon); - Options.Insert("cover" , Cover); - Options.Insert("archive", Archive); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "EditPageProperties", Options); - - // END - - Process(Result, "Notion", "EditPageProperties"); - -EndProcedure - -Procedure Notion_ReturnBlock(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Block = FunctionParameters["Notion_Block"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("block", Block); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnBlock", Options); - - // END - - Process(Result, "Notion", "ReturnBlock"); - -EndProcedure - -Procedure Notion_CreateBlock(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Parent = FunctionParameters["Notion_Parent"]; - Block = FunctionParameters["Notion_Block"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("block", Block); - - BlockData = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnBlock", Options); - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("page" , Parent); - Options.Insert("block", BlockData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreateBlock", Options); - - // END - - Process(Result, "Notion", "CreateBlock", , FunctionParameters); - -EndProcedure - -Procedure Notion_ReturnChildBlocks(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Block = FunctionParameters["Notion_NewBlock"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("block", Block); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnChildBlocks", Options); - - // END - - Process(Result, "Notion", "ReturnChildBlocks"); - -EndProcedure - -Procedure Notion_DeleteBlock(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - Block = FunctionParameters["Notion_NewBlock"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("block", Block); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "DeleteBlock", Options); - - // END - - Process(Result, "Notion", "DeleteBlock"); - -EndProcedure - -Procedure Notion_UserList(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "UserList", Options); - - // END - - Process(Result, "Notion", "UserList"); - -EndProcedure - -Procedure Notion_GetUserData(FunctionParameters) - - Token = FunctionParameters["Notion_Token"]; - User = FunctionParameters["Notion_User"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("user" , User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetUserData", Options); - - // END - - Process(Result, "Notion", "GetUserData"); - -EndProcedure - -#EndRegion - -#Region Dropbox - -Procedure Dropbox_GetAuthorizationLink(FunctionParameters) - - AppKey = FunctionParameters["Dropbox_Appkey"]; - Options = New Structure; - Options.Insert("appkey", AppKey); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAuthorizationLink", Options); - - // END - - Process(Result, "Dropbox", "GetAuthorizationLink"); - -EndProcedure - -Procedure Dropbox_GetToken(FunctionParameters) - - AppKey = FunctionParameters["Dropbox_Appkey"]; - AppSecret = FunctionParameters["Dropbox_Appsecret"]; - Code = FunctionParameters["Dropbox_Code"]; - - Options = New Structure; - Options.Insert("appkey" , AppKey); - Options.Insert("appsecret", AppSecret); - Options.Insert("code" , Code); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetToken", Options); - - // END - - Process(Result, "Dropbox", "GetToken"); - -EndProcedure - -Procedure Dropbox_RefreshToken(FunctionParameters) - - AppKey = FunctionParameters["Dropbox_Appkey"]; - AppSecret = FunctionParameters["Dropbox_Appsecret"]; - RefreshToken = FunctionParameters["Dropbox_Refresh"]; - - Options = New Structure; - Options.Insert("appkey" , AppKey); - Options.Insert("appsecret", AppSecret); - Options.Insert("refresh" , RefreshToken); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "RefreshToken", Options); - - // END - - Process(Result, "Dropbox", "RefreshToken"); - -EndProcedure - -Procedure Dropbox_GetObjectInformation(FunctionParameters) - - Path = "/New/pic.png"; - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("path" , Path); - Options.Insert("detail", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetObjectInformation", Options); - - // END - - Process(Result, "Dropbox", "GetObjectInformation", , Path); - -EndProcedure - -Procedure Dropbox_GetPreview(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/mydoc.docx"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetPreview", Options); - - // END - - Process(Result, "Dropbox", "GetPreview"); - -EndProcedure - -Procedure Dropbox_UploadFile(FunctionParameters) - - Path = "/New/pic.png"; - Token = FunctionParameters["Dropbox_Token"]; - Image = FunctionParameters["Picture"]; - - ImagePath = GetTempFileName("png"); - CopyFile(Image, ImagePath); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("file" , ImagePath); - Options.Insert("path" , Path); - Options.Insert("overwrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "UploadFile", Options); - - // END - - Process(Result, "Dropbox", "UploadFile", , Path); - - OPI_Tools.RemoveFileWithTry(ImagePath, "Failed to delete the temporary file after the test!!"); - - If Not OPI_Tools.IsOneScript() And FunctionParameters.Property("Big") Then - - BigFile = FunctionParameters["Big"]; - - Path = "/giant.tmp"; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("file" , BigFile); - Options.Insert("path" , Path); - Options.Insert("overwrite", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "UploadFile", Options); - - Process(Result, "Dropbox", "UploadFile", "Big", Path); - - EndIf; - -EndProcedure - -Procedure Dropbox_UploadFileByURL(FunctionParameters) - - Path = "/New/url_doc.docx"; - Token = FunctionParameters["Dropbox_Token"]; - URL = FunctionParameters["Document"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("url" , URL); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "UploadFileByURL", Options); - - // END - - Process(Result, "Dropbox", "UploadFileByURL", , FunctionParameters); - -EndProcedure - -Procedure Dropbox_GetUploadStatusByURL(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - WorkID = FunctionParameters["Dropbox_Job"]; - Status = "in_progress"; - - While Status = "in_progress" Do - - Result = OPI_Dropbox.GetUploadStatusByURL(Token, WorkID); - Status = Result[".tag"]; - - OPI_Tools.Pause(5); - - Process(Result, "Dropbox", "GetUploadStatusByURL", "Progress"); // SKIP - - EndDo; - - // END - - Process(Result, "Dropbox", "GetUploadStatusByURL"); - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/url_doc.docx"; - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteObject", Options); - - Process(Result, "Dropbox", "GetUploadStatusByURL", "Deletion", Path); - -EndProcedure - -Procedure Dropbox_DeleteObject(FunctionParameters) - - Path = "/New/pic.png"; - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteObject", Options); - - // END - - Process(Result, "Dropbox", "DeleteObject", , Path); - -EndProcedure - -Procedure Dropbox_CopyObject(FunctionParameters) - - Original = "/New/pic.png"; - Copy = "/New/pic_copy.png"; - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("from" , Original); - Options.Insert("to" , Copy); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CopyObject", Options); - - // END - - Process(Result, "Dropbox", "CopyObject", , Copy); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Copy); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteObject", Options); - - Process(Result, "Dropbox", "CopyObject", "Deletion", Copy); - -EndProcedure - -Procedure Dropbox_MoveObject(FunctionParameters) - - OriginalPath = "/New/pic.png"; - TargetPath = "/pic.png"; - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("from" , OriginalPath); - Options.Insert("to" , TargetPath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "MoveObject", Options); - - // END - - Process(Result, "Dropbox", "MoveObject", , TargetPath); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("from" , TargetPath); - Options.Insert("to" , OriginalPath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "MoveObject", Options); - - Process(Result, "Dropbox", "MoveObject", "Deletion", OriginalPath); - -EndProcedure - -Procedure Dropbox_CreateFolder(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New catalog"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CreateFolder", Options); - - // END - - Process(Result, "Dropbox", "CreateFolder", , Path); - - OPI_Dropbox.DeleteObject(Token, Path); - -EndProcedure - -Procedure Dropbox_DownloadFile(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/pic.png"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DownloadFile", Options); - - // END - - Process(Result, "Dropbox", "DownloadFile"); - -EndProcedure - -Procedure Dropbox_DownloadFolder(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DownloadFolder", Options); - - // END - - Process(Result, "Dropbox", "DownloadFolder"); - -EndProcedure - -Procedure Dropbox_GetListOfFolderFiles(FunctionParameters) - - Path = "/New"; - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("path" , Path); - Options.Insert("detail", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetListOfFolderFiles", Options); - - // END - - Process(Result, "Dropbox", "GetListOfFolderFiles"); - -EndProcedure - -Procedure Dropbox_GetObjectVersionList(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/pic.png"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("path" , Path); - Options.Insert("amount", 1); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetObjectVersionList", Options); - - // END - - Process(Result, "Dropbox", "GetObjectVersionList", , FunctionParameters); - -EndProcedure - -Procedure Dropbox_RestoreObjectToVersion(FunctionParameters) - - Version = FunctionParameters["Dropbox_FileRevision"]; - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/pic.png"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("rev" , Version); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "RestoreObjectToVersion", Options); - - // END - - Process(Result, "Dropbox", "RestoreObjectToVersion", , Path); - -EndProcedure - -Procedure Dropbox_GetTagList(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - - PathsArray = New Array; - PathsArray.Add("/New/Dogs.mp3"); - PathsArray.Add("/New/mydoc.docx"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("paths", PathsArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetTagList", Options); - - // END - - Process(Result, "Dropbox", "GetTagList", , FunctionParameters, PathsArray); - -EndProcedure - -Procedure Dropbox_AddTag(FunctionParameters) - - Tag = "Important"; - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/mydoc.docx"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("tag" , Tag); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddTag", Options); - - // END - - Process(Result, "Dropbox", "AddTag"); - -EndProcedure - -Procedure Dropbox_DeleteTag(FunctionParameters) - - Tag = "Important"; - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New/mydoc.docx"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("tag" , Tag); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteTag", Options); - - // END - - Process(Result, "Dropbox", "DeleteTag"); - -EndProcedure - -Procedure Dropbox_GetAccountInformation(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAccountInformation", Options); - - // END - - Process(Result, "Dropbox", "GetAccountInformation"); - - AccountID = Result["account_id"]; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("account", AccountID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAccountInformation", Options); - - Process(Result, "Dropbox", "GetAccountInformation", "By ID"); - -EndProcedure - -Procedure Dropbox_GetSpaceUsageData(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetSpaceUsageData", Options); - - // END - - Process(Result, "Dropbox", "GetSpaceUsageData"); - -EndProcedure - -Procedure Dropbox_AddUsersToFile(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Email = FunctionParameters["Dropbox_OtherUser"]; - File = FunctionParameters["Dropbox_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid" , File); - Options.Insert("emails" , Email); - Options.Insert("readonly", False); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFile", Options); - - // END - - Process(Result, "Dropbox", "AddUsersToFile", , Email, False); - - Mails = New Array; - Mails.Add(Email); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid" , File); - Options.Insert("emails" , Mails); - Options.Insert("readonly", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFile", Options); - - Process(Result, "Dropbox", "AddUsersToFile", , Email, True); - -EndProcedure - -Procedure Dropbox_PublishFolder(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Path = "/New"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "PublishFolder", Options); - - // END - - Process(Result, "Dropbox", "PublishFolder", , FunctionParameters); - -EndProcedure - -Procedure Dropbox_CancelFolderPublication(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Folder = FunctionParameters["Dropbox_SharedFolder"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("folder", Folder); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CancelFolderPublication", Options); - - Process(Result, "Dropbox", "CancelFolderPublication"); // SKIP - - CurrentStatus = "in_progress"; - JobID = Result["async_job_id"]; - - While CurrentStatus = "in_progress" Do - Result = OPI_Dropbox.GetAsynchronousChangeStatus(Token, JobID); - CurrentStatus = Result[".tag"]; - OPI_Tools.Pause(3); - EndDo; - - // END - - Process(Result, "Dropbox", "CancelFolderPublication", "Ending", FunctionParameters, JobID); - -EndProcedure - -Procedure Dropbox_GetAsynchronousChangeStatus(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - JobID = FunctionParameters["Dropbox_NewJobID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("job" , JobID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAsynchronousChangeStatus", Options); - - // END - - Process(Result, "Dropbox", "GetAsynchronousChangeStatus"); - -EndProcedure - -Procedure Dropbox_AddUsersToFolder(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - Email = FunctionParameters["Dropbox_OtherUser"]; - Folder = FunctionParameters["Dropbox_SharedFolder"]; // shared_folder_id - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("folder" , Folder); - Options.Insert("emails" , Email); - Options.Insert("readonly", False); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFolder", Options); - - // END - - Process(Result, "Dropbox", "AddUsersToFolder"); - - Mails = New Array; - Mails.Add(Email); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("folder" , Folder); - Options.Insert("emails" , Mails); - Options.Insert("readonly", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFolder", Options); - - Process(Result, "Dropbox", "AddUsersToFolder", "Additional"); - -EndProcedure - -Procedure Dropbox_CancelFilePublication(FunctionParameters) - - Token = FunctionParameters["Dropbox_Token"]; - File = FunctionParameters["Dropbox_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", File); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CancelFilePublication", Options); - - // END - - Process(Result, "Dropbox", "CancelFilePublication"); - -EndProcedure - -#EndRegion - -#Region Bitrix24 - -Procedure Bitrix24_GetAppAuthLink(FunctionParameters) - - Domain = FunctionParameters["Bitrix24_Domain"]; - ClientID = FunctionParameters["Bitrix24_ClientID"]; - - Options = New Structure; - Options.Insert("domain" , Domain); - Options.Insert("clientid", ClientID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetAppAuthLink", Options); - - // END - - Process(Result, "Bitrix24", "GetAppAuthLink"); - -EndProcedure - -Procedure Bitrix24_GetToken(FunctionParameters) - - ClientID = FunctionParameters["Bitrix24_ClientID"]; - ClientSecret = FunctionParameters["Bitrix24_ClientSecret"]; - Code = FunctionParameters["Bitrix24_Code"]; - - Options = New Structure; - Options.Insert("clientid" , ClientID); - Options.Insert("clientsecret", ClientSecret); - Options.Insert("code" , Code); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetToken", Options); - - // END - - Process(Result, "Bitrix24", "GetToken"); - -EndProcedure - -Procedure Bitrix24_RefreshToken(FunctionParameters) - - ClientID = FunctionParameters["Bitrix24_ClientID"]; - ClientSecret = FunctionParameters["Bitrix24_ClientSecret"]; - Refresh = FunctionParameters["Bitrix24_Refresh"]; - - Options = New Structure; - Options.Insert("clientid" , ClientID); - Options.Insert("clientsecret", ClientSecret); - Options.Insert("refresh" , Refresh); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RefreshToken", Options); - - // END - - Process(Result, "Bitrix24", "RefreshToken"); - -EndProcedure - -Procedure Bitrix24_ServerTime(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ServerTime", Options); - - Process(Result, "Bitrix24", "ServerTime", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ServerTime", Options); - - // END - - Process(Result, "Bitrix24", "ServerTime"); - -EndProcedure - -Procedure Bitrix24_CreatePost(FunctionParameters) - - Text = "Text of post"; - Title = "Post title"; - Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data - Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data - - Files = New Map; - Files.Insert("1.png", Image1); - Files.Insert("2.png", Image2); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("text" , Text); - Options.Insert("files" , Files); - Options.Insert("title" , Title); - Options.Insert("important", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePost", Options); - - Process(Result, "Bitrix24", "CreatePost", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("text" , Text); - Options.Insert("files", Files); - Options.Insert("title", Title); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePost", Options); - - // END - - Process(Result, "Bitrix24", "CreatePost", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdatePost(FunctionParameters) - - Text = "New post text"; - Title = "New post title"; - Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data - PostID = FunctionParameters["Bitrix24_PostID"]; - - Files = New Map; - Files.Insert("1.png", Image1); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("text" , Text); - Options.Insert("files" , Files); - Options.Insert("title" , Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdatePost", Options); - - Process(Result, "Bitrix24", "UpdatePost", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - PostID = FunctionParameters["Bitrix24_HookPostID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("text" , Text); - Options.Insert("files" , Files); - Options.Insert("title" , Title); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdatePost", Options); - - // END - - Process(Result, "Bitrix24", "UpdatePost"); - -EndProcedure - -Procedure Bitrix24_DeletePost(FunctionParameters) - - PostID = FunctionParameters["Bitrix24_HookPostID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeletePost", Options); - - Process(Result, "Bitrix24", "DeletePost", "Hook"); // SKIP - - PostID = FunctionParameters["Bitrix24_PostID"]; - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeletePost", Options); - - // END - - Process(Result, "Bitrix24", "DeletePost"); - -EndProcedure - -Procedure Bitrix24_GetImportantPostViewers(FunctionParameters) - - PostID = FunctionParameters["Bitrix24_HookPostID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetImportantPostViewers", Options); - - Process(Result, "Bitrix24", "GetImportantPostViewers", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetImportantPostViewers", Options); - - // END - - Process(Result, "Bitrix24", "GetImportantPostViewers"); - -EndProcedure - -Procedure Bitrix24_GetPosts(FunctionParameters) - - PostID = FunctionParameters["Bitrix24_PostID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetPosts", Options); - - Process(Result, "Bitrix24", "GetPosts", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetPosts", Options); - - // END - - Process(Result, "Bitrix24", "GetPosts"); - -EndProcedure - -Procedure Bitrix24_AddPostComment(FunctionParameters) - - Text = "Comment for post"; - PostID = FunctionParameters["Bitrix24_PostID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostComment", Options); - - Process(Result, "Bitrix24", "AddPostComment", "Hook"); // SKIP - - Text = "Another comment"; - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("text" , Text); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostComment", Options); - - // END - - Process(Result, "Bitrix24", "AddPostComment"); - -EndProcedure - -Procedure Bitrix24_AddPostRecipients(FunctionParameters) - - Visibility = "UA"; - PostID = FunctionParameters["Bitrix24_PostID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("vision", Visibility); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostRecipients", Options); - - Process(Result, "Bitrix24", "AddPostRecipients", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("postid", PostID); - Options.Insert("vision", Visibility); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostRecipients", Options); - - // END - - Process(Result, "Bitrix24", "AddPostRecipients"); - -EndProcedure - -Procedure Bitrix24_GetTaskFieldsStructure(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskFieldsStructure", Options); - - Process(Result, "Bitrix24", "GetTaskFieldsStructure", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskFieldsStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetTaskFieldsStructure"); - -EndProcedure - -Procedure Bitrix24_CreateTask(FunctionParameters) - - // The complete structure of the fields can be obtained by the GetTaskFieldsStructure() function() - - CurrentDate = OPI_Tools.GetCurrentDate(); - Hour = 3600; - Day = 24; - Responsible = 1; - - TaskData = New Structure; - TaskData.Insert("TITLE" , "New task"); - TaskData.Insert("DESCRIPTION" , "New task description"); - TaskData.Insert("PRIORITY" , "2"); - TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); - TaskData.Insert("RESPONSIBLE_ID", Responsible); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", TaskData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTask", Options); - - Process(Result, "Bitrix24", "CreateTask", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", TaskData); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTask", Options); - - // END - - Process(Result, "Bitrix24", "CreateTask", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateTask(FunctionParameters) - - // The complete structure of the fields can be obtained by the GetTaskFieldsStructure() function() - - TaskData = New Structure; - TaskData.Insert("TITLE" , "Another task title"); - TaskData.Insert("DESCRIPTION", "Another task description"); - TaskData.Insert("PRIORITY" , "1"); - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("fields", TaskData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTask", Options); - - Process(Result, "Bitrix24", "UpdateTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("fields", TaskData); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTask", Options); - - // END - - Process(Result, "Bitrix24", "UpdateTask"); - -EndProcedure - -Procedure Bitrix24_GetTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTask", Options); - - Process(Result, "Bitrix24", "GetTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTask", Options); - - // END - - Process(Result, "Bitrix24", "GetTask"); - -EndProcedure - -Procedure Bitrix24_ApproveTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ApproveTask", Options); - - Process(Result, "Bitrix24", "ApproveTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ApproveTask", Options); - - // END - - Process(Result, "Bitrix24", "ApproveTask"); - -EndProcedure - -Procedure Bitrix24_DisapproveTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisapproveTask", Options); - - Process(Result, "Bitrix24", "DisapproveTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisapproveTask", Options); - - // END - - Process(Result, "Bitrix24", "DisapproveTask"); - -EndProcedure - -Procedure Bitrix24_CompleteTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTask", Options); - - Process(Result, "Bitrix24", "CompleteTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTask", Options); - - // END - - Process(Result, "Bitrix24", "CompleteTask"); - -EndProcedure - -Procedure Bitrix24_RenewTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTask", Options); - - Process(Result, "Bitrix24", "RenewTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTask", Options); - - // END - - Process(Result, "Bitrix24", "RenewTask"); - -EndProcedure - -Procedure Bitrix24_DeferTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeferTask", Options); - - Process(Result, "Bitrix24", "DeferTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeferTask", Options); - - // END - - Process(Result, "Bitrix24", "DeferTask"); - -EndProcedure - -Procedure Bitrix24_StartTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTask", Options); - - Process(Result, "Bitrix24", "StartTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTask", Options); - - // END - - Process(Result, "Bitrix24", "StartTask"); - -EndProcedure - -Procedure Bitrix24_StartWatchingTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartWatchingTask", Options); - - Process(Result, "Bitrix24", "StartWatchingTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartWatchingTask", Options); - - // END - - Process(Result, "Bitrix24", "StartWatchingTask"); - -EndProcedure - -Procedure Bitrix24_StopWatchingTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopWatchingTask", Options); - - Process(Result, "Bitrix24", "StopWatchingTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopWatchingTask", Options); - - // END - - Process(Result, "Bitrix24", "StopWatchingTask"); - -EndProcedure - -Procedure Bitrix24_PauseTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTask", Options); - - Process(Result, "Bitrix24", "PauseTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTask", Options); - - // END - - Process(Result, "Bitrix24", "PauseTask"); - -EndProcedure - -Procedure Bitrix24_DeleteTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTask", Options); - - Process(Result, "Bitrix24", "DeleteTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTask", Options); - - // END - - Process(Result, "Bitrix24", "DeleteTask"); - -EndProcedure - -Procedure Bitrix24_DelegateTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - UserID = FunctionParameters["Bitrix24_UserID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - Options.Insert("user", UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DelegateTask", Options); - - Process(Result, "Bitrix24", "DelegateTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("user" , UserID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DelegateTask", Options); - - // END - - Process(Result, "Bitrix24", "DelegateTask"); - -EndProcedure - -Procedure Bitrix24_AddTaskToFavorites(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskToFavorites", Options); - - Process(Result, "Bitrix24", "AddTaskToFavorites", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskToFavorites", Options); - - // END - - Process(Result, "Bitrix24", "AddTaskToFavorites"); - -EndProcedure - -Procedure Bitrix24_RemoveTaskFromFavorites(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RemoveTaskFromFavorites", Options); - - Process(Result, "Bitrix24", "RemoveTaskFromFavorites", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RemoveTaskFromFavorites", Options); - - // END - - Process(Result, "Bitrix24", "RemoveTaskFromFavorites"); - -EndProcedure - -Procedure Bitrix24_GetTaskHistory(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskHistory", Options); - - Process(Result, "Bitrix24", "GetTaskHistory", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskHistory", Options); - - // END - - Process(Result, "Bitrix24", "GetTaskHistory"); - -EndProcedure - -Procedure Bitrix24_GetTasksList(FunctionParameters) - - CurrentDate = OPI_Tools.GetCurrentDate(); - - // Full filter structure you can find at GetTasksFilterStructure method - Filter = New Map; - Filter.Insert("CREATED_BY", 1); // Producer with ID 1 - Filter.Insert("!RESPONSIBLE_ID", 10); // Performers with ID not equal to 10 - Filter.Insert(">=CREATED_DATE ", CurrentDate - 60 * 60 * 24); // Creation date >= yesterday - - Fields = New Array; - Fields.Add("UF_CRM_TASK"); - Fields.Add("CREATED_BY"); - - Indent = 1; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("filter", Filter); - Options.Insert("select", Fields); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksList", Options); - - Process(Result, "Bitrix24", "GetTasksList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("offset", Indent); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksList", Options); - - // END - - Process(Result, "Bitrix24", "GetTasksList"); - -EndProcedure - -Procedure Bitrix24_GetStoragesList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStoragesList", Options); - - Process(Result, "Bitrix24", "GetStoragesList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStoragesList", Options); - - // END - - Process(Result, "Bitrix24", "GetStoragesList"); - -EndProcedure - -Procedure Bitrix24_GetAppStorage(FunctionParameters) - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetAppStorage", Options); - - // END - - Process(Result, "Bitrix24", "GetAppStorage", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UploadFileToStorage(FunctionParameters) - - Filename2 = "Picture2.jpg"; - Name = "Picture1.jpg"; - - Image2 = FunctionParameters["Picture"]; // Local path, URL or Binary Data - Image = FunctionParameters["Picture2"]; // Local path, URL or Binary Data - - DestinationID = 3; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Filename2); - Options.Insert("file" , Image2); - Options.Insert("storageid", DestinationID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToStorage", Options); - - Process(Result, "Bitrix24", "UploadFileToStorage", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("file" , Image); - Options.Insert("storageid", DestinationID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToStorage", Options); - - // END - - Process(Result, "Bitrix24", "UploadFileToStorage", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_DeleteFile(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FileID = FunctionParameters["Bitrix24_HookFileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFile", Options); - - Process(Result, "Bitrix24", "DeleteFile", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFile", Options); - - // END - - Process(Result, "Bitrix24", "DeleteFile"); - -EndProcedure - -Procedure Bitrix24_CreateStorageFolder(FunctionParameters) - - StorageID = 3; - Name = "New catalog"; - Filename2 = "New folder 2"; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - Options.Insert("title" , Filename2); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateStorageFolder", Options); - - Process(Result, "Bitrix24", "CreateStorageFolder", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - Options.Insert("title" , Name); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateStorageFolder", Options); - - // END - - Process(Result, "Bitrix24", "CreateStorageFolder", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_DeleteFolder(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FolderID = FunctionParameters["Bitrix24_HookFolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFolder", Options); - - Process(Result, "Bitrix24", "DeleteFolder", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFolder", Options); - - // END - - Process(Result, "Bitrix24", "DeleteFolder"); - -EndProcedure - -Procedure Bitrix24_GetStorage(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - StorageID = 3; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorage", Options); - - Process(Result, "Bitrix24", "GetStorage", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorage", Options); - - // END - - Process(Result, "Bitrix24", "GetStorage"); - -EndProcedure - -Procedure Bitrix24_GetStorageObjects(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - StorageID = 3; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorageObjects", Options); - - Process(Result, "Bitrix24", "GetStorageObjects", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorageObjects", Options); - - // END - - Process(Result, "Bitrix24", "GetStorageObjects"); - -EndProcedure - -Procedure Bitrix24_RenameStorage(FunctionParameters) - - Name = "New storage name"; - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - StorageID = FunctionParameters["Bitrix24_StorageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("storageid", StorageID); - Options.Insert("title" , Name); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameStorage", Options); - - // END - - Process(Result, "Bitrix24", "RenameStorage"); - -EndProcedure - -Procedure Bitrix24_GetFolderInformation(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderInformation", Options); - - Process(Result, "Bitrix24", "GetFolderInformation", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderInformation", Options); - - // END - - Process(Result, "Bitrix24", "GetFolderInformation"); - -EndProcedure - -Procedure Bitrix24_CreateSubfolder(FunctionParameters) - - FolderID = FunctionParameters["Bitrix24_FolderID"]; - Name = "New subfolder"; - Filename2 = "New subfolder 2"; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("title" , Filename2); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSubfolder", Options); - - Process(Result, "Bitrix24", "CreateSubfolder", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("title" , Name); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSubfolder", Options); - - // END - - Process(Result, "Bitrix24", "CreateSubfolder", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_MakeFolderCopy(FunctionParameters) - - DestinationID = FunctionParameters["Bitrix24_HookSubfolderID"]; - FolderID = FunctionParameters["Bitrix24_SubfolderID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("tagetid" , DestinationID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MakeFolderCopy", Options); - - Process(Result, "Bitrix24", "MakeFolderCopy", "Hook"); // SKIP - - DestinationID = FunctionParameters["Bitrix24_SubfolderID"]; - FolderID = FunctionParameters["Bitrix24_HookSubfolderID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - // END - - Process(Result, "Bitrix24", "MakeFolderCopy"); - -EndProcedure - -Procedure Bitrix24_GetFolderExternalLink(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderExternalLink", Options); - - Process(Result, "Bitrix24", "GetFolderExternalLink", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderExternalLink", Options); - - // END - - Process(Result, "Bitrix24", "GetFolderExternalLink"); - -EndProcedure - -Procedure Bitrix24_GetFolderFilterStructure(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderFilterStructure", Options); - - Process(Result, "Bitrix24", "GetFolderFilterStructure", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("empty", True); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderFilterStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetFolderFilterStructure"); - -EndProcedure - -Procedure Bitrix24_GetFolderItems(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderItems", Options); - - Process(Result, "Bitrix24", "GetFolderItems", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderItems", Options); - - // END - - Process(Result, "Bitrix24", "GetFolderItems"); - -EndProcedure - -Procedure Bitrix24_MarkFolderAsDeleted(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFolderAsDeleted", Options); - - Process(Result, "Bitrix24", "MarkFolderAsDeleted", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFolderAsDeleted", Options); - - // END - - Process(Result, "Bitrix24", "MarkFolderAsDeleted"); - -EndProcedure - -Procedure Bitrix24_RestoreFolder(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFolder", Options); - - Process(Result, "Bitrix24", "RestoreFolder", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFolder", Options); - - // END - - Process(Result, "Bitrix24", "RestoreFolder"); - -EndProcedure - -Procedure Bitrix24_MoveFolder(FunctionParameters) - - DestinationID = FunctionParameters["Bitrix24_HookfolderID"]; - FolderID = FunctionParameters["Bitrix24_SubfolderID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("tagetid" , DestinationID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFolder", Options); - - Process(Result, "Bitrix24", "MoveFolder", "Hook"); // SKIP - - FolderID = FunctionParameters["Bitrix24_HookSubfolderID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("tagetid" , DestinationID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFolder", Options); - - // END - - Process(Result, "Bitrix24", "MoveFolder"); - -EndProcedure - -Procedure Bitrix24_RenameFolder(FunctionParameters) - - Name = "New catalog"; - Filename2 = "New folder 2"; - - FolderID2 = FunctionParameters["Bitrix24_HookFolderID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID2); - Options.Insert("title" , Filename2); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFolder", Options); - - Process(Result, "Bitrix24", "RenameFolder", "Hook"); // SKIP - - FolderID = FunctionParameters["Bitrix24_FolderID"]; - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("folderid", FolderID); - Options.Insert("title" , Name); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFolder", Options); - - // END - - Process(Result, "Bitrix24", "RenameFolder"); - -EndProcedure - -Procedure Bitrix24_UploadFileToFolder(FunctionParameters) - - Filename2 = "Picture2.jpg"; - Name = "Picture1.jpg"; - - Image2 = FunctionParameters["Picture"]; // Local path, URL or Binary Data - Image = FunctionParameters["Picture2"]; // Local path, URL or Binary Data - - DestinationID = FunctionParameters["Bitrix24_FolderID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Filename2); - Options.Insert("file" , Image2); - Options.Insert("folderid", DestinationID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); - - Process(Result, "Bitrix24", "UploadFileToFolder", "Hook", URL); // SKIP - - FileID = Result["result"]["ID"]; // SKIP - OPI_Bitrix24.DeleteFile(URL, FileID); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("file" , Image); - Options.Insert("folderid", DestinationID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); - - // END - - Process(Result, "Bitrix24", "UploadFileToFolder", , URL, Token); - - FileID = Result["result"]["ID"]; - - OPI_Bitrix24.DeleteFile(URL, FileID, Token); - -EndProcedure - -Procedure Bitrix24_MakeFileCopy(FunctionParameters) - - FolderID = FunctionParameters["Bitrix24_HookFolderID"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid" , FileID); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MakeFileCopy", Options); - - Process(Result, "Bitrix24", "MakeFileCopy", "Hook"); // SKIP - - FolderID = FunctionParameters["Bitrix24_FolderID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid" , FileID); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MakeFileCopy", Options); - - // END - - Process(Result, "Bitrix24", "MakeFileCopy"); - -EndProcedure - -Procedure Bitrix24_GetFileInformation(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileInformation", Options); - - Process(Result, "Bitrix24", "GetFileInformation", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileInformation", Options); - - // END - - Process(Result, "Bitrix24", "GetFileInformation"); - -EndProcedure - -Procedure Bitrix24_GetFileExternalLink(FunctionParameters) - - OPI_Tools.Pause(20); // SKIP - - URL = FunctionParameters["Bitrix24_URL"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileExternalLink", Options); - - Process(Result, "Bitrix24", "GetFileExternalLink", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileExternalLink", Options); - - // END - - Process(Result, "Bitrix24", "GetFileExternalLink"); - -EndProcedure - -Procedure Bitrix24_MarkFileAsDeleted(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFileAsDeleted", Options); - - Process(Result, "Bitrix24", "MarkFileAsDeleted", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFileAsDeleted", Options); - - // END - - Process(Result, "Bitrix24", "MarkFileAsDeleted"); - -EndProcedure - -Procedure Bitrix24_RestoreFile(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFile", Options); - - Process(Result, "Bitrix24", "RestoreFile", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFile", Options); - - // END - - Process(Result, "Bitrix24", "RestoreFile"); - -EndProcedure - -Procedure Bitrix24_RenameFile(FunctionParameters) - - Name = "New file name.jpg"; - Filename2 = "New file name 2.jpg"; - - FileID2 = FunctionParameters["Bitrix24_HookFileID"]; - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID2); - Options.Insert("title" , Filename2); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFile", Options); - - Process(Result, "Bitrix24", "RenameFile", "Hook"); // SKIP - - FileID = FunctionParameters["Bitrix24_FileID"]; - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid", FileID); - Options.Insert("title" , Name); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFile", Options); - - // END - - Process(Result, "Bitrix24", "RenameFile"); - -EndProcedure - -Procedure Bitrix24_MoveFileToFolder(FunctionParameters) - - FolderID = FunctionParameters["Bitrix24_HookSubFolderID"]; - FileID = FunctionParameters["Bitrix24_FileID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid" , FileID); - Options.Insert("folderid", FolderID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFileToFolder", Options); - - Process(Result, "Bitrix24", "MoveFileToFolder", "Hook"); // SKIP - - FolderID = FunctionParameters["Bitrix24_SubFolderID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fileid" , FileID); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFileToFolder", Options); - - // END - - Process(Result, "Bitrix24", "MoveFileToFolder"); - -EndProcedure - -Procedure Bitrix24_AttachFileToTopic(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - FileID = FunctionParameters["Bitrix24_TaskFileID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AttachFileToTopic", Options); - - Process(Result, "Bitrix24", "AttachFileToTopic", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("fileid", FileID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AttachFileToTopic", Options); - - // END - - Process(Result, "Bitrix24", "AttachFileToTopic"); - -EndProcedure - -Procedure Bitrix24_CheckTaskAccesses(FunctionParameters) - - ArrayOfUsers = New Array; - ArrayOfUsers.Add("1"); - ArrayOfUsers.Add("10"); - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("users", ArrayOfUsers); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CheckTaskAccesses", Options); - - Process(Result, "Bitrix24", "CheckTaskAccesses", "Hook", ArrayOfUsers.Count()); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("users", ArrayOfUsers); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CheckTaskAccesses", Options); - - // END - - Process(Result, "Bitrix24", "CheckTaskAccesses", , ArrayOfUsers.Count()); - -EndProcedure - -Procedure Bitrix24_MuteTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MuteTask", Options); - - Process(Result, "Bitrix24", "MuteTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MuteTask", Options); - - // END - - Process(Result, "Bitrix24", "MuteTask"); - -EndProcedure - -Procedure Bitrix24_UnmuteTask(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UnmuteTask", Options); - - Process(Result, "Bitrix24", "UnmuteTask", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UnmuteTask", Options); - - // END - - Process(Result, "Bitrix24", "UnmuteTask"); - -EndProcedure - -Procedure Bitrix24_AddTaskComment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; - - Text = "Task impossible, let's split up"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - Options.Insert("text", Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskComment", Options); - - Process(Result, "Bitrix24", "AddTaskComment", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Text = "Task uninpossible, don't split up"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("text" , Text); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskComment", Options); - - // END - - Process(Result, "Bitrix24", "AddTaskComment", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_DeleteTaskComment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; - CommentID = FunctionParameters["Bitrix24_HookCommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("comment", CommentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskComment", Options); - - Process(Result, "Bitrix24", "DeleteTaskComment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CommentID = FunctionParameters["Bitrix24_CommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("comment", CommentID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskComment", Options); - - // END - - Process(Result, "Bitrix24", "DeleteTaskComment"); - -EndProcedure - -Procedure Bitrix24_CreateResultFromComment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - CommentID = FunctionParameters["Bitrix24_HookCommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("comment", CommentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateResultFromComment", Options); - - Process(Result, "Bitrix24", "CreateResultFromComment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CommentID = FunctionParameters["Bitrix24_CommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("comment", CommentID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateResultFromComment", Options); - - // END - - Process(Result, "Bitrix24", "CreateResultFromComment"); - -EndProcedure - -Procedure Bitrix24_DeleteResultFromComment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - CommentID = FunctionParameters["Bitrix24_HookCommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("comment", CommentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteResultFromComment", Options); - - Process(Result, "Bitrix24", "DeleteResultFromComment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CommentID = FunctionParameters["Bitrix24_CommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("comment", CommentID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteResultFromComment", Options); - - // END - - Process(Result, "Bitrix24", "DeleteResultFromComment"); - -EndProcedure - -Procedure Bitrix24_GetResultsList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetResultsList", Options); - - Process(Result, "Bitrix24", "GetResultsList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetResultsList", Options); - - // END - - Process(Result, "Bitrix24", "GetResultsList"); - -EndProcedure - -Procedure Bitrix24_GetTaskCommentsList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskCommentsList", Options); - - Process(Result, "Bitrix24", "GetTaskCommentsList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskCommentsList", Options); - - // END - - Process(Result, "Bitrix24", "GetTaskCommentsList"); - -EndProcedure - -Procedure Bitrix24_GetTaskComment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - CommentID = FunctionParameters["Bitrix24_HookCommentID"]; - TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("comment", CommentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskComment", Options); - - Process(Result, "Bitrix24", "GetTaskComment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CommentID = FunctionParameters["Bitrix24_CommentID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("comment", CommentID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskComment", Options); - - // END - - Process(Result, "Bitrix24", "GetTaskComment"); - -EndProcedure - -Procedure Bitrix24_UpdateTaskComment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; - CommentID = FunctionParameters["Bitrix24_HookCommentID"]; - - Text = "The task has been changed, do not split up"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("comment", CommentID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskComment", Options); - - Process(Result, "Bitrix24", "UpdateTaskComment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CommentID = FunctionParameters["Bitrix24_CommentID"]; - - Text = "The task has been changed, let's split up"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("comment", CommentID); - Options.Insert("text" , Text); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskComment", Options); - - // END - - Process(Result, "Bitrix24", "UpdateTaskComment"); - -EndProcedure - -Procedure Bitrix24_CreateTasksDependencies(FunctionParameters) - - FromID = FunctionParameters["Bitrix24_HookTaskID"]; - DestinationID = FunctionParameters["Bitrix24_TaskID"]; - LinkType = 0; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("taskfrom", FromID); - Options.Insert("taskto" , DestinationID); - Options.Insert("linktype", LinkType); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTasksDependencies", Options); - - Process(Result, "Bitrix24", "CreateTasksDependencies", "Hook"); // SKIP - - OPI_Bitrix24.DeleteTasksDependencies(URL, FromID, DestinationID, LinkType); // SKIP - - FromID = FunctionParameters["Bitrix24_TaskID"]; - DestinationID = FunctionParameters["Bitrix24_HookTaskID"]; - LinkType = 2; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("taskfrom", FromID); - Options.Insert("taskto" , DestinationID); - Options.Insert("linktype", LinkType); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTasksDependencies", Options); - - // END - - Process(Result, "Bitrix24", "CreateTasksDependencies"); - - OPI_Bitrix24.DeleteTasksDependencies(URL, FromID, DestinationID, LinkType, Token); - -EndProcedure - -Procedure Bitrix24_DeleteTasksDependencies(FunctionParameters) - - FromID = FunctionParameters["Bitrix24_HookTaskID"]; - DestinationID = FunctionParameters["Bitrix24_TaskID"]; - LinkType = 0; - - URL = FunctionParameters["Bitrix24_URL"]; - - Result = OPI_Bitrix24.CreateTasksDependencies(URL, FromID, DestinationID, LinkType); // SKIP - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("taskfrom", FromID); - Options.Insert("taskto" , DestinationID); - Options.Insert("linktype", LinkType); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksDependencies", Options); - - Process(Result, "Bitrix24", "DeleteTasksDependencies", "Hook"); // SKIP - - FromID = FunctionParameters["Bitrix24_TaskID"]; - DestinationID = FunctionParameters["Bitrix24_HookTaskID"]; - LinkType = 2; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Result = OPI_Bitrix24.CreateTasksDependencies(URL, FromID, DestinationID, LinkType, Token); // SKIP - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("taskfrom", FromID); - Options.Insert("taskto" , DestinationID); - Options.Insert("linktype", LinkType); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksDependencies", Options); - - // END - - Process(Result, "Bitrix24", "DeleteTasksDependencies"); - -EndProcedure - -Procedure Bitrix24_AddKanbanStage(FunctionParameters) - - Name = "New stage"; - Color = "0026FF"; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("color" , Color); - Options.Insert("prevstage", 6); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddKanbanStage", Options); - - Process(Result, "Bitrix24", "AddKanbanStage", "Hook", FunctionParameters); // SKIP - - Name = "New stage 2"; - Color = "0026FF"; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - PrevStageID = Result["result"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("color" , Color); - Options.Insert("prevstage", PrevStageID); - Options.Insert("admin" , True); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddKanbanStage", Options); - - // END - - Process(Result, "Bitrix24", "AddKanbanStage", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_DeleteKanbanStage(FunctionParameters) - - StageID = FunctionParameters["Bitrix24_HookStageID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("stage", StageID); - Options.Insert("admin", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteKanbanStage", Options); - - Process(Result, "Bitrix24", "DeleteKanbanStage", "Hook"); // SKIP - - StageID = FunctionParameters["Bitrix24_StageID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("stage", StageID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteKanbanStage", Options); - - // END - - Process(Result, "Bitrix24", "DeleteKanbanStage"); - -EndProcedure - -Procedure Bitrix24_GetKanbanStages(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("admin", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetKanbanStages", Options); - - Process(Result, "Bitrix24", "GetKanbanStages", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetKanbanStages", Options); - - // END - - Process(Result, "Bitrix24", "GetKanbanStages"); - -EndProcedure - -Procedure Bitrix24_MoveTaskToKanbanStage(FunctionParameters) - - TaskID = FunctionParameters["Bitrix24_KanbanTaskID"]; - StageID = FunctionParameters["Bitrix24_HookStageID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("stage", StageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveTaskToKanbanStage", Options); - - Process(Result, "Bitrix24", "MoveTaskToKanbanStage", "Hook"); // SKIP - - StageID = FunctionParameters["Bitrix24_StageID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("stage", StageID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveTaskToKanbanStage", Options); - - // END - - Process(Result, "Bitrix24", "MoveTaskToKanbanStage"); - - OPI_Bitrix24.MoveTaskToKanbanStage(URL, TaskID, 2, , , Token); - -EndProcedure - -Procedure Bitrix24_UpdateKanbansStage(FunctionParameters) - - Name = "New stage name"; - Color = "000000"; - StageID = FunctionParameters["Bitrix24_HookStageID"]; - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title", Name); - Options.Insert("stage", StageID); - Options.Insert("color", Color); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateKanbansStage", Options); - - Process(Result, "Bitrix24", "UpdateKanbansStage", "Hook"); // SKIP - - Name = "New stage name 2"; - Color = "000000"; - StageID = FunctionParameters["Bitrix24_StageID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("stage" , StageID); - Options.Insert("color" , Color); - Options.Insert("prevstage", 6); - Options.Insert("admin" , True); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateKanbansStage", Options); - - // END - - Process(Result, "Bitrix24", "UpdateKanbansStage"); - -EndProcedure - -Procedure Bitrix24_AddTasksChecklistElement(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Text = "Checklist element"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("text" , Text); - Options.Insert("complete", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTasksChecklistElement", Options); - - Process(Result, "Bitrix24", "AddTasksChecklistElement", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("text" , Text); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTasksChecklistElement", Options); - - // END - - Process(Result, "Bitrix24", "AddTasksChecklistElement", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateTasksChecklistElement(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; - - Text = "New elements text"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTasksChecklistElement", Options); - - Process(Result, "Bitrix24", "UpdateTasksChecklistElement", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - ElementID = FunctionParameters["Bitrix24_CheckElementID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - Options.Insert("text" , Text); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTasksChecklistElement", Options); - - // END - - Process(Result, "Bitrix24", "UpdateTasksChecklistElement"); - -EndProcedure - -Procedure Bitrix24_DeleteTasksChecklistElement(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksChecklistElement", Options); - - Process(Result, "Bitrix24", "DeleteTasksChecklistElement", "Hook"); // SKIP - - TaskID = FunctionParameters["Bitrix24_TaskID"]; - ElementID = FunctionParameters["Bitrix24_CheckElementID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksChecklistElement", Options); - - // END - - Process(Result, "Bitrix24", "DeleteTasksChecklistElement"); - -EndProcedure - -Procedure Bitrix24_GetTasksChecklist(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklist", Options); - - Process(Result, "Bitrix24", "GetTasksChecklist", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - TaskID = FunctionParameters["Bitrix24_TaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklist", Options); - - // END - - Process(Result, "Bitrix24", "GetTasksChecklist"); - -EndProcedure - -Procedure Bitrix24_GetTasksChecklistElement(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklistElement", Options); - - Process(Result, "Bitrix24", "GetTasksChecklistElement", "Hook"); // SKIP - - TaskID = FunctionParameters["Bitrix24_TaskID"]; - ElementID = FunctionParameters["Bitrix24_CheckElementID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklistElement", Options); - - // END - - Process(Result, "Bitrix24", "GetTasksChecklistElement"); - -EndProcedure - -Procedure Bitrix24_CompleteTasksChecklistElement(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTasksChecklistElement", Options); - - Process(Result, "Bitrix24", "CompleteTasksChecklistElement", "Hook"); // SKIP - - TaskID = FunctionParameters["Bitrix24_TaskID"]; - ElementID = FunctionParameters["Bitrix24_CheckElementID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTasksChecklistElement", Options); - - // END - - Process(Result, "Bitrix24", "CompleteTasksChecklistElement"); - -EndProcedure - -Procedure Bitrix24_RenewTasksChecklistElement(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_HookTaskID"]; - ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTasksChecklistElement", Options); - - Process(Result, "Bitrix24", "RenewTasksChecklistElement", "Hook"); // SKIP - - TaskID = FunctionParameters["Bitrix24_TaskID"]; - ElementID = FunctionParameters["Bitrix24_CheckElementID"]; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("element", ElementID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTasksChecklistElement", Options); - - // END - - Process(Result, "Bitrix24", "RenewTasksChecklistElement"); - -EndProcedure - -Procedure Bitrix24_AddTaskTimeAccounting(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; - - Time = 3600; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("amount", Time); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskTimeAccounting", Options); - - Process(Result, "Bitrix24", "AddTaskTimeAccounting", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Text = "Time spent on work"; - UserID = 10; - Time = 7200; - SetupDate = AddMonth(OPI_Tools.GetCurrentDate(), -1); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("amount", Time); - Options.Insert("user" , UserID); - Options.Insert("text" , Text); - Options.Insert("date" , SetupDate); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskTimeAccounting", Options); - - // END - - Process(Result, "Bitrix24", "AddTaskTimeAccounting", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateTaskTimeAccounting(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; - RecordID = FunctionParameters["Bitrix24_HookTimeID"]; - - Text = "The text I forgot last time"; - Time = 4800; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("record", RecordID); - Options.Insert("amount", Time); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskTimeAccounting", Options); - - Process(Result, "Bitrix24", "UpdateTaskTimeAccounting", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - RecordID = FunctionParameters["Bitrix24_TimeID"]; - - Text = "New time record"; - Time = 4800; - SetupDate = AddMonth(OPI_Tools.GetCurrentDate(), -1); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("record", RecordID); - Options.Insert("amount", Time); - Options.Insert("text" , Text); - Options.Insert("date" , SetupDate); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskTimeAccounting", Options); - - // END - - Process(Result, "Bitrix24", "UpdateTaskTimeAccounting"); - -EndProcedure - -Procedure Bitrix24_DeleteTaskTimeAccounting(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; - RecordID = FunctionParameters["Bitrix24_HookTimeID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("record", RecordID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskTimeAccounting", Options); - - Process(Result, "Bitrix24", "DeleteTaskTimeAccounting", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - RecordID = FunctionParameters["Bitrix24_TimeID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("record", RecordID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskTimeAccounting", Options); - - // END - - Process(Result, "Bitrix24", "DeleteTaskTimeAccounting"); - -EndProcedure - -Procedure Bitrix24_GetTaskTimeAccounting(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; - RecordID = FunctionParameters["Bitrix24_HookTimeID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("record", RecordID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccounting", Options); - - Process(Result, "Bitrix24", "GetTaskTimeAccounting", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - RecordID = FunctionParameters["Bitrix24_TimeID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("record", RecordID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccounting", Options); - - // END - - Process(Result, "Bitrix24", "GetTaskTimeAccounting"); - -EndProcedure - -Procedure Bitrix24_GetTaskTimeAccountingList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task", TaskID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccountingList", Options); - - Process(Result, "Bitrix24", "GetTaskTimeAccountingList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("task" , TaskID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccountingList", Options); - - // END - - Process(Result, "Bitrix24", "GetTaskTimeAccountingList"); - -EndProcedure - -Procedure Bitrix24_GetDailyPlan(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDailyPlan", Options); - - Process(Result, "Bitrix24", "GetDailyPlan", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDailyPlan", Options); - - // END - - Process(Result, "Bitrix24", "GetDailyPlan"); - -EndProcedure - -Procedure Bitrix24_CreateChat(FunctionParameters) - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); - - B64Image = GetBase64StringFromBinaryData(Image); - - MembersArray = New Array; - MembersArray.Add(10); - MembersArray.Add(1); - - ChatStructure = New Structure; - ChatStructure.Insert("TYPE" , "OPEN"); - ChatStructure.Insert("TITLE" , "New chat"); - ChatStructure.Insert("DESCRIPTION", "This is a new chat"); - ChatStructure.Insert("COLOR" , "GREEN"); - ChatStructure.Insert("MESSAGE" , "Welcome to new chat"); - ChatStructure.Insert("USERS" , MembersArray); - ChatStructure.Insert("AVATAR" , B64Image); - ChatStructure.Insert("OWNER_ID" , 1); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", ChatStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateChat", Options); - - Process(Result, "Bitrix24", "CreateChat", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - ChatStructure = New Structure; - ChatStructure.Insert("TYPE" , "CHAT"); - ChatStructure.Insert("TITLE", "Private chat"); - ChatStructure.Insert("USERS", MembersArray); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", ChatStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateChat", Options); - - // END - - Process(Result, "Bitrix24", "CreateChat", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_GetChatUsers(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatUsers", Options); - - Process(Result, "Bitrix24", "GetChatUsers", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatUsers", Options); - - // END - - Process(Result, "Bitrix24", "GetChatUsers"); - -EndProcedure - -Procedure Bitrix24_LeaveChat(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "LeaveChat", Options); - - Process(Result, "Bitrix24", "LeaveChat", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "LeaveChat", Options); - - // END - - Process(Result, "Bitrix24", "LeaveChat"); - -EndProcedure - -Procedure Bitrix24_DeleteUserFromChat(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - Options.Insert("user", UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteUserFromChat", Options); - - Process(Result, "Bitrix24", "DeleteUserFromChat", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("user" , UserID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteUserFromChat", Options); - - // END - - Process(Result, "Bitrix24", "DeleteUserFromChat"); - -EndProcedure - -Procedure Bitrix24_AddUsersToChat(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - UserIDs = New Array; - UserIDs.Add(10); - UserIDs.Add(12); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("users", UserIDs); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddUsersToChat", Options); - - Process(Result, "Bitrix24", "AddUsersToChat", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("users", UserID); - Options.Insert("hide" , True); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddUsersToChat", Options); - - // END - - Process(Result, "Bitrix24", "AddUsersToChat"); - -EndProcedure - -Procedure Bitrix24_ChangeChatTitle(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Title = "New chat title"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("title", Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatTitle", Options); - - Process(Result, "Bitrix24", "ChangeChatTitle", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Title = "Another title"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("title", Title); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatTitle", Options); - - // END - - Process(Result, "Bitrix24", "ChangeChatTitle"); - -EndProcedure - -Procedure Bitrix24_ChangeChatColor(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Color = "AZURE"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("color", Color); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatColor", Options); - - Process(Result, "Bitrix24", "ChangeChatColor", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Color = "PURPLE"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("color", Color); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatColor", Options); - - // END - - Process(Result, "Bitrix24", "ChangeChatColor"); - -EndProcedure - -Procedure Bitrix24_ChangeChatPicture(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Image = FunctionParameters["Picture2"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("picture", Image); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatPicture", Options); - - Process(Result, "Bitrix24", "ChangeChatPicture", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("picture", Image); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatPicture", Options); - - // END - - Process(Result, "Bitrix24", "ChangeChatPicture"); - -EndProcedure - -Procedure Bitrix24_DisableChatNotifications(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisableChatNotifications", Options); - - Process(Result, "Bitrix24", "DisableChatNotifications", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisableChatNotifications", Options); - - // END - - Process(Result, "Bitrix24", "DisableChatNotifications"); - -EndProcedure - -Procedure Bitrix24_EnableChatNotifications(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EnableChatNotifications", Options); - - Process(Result, "Bitrix24", "EnableChatNotifications", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EnableChatNotifications", Options); - - // END - - Process(Result, "Bitrix24", "EnableChatNotifications"); - -EndProcedure - -Procedure Bitrix24_ChangeChatOwner(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - Options.Insert("user", UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatOwner", Options); - - Process(Result, "Bitrix24", "ChangeChatOwner", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("user" , UserID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatOwner", Options); - - // END - - Process(Result, "Bitrix24", "ChangeChatOwner"); - -EndProcedure - -Procedure Bitrix24_GetChatMessagesList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = "chat4"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMessagesList", Options); - - Process(Result, "Bitrix24", "GetChatMessagesList", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("first", 0); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMessagesList", Options); - - // END - - Process(Result, "Bitrix24", "GetChatMessagesList", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_MarkMessageAsReaded(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - OPI_TypeConversion.GetLine(ChatID); - ChatString = "chat" + ChatID; - - MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatString); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsReaded", Options); - - Process(Result, "Bitrix24", "MarkMessageAsReaded", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - MessageID = FunctionParameters["Bitrix24_UserMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("message", MessageID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsReaded", Options); - - // END - - Process(Result, "Bitrix24", "MarkMessageAsReaded"); - -EndProcedure - -Procedure Bitrix24_MarkMessageAsUnreaded(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - OPI_TypeConversion.GetLine(ChatID); - - ChatString = "chat" + ChatID; - MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatString); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsUnreaded", Options); - - Process(Result, "Bitrix24", "MarkMessageAsUnreaded", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - MessageID = FunctionParameters["Bitrix24_UserMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("message", MessageID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsUnreaded", Options); - - // END - - Process(Result, "Bitrix24", "MarkMessageAsUnreaded"); - -EndProcedure - -Procedure Bitrix24_GetDialog(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - OPI_TypeConversion.GetLine(ChatID); - - ChatString = "chat" + ChatID; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatString); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDialog", Options); - - Process(Result, "Bitrix24", "GetDialog", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDialog", Options); - - // END - - Process(Result, "Bitrix24", "GetDialog"); - -EndProcedure - -Procedure Bitrix24_GetChatMembersList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - OPI_TypeConversion.GetLine(ChatID); - - ChatString = "chat" + ChatID; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatString); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMembersList", Options); - - Process(Result, "Bitrix24", "GetChatMembersList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMembersList", Options); - - // END - - Process(Result, "Bitrix24", "GetChatMembersList"); - -EndProcedure - -Procedure Bitrix24_SendWritingNotification(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - OPI_TypeConversion.GetLine(ChatID); - - ChatString = "chat" + ChatID; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatString); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendWritingNotification", Options); - - Process(Result, "Bitrix24", "SendWritingNotification", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendWritingNotification", Options); - - // END - - Process(Result, "Bitrix24", "SendWritingNotification"); - -EndProcedure - -Procedure Bitrix24_ReadAll(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ReadAll", Options); - - Process(Result, "Bitrix24", "ReadAll", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ReadAll", Options); - - // END - - Process(Result, "Bitrix24", "ReadAll"); - -EndProcedure - -Procedure Bitrix24_SendMessage(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - OPI_TypeConversion.GetLine(ChatID); - - ChatString = "chat" + ChatID; - Text = "Message text"; - Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Attachments = New Array; - Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); - Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatString); - Options.Insert("text" , Text); - Options.Insert("blocks", Attachments); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendMessage", Options); - - Process(Result, "Bitrix24", "SendMessage", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , UserID); - Options.Insert("text" , Text); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendMessage", Options); - - // END - - Process(Result, "Bitrix24", "SendMessage", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_EditMessage(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; - - Text = "New message text"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("message", MessageID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EditMessage", Options); - - Process(Result, "Bitrix24", "EditMessage", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - MessageID = FunctionParameters["Bitrix24_UserMessageID"]; - - Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Attachments = New Array; - Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); - Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("message", MessageID); - Options.Insert("text" , Text); - Options.Insert("blocks" , Attachments); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EditMessage", Options); - - // END - - Process(Result, "Bitrix24", "EditMessage"); - -EndProcedure - -Procedure Bitrix24_DeleteMessage(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteMessage", Options); - - Process(Result, "Bitrix24", "DeleteMessage", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - MessageID = FunctionParameters["Bitrix24_UserMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("message", MessageID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteMessage", Options); - - // END - - Process(Result, "Bitrix24", "DeleteMessage"); - -EndProcedure - -Procedure Bitrix24_SetMessageReaction(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetMessageReaction", Options); - - Process(Result, "Bitrix24", "SetMessageReaction", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - MessageID = FunctionParameters["Bitrix24_UserMessageID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("message", MessageID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetMessageReaction", Options); - - // END - - Process(Result, "Bitrix24", "SetMessageReaction"); - -EndProcedure - -Procedure Bitrix24_GetChatFilesFolder(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); - - Process(Result, "Bitrix24", "GetChatFilesFolder", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); - - // END - - Process(Result, "Bitrix24", "GetChatFilesFolder"); - -EndProcedure - -Procedure Bitrix24_SendFile(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ChatID = FunctionParameters["Bitrix24_HookChatID"]; - File = FunctionParameters["Document"]; // Binary Data, URL or path to file - Description = "Very important file"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat", ChatID); - - Directory = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); - FolderID = Directory["result"]["ID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , "Imortant doc.docx"); - Options.Insert("file" , File); - Options.Insert("folderid", FolderID); - - UploadedFile = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); - FileID = UploadedFile["result"]["ID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("fileid" , FileID); - Options.Insert("description", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendFile", Options); - - Process(Result, "Bitrix24", "SendFile", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - ChatID = FunctionParameters["Bitrix24_ChatID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("token", Token); - - Directory = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); - FolderID = Directory["result"]["ID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , "Imortant doc.docx"); - Options.Insert("file" , File); - Options.Insert("folderid", FolderID); - Options.Insert("token" , Token); - - UploadedFile = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); - FileID = UploadedFile["result"]["ID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("chat" , ChatID); - Options.Insert("fileid" , FileID); - Options.Insert("description", Description); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendFile", Options); - - // END - - Process(Result, "Bitrix24", "SendFile"); - -EndProcedure - -Procedure Bitrix24_GetUsers(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - ArrayOfUsers = New Array; - - ArrayOfUsers.Add(1); - ArrayOfUsers.Add(10); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("users", ArrayOfUsers); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUsers", Options); - - Process(Result, "Bitrix24", "GetUsers", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserIDs = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("users", UserIDs); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUsers", Options); - - // END - - Process(Result, "Bitrix24", "GetUsers"); - -EndProcedure - -Procedure Bitrix24_GetUserStatus(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserStatus", Options); - - Process(Result, "Bitrix24", "GetUserStatus", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserStatus", Options); - - // END - - Process(Result, "Bitrix24", "GetUserStatus"); - -EndProcedure - -Procedure Bitrix24_SetUserStatus(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - Status = "dnd"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("status", Status); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserStatus", Options); - - Process(Result, "Bitrix24", "SetUserStatus", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - Status = "away"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("status", Status); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserStatus", Options); - - // END - - Process(Result, "Bitrix24", "SetUserStatus"); - -EndProcedure - -Procedure Bitrix24_CreatePersonalNotification(FunctionParameters) - - UserID = 1; - - URL = FunctionParameters["Bitrix24_URL"]; - Text = "Message text"; - Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Attachments = New Array; - Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); - Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("user" , UserID); - Options.Insert("text" , Text); - Options.Insert("blocks", Attachments); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePersonalNotification", Options); - - Process(Result, "Bitrix24", "CreatePersonalNotification", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - Tag = "New"; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("user" , UserID); - Options.Insert("text" , Text); - Options.Insert("tag" , Tag); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePersonalNotification", Options); - - // END - - Process(Result, "Bitrix24", "CreatePersonalNotification", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_CreateSystemNotification(FunctionParameters) - - UserID = 1; - - URL = FunctionParameters["Bitrix24_URL"]; - Text = "Message text"; - Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Attachments = New Array; - Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); - Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("user" , UserID); - Options.Insert("text" , Text); - Options.Insert("blocks", Attachments); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSystemNotification", Options); - - Process(Result, "Bitrix24", "CreateSystemNotification", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - Tag = "New"; - UserID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("user" , UserID); - Options.Insert("text" , Text); - Options.Insert("tag" , Tag); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSystemNotification", Options); - - // END - - Process(Result, "Bitrix24", "CreateSystemNotification", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_DeleteNotification(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - NotificationID = FunctionParameters["Bitrix24_PersonalHookNotifyID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("notif", NotificationID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteNotification", Options); - - Process(Result, "Bitrix24", "DeleteNotification", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - NotificationID = FunctionParameters["Bitrix24_PersonalNotifyID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("notif", NotificationID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteNotification", Options); - - // END - - Process(Result, "Bitrix24", "DeleteNotification"); - -EndProcedure - -Procedure Bitrix24_AddCustomTaskField(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Type = "date"; - Name = "BIRTHDAY_FIELD"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("type" , Type); - Options.Insert("fieldname", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddCustomTaskField", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Type = "string"; - Name = "TEXT_FIELD"; - ExternalID = "BITRIX_TEXT_FIELD"; - Title = "Text field"; - Signature = New Structure("en,ru", "Some field", "Nekotoroe pole"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("type" , Type); - Options.Insert("fieldname" , Name); - Options.Insert("externalid", ExternalID); - Options.Insert("title" , Title); - Options.Insert("label" , Signature); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddCustomTaskField", Options); - - // END - -EndProcedure - -Procedure Bitrix24_UpdateCustomTaskField(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - FieldID = FunctionParameters["Bitrix24_HookTaskFieldID"]; - Title = "New title"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fieldid", FieldID); - Options.Insert("title" , Title); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCustomTaskField", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - FieldID = FunctionParameters["Bitrix24_TaskFieldID"]; - ExternalID = "NEW_TEXT_FIELD"; - Signature = New Structure("en,ru", "Updated field", "Izmenennoe pole"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fieldid" , FieldID); - Options.Insert("externalid", ExternalID); - Options.Insert("label" , Signature); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCustomTaskField", Options); - - // END - -EndProcedure - -Procedure Bitrix24_GetCustomTaskField(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FieldID = FunctionParameters["Bitrix24_HookTaskFieldID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fieldid", FieldID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskField", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - FieldID = FunctionParameters["Bitrix24_TaskFieldID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fieldid", FieldID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskField", Options); - - // END - -EndProcedure - -Procedure Bitrix24_GetCustomTaskFieldsList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskFieldsList", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskFieldsList", Options); - - // END - -EndProcedure - -Procedure Bitrix24_DeleteCustomTaskField(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - FieldID = FunctionParameters["Bitrix24_HookTaskFieldID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fieldid", FieldID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCustomTaskField", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - FieldID = FunctionParameters["Bitrix24_TaskFieldID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fieldid", FieldID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCustomTaskField", Options); - - // END - -EndProcedure - -Procedure Bitrix24_CreateDepartment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Name = "Main department"; - ParentID = 1; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("parentid", ParentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDepartment", Options); - - Process(Result, "Bitrix24", "CreateDepartment", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Name = "Subordinate department"; - ParentID = FunctionParameters["Bitrix24_HookDepID"]; - HeadID = 1; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("title" , Name); - Options.Insert("parentid", ParentID); - Options.Insert("headid" , HeadID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDepartment", Options); - - // END - - Process(Result, "Bitrix24", "CreateDepartment", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateDepartment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - DepartmentID = FunctionParameters["Bitrix24_HookDepID"]; - ParentID = 7; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("depid" , DepartmentID); - Options.Insert("parentid", ParentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDepartment", Options); - - Process(Result, "Bitrix24", "UpdateDepartment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - DepartmentID = FunctionParameters["Bitrix24_DepID"]; - Name = "New department"; - ParentID = 1; - HeadID = 10; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("depid" , DepartmentID); - Options.Insert("title" , Name); - Options.Insert("parentid", ParentID); - Options.Insert("headid" , HeadID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDepartment", Options); - - // END - - Process(Result, "Bitrix24", "UpdateDepartment"); - -EndProcedure - -Procedure Bitrix24_DeleteDepartment(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - DepartmentID = FunctionParameters["Bitrix24_DepID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("depid", DepartmentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDepartment", Options); - - Process(Result, "Bitrix24", "DeleteDepartment", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - DepartmentID = FunctionParameters["Bitrix24_HookDepID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("depid", DepartmentID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDepartment", Options); - - // END - - Process(Result, "Bitrix24", "DeleteDepartment"); - -EndProcedure - -Procedure Bitrix24_GetDepartments(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - DepartmentID = FunctionParameters["Bitrix24_DepID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("depid", DepartmentID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDepartments", Options); - - Process(Result, "Bitrix24", "GetDepartments", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - HeadID = 1; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("headid", HeadID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDepartments", Options); - - // END - - Process(Result, "Bitrix24", "GetDepartments"); - -EndProcedure - -Procedure Bitrix24_GetCurrentUser(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCurrentUser", Options); - - Process(Result, "Bitrix24", "GetCurrentUser", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCurrentUser", Options); - - // END - - Process(Result, "Bitrix24", "GetCurrentUser"); - -EndProcedure - -Procedure Bitrix24_GetUserFieldsStructure(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserFieldsStructure", Options); - - Process(Result, "Bitrix24", "GetUserFieldsStructure", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserFieldsStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetUserFieldsStructure"); - -EndProcedure - -Procedure Bitrix24_CreateUser(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - Email = String(New UUID) + "@example.org"; - - // The full structure can be obtained with the function GetUserFieldsStructure - - UserStructure = New Structure; - UserStructure.Insert("EMAIL" , Email); - UserStructure.Insert("UF_DEPARTMENT", 7); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", UserStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateUser", Options); - - Process(Result, "Bitrix24", "CreateUser", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - Email = String(New UUID) + "@example.org"; - - UserStructure = New Structure; - UserStructure.Insert("EMAIL" , Email); - UserStructure.Insert("NAME" , "Vitaly"); - UserStructure.Insert("LAST_NAME" , "Alpaca"); - UserStructure.Insert("PERSONAL_MOBILE", "88003553535"); - UserStructure.Insert("UF_DEPARTMENT" , 1); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", UserStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateUser", Options); - - // END - - Process(Result, "Bitrix24", "CreateUser", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateUser(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - UserID = FunctionParameters["Bitrix24_HookUserID"]; - Email = String(New UUID) + "@example.org"; - - // The full structure can be obtained with the function GetUserFieldsStructure - - UserStructure = New Structure; - UserStructure.Insert("EMAIL" , Email); - UserStructure.Insert("UF_DEPARTMENT", 1); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("fields", UserStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateUser", Options); - - Process(Result, "Bitrix24", "UpdateUser", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = FunctionParameters["Bitrix24_UserID"]; - Email = String(New UUID) + "@example.org"; - - UserStructure = New Structure; - UserStructure.Insert("EMAIL" , Email); - UserStructure.Insert("NAME" , "Oleg"); - UserStructure.Insert("LAST_NAME" , "Lama"); - UserStructure.Insert("UF_DEPARTMENT", 7); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("fields", UserStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateUser", Options); - - // END - - Process(Result, "Bitrix24", "UpdateUser"); - -EndProcedure - -Procedure Bitrix24_ChangeUserStatus(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - UserID = FunctionParameters["Bitrix24_HookUserID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("fire" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeUserStatus", Options); - - Process(Result, "Bitrix24", "ChangeUserStatus", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = FunctionParameters["Bitrix24_UserID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("fire" , True); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeUserStatus", Options); - - // END - - Process(Result, "Bitrix24", "ChangeUserStatus"); - -EndProcedure - -Procedure Bitrix24_GetUser(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - UserID = FunctionParameters["Bitrix24_HookUserID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUser", Options); - - Process(Result, "Bitrix24", "GetUser", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = FunctionParameters["Bitrix24_UserID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUser", Options); - - // END - - Process(Result, "Bitrix24", "GetUser"); - -EndProcedure - -Procedure Bitrix24_FindUsers(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - FilterStructure = New Structure; - FilterStructure.Insert("NAME" , "Vitaly"); - FilterStructure.Insert("LAST_NAME" , "Alpaca"); - FilterStructure.Insert("WORK_POSITION" , "DevOps engineer"); - FilterStructure.Insert("UF_DEPARTMENT_NAME", "Marketing department"); - FilterStructure.Insert("USER_TYPE" , "employee"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("filter", FilterStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "FindUsers", Options); - - Process(Result, "Bitrix24", "FindUsers", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - FilterStructure = New Structure; - FilterStructure.Insert("UF_DEPARTMENT_NAME", "Bitrix"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("filter", FilterStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "FindUsers", Options); - - // END - - Process(Result, "Bitrix24", "FindUsers"); - -EndProcedure - -Procedure Bitrix24_StartTimekeeping(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTimekeeping", Options); - - Hour = 3600; - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 1; - Time = OPI_Tools.GetCurrentDate() - Hour; - Report = "Late"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("time" , Time); - Options.Insert("report", Report); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTimekeeping", Options); - - // END - -EndProcedure - -Procedure Bitrix24_StopTimekeeping(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopTimekeeping", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 1; - Time = OPI_Tools.GetCurrentDate(); - Report = "Time off"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("time" , Time); - Options.Insert("report", Report); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopTimekeeping", Options); - -EndProcedure - -Procedure Bitrix24_PauseTimekeeping(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTimekeeping", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 1; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTimekeeping", Options); - - // END - -EndProcedure - -Procedure Bitrix24_GetTimekeepingStatus(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingStatus", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 1; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingStatus", Options); - -EndProcedure - -Procedure Bitrix24_GetTimekeepingSettings(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingSettings", Options); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - UserID = 1; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("userid", UserID); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingSettings", Options); - - // END - -EndProcedure - -Procedure Bitrix24_GetLeadFilterStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadFilterStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetLeadFilterStructure"); - -EndProcedure - -Procedure Bitrix24_GetLeadStructure(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadStructure", Options); - - Process(Result, "Bitrix24", "GetLeadStructure", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetLeadStructure"); - -EndProcedure - -Procedure Bitrix24_CreateLead(FunctionParameters) - - EmailsArray = New Array; - EmailsArray.Add(New Structure("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); - EmailsArray.Add(New Structure("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); - - PhonesArray = New Array; - PhonesArray.Add(New Structure("VALUE,VALUE_TYPE", "88005553535", "WORK")); - - FieldsStructure = New Structure; - FieldsStructure.Insert("ADDRESS" , "Pushkin st., b. 10"); - FieldsStructure.Insert("ADDRESS_COUNTRY", "Russia"); - FieldsStructure.Insert("EMAIL" , EmailsArray); - FieldsStructure.Insert("NAME" , "John"); - FieldsStructure.Insert("LAST_NAME" , "Doe"); - FieldsStructure.Insert("PHONE" , PhonesArray); - FieldsStructure.Insert("TITLE" , "MegaClient"); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", FieldsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateLead", Options); - - Process(Result, "Bitrix24", "CreateLead", "Hook", FunctionParameters); // SKIP - - FieldsStructure.Insert("NAME" , "Ivan"); - FieldsStructure.Insert("LAST_NAME", "Ivanov"); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", FieldsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateLead", Options); - - // END - - Process(Result, "Bitrix24", "CreateLead", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateLead(FunctionParameters) - - FieldsStructure = New Structure; - FieldsStructure.Insert("ADDRESS" , "Lermontov st., b. 20"); - FieldsStructure.Insert("ADDRESS_COUNTRY", "Belarus"); - FieldsStructure.Insert("TITLE" , "SuperClient"); - - URL = FunctionParameters["Bitrix24_URL"]; - LeadID = FunctionParameters["Bitrix24_HookLeadID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("lead" , LeadID); - Options.Insert("fields", FieldsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateLead", Options); - - Process(Result, "Bitrix24", "UpdateLead", "Hook"); // SKIP - - FieldsStructure.Insert("NAME" , "Evgeniy"); - FieldsStructure.Insert("LAST_NAME", "Evgeniev"); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - LeadID = FunctionParameters["Bitrix24_LeadID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("lead" , LeadID); - Options.Insert("fields", FieldsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateLead", Options); - - // END - - Process(Result, "Bitrix24", "UpdateLead"); - -EndProcedure - -Procedure Bitrix24_DeleteLead(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - LeadID = FunctionParameters["Bitrix24_HookLeadID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("lead", LeadID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteLead", Options); - - Process(Result, "Bitrix24", "DeleteLead", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - LeadID = FunctionParameters["Bitrix24_LeadID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("lead" , LeadID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteLead", Options); - - // END - - Process(Result, "Bitrix24", "DeleteLead"); - -EndProcedure - -Procedure Bitrix24_GetLead(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - LeadID = FunctionParameters["Bitrix24_HookLeadID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("lead", LeadID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLead", Options); - - Process(Result, "Bitrix24", "GetLead", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - LeadID = FunctionParameters["Bitrix24_LeadID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("lead" , LeadID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLead", Options); - - // END - - Process(Result, "Bitrix24", "GetLead"); - -EndProcedure - -Procedure Bitrix24_GetLeadsList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadsList", Options); - - Process(Result, "Bitrix24", "GetLeadsList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Filter = New Structure; - Filter.Insert("TITLE" , "MegaClient"); - Filter.Insert("HAS_EMAIL", "Y"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("filter", Filter); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadsList", Options); - - // END - - Process(Result, "Bitrix24", "GetLeadsList"); - -EndProcedure - -Procedure Bitrix24_GetDealsFilterStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealsFilterStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetDealsFilterStructure"); - -EndProcedure - -Procedure Bitrix24_GetDealStructure(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealStructure", Options); - - Process(Result, "Bitrix24", "GetDealStructure", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetDealStructure"); - -EndProcedure - -Procedure Bitrix24_CreateDeal(FunctionParameters) - - FieldsStructure = New Structure; - FieldsStructure.Insert("TITLE" , "Planned sale"); - FieldsStructure.Insert("TYPE_ID" , "GOODS"); - FieldsStructure.Insert("STAGE_ID" , "NEW"); - FieldsStructure.Insert("COMPANY_ID" , 1); - FieldsStructure.Insert("CONTACT_ID" , 3); - FieldsStructure.Insert("OPENED" , "Y"); - FieldsStructure.Insert("ASSIGNED_BY_ID", 1); - FieldsStructure.Insert("PROBABILITY" , 30); - FieldsStructure.Insert("CURRENCY_ID" , "USD"); - FieldsStructure.Insert("OPPORTUNITY" , 5000); - FieldsStructure.Insert("CATEGORY_ID" , 5); - FieldsStructure.Insert("BEGINDATE" , "2024-01-01"); - FieldsStructure.Insert("CLOSEDATE" , "2030-01-01"); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", FieldsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDeal", Options); - - Process(Result, "Bitrix24", "CreateDeal", "Hook", FunctionParameters); // SKIP - - FieldsStructure.Insert("TITLE" , "Another deal"); - FieldsStructure.Insert("CLOSEDATE", "2031-01-01"); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", FieldsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDeal", Options); - - // END - - Process(Result, "Bitrix24", "CreateDeal", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateDeal(FunctionParameters) - - FieldsStructure = New Structure; - FieldsStructure.Insert("TITLE" , "Sale in RUB"); - FieldsStructure.Insert("CURRENCY_ID", "RUB"); - FieldsStructure.Insert("OPPORTUNITY", 50000); - - URL = FunctionParameters["Bitrix24_URL"]; - DealID = FunctionParameters["Bitrix24_HookDealID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("deal" , DealID); - Options.Insert("fields", FieldsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDeal", Options); - - Process(Result, "Bitrix24", "UpdateDeal", "Hook"); // SKIP - - FieldsStructure.Insert("TITLE" , "Future deal in RUB"); - FieldsStructure.Insert("BEGINDATE", "2025-01-01"); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - DealID = FunctionParameters["Bitrix24_DealID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("deal" , DealID); - Options.Insert("fields", FieldsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDeal", Options); - - // END - - Process(Result, "Bitrix24", "UpdateDeal"); - -EndProcedure - -Procedure Bitrix24_GetDeal(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - DealID = FunctionParameters["Bitrix24_HookDealID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("deal", DealID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDeal", Options); - - Process(Result, "Bitrix24", "GetDeal", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - DealID = FunctionParameters["Bitrix24_HookDealID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("deal" , DealID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDeal", Options); - - // END - - Process(Result, "Bitrix24", "GetDeal"); - -EndProcedure - -Procedure Bitrix24_DeleteDeal(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - DealID = FunctionParameters["Bitrix24_HookDealID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("deal", DealID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDeal", Options); - - Process(Result, "Bitrix24", "DeleteDeal", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - DealID = FunctionParameters["Bitrix24_DealID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("deal" , DealID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDeal", Options); - - // END - - Process(Result, "Bitrix24", "DeleteDeal"); - -EndProcedure - -Procedure Bitrix24_GetDealsList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealsList", Options); - - Process(Result, "Bitrix24", "GetDealsList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Filter = New Structure; - Filter.Insert("TITLE" , "Sale in RUB"); - Filter.Insert("CURRENCY_ID", "RUB"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("filter", Filter); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealsList", Options); - - // END - - Process(Result, "Bitrix24", "GetDealsList"); - -EndProcedure - -Procedure Bitrix24_GetTasksFilterStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksFilterStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetTasksFilterStructure"); - -EndProcedure - -Procedure Bitrix24_GetCommentStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCommentStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetCommentStructure"); - -EndProcedure - -Procedure Bitrix24_GetChatStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetChatStructure"); - -EndProcedure - -Procedure Bitrix24_GetPictureBlock(FunctionParameters) - - Name = "Image"; - URL = FunctionParameters["Picture"]; - - Options = New Structure; - Options.Insert("title", Name); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetPictureBlock", Options); - - // END - - Process(Result, "Bitrix24", "GetPictureBlock"); - -EndProcedure - -Procedure Bitrix24_GetFileBlock(FunctionParameters) - - Name = "Image"; - URL = FunctionParameters["Document"]; - - Options = New Structure; - Options.Insert("title", Name); - Options.Insert("url" , URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileBlock", Options); - - // END - - Process(Result, "Bitrix24", "GetFileBlock"); - -EndProcedure - -Procedure Bitrix24_GetUserFilterStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserFilterStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetUserFilterStructure"); - -EndProcedure - -Procedure Bitrix24_CreateCalendar(FunctionParameters) - - UserID = 1; - - CalendarsStructure = New Structure; - CalendarsStructure.Insert("type" , "user"); - CalendarsStructure.Insert("ownerId" , UserID); - CalendarsStructure.Insert("name" , "new calendar"); - CalendarsStructure.Insert("description", "My new calendar"); - CalendarsStructure.Insert("color" , "#FFFFFF"); - CalendarsStructure.Insert("text_color" , "#000000"); - - ExportStructure = New Structure; - ExportStructure.Insert("ALLOW", "True"); - ExportStructure.Insert("SET" , "all"); - - CalendarsStructure.Insert("export", ExportStructure); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", CalendarsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendar", Options); - - Process(Result, "Bitrix24", "CreateCalendar", "Hook", FunctionParameters); // SKIP - - CalendarsStructure.Insert("name" , "Another calendar"); - CalendarsStructure.Insert("description", "My other new calendar"); - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", CalendarsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendar", Options); - - // END - - Process(Result, "Bitrix24", "CreateCalendar", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateCalendar(FunctionParameters) - - UserID = 1; - - CalendarsStructure = New Structure; - CalendarsStructure.Insert("type" , "user"); - CalendarsStructure.Insert("ownerId" , UserID); - CalendarsStructure.Insert("name" , "New calendar name"); - CalendarsStructure.Insert("description", "This calendar has been changed"); - - URL = FunctionParameters["Bitrix24_URL"]; - CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("calendar", CalendarID); - Options.Insert("fields" , CalendarsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendar", Options); - - Process(Result, "Bitrix24", "UpdateCalendar", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CalendarID = FunctionParameters["Bitrix24_CalendarID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("calendar", CalendarID); - Options.Insert("fields" , CalendarsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendar", Options); - - // END - - Process(Result, "Bitrix24", "UpdateCalendar"); - -EndProcedure - -Procedure Bitrix24_DeleteCalendar(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; - OwnerID = 1; - Type = "user"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("calendar", CalendarID); - Options.Insert("owner" , OwnerID); - Options.Insert("type" , Type); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendar", Options); - - Process(Result, "Bitrix24", "DeleteCalendar", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CalendarID = FunctionParameters["Bitrix24_CalendarID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("calendar", CalendarID); - Options.Insert("owner" , OwnerID); - Options.Insert("type" , Type); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendar", Options); - - // END - - Process(Result, "Bitrix24", "DeleteCalendar"); - -EndProcedure - -Procedure Bitrix24_GetCalendarStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarStructure", Options); - - Process(Result, "Bitrix24", "GetCalendarStructure", "Clear"); - -EndProcedure - -Procedure Bitrix24_GetCalendarList(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - OwnerID = 1; - Type = "user"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("owner", OwnerID); - Options.Insert("type" , Type); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarList", Options); - - Process(Result, "Bitrix24", "GetCalendarList", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("owner", OwnerID); - Options.Insert("type" , Type); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarList", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarList"); - -EndProcedure - -Procedure Bitrix24_GetCalendarSettingsStructure(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarSettingsStructure", Options); - - Process(Result, "Bitrix24", "GetCalendarSettingsStructure", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarSettingsStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarSettingsStructure"); - -EndProcedure - -Procedure Bitrix24_GetCalednarCustomSettingsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalednarCustomSettingsStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetCalednarCustomSettingsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalednarCustomSettingsStructure", Options); - - Process(Result, "Bitrix24", "GetCalednarCustomSettingsStructure", "Clear"); - -EndProcedure - -Procedure Bitrix24_GetCustomCalendarSettings(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomCalendarSettings", Options); - - Process(Result, "Bitrix24", "GetCustomCalendarSettings", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomCalendarSettings", Options); - - // END - - Process(Result, "Bitrix24", "GetCustomCalendarSettings"); - -EndProcedure - -Procedure Bitrix24_SetCustomCalendarSettings(FunctionParameters) - - CalendarsStructure = New Structure; - CalendarsStructure.Insert("view" , "month"); - CalendarsStructure.Insert("showDeclined" , "Y"); - CalendarsStructure.Insert("collapseOffHours" , "N"); - CalendarsStructure.Insert("showCompletedTasks", "N"); - - URL = FunctionParameters["Bitrix24_URL"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("settings", CalendarsStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetCustomCalendarSettings", Options); - - Process(Result, "Bitrix24", "SetCustomCalendarSettings", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("settings", CalendarsStructure); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetCustomCalendarSettings", Options); - - // END - - Process(Result, "Bitrix24", "SetCustomCalendarSettings"); - -EndProcedure - -Procedure Bitrix24_GetUserBusy(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; - - User = 1; - - Week = 604800; - CurrentDate = OPI_Tools.GetCurrentDate(); - - StartDate = CurrentDate; - EndDate = CurrentDate + Week; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("users", User); - Options.Insert("from" , StartDate); - Options.Insert("to" , EndDate); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserBusy", Options); - - Process(Result, "Bitrix24", "GetUserBusy", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CalendarID = FunctionParameters["Bitrix24_CalendarID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("users", User); - Options.Insert("from" , StartDate); - Options.Insert("to" , EndDate); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserBusy", Options); - - // END - - Process(Result, "Bitrix24", "GetUserBusy"); - -EndProcedure - -Procedure Bitrix24_CreateCalendarEvent(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; - - Tomorrow = OPI_Tools.GetCurrentDate() + 86400; - Hour = 3600; - - EventStucture = New Structure; - - EventStucture.Insert("type" , "user"); - EventStucture.Insert("ownerId" , 1); - EventStucture.Insert("from" , XMLString(Tomorrow)); - EventStucture.Insert("to" , XMLString(Tomorrow + Hour)); - EventStucture.Insert("section" , CalendarID); - EventStucture.Insert("name" , "New event"); - EventStucture.Insert("skip_time" , "N"); - EventStucture.Insert("timezone_from", "Europe/Minsk"); - EventStucture.Insert("timezone_to" , "Europe/Minsk"); - EventStucture.Insert("description" , "Event description"); - EventStucture.Insert("color" , "%23000000>"); - EventStucture.Insert("text_color" , "%23FFFFFF"); - EventStucture.Insert("accessibility", "quest"); - EventStucture.Insert("importance" , "normal"); - EventStucture.Insert("private_event", "Y"); - - RepeatabilityStructure = New Structure; - RepeatabilityStructure.Insert("FREQ" , "DAILY"); - RepeatabilityStructure.Insert("COUNT" , 3); - RepeatabilityStructure.Insert("INTERVAL", 10); - - DaysArray = New Array; - DaysArray.Add("SA"); - DaysArray.Add("MO"); - - RepeatabilityStructure.Insert("BYDAY", DaysArray); - RepeatabilityStructure.Insert("UNTIL", XMLString(Tomorrow + Hour * 24 * 10)); - - EventStucture.Insert("rrule" , RepeatabilityStructure); - EventStucture.Insert("is_meeting", "Y"); - EventStucture.Insert("location" , "Office"); - - RemindersArray = New Array; - - ReminderStructure = New Structure; - ReminderStructure.Insert("type" , "day"); - ReminderStructure.Insert("count", 1); - - RemindersArray.Add(ReminderStructure); - - EventStucture.Insert("remind" , RemindersArray); - EventStucture.Insert("attendees", StrSplit("1,10", ",")); - EventStucture.Insert("host" , 1); - - MeetingStructure = New Structure; - MeetingStructure.Insert("notify" , "Y"); - MeetingStructure.Insert("reinvite" , "Y"); - MeetingStructure.Insert("allow_invite", "N"); - MeetingStructure.Insert("hide_guests" , "N"); - - EventStucture.Insert("meeting", MeetingStructure); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", EventStucture); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendarEvent", Options); - - Process(Result, "Bitrix24", "CreateCalendarEvent", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - CalendarID = FunctionParameters["Bitrix24_CalendarID"]; - - EventStucture.Insert("section", CalendarID); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("fields", EventStucture); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendarEvent", Options); - - // END - - Process(Result, "Bitrix24", "CreateCalendarEvent", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_UpdateCalendarEvent(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - EventID = FunctionParameters["Bitrix24_HookCEventID"]; - - EventStucture = New Structure; - - EventStucture.Insert("ownerId" , 1); - EventStucture.Insert("type" , "user"); - EventStucture.Insert("name" , "Modified event"); - EventStucture.Insert("description" , "New event description"); - EventStucture.Insert("importance" , "low"); - EventStucture.Insert("private_event", "Y"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event" , EventID); - Options.Insert("fields", EventStucture); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendarEvent", Options); - - Process(Result, "Bitrix24", "UpdateCalendarEvent", "Hook", FunctionParameters); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - EventID = FunctionParameters["Bitrix24_CEventID"]; - CalendarID = FunctionParameters["Bitrix24_CalendarID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event" , EventID); - Options.Insert("fields", EventStucture); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendarEvent", Options); - - // END - - Process(Result, "Bitrix24", "UpdateCalendarEvent", , FunctionParameters); - -EndProcedure - -Procedure Bitrix24_DeleteCalendarEvent(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - EventID = FunctionParameters["Bitrix24_HookCEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event", EventID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendarEvent", Options); - - Process(Result, "Bitrix24", "DeleteCalendarEvent", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - EventID = FunctionParameters["Bitrix24_CEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event", EventID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendarEvent", Options); - - // END - - Process(Result, "Bitrix24", "DeleteCalendarEvent"); - -EndProcedure - -Procedure Bitrix24_GetCalendarEvent(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - EventID = FunctionParameters["Bitrix24_HookCEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event", EventID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvent", Options); - - Process(Result, "Bitrix24", "GetCalendarEvent", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - EventID = FunctionParameters["Bitrix24_CEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event", EventID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvent", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarEvent"); - -EndProcedure - -Procedure Bitrix24_GetCalendarEvents(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - OwnerID = 1; - Type = "user"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("owner", OwnerID); - Options.Insert("type" , Type); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvents", Options); - - Process(Result, "Bitrix24", "GetCalendarEvents", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - EventID = FunctionParameters["Bitrix24_CEventID"]; - CalendarID1 = FunctionParameters["Bitrix24_HookCalendarID"]; - CalendarID2 = FunctionParameters["Bitrix24_CalendarID"]; - - Tomorrow = OPI_Tools.GetCurrentDate() + 86400; - NextDay = Tomorrow + 86400; - - ArrayOfCalendars = New Array; - ArrayOfCalendars.Add(CalendarID1); - ArrayOfCalendars.Add(CalendarID2); - - Filter = New Structure; - Filter.Insert("from" , Tomorrow); - Filter.Insert("to" , NextDay); - Filter.Insert("section", ArrayOfCalendars); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("owner" , OwnerID); - Options.Insert("type" , Type); - Options.Insert("filter", Filter); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvents", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarEvents"); - -EndProcedure - -Procedure Bitrix24_SetUserParticipationStatus(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - EventID = FunctionParameters["Bitrix24_HookCEventID"]; - Status = "Y"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event" , EventID); - Options.Insert("status", Status); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserParticipationStatus", Options); - - Process(Result, "Bitrix24", "SetUserParticipationStatus", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - EventID = FunctionParameters["Bitrix24_CEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event" , EventID); - Options.Insert("status", Status); - Options.Insert("token" , Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserParticipationStatus", Options); - - // END - - Process(Result, "Bitrix24", "SetUserParticipationStatus"); - -EndProcedure - -Procedure Bitrix24_GetUserParticipationStatus(FunctionParameters) - - URL = FunctionParameters["Bitrix24_URL"]; - EventID = FunctionParameters["Bitrix24_HookCEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event", EventID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserParticipationStatus", Options); - - Process(Result, "Bitrix24", "GetUserParticipationStatus", "Hook"); // SKIP - - URL = FunctionParameters["Bitrix24_Domain"]; - Token = FunctionParameters["Bitrix24_Token"]; - EventID = FunctionParameters["Bitrix24_CEventID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("event", EventID); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserParticipationStatus", Options); - - // END - - Process(Result, "Bitrix24", "GetUserParticipationStatus"); - -EndProcedure - -Procedure Bitrix24_GetCalendarEventsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarEventsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsStructure", Options); - - Process(Result, "Bitrix24", "GetCalendarEventsStructure", "Clear"); - -EndProcedure - -Procedure Bitrix24_GetCalendarEventsFilterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsFilterStructure", Options); - - // END - - Process(Result, "Bitrix24", "GetCalendarEventsFilterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsFilterStructure", Options); - - Process(Result, "Bitrix24", "GetCalendarEventsFilterStructure", "Clear"); - -EndProcedure - -#EndRegion - -#Region VKTeams - -Procedure VKTeams_CheckToken(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "CheckToken", Options); - - // END - - Process(Result, "VKTeams", "CheckToken"); - -EndProcedure - -Procedure VKTeams_GetEvents(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - LastID = 0; - - For N = 1 To 5 Do // In real work - endless loop - - Result = OPI_VKTeams.GetEvents(Token, LastID, 3); - - Process(Result, "VKTeams", "GetEvents"); // SKIP - - Events = Result["events"]; - - // Event handling... - - If Not Events.Count() = 0 Then - - LastID = Events[Events.UBound()]["eventId"]; - - EndIf; - - EndDo; - - // END - - OPI_Tools.Pause(3); - -EndProcedure - -Procedure VKTeams_SendTextMessage(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - Text = "Message text"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendTextMessage", Options); - - Process(Result, "VKTeams", "SendTextMessage", "Simple", FunctionParameters); // SKIP - - ChatID = FunctionParameters["VkTeams_ChatID2"]; - ReplyID = FunctionParameters["VkTeams_MessageID"]; - Text = "Bold text"; - Markup = "HTML"; - - Keyboard = New Array; - ButtonsLineArray = New Array; - - ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button1", "ButtonEvent1", , "attention")); - - ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button2", , "https://openintegrations.dev")); - - // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP - Keyboard.Add(ButtonsLineArray); - Keyboard.Add(ButtonsLineArray); - // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("text" , Text); - Options.Insert("reply" , ReplyID); - Options.Insert("keyboard", Keyboard); - Options.Insert("parsemod", Markup); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendTextMessage", Options); - - // END - - Process(Result, "VKTeams", "SendTextMessage", , FunctionParameters); - -EndProcedure - -Procedure VKTeams_ForwardMessage(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - FromChatID = FunctionParameters["VkTeams_ChatID2"]; - MessageID = FunctionParameters["VkTeams_MessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("messageid", MessageID); - Options.Insert("fromid" , FromChatID); - Options.Insert("chatid" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ForwardMessage", Options); - - Process(Result, "VKTeams", "ForwardMessage", "Simple"); // SKIP - - Text = "Additional text"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("messageid", MessageID); - Options.Insert("fromid" , FromChatID); - Options.Insert("chatid" , ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ForwardMessage", Options); - - // END - - Process(Result, "VKTeams", "ForwardMessage"); - -EndProcedure - -Procedure VKTeams_SendFile(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - Text = "File caption"; - - File = FunctionParameters["Document"]; // URL - FilePath = GetTempFileName("docx"); // Path - - CopyFile(File, FilePath); - - FileBD = New BinaryData(FilePath); // Binary - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , File); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); - - Process(Result, "VKTeams", "SendFile", "URL", FunctionParameters); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , FilePath); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); - - Process(Result, "VKTeams", "SendFile", "Path", FunctionParameters); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("file" , FileBD); - Options.Insert("text" , Text); - Options.Insert("filename", "ImportantDocument.docx"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); - - // END - - Process(Result, "VKTeams", "SendFile", , FunctionParameters); - - OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure VKTeams_ResendFile(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - FileID = FunctionParameters["VkTeams_FileID"]; - Text = "File caption"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("fileid", FileID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ResendFile", Options); - - // END - - Process(Result, "VKTeams", "ResendFile"); - -EndProcedure - -Procedure VKTeams_GetFileInformation(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - FileID = FunctionParameters["VkTeams_FileID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetFileInformation", Options); - - // END - - Process(Result, "VKTeams", "GetFileInformation"); - -EndProcedure - -Procedure VKTeams_EditMessageText(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - MessageID = FunctionParameters["VkTeams_MessageID"]; - Text = "New message text"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("messageid", MessageID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "EditMessageText", Options); - - Process(Result, "VKTeams", "EditMessageText", "Path"); // SKIP - - Text = "New bold message text"; - Markup = "HTML"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("messageid", MessageID); - Options.Insert("text" , Text); - Options.Insert("parsemod" , Markup); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "EditMessageText", Options); - - // END - - Process(Result, "VKTeams", "EditMessageText"); - -EndProcedure - -Procedure VKTeams_DeleteMessage(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - MessageID = FunctionParameters["VkTeams_MessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("messageid", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DeleteMessage", Options); - - // END - - Process(Result, "VKTeams", "DeleteMessage"); - -EndProcedure - -Procedure VKTeams_SendVoice(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - ReplyID = FunctionParameters["VkTeams_MessageID"]; - - File = FunctionParameters["Audio2"]; // URL - FilePath = GetTempFileName("m4a"); // Path - - CopyFile(File, FilePath); - - FileBD = New BinaryData(FilePath); // Binary - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , File); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); - - Process(Result, "VKTeams", "SendVoice", "URL", FunctionParameters); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , FilePath); - Options.Insert("reply" , ReplyID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); - - Process(Result, "VKTeams", "SendVoice", "Path", FunctionParameters); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , FileBD); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); - - // END - - Process(Result, "VKTeams", "SendVoice", , FunctionParameters); - - OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure VKTeams_ResendVoice(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - FileID = FunctionParameters["VkTeams_VoiceID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("fileid", FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ResendVoice", Options); - - // END - - Process(Result, "VKTeams", "ResendVoice"); - -EndProcedure - -Procedure VKTeams_RemoveChatMembers(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - User = 1011987091; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("members", User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "RemoveChatMembers", Options); - - // END - - Process(Result, "VKTeams", "RemoveChatMembers"); - -EndProcedure - -Procedure VKTeams_ChangeChatPicture(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - - File = FunctionParameters["Picture3"]; // URL - FilePath = GetTempFileName("png"); // Path - - CopyFile(File, FilePath); - - FileBD = New BinaryData(FilePath); // Binary - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , File); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); - - Process(Result, "VKTeams", "ChangeChatPicture", "URL"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , FilePath); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); - - Process(Result, "VKTeams", "ChangeChatPicture", "Path"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("file" , FileBD); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); - - // END - - Process(Result, "VKTeams", "ChangeChatPicture"); - - OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure VKTeams_GetChatInfo(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatInfo", Options); - - // END - - Process(Result, "VKTeams", "GetChatInfo"); - -EndProcedure - -Procedure VKTeams_GetChatAdmins(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatAdmins", Options); - - // END - - Process(Result, "VKTeams", "GetChatAdmins"); - -EndProcedure - -Procedure VKTeams_GetChatMembers(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatMembers", Options); - - // END - - Process(Result, "VKTeams", "GetChatMembers"); - -EndProcedure - -Procedure VKTeams_GetChatBlockedUsers(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatBlockedUsers", Options); - - // END - - Process(Result, "VKTeams", "GetChatBlockedUsers"); - -EndProcedure - -Procedure VKTeams_GetChatJoinRequests(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatJoinRequests", Options); - - // END - - Process(Result, "VKTeams", "GetChatJoinRequests"); - -EndProcedure - -Procedure VKTeams_BlockChatUser(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - User = 1011987091; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("userid" , User); - Options.Insert("dellast", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "BlockChatUser", Options); - - // END - - Process(Result, "VKTeams", "BlockChatUser"); - -EndProcedure - -Procedure VKTeams_UnblockChatUser(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - User = 1011987091; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("userid", User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "UnblockChatUser", Options); - - // END - - Process(Result, "VKTeams", "UnblockChatUser"); - -EndProcedure - -Procedure VKTeams_PinMessage(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - MessageID = FunctionParameters["VkTeams_MessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("messageid", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "PinMessage", Options); - - // END - - Process(Result, "VKTeams", "PinMessage"); - -EndProcedure - -Procedure VKTeams_UnpinMessage(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - MessageID = FunctionParameters["VkTeams_MessageID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid" , ChatID); - Options.Insert("messageid", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "UnpinMessage", Options); - - // END - - Process(Result, "VKTeams", "UnpinMessage"); - -EndProcedure - -Procedure VKTeams_ApprovePending(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - User = 1011987091; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("userid", User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ApprovePending", Options); - - Process(Result, "VKTeams", "ApprovePending", "One"); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ApprovePending", Options); - - // END - - Process(Result, "VKTeams", "ApprovePending"); - -EndProcedure - -Procedure VKTeams_DisapprovePending(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - User = 1011987091; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("userid", User); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DisapprovePending", Options); - - Process(Result, "VKTeams", "DisapprovePending", "One"); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DisapprovePending", Options); - - // END - - Process(Result, "VKTeams", "DisapprovePending"); - -EndProcedure - -Procedure VKTeams_SetChatTitle(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - Text = "New title"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatTitle", Options); - - // END - - Process(Result, "VKTeams", "SetChatTitle"); - -EndProcedure - -Procedure VKTeams_SetChatDescription(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - Text = "New description"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatDescription", Options); - - // END - - Process(Result, "VKTeams", "SetChatDescription"); - -EndProcedure - -Procedure VKTeams_SetChatRules(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - ChatID = FunctionParameters["VkTeams_ChatID2"]; - Text = "Text of the new rules"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("chatid", ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatRules", Options); - - // END - - Process(Result, "VKTeams", "SetChatRules"); - -EndProcedure - -Procedure VKTeams_AnswerButtonEvent(FunctionParameters) - - Token = FunctionParameters["VkTeams_Token"]; - LastID = 0; - - For N = 1 To 5 Do - - Result = OPI_VKTeams.GetEvents(Token, LastID, 3); - Events = Result["events"]; - - If Not Events.Count() = 0 Then - - For Each Event In Events Do - - callbackData = Event["payload"]; - - If callbackData["callbackData"] = "ButtonEvent1" Then - - EventID = callbackData["queryId"]; - Result = OPI_VKTeams.AnswerButtonEvent(Token, EventID, "Get it!!"); - - Process(Result, "VKTeams", "AnswerButtonEvent"); // SKIP - - EndIf; - - EndDo; - - LastID = Events[Events.UBound()]["eventId"]; - - EndIf; - - EndDo; - - // END - - OPI_Tools.Pause(3); - -EndProcedure - -Procedure VKTeams_MakeActionButton(FunctionParameters) - - Keyboard = New Array; - ButtonsLineArray = New Array; - - ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button1", "ButtonEvent1", , "attention")); - - ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button2", , "https://openintegrations.dev")); - - // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP - Keyboard.Add(ButtonsLineArray); - Keyboard.Add(ButtonsLineArray); - // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP - - // END - -EndProcedure - -#EndRegion - -#Region Neocities - -Procedure Neocities_UploadFile(FunctionParameters) - - Token = FunctionParameters["NC_Token"]; - Data = FunctionParameters["Picture"]; // URL, Path or Binary Data - Path = "testfolder/test_pic.png"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - Options.Insert("file" , Data); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "UploadFile", Options); - - // END - - Process(Result, "Neocities", "UploadFile"); - -EndProcedure - -Procedure Neocities_UploadFiles(FunctionParameters) - - Token = FunctionParameters["NC_Token"]; - - Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data - Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data - GIF = FunctionParameters["Gif"]; // URL, Path or Binary Data - - FileMapping = New Map; - FileMapping.Insert("test/pic1.png", Image1); - FileMapping.Insert("test/gif.gif" , Image2); - FileMapping.Insert("pic2.png" , GIF); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("files", FileMapping); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "UploadFiles", Options); - - // END - - Process(Result, "Neocities", "UploadFiles"); - -EndProcedure - -Procedure Neocities_DeleteSelectedFiles(FunctionParameters) - - Token = FunctionParameters["NC_Token"]; - - Paths = New Array; - Paths.Add("/test/pic1.png"); - Paths.Add("/test/gif.gif"); - Paths.Add("/pic2.png"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("paths", Paths); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); - - // END - - Process(Result, "Neocities", "DeleteSelectedFiles"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("paths", "/testfolder"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); - - Process(Result, "Neocities", "DeleteSelectedFiles", "Directory 1"); - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("paths", "/test"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); - - Process(Result, "Neocities", "DeleteSelectedFiles", "Directory 2"); - -EndProcedure - -Procedure Neocities_GetFilesList(FunctionParameters) - - Token = FunctionParameters["NC_Token"]; - Path = "test"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("path" , Path); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetFilesList", Options); - - // END - - Process(Result, "Neocities", "GetFilesList"); - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetFilesList", Options); - - Process(Result, "Neocities", "GetFilesList", "All"); - -EndProcedure - -Procedure Neocities_GetSiteData(FunctionParameters) - - Token = FunctionParameters["NC_Token"]; - Website = "2athenaeum"; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetSiteData", Options); - - Process(Result, "Neocities", "GetSiteData"); // SKIP - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("sitename", Website); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetSiteData", Options); - - // END - - Process(Result, "Neocities", "GetSiteData", "Website"); - -EndProcedure - -Procedure Neocities_GetToken(FunctionParameters) - - Login = FunctionParameters["NC_Login"]; - Password = FunctionParameters["NC_Password"]; - - Options = New Structure; - Options.Insert("login" , Login); - Options.Insert("password", Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetToken", Options); - - // END - - Result["api_key"] = "***"; - - Process(Result, "Neocities", "GetToken"); - -EndProcedure - -Procedure Neocities_SynchronizeFolders(FunctionParameters) - - Token = FunctionParameters["NC_Token"]; - - LocalFolder = "C:\test_site"; - RemoteFolder = "test_sync"; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("local" , LocalFolder); - Options.Insert("remote", RemoteFolder); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "SynchronizeFolders", Options); - - // END - - Process(Result, "Neocities", "SynchronizeFolders"); - -EndProcedure - -#EndRegion - -#Region CDEK - -Procedure CDEK_GetToken(FunctionParameters) - - Account = FunctionParameters["CDEK_Account"]; - Password = FunctionParameters["CDEK_Password"]; - - Options = New Structure; - Options.Insert("account", Account); - Options.Insert("pass" , Password); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetToken", Options); - - // END - - Process(Result, "CDEK", "GetToken", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetOrderDescription(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrderDescription", Options); - - // END - - Process(Result, "CDEK", "GetOrderDescription"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrderDescription", Options); - - Process(Result, "CDEK", "GetOrderDescription", "Clear"); - -EndProcedure - -Procedure CDEK_CreateOrder(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - - OrderDescription = New Structure; - - SendLocation = New Structure; - SendLocation.Insert("code" , "44"); - SendLocation.Insert("city" , "Moscow"); - SendLocation.Insert("address", "Ave. Leningradsky, 4"); - - DestLocation = New Structure; - DestLocation.Insert("code" , "270"); - DestLocation.Insert("city" , "Novosibirsk"); - DestLocation.Insert("address", "st. Bluchera, 32"); - - Recipient = New Structure; - - Phones = New Array; - Phones.Add(New Structure("number", "+79134637228")); - - Recipient.Insert("phones", Phones); - Recipient.Insert("name" , "Ivaniv Ivan"); - - Sender = New Structure("name", "Petrov Petr"); - - Services = New Array; - - Service = New Structure; - Service.Insert("code" , "SECURE_PACKAGE_A2"); - Service.Insert("parameter", 10); - - Services.Add(Service); - - Packages = New Array; - - Package = New Structure; - - Items = New Array; - - Item = New Structure; - - Payment = New Structure; - Payment.Insert("value", 3000); - - Item.Insert("payment" , Payment); - Item.Insert("ware_key", "00055"); - Item.Insert("name" , "Product"); - Item.Insert("cost" , 300); - Item.Insert("amount" , 2); - Item.Insert("weight" , 700); - Item.Insert("url" , "www.item.ru"); - - Items.Add(Item); - - Package.Insert("items" , Items); - Package.Insert("number" , "bar-001"); - Package.Insert("comment", "Packaging"); - Package.Insert("height" , 10); - Package.Insert("length" , 10); - Package.Insert("weight" , "4000"); - Package.Insert("width" , 10); - - Packages.Add(Package); - - OrderDescription.Insert("from_location", SendLocation); - OrderDescription.Insert("to_location" , DestLocation); - OrderDescription.Insert("packages" , Packages); - OrderDescription.Insert("recipient" , Recipient); - OrderDescription.Insert("sender" , Sender); - OrderDescription.Insert("services" , Services); - - OrderDescription.Insert("number" , String(New UUID)); - OrderDescription.Insert("comment" , "New order"); - OrderDescription.Insert("tariff_code", 139); - - OrderDescription.Insert("delivery_recipient_cost" , New Structure("value" , 50)); - OrderDescription.Insert("delivery_recipient_cost_adv", New Structure("sum,threshold", 3000, 200)); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("order" , OrderDescription); - Options.Insert("ostore" , True); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateOrder", Options); - - // END - - Process(Result, "CDEK", "CreateOrder", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetOrder(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrder", Options); - - // END - - Process(Result, "CDEK", "GetOrder", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetOrderByNumber(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - - OrderNumber = FunctionParameters["CDEK_OrderIMN"]; - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("number" , OrderNumber); - Options.Insert("internal", True); - Options.Insert("testapi" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrderByNumber", Options); - - // END - - Process(Result, "CDEK", "GetOrderByNumber"); - -EndProcedure - -Procedure CDEK_UpdateOrder(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - OrderDescription = New Structure("comment", "NewComment"); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("order" , OrderDescription); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "UpdateOrder", Options); - - // END - - Process(Result, "CDEK", "UpdateOrder"); - -EndProcedure - -Procedure CDEK_DeleteOrder(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "DeleteOrder", Options); - - // END - - Process(Result, "CDEK", "DeleteOrder"); - -EndProcedure - -Procedure CDEK_CreateCustomerRefund(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - Tariff = 139; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("tariff" , Tariff); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateCustomerRefund", Options); - - // END - - Process(Result, "CDEK", "CreateCustomerRefund"); - -EndProcedure - -Procedure CDEK_CreateRefusal(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateRefusal", Options); - - // END - - Process(Result, "CDEK", "CreateRefusal"); - -EndProcedure - -Procedure CDEK_GetCourierInvitationsDescription(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCourierInvitationsDescription", Options); - - // END - - Process(Result, "CDEK", "GetCourierInvitationsDescription"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCourierInvitationsDescription", Options); - - Process(Result, "CDEK", "GetCourierInvitationsDescription", "Clear"); - -EndProcedure - -Procedure CDEK_CreateCourierInvitation(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - CurrentDate = OPI_Tools.GetCurrentDate(); - - InvitationDescription = New Structure; - InvitationDescription.Insert("intake_date" , Format(CurrentDate + 60 * 60 * 24, "DF=yyyy-MM-dd")); - InvitationDescription.Insert("intake_time_from", "10:00"); - InvitationDescription.Insert("intake_time_to" , "17:00"); - InvitationDescription.Insert("name" , "Consolidated cargo"); - InvitationDescription.Insert("weight" , 1000); - InvitationDescription.Insert("length" , 10); - InvitationDescription.Insert("width" , 10); - InvitationDescription.Insert("height" , 10); - InvitationDescription.Insert("comment" , "Comment to courier"); - InvitationDescription.Insert("need_call" , False); - - Sender = New Structure; - Sender.Insert("company", "Company"); - Sender.Insert("name" , "Ivaniv Ivan"); - - Phones = New Array; - Phone = New Structure("number", "+79589441654"); - Phones.Add(Phone); - - Sender.Insert("phones", Phones); - - InvitationDescription.Insert("sender", Sender); - - ShippingPoint = New Structure; - ShippingPoint.Insert("code" , "44"); - ShippingPoint.Insert("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); - ShippingPoint.Insert("postal_code" , "109004"); - ShippingPoint.Insert("longitude" , 37.6204); - ShippingPoint.Insert("latitude" , 55.754); - ShippingPoint.Insert("country_code", "RU"); - ShippingPoint.Insert("region" , "Moscow"); - ShippingPoint.Insert("sub_region" , "Moscow"); - ShippingPoint.Insert("city" , "Moscow"); - ShippingPoint.Insert("kladr_code" , "7700000000000"); - ShippingPoint.Insert("address" , "st. Bluchera, 32"); - - InvitationDescription.Insert("from_location", ShippingPoint); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("intake" , InvitationDescription); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateCourierInvitation", Options); - - // END - - Process(Result, "CDEK", "CreateCourierInvitation", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetCourierInvitation(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_IntakeUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCourierInvitation", Options); - - // END - - Process(Result, "CDEK", "GetCourierInvitation"); - -EndProcedure - -Procedure CDEK_DeleteCourierInvitation(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_IntakeUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "DeleteCourierInvitation", Options); - - // END - - Process(Result, "CDEK", "DeleteCourierInvitation"); - -EndProcedure - -Procedure CDEK_CreateReceipt(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - Type = "tpl_russia"; - Copies = 1; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuids" , UUID); - Options.Insert("type" , Type); - Options.Insert("count" , Copies); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateReceipt", Options); - - // END - - Process(Result, "CDEK", "CreateReceipt", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetReceipt(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_PrintUUID"]; - - Result = OPI_CDEK.GetReceipt(Token, UUID, , True); // Server response with a URL - - // END - - Process(Result, "CDEK", "GetReceipt"); - -EndProcedure - -Procedure CDEK_CreateBarcode(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - Format = "A5"; - Copies = 1; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuids" , UUID); - Options.Insert("count" , Copies); - Options.Insert("format" , Format); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateBarcode", Options); - - // END - - Process(Result, "CDEK", "CreateBarcode", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetBarcode(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_BarcodeUUID"]; - - Result = OPI_CDEK.GetBarcode(Token, UUID, , True); // Server response with a URL - - // END - - Process(Result, "CDEK", "GetBarcode"); - -EndProcedure - -Procedure CDEK_GetAvailableDeliveryIntervals(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetAvailableDeliveryIntervals", Options); - - // END - - Process(Result, "CDEK", "GetAvailableDeliveryIntervals"); - -EndProcedure - -Procedure CDEK_GetAppointmentDescription(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetAppointmentDescription", Options); - - // END - - Process(Result, "CDEK", "GetAppointmentDescription"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetAppointmentDescription", Options); - - Process(Result, "CDEK", "GetAppointmentDescription", "Clear"); - -EndProcedure - -Procedure CDEK_RegisterDeliveryAppointment(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - OrderUUID = FunctionParameters["CDEK_OrderUUID"]; - - Day = 60 * 60 * 24; - CurrentDate = BegOfDay(OPI_Tools.GetCurrentDate()); - DeliveryDate = CurrentDate + Day * 14; - - While DayOfWeek(DeliveryDate) > 5 Do - DeliveryDate = DeliveryDate + Day; - EndDo; - - Appointment = New Structure; - - Appointment.Insert("cdek_number", "1106207236"); - Appointment.Insert("order_uuid" , OrderUUID); - Appointment.Insert("date" , Format(DeliveryDate, "DF=yyyy-MM-dd")); - Appointment.Insert("time_from" , "10:00"); - Appointment.Insert("time_to" , "17:00"); - Appointment.Insert("comment" , "Group office"); - - DeliveryLocation = New Structure; - DeliveryLocation.Insert("code" , "270"); - DeliveryLocation.Insert("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); - DeliveryLocation.Insert("postal_code" , "109004"); - DeliveryLocation.Insert("longitude" , 37.6204); - DeliveryLocation.Insert("latitude" , 55.754); - DeliveryLocation.Insert("country_code", "RU"); - DeliveryLocation.Insert("region" , "Novosibirsk"); - DeliveryLocation.Insert("sub_region" , "Novosibirsk"); - DeliveryLocation.Insert("city" , "Novosibirsk"); - DeliveryLocation.Insert("kladr_code" , "7700000000000"); - DeliveryLocation.Insert("address" , "st. Bluchera, 33"); - - Appointment.Insert("to_location", DeliveryLocation); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("appt" , Appointment); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "RegisterDeliveryAppointment", Options); - - // END - - Process(Result, "CDEK", "RegisterDeliveryAppointment", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetDeliveryAppointment(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_ApptUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetDeliveryAppointment", Options); - - // END - - Process(Result, "CDEK", "GetDeliveryAppointment"); - -EndProcedure - -Procedure CDEK_CreatePrealert(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - Point = "NSK27"; - TransferDate = OPI_Tools.GetCurrentDate() + 60 * 60 * 24; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuids" , UUID); - Options.Insert("date" , TransferDate); - Options.Insert("point" , Point); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreatePrealert", Options); - - // END - - Process(Result, "CDEK", "CreatePrealert", , FunctionParameters); - -EndProcedure - -Procedure CDEK_GetPrealert(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_PrealertUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetPrealert", Options); - - // END - - Process(Result, "CDEK", "GetPrealert"); - -EndProcedure - -Procedure CDEK_GetPassportDataStatus(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetPassportDataStatus", Options); - - // END - - Process(Result, "CDEK", "GetPassportDataStatus"); - -EndProcedure - -Procedure CDEK_GetCashboxCheck(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - UUID = FunctionParameters["CDEK_OrderUUID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("uuid" , UUID); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCashboxCheck", Options); - - // END - - Process(Result, "CDEK", "GetCashboxCheck"); - -EndProcedure - -Procedure CDEK_GetCashboxChecksByDate(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - ReceivingDate = OPI_Tools.GetCurrentDate(); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("date" , ReceivingDate); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCashboxChecksByDate", Options); - - // END - - Process(Result, "CDEK", "GetCashboxChecksByDate"); - -EndProcedure - -Procedure CDEK_GetDeliveryCashRegistry(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - ReceivingDate = OPI_Tools.GetCurrentDate(); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("date" , ReceivingDate); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetDeliveryCashRegistry", Options); - - // END - - Process(Result, "CDEK", "GetDeliveryCashRegistry"); - -EndProcedure - -Procedure CDEK_GetDeliveryCashTransfers(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - ReceivingDate = OPI_Tools.GetCurrentDate(); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("date" , ReceivingDate); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetDeliveryCashTransfers", Options); - - // END - - Process(Result, "CDEK", "GetDeliveryCashTransfers"); - -EndProcedure - -Procedure CDEK_GetOfficeFilterDescription(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOfficeFilterDescription", Options); - - // END - - Process(Result, "CDEK", "GetOfficeFilterDescription"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOfficeFilterDescription", Options); - - Process(Result, "CDEK", "GetOfficeFilterDescription", "Clear"); - -EndProcedure - -Procedure CDEK_GetOfficeList(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - Filter = New Structure; - Filter.Insert("weight_max" , 50); - Filter.Insert("city_code" , 270); - Filter.Insert("allowed_cod", True); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("filter" , Filter); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOfficeList", Options); - - // END - - Process(Result, "CDEK", "GetOfficeList"); - -EndProcedure - -Procedure CDEK_GetRegionsList(FunctionParameters) - - Token = FunctionParameters["CDEK_Token"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("testapi", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetRegionsList", Options); - - // END - - Process(Result, "CDEK", "GetRegionsList"); - -EndProcedure - -#EndRegion - -#Region YandexMetrika - -Procedure YandexMetrika_GetTagsList(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetTagsList", Options); - - // END - - Process(Result, "YandexMetrika", "GetTagsList"); - -EndProcedure - -Procedure YandexMetrika_CreateTag(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - Name = "New tag"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("title", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "CreateTag", Options); - - // END - - Process(Result, "YandexMetrika", "CreateTag", , FunctionParameters, Name); - -EndProcedure - -Procedure YandexMetrika_DeleteTag(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - TagID = FunctionParameters["Metrika_LabelID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("label", TagID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "DeleteTag", Options); - - // END - - Process(Result, "YandexMetrika", "DeleteTag"); - -EndProcedure - -Procedure YandexMetrika_UpdateTag(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - TagID = FunctionParameters["Metrika_LabelID"]; - Name = "New tag title"; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("label", TagID); - Options.Insert("title", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "UpdateTag", Options); - - // END - - Process(Result, "YandexMetrika", "UpdateTag", , Name); - -EndProcedure - -Procedure YandexMetrika_GetTag(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - TagID = FunctionParameters["Metrika_LabelID"]; - - Options = New Structure; - Options.Insert("token", Token); - Options.Insert("label", TagID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetTag", Options); - - // END - - Process(Result, "YandexMetrika", "GetTag"); - -EndProcedure - -Procedure YandexMetrika_GetCounterStructure(FunctionParameters) - - Clear = False; - Options = New Structure; - Options.Insert("empty", Clear); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCounterStructure", Options); - - // END - - Process(Result, "YandexMetrika", "GetCounterStructure"); - -EndProcedure - -Procedure YandexMetrika_CreateCounter(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - - CounterStructure = New Structure; - CounterStructure.Insert("autogoals_enabled", True); - - CodeSettingsStructure = New Structure; - CodeSettingsStructure.Insert("async" , 0); - CodeSettingsStructure.Insert("clickmap" , 1); - CodeSettingsStructure.Insert("ecommerce" , 1); - CodeSettingsStructure.Insert("in_one_line" , 0); - CodeSettingsStructure.Insert("track_hash" , 1); - CodeSettingsStructure.Insert("visor" , 1); - CodeSettingsStructure.Insert("xml_site" , 0); - CodeSettingsStructure.Insert("ytm" , 0); - CodeSettingsStructure.Insert("alternative_cdn", 1); - - InformerStructure = New Structure; - InformerStructure.Insert("color_arrow", 1); - InformerStructure.Insert("color_end" , "EFEFEFFE"); - InformerStructure.Insert("color_start", "EEEEEEEE"); - InformerStructure.Insert("color_text" , 0); - InformerStructure.Insert("enabled" , 1); - InformerStructure.Insert("indicator" , "uniques"); - InformerStructure.Insert("size" , 2); - InformerStructure.Insert("type" , "ext"); - - CodeSettingsStructure.Insert("informer", InformerStructure); - - CounterStructure.Insert("code_options", CodeSettingsStructure); - - FlagsStructure = New Structure; - FlagsStructure.Insert("collect_first_party_data" , True); - FlagsStructure.Insert("measurement_enabled" , True); - FlagsStructure.Insert("use_in_benchmarks" , True); - FlagsStructure.Insert("direct_allow_use_goals_without_access", True); - - CounterStructure.Insert("counter_flags" , FlagsStructure); - CounterStructure.Insert("favorite" , 1); - CounterStructure.Insert("filter_robots" , 2); - CounterStructure.Insert("gdpr_agreement_accepted", 1); - - DomainStructure = New Structure("site", "openintegrations.dev"); - - CounterStructure.Insert("site2", DomainStructure); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("fields", CounterStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "CreateCounter", Options); - - // END - - Process(Result, "YandexMetrika", "CreateCounter", , FunctionParameters); - -EndProcedure - -Procedure YandexMetrika_DeleteCounter(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - CounterID = FunctionParameters["Metrika_CounterID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("counter", CounterID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "DeleteCounter", Options); - - // END - - Process(Result, "YandexMetrika", "DeleteCounter"); - -EndProcedure - -Procedure YandexMetrika_UpdateCounter(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - CounterID = FunctionParameters["Metrika_CounterID"]; - - CounterStructure = New Structure; - CounterStructure.Insert("autogoals_enabled", True); - - FlagsStructure = New Structure; - FlagsStructure.Insert("collect_first_party_data" , False); - FlagsStructure.Insert("measurement_enabled" , False); - FlagsStructure.Insert("use_in_benchmarks" , False); - FlagsStructure.Insert("direct_allow_use_goals_without_access", False); - - CounterStructure.Insert("counter_flags", FlagsStructure); - CounterStructure.Insert("favorite" , 0); - CounterStructure.Insert("filter_robots", 1); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("counter", CounterID); - Options.Insert("fields" , CounterStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "UpdateCounter", Options); - - // END - - Process(Result, "YandexMetrika", "UpdateCounter"); - -EndProcedure - -Procedure YandexMetrika_GetCounter(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - CounterID = FunctionParameters["Metrika_CounterID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("counter", CounterID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCounter", Options); - - // END - - Process(Result, "YandexMetrika", "GetCounter"); - -EndProcedure - -Procedure YandexMetrika_RestoreCounter(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - CounterID = FunctionParameters["Metrika_CounterID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("counter", CounterID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "RestoreCounter", Options); - - // END - - Process(Result, "YandexMetrika", "RestoreCounter"); - -EndProcedure - -Procedure YandexMetrika_GetCountersList(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - CounterID = FunctionParameters["Metrika_CounterID"]; - - Options = New Structure; - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCountersList", Options); - - Process(Result, "YandexMetrika", "GetCountersList"); // SKIP - - // filter by IDs list - - Filter = New Structure; - - CountersArray = New Array; - CountersArray.Add(CounterID); - - Filter.Insert("counter_ids", CountersArray); - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("filter", Filter); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCountersList", Options); - - // END - - Process(Result, "YandexMetrika", "GetCountersList", "Filter"); - -EndProcedure - -Procedure YandexMetrika_GetActionsList(FunctionParameters) - - Token = FunctionParameters["Metrika_Token"]; - CounterID = FunctionParameters["Metrika_CounterID"]; - - Options = New Structure; - Options.Insert("token" , Token); - Options.Insert("counter", CounterID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetActionsList", Options); - - // END - - Process(Result, "YandexMetrika", "GetActionsList"); - -EndProcedure - -#EndRegion - -#Region S3 - -Procedure S3_GetBasicDataStructure(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - // END - - Process(Result, "S3", "GetBasicDataStructure"); - -EndProcedure - -Procedure S3_SendRequestWithoutBody(FunctionParameters) - - URL = FunctionParameters["S3_URL"] + "/opi-newbucket2"; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - Method = "GET"; - - Options = New Structure; - Options.Insert("method", Method); - Options.Insert("basic" , BasicData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "SendRequestWithoutBody", Options); - - // END - - Process(Result, "S3", "SendRequestWithoutBody"); - -EndProcedure - -Procedure S3_SendRequestWithBody(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Method = "PUT"; - Body = "C:\test_data\document.docx"; // URL, Path or Binary Data - - Options = New Structure; - Options.Insert("method", Method); - Options.Insert("basic" , BasicData); - Options.Insert("body" , Body); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "SendRequestWithBody", Options); - - // END - - Process(Result, "S3", "SendRequestWithBody"); - -EndProcedure - -Procedure S3_CreateBucket(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Result = OPI_S3.DeleteBucket(Name, BasicData, Directory); // SKIP - Process(Result, "S3", "CreateBucket", "Deletion"); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "CreateBucket", Options); - - // END - - Process(Result, "S3", "CreateBucket"); - -EndProcedure - -Procedure S3_DeleteBucket(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucket", Options); - - // END - - Process(Result, "S3", "DeleteBucket"); - -EndProcedure - -Procedure S3_ListBuckets(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - Options = New Structure; - Options.Insert("basic", BasicData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListBuckets", Options); - - // END - - Process(Result, "S3", "ListBuckets"); - -EndProcedure - -Procedure S3_HeadBucket(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadBucket", Options); - - Process(Result, "S3", "HeadBucket"); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - Options.Insert("account", "1234"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadBucket", Options); - - // END - - Process(Result, "S3", "HeadBucket", "Account"); - -EndProcedure - -Procedure S3_GetBucketEncryption(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketEncryption", Options); - - // END - - Process(Result, "S3", "GetBucketEncryption"); - -EndProcedure - -Procedure S3_DeleteBucketEncryption(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucketEncryption", Options); - - // END - - Process(Result, "S3", "DeleteBucketEncryption"); - -EndProcedure - -Procedure S3_PutBucketEncryption(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - XmlConfig = " - | - | - | AES256 - | - | - |"; - - TFN = GetTempFileName("xml"); // SKIP - GetBinaryDataFromString(XmlConfig).Write(TFN); // SKIP - XmlConfig = TFN; // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("conf" , XmlConfig); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketEncryption", Options); - - // END - - OPI_Tools.RemoveFileWithTry(XmlConfig, "Error deleting file after test"); - - Process(Result, "S3", "PutBucketEncryption"); - -EndProcedure - -Procedure S3_GetBucketTagging(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketTagging", Options); - - // END - - Process(Result, "S3", "GetBucketTagging"); - -EndProcedure - -Procedure S3_PutBucketTagging(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - TagStructure = New Structure; - TagStructure.Insert("MyTag1", "SomeValue"); - TagStructure.Insert("MyTag2", "AnotherOne"); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic" , BasicData); - Options.Insert("tagset", TagStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketTagging", Options); - - // END - - Process(Result, "S3", "PutBucketTagging"); - -EndProcedure - -Procedure S3_DeleteBucketTagging(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucketTagging", Options); - - // END - - Process(Result, "S3", "DeleteBucketTagging"); - -EndProcedure - -Procedure S3_GetBucketVersioning(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic", BasicData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketVersioning", Options); - - // END - - Process(Result, "S3", "GetBucketVersioning"); - -EndProcedure - -Procedure S3_PutBucketVersioning(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - Status = True; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Name = FunctionParameters["S3_DB"]; - Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("basic" , BasicData); - Options.Insert("status", Status); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketVersioning", Options); - - // END - - Process(Result, "S3", "PutBucketVersioning"); - -EndProcedure - -Procedure S3_PutObject(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Name = "picture.jpg"; - Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("data" , Entity); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options); - - Process(Result, "S3", "PutObject"); // SKIP - - Name = "fileChunked.mp3"; - Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data - - BasicData.Insert("ChunkSize", 5242880); // Size parts for upload in multiple of requests - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("data" , Entity); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options); - - // END - - Process(Result, "S3", "PutObject", "ByParts"); - - OPI_S3.DeleteObject(Name, Bucket, BasicData, , , Directory); - -EndProcedure - -Procedure S3_UploadFullObject(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "pictureSmall.jpg"; - Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("data" , Entity); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "UploadFullObject", Options); - - // END - - Process(Result, "S3", "UploadFullObject"); - - OPI_S3.DeleteObject(Name, Bucket, BasicData, , , Directory); - -EndProcedure - -Procedure S3_DeleteObject(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteObject", Options); - - // END - - Process(Result, "S3", "DeleteObject"); - -EndProcedure - -Procedure S3_HeadObject(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadObject", Options); - - // END - - Process(Result, "S3", "HeadObject"); - -EndProcedure - -Procedure S3_CopyObject(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - SourcePath = "picture.jpg"; - DestinationBucket = "newbucket2"; - - DestinationPath = "new_picture.jpg"; - SourceBucket = FunctionParameters["S3_DB"]; - SourceBucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("sname" , SourcePath); - Options.Insert("sbucket", DestinationBucket); - Options.Insert("name" , DestinationPath); - Options.Insert("bucket" , SourceBucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "CopyObject", Options); - - // END - - Process(Result, "S3", "CopyObject"); - - OPI_S3.DeleteObject(DestinationPath, SourceBucket, BasicData, , , Directory); - -EndProcedure - -Procedure S3_PutObjectTagging(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - TagStructure = New Structure; - - TagStructure.Insert("MyTag1", "SomeValue"); - TagStructure.Insert("MyTag2", "AnotherOne"); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("tagset", TagStructure); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObjectTagging", Options); - - // END - - Process(Result, "S3", "PutObjectTagging"); - -EndProcedure - -Procedure S3_GetObjectTagging(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectTagging", Options); - - // END - - Process(Result, "S3", "GetObjectTagging"); - -EndProcedure - -Procedure S3_DeleteObjectTagging(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteObjectTagging", Options); - - // END - - Process(Result, "S3", "DeleteObjectTagging"); - -EndProcedure - -Procedure S3_ListObjects(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListObjects", Options); - - // END - - Process(Result, "S3", "ListObjects"); - -EndProcedure - -Procedure S3_ListObjectVersions(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Prefix = "pic"; - Options = New Structure; - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("prefix", Prefix); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListObjectVersions", Options); - - // END - - Process(Result, "S3", "ListObjectVersions"); - -EndProcedure - -Procedure S3_GetObject(FunctionParameters) - - Image = FunctionParameters["Picture"]; // SKIP - OPI_TypeConversion.GetBinaryData(Image); // SKIP - RequiredSize = Image.Size(); // SKIP - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); - - Process(Result, "S3", "GetObject", , RequiredSize); // SKIP - - TempFile = GetTempFileName(); - BasicData.Insert("ChunkSize", 200000); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("out" , TempFile); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); - - // END - - Process(Result, "S3", "GetObject", "File", RequiredSize); - - Name = "bigfile.exe"; - Bucket = "newbucket2"; - - BigTempFile = GetTempFileName(); - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("out" , BigTempFile); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); - - Process(Result, "S3", "GetObject", "Big file", 34432400); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); - - Process(Result, "S3", "GetObject", "Big BD", 34432400); - - OPI_Tools.RemoveFileWithTry(BigTempFile, "Failed to delete the temporary file after the test!!"); - OPI_Tools.RemoveFileWithTry(TempFile , "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure S3_InitPartsUpload(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "fileChunked.mp3"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data - Entity = OPI_HTTPRequests.Get(Entity); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Process(Result, "S3", "InitPartsUpload"); // SKIP - - UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; - TotalSize = Entity.Size(); - ChunkSize = 5242880; - BytesRead = 0; - PartNumber = 1; - - DataReader = New DataReader(Entity); - SourceStream = DataReader.SourceStream(); - TagsArray = New Array; - - While BytesRead < TotalSize Do - - CurrentReading = DataReader.Read(ChunkSize); - CurrentData = CurrentReading.GetBinaryData(); - - If CurrentData.Size() = 0 Then - Break; - EndIf; - - Result = OPI_S3.UploadObjectPart(Name - , Bucket - , BasicData - , UploadID - , PartNumber - , CurrentData - , Directory); - - Process(Result, "S3", "InitPartsUpload", "Part"); // SKIP - - BytesRead = SourceStream.CurrentPosition(); - - ETag = Result["headers"]["Etag"]; - ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); - - TagsArray.Add(ETag); - - PartNumber = PartNumber + 1; - - EndDo; - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("upload", UploadID); - Options.Insert("tags" , TagsArray); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); - - // END - - Process(Result, "S3", "InitPartsUpload", "Completion"); - - OPI_S3.DeleteObject(Name, Bucket, BasicData); - -EndProcedure - -Procedure S3_FinishPartsUpload(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "fileChunked.mp3"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data - Entity = OPI_HTTPRequests.Get(Entity); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); - - Process(Result, "S3", "FinishPartsUpload", "Start"); // SKIP - - UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; - TotalSize = Entity.Size(); - ChunkSize = 5242880; - BytesRead = 0; - PartNumber = 1; - - DataReader = New DataReader(Entity); - SourceStream = DataReader.SourceStream(); - TagsArray = New Array; - - While BytesRead < TotalSize Do - - CurrentReading = DataReader.Read(ChunkSize); - CurrentData = CurrentReading.GetBinaryData(); - - If CurrentData.Size() = 0 Then - Break; - EndIf; - - Result = OPI_S3.UploadObjectPart(Name - , Bucket - , BasicData - , UploadID - , PartNumber - , CurrentData - , Directory); - - Process(Result, "S3", "FinishPartsUpload", "Part"); // SKIP - - BytesRead = SourceStream.CurrentPosition(); - - ETag = Result["headers"]["Etag"]; - ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); - - TagsArray.Add(ETag); - - PartNumber = PartNumber + 1; - - EndDo; - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("upload", UploadID); - Options.Insert("tags" , TagsArray); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - // END - - Process(Result, "S3", "FinishPartsUpload"); - - OPI_S3.DeleteObject(Name, Bucket, BasicData); - -EndProcedure - -Procedure S3_UploadObjectPart(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "fileChunked.mp3"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data - Entity = OPI_HTTPRequests.Get(Entity); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); - - Process(Result, "S3", "UploadObjectPart", "Start"); // SKIP - - UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; - TotalSize = Entity.Size(); - ChunkSize = 5242880; - BytesRead = 0; - PartNumber = 1; - - DataReader = New DataReader(Entity); - SourceStream = DataReader.SourceStream(); - TagsArray = New Array; - - While BytesRead < TotalSize Do - - CurrentReading = DataReader.Read(ChunkSize); - CurrentData = CurrentReading.GetBinaryData(); - - If CurrentData.Size() = 0 Then - Break; - EndIf; - - Result = OPI_S3.UploadObjectPart(Name - , Bucket - , BasicData - , UploadID - , PartNumber - , CurrentData - , Directory); - - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Process(Result, "S3", "UploadObjectPart"); // SKIP - - BytesRead = SourceStream.CurrentPosition(); - - ETag = Result["headers"]["Etag"]; - ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); - - TagsArray.Add(ETag); - - PartNumber = PartNumber + 1; - - EndDo; - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("upload", UploadID); - Options.Insert("tags" , TagsArray); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); - - // END - - Process(Result, "S3", "UploadObjectPart", "Completion"); // SKIP - - OPI_S3.DeleteObject(Name, Bucket, BasicData); - -EndProcedure - -Procedure S3_AbortMultipartUpload(FunctionParameters) - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "fileChunked.mp3"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("dir" , Directory); - - Start = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); - UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"]; - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("upload", UploadID); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "AbortMultipartUpload", Options); - - // END - - Process(Result, "S3", "AbortMultipartUpload"); - -EndProcedure - -Procedure S3_GetObjectDownloadLink(FunctionParameters) - - Image = FunctionParameters["Picture"]; // SKIP - OPI_TypeConversion.GetBinaryData(Image); // SKIP - RequiredSize = Image.Size(); // SKIP - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "picture.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = FunctionParameters["S3_DB"]; - Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket" , Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("expires", 7200); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectDownloadLink", Options); - - // END - - Process(Result, "S3", "GetObjectDownloadLink"); - - Result = OPI_HTTPRequests.Get(Result); - - Process(Result, "S3", "GetObjectDownloadLink", "Check", RequiredSize); - -EndProcedure - -Procedure S3_GetObjectUploadLink(FunctionParameters) - - Image = FunctionParameters["Picture"]; // SKIP - OPI_TypeConversion.GetBinaryData(Image); // SKIP - RequiredSize = Image.Size(); // SKIP - - URL = FunctionParameters["S3_URL"]; - AccessKey = FunctionParameters["S3_AccessKey"]; - SecretKey = FunctionParameters["S3_SecretKey"]; - Region = "BTC"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("access", AccessKey); - Options.Insert("secret", SecretKey); - Options.Insert("region", Region); - - BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); - - Name = "pictureU.jpg"; - - Directory = True; // Formation URL in path-style - Directory = FunctionParameters["Directory"]; // SKIP - - Bucket = "newbucket2"; - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket" , Bucket); - Options.Insert("basic" , BasicData); - Options.Insert("expires", 7200); - Options.Insert("dir" , Directory); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectUploadLink", Options); - - // END - - Process(Result, "S3", "GetObjectUploadLink"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(Result) - .SetBinaryBody(Image) - .ProcessRequest("PUT"); - - Process(Result, "S3", "GetObjectUploadLink", "Upload"); - - Options = New Structure; - Options.Insert("name" , Name); - Options.Insert("bucket", Bucket); - Options.Insert("basic" , BasicData); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadObject", Options); - - Process(Check, "S3", "GetObjectUploadLink", "Check", RequiredSize); - - OPI_S3.DeleteObject(Name, Bucket, BasicData); - -EndProcedure - -#EndRegion - -#Region TCP - -Procedure TCP_CreateConnection(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - - Process(Connection, "TCP", "CreateConnection"); // SKIP - - OPI_TCP.CloseConnection(Connection); - - Address = "tcpbin.com:4243"; - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); - - ProxtUser = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - ProxyAddress = FunctionParameters["Socks5_IP"]; - ProxyPort = FunctionParameters["Socks5_Port"]; - - ProxyAddress = ?(ProxyAddress = "127.0.0.1", OPI_TestDataRetrieval.GetLocalhost(), ProxyAddress); // SKIP - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , "socks5"); - Options.Insert("login", ProxtUser); - Options.Insert("pass" , ProxyPassword); - - Proxy = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); - - Connection = OPI_TCP.CreateConnection(Address, TLS, Proxy); - - // END - - Process(Connection, "TCP", "CreateConnection", "TLS"); - -EndProcedure - -Procedure TCP_CloseConnection(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - - Result = OPI_TCP.CloseConnection(Connection); - - // END - - Process(Result, "TCP", "CloseConnection"); - -EndProcedure - -Procedure TCP_ReadBinaryData(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - Message = "Hello server!" + Chars.LF; - Data = GetBinaryDataFromString(Message); - - OPI_TCP.SendBinaryData(Connection, Data); - - // End of message marker to avoid waiting for the end of timeout - Marker = Chars.LF; - Result = OPI_TCP.ReadBinaryData(Connection, , Marker); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - OPI_TCP.CloseConnection(Connection); - - // END - - Process(Result, "TCP", "ReadBinaryData", , Message); - - Connection = OPI_TCP.CreateConnection(Address); - - OPI_TCP.SendBinaryData(Connection, Data); - Result = OPI_TCP.ReadBinaryData(Connection, , , 50000); - - OPI_TCP.CloseConnection(Connection); - - Process(Result, "TCP", "ReadBinaryData", "Timeout", Message); - -EndProcedure - -Procedure TCP_SendBinaryData(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - Message = "Hello server!" + Chars.LF; - Data = GetBinaryDataFromString(Message); - - Result = OPI_TCP.SendBinaryData(Connection, Data); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - // End of message marker to avoid waiting for the end of timeout - Marker = Chars.LF; - Response = OPI_TCP.ReadBinaryData(Connection, , Marker); - - OPI_TCP.CloseConnection(Connection); - - // END - - Process(Response, "TCP", "SendBinaryData", , Message); - - Connection = OPI_TCP.CreateConnection(Address); - - OPI_TCP.SendBinaryData(Connection, Data); - Result = OPI_TCP.ReadBinaryData(Connection, , , 50000); - - OPI_TCP.CloseConnection(Connection); - - Process(Result, "TCP", "SendBinaryData", "Timeout", Message); - -EndProcedure - -Procedure TCP_ProcessRequest(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Data = "Echo this!" + Chars.LF; - - Options = New Structure; - Options.Insert("address", Address); - Options.Insert("data" , Data); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "ProcessRequest", Options); - - Process(Result, "TCP", "ProcessRequest", , "Echo this!" + Chars.LF); // SKIP - - Address = FunctionParameters["TCP_AddressTLS"]; - - ProxtUser = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - ProxyAddress = FunctionParameters["Socks5_IP"]; - ProxyPort = FunctionParameters["Socks5_Port"]; - - ProxyAddress = ?(ProxyAddress = "127.0.0.1", OPI_TestDataRetrieval.GetLocalhost(), ProxyAddress); // SKIP - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , "socks5"); - Options.Insert("login", ProxtUser); - Options.Insert("pass" , ProxyPassword); - - Proxy = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); - - Options = New Structure; - Options.Insert("address", Address); - Options.Insert("data" , Data); - Options.Insert("tls" , Tls); - Options.Insert("proxy" , Proxy); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "ProcessRequest", Options); - - // END - - Process(Result, "TCP", "ProcessRequest", "TLS", "Echo this!" + Chars.LF); - -EndProcedure - -Procedure TCP_ReadLine(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - Data = "Hello server!" + Chars.LF; - - OPI_TCP.SendLine(Connection, Data); - - // End of message marker to avoid waiting for the end of timeout - Marker = Chars.LF; - Result = OPI_TCP.ReadLine(Connection, , Marker); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - OPI_TCP.CloseConnection(Connection); - - // END - - Process(Result, "TCP", "ReadLine", , Data); - - Connection = OPI_TCP.CreateConnection(Address); - - OPI_TCP.SendLine(Connection, Data); - Result = OPI_TCP.ReadLine(Connection, , , 50000); - - OPI_TCP.CloseConnection(Connection); - - Process(Result, "TCP", "ReadLine", "Timeout", Data); - -EndProcedure - -Procedure TCP_SendLine(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - Data = "Hello server!" + Chars.LF; - - Result = OPI_TCP.SendLine(Connection, Data); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - // End of message marker to avoid waiting for the end of timeout - Marker = Chars.LF; - Response = OPI_TCP.ReadLine(Connection, , Marker); - - OPI_TCP.CloseConnection(Connection); - - // END - - Process(Response, "TCP", "SendLine", , Data); - - Connection = OPI_TCP.CreateConnection(Address); - - OPI_TCP.SendLine(Connection, Data); - Result = OPI_TCP.ReadLine(Connection, , , 50000); - - OPI_TCP.CloseConnection(Connection); - - Process(Result, "TCP", "SendLine", "Timeout", Data); - -EndProcedure - -Procedure TCP_GetTLSSettings(FunctionParameters) - - Options = New Structure; - Options.Insert("trust", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); - - // END - - Process(Result, "TCP", "GetTLSSettings"); - -EndProcedure - -Procedure TCP_GetLastError(FunctionParameters) - - Address = FunctionParameters["TCP_Address"]; - Connection = OPI_TCP.CreateConnection(Address); - Data = "Hello server!" + Chars.LF; - - Sending = OPI_TCP.SendLine(Connection, Data); - Result = OPI_TCP.GetLastError(Connection); // SKIP - - // END - - Process(Result, "TCP", "GetLastError"); - -EndProcedure - -Procedure TCP_GetProxySettings(FunctionParameters) - - ProxyType = "socks5"; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Socks5_IP"]; - ProxyPort = FunctionParameters["Socks5_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); - - // END - - Process(Result, "TCP", "GetProxySettings"); - -EndProcedure - -Procedure TCP_StartServer(FunctionParameters) - - Port = 9876; - PoolSize = 10; - - Host = OPI_TCP.StartServer(Port, PoolSize); - - // END - - Process(Host, "TCP", "StartServer"); - - OPI_TCP.StopServer(Host); - -EndProcedure - -Procedure TCP_StopServer(FunctionParameters) - - Port = 9877; - Host = OPI_TCP.StartServer(Port); - - Result = OPI_TCP.StopServer(Host); - - // END - - Process(Result, "TCP", "StopServer"); - - ListResult = OPI_TCP.GetConnectionList(Host); - - Process(ListResult, "TCP", "StopServer", "List"); - - OPI_TypeConversion.GetLine(Port); - - Address = StrTemplate("127.0.0.1:%1", Port); - Client = OPI_TCP.CreateConnection(Address); - - Process(Client, "TCP", "StopServer", "Connection"); - -EndProcedure - -Procedure TCP_GetNextConnectionData(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Send message from client - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - Else - Message = "Hello from client!" + Chars.LF; - OPI_TCP.SendLine(ClientObject, Message); - EndIf; - - // Receive message on server - Result = OPI_TCP.GetNextConnectionData(ServerObject, 5000, 8192); - - // END - - OPI_TCP.CloseConnection(ClientObject); - - Process(Result, "TCP", "GetNextConnectionData", , Message); - - OPI_TCP.SendLine(ClientObject, Message); - OPI_TCP.CloseConnection(ClientObject); - - Result = OPI_TCP.GetNextConnectionData(ServerObject, 5000, 8192); - - Process(Result, "TCP", "GetNextConnectionData", "Closed", Message); - - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_GetConnectionData(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - EndIf; - - OPI_Tools.Pause(1); // SKIP - - // Receive the list of server connections - ConnectionList = OPI_TCP.GetConnectionList(ServerObject); - - If Not ConnectionList["result"] Then - Raise OPI_Tools.JSONString(ConnectionList); - EndIf; - - If ConnectionList["connections"].Count() = 0 Then - Raise "Connection list is empty"; - Else - ConnectionID = ConnectionList["connections"][0]["connectionId"]; - EndIf; - - EmptyResult = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); // SKIP - Process(EmptyResult, "TCP", "GetConnectionData", "Empty"); // SKIP - - For N = 0 To 5 Do - - // Send from client - CurrentMessage = StrTemplate("Message no. %1%2", N, Chars.LF); - OPI_TCP.SendLine(ClientObject, CurrentMessage); - - // Recieve on server - Result = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); - - Process(Result, "TCP", "GetConnectionData", , CurrentMessage); // SKIP - - EndDo; - - // END - - OPI_TCP.CloseConnection(ClientObject); - - Result = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); - - Process(Result, "TCP", "GetConnectionData", "Closed"); - - Result = OPI_TCP.GetConnectionList(ServerObject); - - Process(Result, "TCP", "GetConnectionData", "EmptyList"); - - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_SendData(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - EndIf; - - Message = "Hello!" + Chars.LF; - - OPI_TCP.SendLine(ClientObject, Message); - - // Receive message and connection ID - NextMessage = OPI_TCP.GetNextConnectionData(ServerObject, 5000); - ConnectionID = NextMessage["connectionId"]; - - // Send response from server - ServerResponse = "Response from server!" + Chars.LF; - Result = OPI_TCP.SendData(ServerObject, ConnectionID, ServerResponse); - - // END - - Process(Result, "TCP", "SendData"); - - // Check receiving on client - ClientResponse = OPI_TCP.ReadLine(ClientObject, , Chars.LF); - - Process(ClientResponse, "TCP", "SendData", "Check", ServerResponse); - - OPI_TCP.CloseConnection(ClientObject); - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_CloseIncomingConnection(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - EndIf; - - Message = "Hello!" + Chars.LF; - - OPI_TCP.SendLine(ClientObject, Message); - - // Get connection ID - FirstMessage = OPI_TCP.GetNextConnectionData(ServerObject, 5000); - ConnectionID = FirstMessage["connectionId"]; - - // Close connection from server side - Result = OPI_TCP.CloseIncomingConnection(ServerObject, ConnectionID); - - // END - - Process(Result, "TCP", "CloseIncomingConnection"); - - Result = OPI_TCP.GetConnectionList(ServerObject); - - Process(Result, "TCP", "CloseIncomingConnection", "EmptyList"); - - OPI_TCP.SendLine(ClientObject, Message); - Result = OPI_TCP.SendLine(ClientObject, Message); - - Process(Result, "TCP", "CloseIncomingConnection", "SendingToClosed"); - - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_CompleteSend(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - OPI_Tools.Pause(1); // SKIP - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - EndIf; - - ActiveConnections = OPI_TCP.GetConnectionList(ServerObject); - ConnectionID = ActiveConnections["connections"][0]["connectionId"]; - - // Finish sending from server - Result = OPI_TCP.CompleteSend(ServerObject, ConnectionID); - - // END - - Process(Result, "TCP", "CompleteSend"); - - Message = "Hello" + Chars.LF; - - OPI_TCP.SendLine(ClientObject, Message); - Result = OPI_TCP.SendLine(ClientObject, Message); - - Process(Result, "TCP", "CompleteSend", "SendingClient"); - - ServerResponse = "Response from server!" + Chars.LF; - Result = OPI_TCP.SendData(ServerObject, ConnectionID, ServerResponse); - - Process(Result, "TCP", "CompleteSend", "SendingServer"); - - OPI_TCP.CloseConnection(ClientObject); - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_GetConnectionList(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - - Client1 = OPI_TCP.CreateConnection(ConnectionAddress); - Client2 = OPI_TCP.CreateConnection(ConnectionAddress); - - If Not OPI_TCP.IsClientObject(Client1) Then - Raise OPI_Tools.JSONString(Client1); - EndIf; - - If Not OPI_TCP.IsClientObject(Client2) Then - Raise OPI_Tools.JSONString(Client2); - EndIf; - - Result = OPI_TCP.GetConnectionList(ServerObject); - - // END - - Process(Result, "TCP", "GetConnectionList"); - - OPI_TCP.CloseConnection(Client1); - OPI_TCP.CloseConnection(Client2); - - Client3 = OPI_TCP.CreateConnection(ConnectionAddress); - Client4 = OPI_TCP.CreateConnection(ConnectionAddress); - - OPI_TCP.SendLine(Client3, "Yo" + Chars.LF); - - OPI_TCP.CloseConnection(Client3); - OPI_TCP.CloseConnection(Client4); - - Result = OPI_TCP.GetConnectionList(ServerObject); - - Process(Result, "TCP", "GetConnectionList", "Closing"); - - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_FinishReceiving(FunctionParameters) - - LaunchPort = 9877; - ServerObject = OPI_TCP.StartServer(LaunchPort); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - OPI_Tools.Pause(1); // SKIP - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - EndIf; - - ActiveConnections = OPI_TCP.GetConnectionList(ServerObject); - ConnectionID = ActiveConnections["connections"][0]["connectionId"]; - - // Completing server-side reception - Result = OPI_TCP.FinishReceiving(ServerObject, ConnectionID); - - // END - - Process(Result, "TCP", "FinishReceiving"); - - OPI_TCP.CloseConnection(ClientObject); - OPI_TCP.StopServer(ServerObject); - -EndProcedure - -Procedure TCP_IsServerObject(FunctionParameters) - - Port = 9884; - Host = OPI_TCP.StartServer(Port); - - Result = OPI_TCP.IsServerObject(Host); - - // END - - Process(Result, "TCP", "IsServerObject"); - - OPI_TCP.StopServer(Host); - - // Check with wrong object - Result = OPI_TCP.IsServerObject("Not a server"); - - Process(Result, "TCP", "IsServerObject", "False"); - -EndProcedure - -Procedure TCP_GetLog(FunctionParameters) - - LaunchPort = 9877; - LogFile = GetTempFileName("txt"); - LoggingSettings = OPI_TCP.GetLoggingSettings(True, 100, LogFile); - ServerObject = OPI_TCP.StartServer(LaunchPort, , LoggingSettings); - - // Connect to running server - ConnectionAddress = "127.0.0.1:9877"; - ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); - OPI_Tools.Pause(1); // SKIP - - If Not OPI_TCP.IsClientObject(ClientObject) Then - Raise OPI_Tools.JSONString(ClientObject); - EndIf; - - Result = OPI_TCP.GetLog(ServerObject); - - // END - - Process(Result, "TCP", "GetLog", , LogFile); - -EndProcedure - -Procedure TCP_GetLoggingSettings(FunctionParameters) - - Result = OPI_TCP.GetLoggingSettings(True, 100, GetTempFileName()); - - // END - - Process(Result, "TCP", "GetLoggingSettings"); - - Result = OPI_TCP.GetLoggingSettings(False, , GetTempFileName()); - - Process(Result, "TCP", "GetLoggingSettings", "File"); - - Result = OPI_TCP.GetLoggingSettings(True); - - Process(Result, "TCP", "GetLoggingSettings", "Memory"); - -EndProcedure - -#EndRegion - -#Region SQLite - -Procedure SQLite_CreateConnection(FunctionParameters) - - TFN = GetTempFileName("sqlite"); - - LocalBase = OPI_SQLite.CreateConnection(TFN); - InMemoryBase = OPI_SQLite.CreateConnection(); - - // END - - Process(LocalBase , "SQLite", "CreateConnection"); - Process(InMemoryBase, "SQLite", "CreateConnection", "IM"); - - Closing = OPI_SQLite.CloseConnection(LocalBase); - - Process(Closing, "SQLite", "CreateConnection", "Closing"); - - OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); - -EndProcedure - -Procedure SQLite_CloseConnection(FunctionParameters) - - TFN = GetTempFileName("sqlite"); - - Connection = OPI_SQLite.CreateConnection(TFN); - - Process(Connection, "SQLite", "CloseConnection", "Openning"); // SKIP - - Closing = OPI_SQLite.CloseConnection(Connection); - - // END - - Process(Closing, "SQLite", "CloseConnection"); - - OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); - -EndProcedure - -Procedure SQLite_ExecuteSQLQuery(FunctionParameters) - - TFN = GetTempFileName("sqlite"); - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - Connection = OPI_SQLite.CreateConnection(TFN); - - Process(Connection, "SQLite", "ExecuteSQLQuery", "Openning"); // SKIP - - // CREATE - - QueryText = " - |CREATE TABLE test_table ( - |id INTEGER PRIMARY KEY, - |name TEXT, - |age INTEGER, - |salary REAL, - |is_active BOOLEAN, - |created_at DATETIME, - |data BLOB - |);"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("db" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); - - Process(Result, "SQLite", "ExecuteSQLQuery", "Create"); // SKIP - - // INSERT with parameters - - QueryText = " - |INSERT INTO test_table (name, age, salary, is_active, created_at, data) - |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; - - ParameterArray = New Array; - ParameterArray.Add("Vitaly"); // TEXT - ParameterArray.Add(25); // INTEGER - ParameterArray.Add(1000.12); // REAL - ParameterArray.Add(True); // BOOL - ParameterArray.Add(OPI_Tools.GetCurrentDate()); // DATETIME - ParameterArray.Add(New Structure("blob", Image)); // BLOB - - Options = New Structure; - Options.Insert("sql" , QueryText); - Options.Insert("params", ParameterArray); - Options.Insert("db" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); - - Process(Result, "SQLite", "ExecuteSQLQuery", "Insert"); // SKIP - - // SELECT (The result of this query is shown in the Result block) - - QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("db" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); - - Process(Result, "SQLite", "ExecuteSQLQuery", , Image); // SKIP - - // Transaction - - QueryText = "BEGIN TRANSACTION; - | CREATE TABLE IF NOT EXISTS users ( - | id INTEGER PRIMARY KEY AUTOINCREMENT, - | name TEXT NOT NULL, - | age INTEGER NOT NULL - | ); - | INSERT INTO users (name, age) VALUES ('Alice', 30); - | INSERT INTO users (name, age) VALUES ('Bob', 25); - | INSERT INTO users (name, age) VALUES ('Charlie', 35); - | COMMIT;"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("db" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); - - Process(Result, "SQLite", "ExecuteSQLQuery", "Transaction"); // SKIP - - // With extension - - If OPI_Tools.IsWindows() Then - Extension = FunctionParameters["SQLite_Ext"]; // URL, Path or Binary Data - Else - Extension = FunctionParameters["SQLite_ExtLinux"]; // URL, Path or Binary Data - EndIf; - - EntryPoint = "sqlite3_uuid_init"; - - ExtensionMap = New Map; - ExtensionMap.Insert(Extension, EntryPoint); - - QueryText = "SELECT uuid4();"; - - Options = New Structure; - Options.Insert("sql" , QueryText); - Options.Insert("db" , Connection); - Options.Insert("exts", ExtensionMap); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); - - Process(Result, "SQLite", "ExecuteSQLQuery", "Extension"); // SKIP - - Closing = OPI_SQLite.CloseConnection(Connection); - - // END - - Process(Result, "SQLite", "ExecuteSQLQuery", "Closing"); - - OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); - -EndProcedure - -Procedure SQLite_IsConnector(FunctionParameters) - - Connection = OPI_SQLite.CreateConnection(); - Result = OPI_SQLite.IsConnector(Connection); - - // END - - Process(Result, "SQLite", "IsConnector"); - -EndProcedure - -Procedure SQLite_CreateTable(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("id" , "INTEGER PRIMARY KEY"); - ColoumnsStruct.Insert("name" , "TEXT"); - ColoumnsStruct.Insert("age" , "INTEGER"); - ColoumnsStruct.Insert("salary" , "REAL"); - ColoumnsStruct.Insert("is_active" , "BOOLEAN"); - ColoumnsStruct.Insert("created_at", "DATETIME"); - ColoumnsStruct.Insert("data" , "BLOB"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "CreateTable", Options); - - // END - - Process(Result, "SQLite", "CreateTable"); - - ColoumnsMap = New Map; - ColoumnsMap.Insert("id" , "INTEGER PRIMARY KEY"); - ColoumnsMap.Insert("[An obscure column]", "TEXT"); - - Options = New Structure; - Options.Insert("table", "test1"); - Options.Insert("cols" , ColoumnsMap); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "CreateTable", Options); - - Process(Result, "SQLite", "CreateTable", "An obscure column"); - -EndProcedure - -Procedure SQLite_AddRecords(FunctionParameters) - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - PictureFile = GetTempFileName("png"); - Image.Write(PictureFile); // PictureFile - File to disk - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - DataArray = New Array; - - RowStructure2 = New Structure; - RowStructure2.Insert("name" , "Vitaly"); // TEXT - RowStructure2.Insert("age" , 25); // INTEGER - RowStructure2.Insert("salary" , 1000.12); // REAL - RowStructure2.Insert("is_active" , True); // BOOL - RowStructure2.Insert("created_at", OPI_Tools.GetCurrentDate()); // DATETIME - RowStructure2.Insert("data" , New Structure("blob", Image)); // BLOB - - RowStructure1 = New Structure; - RowStructure1.Insert("name" , "Lesha"); // TEXT - RowStructure1.Insert("age" , 20); // INTEGER - RowStructure1.Insert("salary" , 200.20); // REAL - RowStructure1.Insert("is_active" , False); // BOOL - RowStructure1.Insert("created_at", OPI_Tools.GetCurrentDate()); // DATETIME - RowStructure1.Insert("data" , New Structure("blob", PictureFile)); // BLOB - - DataArray.Add(RowStructure2); - DataArray.Add(RowStructure1); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , DataArray); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); - - // END - - Process(Result, "SQLite", "AddRecords"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , DataArray); - Options.Insert("trn" , False); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); - - Process(Result, "SQLite", "AddRecords", "No transaction"); - - RowStructure1.Insert("error", "Lesha"); - DataArray.Add(RowStructure1); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , DataArray); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); - Process(Result, "SQLite", "AddRecords", "Field error"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , DataArray); - Options.Insert("trn" , False); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); - Process(Result, "SQLite", "AddRecords", "Error without transaction"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , "not valid json"); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); - Process(Result, "SQLite", "AddRecords", "JSON Error"); - - RowMap = New Map; - RowMap.Insert("[An obscure column]", "yo"); - - Options = New Structure; - Options.Insert("table", "test1"); - Options.Insert("rows" , RowMap); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); - Process(Result, "SQLite", "AddRecords", "An obscure column"); - - OPI_Tools.RemoveFileWithTry(PictureFile, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure SQLite_GetRecords(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - Fields = New Array; - Fields.Add("name"); - Fields.Add("salary"); - - Filters = New Array; - - FilterStructure1 = New Structure; - - FilterStructure1.Insert("field", "name"); - FilterStructure1.Insert("type" , "="); - FilterStructure1.Insert("value", "Vitaly"); - FilterStructure1.Insert("union", "AND"); - FilterStructure1.Insert("raw" , False); - - FilterStructure2 = New Structure; - - FilterStructure2.Insert("field", "age"); - FilterStructure2.Insert("type" , "BETWEEN"); - FilterStructure2.Insert("value", "20 AND 30"); - FilterStructure2.Insert("raw" , True); - - Filters.Add(FilterStructure1); - Filters.Add(FilterStructure2); - - Sort = New Structure("created_at", "DESC"); - Count = 1; - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", Fields); - Options.Insert("filter", Filters); - Options.Insert("order" , Sort); - Options.Insert("limit" , Count); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - // END - - Process(Result, "SQLite", "GetRecords"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "['name','age','salary','is_active','created_at']"); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - Process(Result, "SQLite", "GetRecords", "No parameters"); - - FilterStructure2.Insert("type", "SOMETHING"); - Filters.Add(FilterStructure2); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "['name','age','salary','is_active','created_at']"); - Options.Insert("filter", Filters); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - Process(Result, "SQLite", "GetRecords", "Error"); - - Options = New Structure; - Options.Insert("table", "test1"); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - Process(Result, "SQLite", "GetRecords", "An obscure column"); - -EndProcedure - -Procedure SQLite_UpdateRecords(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - FieldsStructure = New Structure; - FieldsStructure.Insert("name" , "Vitaly A."); - FieldsStructure.Insert("salary", "999999"); - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "name"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", "Vitaly"); - FilterStructure.Insert("union", "AND"); - FilterStructure.Insert("raw" , False); - - Filters.Add(FilterStructure); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("values", FieldsStructure); - Options.Insert("filter", FilterStructure); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "UpdateRecords", Options); - - // END - - Process(Result, "SQLite", "UpdateRecords"); - - FilterStructure.Insert("value", "Vitaly A."); - - Filters = New Array; - Filters.Add(FilterStructure); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "['name','salary']"); - Options.Insert("filter", Filters); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - Process(Check, "SQLite", "UpdateRecords", "Check", FieldsStructure); - -EndProcedure - -Procedure SQLite_DeleteRecords(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "name"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", "Vitaly A."); - FilterStructure.Insert("union", "AND"); - FilterStructure.Insert("raw" , False); - - Filters.Add(FilterStructure); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("filter", FilterStructure); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteRecords", Options); - - // END - - Process(Result, "SQLite", "DeleteRecords"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "['name','salary']"); - Options.Insert("filter", Filters); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - Process(Check, "SQLite", "DeleteRecords", "Check"); - -EndProcedure - -Procedure SQLite_GetTableInformation(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - // END - - Process(Result, "SQLite", "GetTableInformation"); - -EndProcedure - -Procedure SQLite_EnsureRecords(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test_merge"; - - ColoumnsStruct = New Structure; // SKIP - ColoumnsStruct.Insert("id" , "INTEGER PRIMARY KEY"); // SKIP - ColoumnsStruct.Insert("name" , "TEXT"); // SKIP - ColoumnsStruct.Insert("age" , "INTEGER"); // SKIP - ColoumnsStruct.Insert("salary" , "REAL"); // SKIP - OPI_SQLite.CreateTable(Table, ColoumnsStruct, Base); // SKIP - - DataArray = New Array; - - RowStructure2 = New Structure; - RowStructure2.Insert("id" , 1); - RowStructure2.Insert("name" , "Vitaly"); - RowStructure2.Insert("age" , 25); - RowStructure2.Insert("salary", 1000.12); - - RowStructure1 = New Structure; - RowStructure1.Insert("id" , 2); - RowStructure1.Insert("name" , "Lesha"); - RowStructure1.Insert("age" , 20); - RowStructure1.Insert("salary", 200.20); - - DataArray.Add(RowStructure2); - DataArray.Add(RowStructure1); - - KeyFields = New Array; - KeyFields.Add("id"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("rows" , DataArray); - Options.Insert("unique", KeyFields); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureRecords", Options); - - // END - - Process(Result, "SQLite", "EnsureRecords", "Insertion"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - Process(Check, "SQLite", "EnsureRecords", "Insertion check"); - - RowStructure2.Insert("name" , "Vitaly Updated"); - RowStructure2.Insert("salary", 1500.50); - - StringStructure3 = New Structure; - StringStructure3.Insert("id" , 3); - StringStructure3.Insert("name" , "Anton"); - StringStructure3.Insert("age" , 30); - StringStructure3.Insert("salary", 3000.00); - - DataArray = New Array; - DataArray.Add(RowStructure2); - DataArray.Add(StringStructure3); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("rows" , DataArray); - Options.Insert("unique", KeyFields); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureRecords", Options); - - Process(Result, "SQLite", "EnsureRecords", "Updating"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - Process(Check, "SQLite", "EnsureRecords", "Updating check"); - - OPI_SQLite.DeleteTable(Table, Base); - -EndProcedure - -Procedure SQLite_GetRecordsFilterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecordsFilterStructure", Options); - - // END - - Process(Result, "SQLite", "GetRecordsFilterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecordsFilterStructure", Options); - - Process(Result, "SQLite", "GetRecordsFilterStructure", "Clear"); - -EndProcedure - -Procedure SQLite_DeleteTable(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteTable", Options); - - // END - - Process(Result, "SQLite", "DeleteTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - Process(Check, "SQLite", "DeleteTable", "Check"); - - OPI_SQLite.DeleteTable("test1", Base); - -EndProcedure - -Procedure SQLite_ClearTable(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ClearTable", Options); - - // END - - Process(Result, "SQLite", "ClearTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - Process(Check, "SQLite", "ClearTable", "Table"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); - - Process(Check, "SQLite", "ClearTable", "Check"); - -EndProcedure - -Procedure SQLite_ConnectExtension(FunctionParameters) - - If OPI_Tools.IsWindows() Then - Extension = FunctionParameters["SQLite_Ext"]; // URL, Path or Binary Data - Else - Extension = FunctionParameters["SQLite_ExtLinux"]; // URL, Path or Binary Data - EndIf; - - Base = FunctionParameters["SQLite_DB"]; - EntryPoint = "sqlite3_uuid_init"; - - Connection = OPI_SQLite.CreateConnection(Base); - Result = OPI_SQLite.ConnectExtension(Extension, EntryPoint, Connection); - - // END - - Process(Result, "SQLite", "ConnectExtension"); - - TFN = GetTempFileName("dll"); - CopyFile(Extension, TFN); - - Result = OPI_SQLite.ConnectExtension(TFN, EntryPoint, Connection); - - Process(Result, "SQLite", "ConnectExtension", "Path"); - - Result = OPI_SQLite.ConnectExtension(New BinaryData(TFN), EntryPoint, Connection); - - Process(Result, "SQLite", "ConnectExtension", "Binary"); - - Result = OPI_SQLite.CloseConnection(Connection); - - OPI_Tools.RemoveFileWithTry(TFN, "Error deleting extension file"); - -EndProcedure - -Procedure SQLite_AddTableColumn(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - Name = "new_col"; - DataType = "TEXT"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name" , Name); - Options.Insert("type" , DataType); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddTableColumn", Options); - - // END - - Process(Result, "SQLite", "AddTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - Process(Result, "SQLite", "AddTableColumn", "Check"); - -EndProcedure - -Procedure SQLite_DeleteTableColumn(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - Table = "test"; - Name = "new_col"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name" , Name); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteTableColumn", Options); - - // END - - Process(Result, "SQLite", "DeleteTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - Process(Result, "SQLite", "DeleteTableColumn", "Check"); - -EndProcedure - -Procedure SQLite_EnsureTable(FunctionParameters) - - Base = FunctionParameters["SQLite_DB"]; - - Table = "test"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("id" , "INTEGER"); - ColoumnsStruct.Insert("code" , "INTEGER"); - ColoumnsStruct.Insert("name" , "TEXT"); - ColoumnsStruct.Insert("age" , "INTEGER"); - ColoumnsStruct.Insert("info" , "TEXT"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureTable", Options); - - // END - - Process(Result, "SQLite", "EnsureTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - Process(Check, "SQLite", "EnsureTable", "Check", ColoumnsStruct); - - Table = "test_new"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureTable", Options); - - Process(Result, "SQLite", "EnsureTable", "New"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("db" , Base); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); - - Process(Check, "SQLite", "EnsureTable", "Check 2", ColoumnsStruct); - -EndProcedure - -#EndRegion - -#Region PostgreSQL - -Procedure PostgreSQL_GenerateConnectionString(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "postgres"; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - // END - - Result = StrReplace(Result, Password, "***"); - Result = StrReplace(Result, Address , "127.0.0.1"); - - Process(Result, "PostgreSQL", "GenerateConnectionString"); - -EndProcedure - -Procedure PostgreSQL_CreateConnection(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "postgres"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Result = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); - - // END - - OPI_PostgreSQL.CloseConnection(Result); - - Process(Result, "PostgreSQL", "CreateConnection"); - -EndProcedure - -Procedure PostgreSQL_CloseConnection(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "postgres"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); - Result = OPI_PostgreSQL.CloseConnection(Connection); - - // END - - Process(Result, "PostgreSQL", "CloseConnection"); - -EndProcedure - -Procedure PostgreSQL_IsConnector(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "postgres"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); - Result = OPI_PostgreSQL.IsConnector(Connection); - - OPI_PostgreSQL.CloseConnection(Result); - - // END - - Process(Result, "PostgreSQL", "IsConnector"); - -EndProcedure - -Procedure PostgreSQL_ExecuteSQLQuery(FunctionParameters) - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); - - OPI_PostgreSQL.DeleteTable("users" , Connection); // SKIP - OPI_PostgreSQL.DeleteTable("test_data" , Connection); // SKIP - OPI_PostgreSQL.DeleteTable("test_table", Connection); // SKIP - - Process(Connection, "PostgreSQL", "ExecuteSQLQuery", "Connection"); // SKIP - - // CREATE - - QueryText = " - |CREATE TABLE test_table ( - |id SERIAL PRIMARY KEY, - |name NAME, - |age INT, - |salary REAL, - |is_active BOOL, - |created_at DATE, - |data BYTEA - |);"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); - - Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Create"); // SKIP - - // INSERT with parameters - - QueryText = " - |INSERT INTO test_table (name, age, salary, is_active, created_at, data) - |VALUES ($1, $2, $3, $4, $5, $6);"; - - ParameterArray = New Array; - ParameterArray.Add(New Structure("NAME" , "Vitaly")); - ParameterArray.Add(New Structure("INT" , 25)); - ParameterArray.Add(New Structure("REAL" , 1000.12)); - ParameterArray.Add(New Structure("BOOL" , True)); - ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate())); - ParameterArray.Add(New Structure("BYTEA", Image)); - - Options = New Structure; - Options.Insert("sql" , QueryText); - Options.Insert("params", ParameterArray); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); - - Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Insert"); // SKIP - - // SELECT (The result of this query is shown in the Result block) - - QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); - - Process(Result, "PostgreSQL", "ExecuteSQLQuery", , Image); // SKIP - - // DO + Transaction - - QueryText = "DO $$ - |BEGIN - | CREATE TABLE users ( - | id SMALLSERIAL, - | name TEXT NOT NULL, - | age INT NOT NULL - | ); - | INSERT INTO users (name, age) VALUES ('Alice', 30); - | INSERT INTO users (name, age) VALUES ('Bob', 25); - | INSERT INTO users (name, age) VALUES ('Charlie', 35); - |END $$ LANGUAGE plpgsql;"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); - - Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Transaction"); // SKIP - - // SQL query from file - - SQLFile = FunctionParameters["SQL"]; // Binary Data, URL or path to file - - Options = New Structure; - Options.Insert("sql", SQLFile); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); - - Process(Result, "PostgreSQL", "ExecuteSQLQuery", "File"); // SKIP - - Closing = OPI_PostgreSQL.CloseConnection(Connection); - - // END - - Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Closing"); - -EndProcedure - -Procedure PostgreSQL_CreateDatabase(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "postgres"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Base = "testbase1"; - - Deletion = OPI_PostgreSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP - OPI_TestDataRetrieval.LogServiceInformation(Deletion, "CreateDatabase (deleting)", "PostgreSQL"); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); - - // END - - Process(Result, "PostgreSQL", "CreateDatabase"); - - Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); - - Process(Connection, "PostgreSQL", "CreateDatabase", "Openning"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); - - Process(Result, "PostgreSQL", "CreateDatabase", "Existing"); - - Base = "testbase2"; - - OPI_PostgreSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); - - Process(Result, "PostgreSQL", "CreateDatabase", "New"); - - OPI_PostgreSQL.CloseConnection(Connection); - -EndProcedure - -Procedure PostgreSQL_CreateTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("bool_field" , "BOOL"); - ColoumnsStruct.Insert("oldchar_field" , """char"""); - ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); - ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL"); - ColoumnsStruct.Insert("int_field" , "INT"); - ColoumnsStruct.Insert("serial_field" , "SERIAL"); - ColoumnsStruct.Insert("oid_field" , "OID"); - ColoumnsStruct.Insert("bigint_field" , "BIGINT"); - ColoumnsStruct.Insert("bigserial_field" , "BIGSERIAL"); - ColoumnsStruct.Insert("real_field" , "REAL"); - ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION"); - ColoumnsStruct.Insert("text_field" , "TEXT"); - ColoumnsStruct.Insert("varchar_field" , "VARCHAR"); - ColoumnsStruct.Insert("charn_field" , "CHAR(3)"); - ColoumnsStruct.Insert("char_field" , "CHAR"); - ColoumnsStruct.Insert("name_field" , "NAME"); - ColoumnsStruct.Insert("bytea_field" , "BYTEA"); - ColoumnsStruct.Insert("ts_field" , "TIMESTAMP"); - ColoumnsStruct.Insert("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); - ColoumnsStruct.Insert("ip_field" , "INET"); - ColoumnsStruct.Insert("json_field" , "JSON"); - ColoumnsStruct.Insert("jsonb_field" , "JSONB"); - ColoumnsStruct.Insert("date_field" , "DATE"); - ColoumnsStruct.Insert("time_field" , "TIME"); - ColoumnsStruct.Insert("uuid_field" , "UUID"); - ColoumnsStruct.Insert("numeric_field" , "NUMERIC(15, 2)"); - - OPI_PostgreSQL.DeleteTable(Table, ConnectionString, TLSSettings); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols", ColoumnsStruct); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); - - // END - - Process(Result, "PostgreSQL", "CreateTable"); - - Table = "ABC DEF"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); - - Process(Result, "PostgreSQL", "CreateTable", "Name error"); - - Table = "somename"; - ColoumnsStruct.Insert("wtf_field", "WTF"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); - - Process(Result, "PostgreSQL", "CreateTable", "Type error"); - -EndProcedure - -Procedure PostgreSQL_GetTableInformation(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); - - // END - - Process(Result, "PostgreSQL", "GetTableInformation"); - - Table = "heyho"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); - - Process(Result, "PostgreSQL", "GetTableInformation", "Error"); - -EndProcedure - -Procedure PostgreSQL_AddRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - RecordsArray = New Array; - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - CasualStructure = New Structure("key,value", "ItsKey", 10); - - CurrentDate = OPI_Tools.GetCurrentDate(); - CurrentDateTZ = OPI_Tools.DateRFC3339(CurrentDate, "+05:00"); - - RecordStructure = New Structure; - RecordStructure.Insert("bool_field" , New Structure("BOOL" , True)); - RecordStructure.Insert("oldchar_field" , New Structure("OLDCHAR" , 1)); // or "char" - RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 5)); - RecordStructure.Insert("smallserial_field", New Structure("SMALLSERIAL" , 6)); - RecordStructure.Insert("int_field" , New Structure("INT" , 100)); - RecordStructure.Insert("serial_field" , New Structure("SERIAL" , 100)); - RecordStructure.Insert("oid_field" , New Structure("OID" , 24576)); - RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999)); - RecordStructure.Insert("bigserial_field" , New Structure("BIGSERIAL" , 9999999)); - RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2)); - RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION" , 1.0002)); // or DOUBLE PRECISION - RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text")); - RecordStructure.Insert("varchar_field" , New Structure("VARCHAR" , "Some varchar")); - RecordStructure.Insert("charn_field" , New Structure("CHAR" , "AAA")); - RecordStructure.Insert("char_field" , New Structure("CHAR" , "A")); - RecordStructure.Insert("name_field" , New Structure("NAME" , "Vitaly")); - RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image)); - RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , CurrentDate)); - RecordStructure.Insert("tswtz_field" , New Structure("TIMESTAMP_WITH_TIME_ZONE", CurrentDateTZ)); // or TIMESTAMP WITH TIME ZONE - RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1")); - RecordStructure.Insert("json_field" , New Structure("JSON" , CasualStructure)); - RecordStructure.Insert("jsonb_field" , New Structure("JSONB" , CasualStructure)); - RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); - RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); - RecordStructure.Insert("uuid_field" , New Structure("UUID" , New UUID)); - RecordStructure.Insert("numeric_field" , New Structure("NUMERIC" , "15.2")); - - RecordsArray.Add(RecordStructure); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows", RecordsArray); - Options.Insert("trn", True); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "AddRecords", Options); - - // END - - Process(Result, "PostgreSQL", "AddRecords"); - -EndProcedure - -Procedure PostgreSQL_GetRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - // All records without filters - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); - - Process(Result, "PostgreSQL", "GetRecords"); // SKIP - - // Filter, selected fields, limit and sorting - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , "test_data"); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - Table = "test_data"; - - Fields = New Array; - Fields.Add("first_name"); - Fields.Add("last_name"); - Fields.Add("email"); - - Filters = New Array; - - FilterStructure1 = New Structure; - - FilterStructure1.Insert("field", "gender"); - FilterStructure1.Insert("type" , "="); - FilterStructure1.Insert("value", "Male"); - FilterStructure1.Insert("union", "AND"); - FilterStructure1.Insert("raw" , False); - - FilterStructure2 = New Structure; - - FilterStructure2.Insert("field", "id"); - FilterStructure2.Insert("type" , "BETWEEN"); - FilterStructure2.Insert("value", "20 AND 50"); - FilterStructure2.Insert("raw" , True); - - Filters.Add(FilterStructure1); - Filters.Add(FilterStructure2); - - Sort = New Structure("ip_address", "DESC"); - Count = 5; - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", Fields); - Options.Insert("filter", Filters); - Options.Insert("order" , Sort); - Options.Insert("limit" , Count); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); - - // END - - Process(Result, "PostgreSQL", "GetRecords", "Filters"); - -EndProcedure - -Procedure PostgreSQL_UpdateRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "test_data"; - - FieldsStructure = New Structure; - FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "gender"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); - FilterStructure.Insert("raw" , False); - - Filters.Add(FilterStructure); - - Count = OPI_PostgreSQl.GetRecords(Table, , Filters, , , ConnectionString); // SKIP - Process(Count, "PostgreSQL", "UpdateRecords", "Count"); // SKIP - Count = Count["data"].Count(); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Result = OPI_PostgreSQl.UpdateRecords(Table - , FieldsStructure - , FilterStructure - , ConnectionString - , TLSSettings); - - // END - - Process(Result, "PostgreSQL", "UpdateRecords"); - - Check = OPI_PostgreSQl.GetRecords(Table, "['ip_address']", Filters, , , ConnectionString); - - Process(Check, "PostgreSQL", "UpdateRecords", "Check", Count, FieldsStructure); - -EndProcedure - -Procedure PostgreSQL_DeleteRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "test_data"; - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "gender"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); - FilterStructure.Insert("raw" , False); - FilterStructure.Insert("union", "AND"); - - Filters.Add(FilterStructure); - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "ip_address"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1")); - FilterStructure.Insert("raw" , False); - - Obtaining = OPI_PostgreSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("filter", Filters); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteRecords", Options); - - // END - - Process(Obtaining, "PostgreSQL", "DeleteRecords", "Obtaining"); - - Count = Obtaining["data"].Count(); - Residue = 100 - Count; - - Process(Result, "PostgreSQL", "DeleteRecords"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); - - Process(Result, "PostgreSQL", "DeleteRecords", "Check", Residue); - -EndProcedure - -Procedure PostgreSQL_DeleteTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTable", Options); - - // END - - Process(Result, "PostgreSQL", "DeleteTable"); - - Base = "test_data"; - Table = "test_data"; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTable", Options); - - Process(Result, "PostgreSQL", "DeleteTable", "Test"); - -EndProcedure - -Procedure PostgreSQL_DeleteDatabase(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "postgres"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Base = "testbase1"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); - - // END - - Process(Result, "PostgreSQL", "DeleteDatabase"); - - Base = "testbase2"; - - Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); - - Process(Connection, "PostgreSQL", "DeleteDatabase", "Openning"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DisableAllDatabaseConnections", Options); - - Process(Result, "PostgreSQL", "DeleteDatabase", "Shutdown"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); - - Process(Result, "PostgreSQL", "DeleteDatabase", "Deletion"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); - - Process(Result, "PostgreSQL", "DeleteDatabase", "Error"); - - Closing = OPI_PostgreSQL.CloseConnection(Connection); - - Process(Closing, "PostgreSQL", "DeleteDatabase", "Closing"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); - - Process(Result, "PostgreSQL", "DeleteDatabase", "Connection error"); - -EndProcedure - -Procedure PostgreSQL_ClearTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ClearTable", Options); - - // END - - Process(Result, "PostgreSQL", "ClearTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); - - Process(Result, "PostgreSQL", "ClearTable", "Check"); - -EndProcedure - -Procedure PostgreSQL_DisableAllDatabaseConnections(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DisableAllDatabaseConnections", Options); - - // END - - Process(Result, "PostgreSQL", "DisableAllDatabaseConnections"); - -EndProcedure - -Procedure PostgreSQL_EnsureRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "test_merge"; - - ColoumnsStruct = New Structure; // SKIP - ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP - ColoumnsStruct.Insert("name" , "TEXT"); // SKIP - ColoumnsStruct.Insert("age" , "INT"); // SKIP - ColoumnsStruct.Insert("salary", "REAL"); // SKIP - OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP - - DataArray = New Array; - - RowStructure2 = New Structure; - RowStructure2.Insert("id" , New Structure("INT" , 1)); - RowStructure2.Insert("name" , New Structure("TEXT", "Vitaly")); - RowStructure2.Insert("age" , New Structure("INT" , 25)); - RowStructure2.Insert("salary", New Structure("REAL", 1000.12)); - - RowStructure1 = New Structure; - RowStructure1.Insert("id" , New Structure("INT" , 2)); - RowStructure1.Insert("name" , New Structure("TEXT", "Lesha")); - RowStructure1.Insert("age" , New Structure("INT" , 20)); - RowStructure1.Insert("salary", New Structure("REAL", 200.20)); - - DataArray.Add(RowStructure2); - DataArray.Add(RowStructure1); - - KeyFields = New Array; - KeyFields.Add("id"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("rows" , DataArray); - Options.Insert("unique", KeyFields); - Options.Insert("db" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureRecords", Options); - - // END - - Process(Result, "PostgreSQL", "EnsureRecords", "Insertion"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); - Process(Check, "PostgreSQL", "EnsureRecords", "Insertion check"); - - RowStructure2.Insert("name" , New Structure("TEXT", "Vitaly Updated")); - RowStructure2.Insert("salary", New Structure("REAL", 1500.50)); - - StringStructure3 = New Structure; - StringStructure3.Insert("id" , New Structure("INT" , 3)); - StringStructure3.Insert("name" , New Structure("TEXT", "Anton")); - StringStructure3.Insert("age" , New Structure("INT" , 30)); - StringStructure3.Insert("salary", New Structure("REAL", 3000.00)); - - DataArray = New Array; - DataArray.Add(RowStructure2); - DataArray.Add(StringStructure3); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("rows" , DataArray); - Options.Insert("unique", KeyFields); - Options.Insert("db" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureRecords", Options); - - Process(Result, "PostgreSQL", "EnsureRecords", "Updating"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); - Process(Check, "PostgreSQL", "EnsureRecords", "Updating check"); - - OPI_PostgreSQL.DeleteTable(Table, ConnectionString, TLSSettings); - -EndProcedure - -Procedure PostgreSQL_GetRecordsFilterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecordsFilterStructure", Options); - - // END - - Process(Result, "PostgreSQL", "GetRecordsFilterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecordsFilterStructure", Options); - - Process(Result, "PostgreSQL", "GetRecordsFilterStructure", "Clear"); - -EndProcedure - -Procedure PostgreSQL_GetTLSSettings(FunctionParameters) - - Options = New Structure; - Options.Insert("trust", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - - // END - - Process(Result, "PostgreSQL", "GetTLSSettings"); - -EndProcedure - -Procedure PostgreSQL_AddTableColumn(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - Name = "new_field"; - DataType = "TEXT"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name" , Name); - Options.Insert("type" , DataType); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "AddTableColumn", Options); - - // END - - Process(Result, "PostgreSQL", "AddTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); - - Process(Result, "PostgreSQL", "AddTableColumn", "Check"); - -EndProcedure - -Procedure PostgreSQL_DeleteTableColumn(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - Name = "new_field"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name" , Name); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTableColumn", Options); - - // END - - Process(Result, "PostgreSQL", "DeleteTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); - - Process(Result, "PostgreSQL", "DeleteTableColumn", "Check"); - -EndProcedure - -Procedure PostgreSQL_EnsureTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 5432; - Port = ?(TLS, 5433, 5432); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); - ColoumnsStruct.Insert("uuid_field" , "uuid"); - ColoumnsStruct.Insert("bigint_field" , "BIGINT"); - ColoumnsStruct.Insert("custom_field" , "TEXT"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureTable", Options); - - // END - - Process(Result, "PostgreSQL", "EnsureTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); - - Process(Check, "PostgreSQL", "EnsureTable", "Check", ColoumnsStruct); - - Table = "test_new"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureTable", Options); - - Process(Result, "PostgreSQL", "EnsureTable", "New"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); - - Process(Check, "PostgreSQL", "EnsureTable", "Check", ColoumnsStruct); - -EndProcedure - -#EndRegion - -#Region MySQL - -Procedure MySQL_GenerateConnectionString(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = ""; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - // END - - Result = StrReplace(Result, Password, "***"); - Result = StrReplace(Result, Address , "127.0.0.1"); - - Process(Result, "MySQL", "GenerateConnectionString"); - -EndProcedure - -Procedure MySQL_CreateConnection(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = ""; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Result = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); - - // END - - OPI_MySQL.CloseConnection(Result); - Process(Result, "MySQL", "CreateConnection"); - -EndProcedure - -Procedure MySQL_CloseConnection(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = ""; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); - Result = OPI_MySQL.CloseConnection(Connection); - - // END - - Process(Result, "MySQL", "CloseConnection"); - -EndProcedure - -Procedure MySQL_IsConnector(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = ""; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); - Result = OPI_MySQL.IsConnector(Connection); - - OPI_MySQL.CloseConnection(Result); - - // END - - Process(Result, "MySQL", "IsConnector"); - -EndProcedure - -Procedure MySQL_ExecuteSQLQuery(FunctionParameters) - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); - - OPI_MySQL.DeleteTable("users" , Connection); // SKIP - OPI_MySQL.DeleteTable("test_data" , Connection); // SKIP - OPI_MySQL.DeleteTable("test_table", Connection); // SKIP - - Process(Connection, "MySQL", "ExecuteSQLQuery", "Connection"); // SKIP - - // CREATE - - QueryText = " - |CREATE TABLE test_table ( - |id INT AUTO_INCREMENT PRIMARY KEY, - |name VARCHAR(255), - |age INT, - |salary DOUBLE, - |amount FLOAT, - |type TINYINT UNSIGNED, - |date DATE, - |time TIME, - |data MEDIUMBLOB - |);"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); - - Process(Result, "MySQL", "ExecuteSQLQuery", "Create"); // SKIP - - // INSERT with parameters - - QueryText = " - |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) - |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; - - ParameterArray = New Array; - ParameterArray.Add(New Structure("TEXT" , "Vitaly")); - ParameterArray.Add(New Structure("INT" , 25)); - ParameterArray.Add(New Structure("DOUBLE", 1000.12)); - ParameterArray.Add(New Structure("FLOAT" , 1000.12)); - ParameterArray.Add(New Structure("UINT" , 1)); - ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate())); - ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate())); - ParameterArray.Add(New Structure("BYTES" , Image)); - - Options = New Structure; - Options.Insert("sql" , QueryText); - Options.Insert("params", ParameterArray); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); - - Process(Result, "MySQL", "ExecuteSQLQuery", "Insert"); // SKIP - - // SELECT (The result of this query is shown in the Result block) - - QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); - - Process(Result, "MySQL", "ExecuteSQLQuery", , Image); // SKIP - - Result = OPI_MySQL.ExecuteSQLQuery("create table test_data (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Connection); // SKIP - Process(Result, "MySQL", "ExecuteSQLQuery", "Test data"); // SKIP - - // SQL query from file - - SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file - - Options = New Structure; - Options.Insert("sql", SQLFile); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); - - Process(Result, "MySQL", "ExecuteSQLQuery", "File"); // SKIP - - Closing = OPI_MySQL.CloseConnection(Connection); - - // END - - Process(Closing, "MySQL", "ExecuteSQLQuery", "Closing"); // SKIP - -EndProcedure - -Procedure MySQL_CreateDatabase(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = ""; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Base = "testbase1"; - - OPI_MySQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); - - // END - - Process(Result, "MySQL", "CreateDatabase"); - - Base = "testbase2"; - OPI_MySQL.DeleteDatabase(Base, ConnectionString, TLSSettings); - - Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); - - Process(Connection, "MySQL", "CreateDatabase", "Openning"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); - - Process(Result, "MySQL", "CreateDatabase", "Creation"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); - - Process(Result, "MySQL", "CreateDatabase", "Existing"); - - OPI_MySQL.CloseConnection(Connection); - -EndProcedure - -Procedure MySQL_CreateTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("char_field" , "CHAR(5)"); - ColoumnsStruct.Insert("varchar_field" , "VARCHAR(255)"); - ColoumnsStruct.Insert("tinytext_field" , "TINYTEXT"); - ColoumnsStruct.Insert("text_field" , "TEXT"); - ColoumnsStruct.Insert("mediumtext_field", "MEDIUMTEXT"); - ColoumnsStruct.Insert("longtext_field" , "LONGTEXT"); - ColoumnsStruct.Insert("tinyint_field" , "TINYINT"); - ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); - ColoumnsStruct.Insert("mediumint_field" , "MEDIUMINT"); - ColoumnsStruct.Insert("int_field" , "INT"); - ColoumnsStruct.Insert("uint_field" , "INT UNSIGNED"); - ColoumnsStruct.Insert("bigint_field" , "BIGINT"); - ColoumnsStruct.Insert("float_field" , "FLOAT"); - ColoumnsStruct.Insert("double_field" , "DOUBLE"); - ColoumnsStruct.Insert("date_field" , "DATE"); - ColoumnsStruct.Insert("time_field" , "TIME"); - ColoumnsStruct.Insert("datetime_field" , "DATETIME"); - ColoumnsStruct.Insert("timestamp_field" , "TIMESTAMP"); - ColoumnsStruct.Insert("mediumblob_field", "MEDIUMBLOB"); - ColoumnsStruct.Insert("set_field" , "SET('one','two','three')"); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols", ColoumnsStruct); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); - - // END - - Process(Result, "MySQL", "CreateTable"); - - Table = "ABC DEF"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); - - Process(Result, "MySQL", "CreateTable", "Name error"); - - Table = "somename"; - ColoumnsStruct.Insert("wtf_field", "WTF"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); - - Process(Result, "MySQL", "CreateTable", "Type error"); - -EndProcedure - -Procedure MySQL_AddRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - RecordsArray = New Array; - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - CurrentDate = OPI_Tools.GetCurrentDate(); - - RecordStructure = New Structure; - RecordStructure.Insert("char_field" , New Structure("TEXT" , "AAAAA")); - RecordStructure.Insert("varchar_field" , New Structure("TEXT" , "Some varchar")); - RecordStructure.Insert("tinytext_field" , New Structure("TEXT" , "Some tiny text")); - RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text")); - RecordStructure.Insert("mediumtext_field", New Structure("TEXT" , "Some medium text")); - RecordStructure.Insert("longtext_field" , New Structure("TEXT" , "Some looooooong text")); - RecordStructure.Insert("tinyint_field" , New Structure("INT" , 127)); - RecordStructure.Insert("smallint_field" , New Structure("INT" , -32767)); - RecordStructure.Insert("mediumint_field" , New Structure("INT" , 8388607)); - RecordStructure.Insert("int_field" , New Structure("INT" , -2147483647)); - RecordStructure.Insert("uint_field" , New Structure("UINT" , 4294967295)); - RecordStructure.Insert("bigint_field" , New Structure("INT" , 9223372036854775807)); - RecordStructure.Insert("float_field" , New Structure("FLOAT" , 100.50)); - RecordStructure.Insert("double_field" , New Structure("FLOAT" , 100.512123)); - RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); - RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); - RecordStructure.Insert("datetime_field" , New Structure("DATE" , CurrentDate)); - RecordStructure.Insert("timestamp_field" , New Structure("DATE" , CurrentDate)); - RecordStructure.Insert("mediumblob_field", New Structure("BYTES" , Image)); - RecordStructure.Insert("set_field" , New Structure("TEXT" , "one")); - - RecordsArray.Add(RecordStructure); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows", RecordsArray); - Options.Insert("trn", True); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "AddRecords", Options); - - // END - - Process(Result, "MySQL", "AddRecords"); - -EndProcedure - -Procedure MySQL_GetRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - // All records without filters - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - - Process(Result, "MySQL", "GetRecords"); // SKIP - - // Filter, selected fields, limit and sorting - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , "test_data"); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - Table = "test_data"; - - Fields = New Array; - Fields.Add("first_name"); - Fields.Add("last_name"); - Fields.Add("email"); - - Filters = New Array; - - FilterStructure1 = New Structure; - - FilterStructure1.Insert("field", "gender"); - FilterStructure1.Insert("type" , "="); - FilterStructure1.Insert("value", "Male"); - FilterStructure1.Insert("union", "AND"); - FilterStructure1.Insert("raw" , False); - - FilterStructure2 = New Structure; - - FilterStructure2.Insert("field", "id"); - FilterStructure2.Insert("type" , "BETWEEN"); - FilterStructure2.Insert("value", "20 AND 50"); - FilterStructure2.Insert("raw" , True); - - Filters.Add(FilterStructure1); - Filters.Add(FilterStructure2); - - Sort = New Structure("ip_address", "DESC"); - Count = 5; - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", Fields); - Options.Insert("filter", Filters); - Options.Insert("order" , Sort); - Options.Insert("limit" , Count); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - - // END - - Process(Result, "MySQL", "GetRecords", "Filters"); - -EndProcedure - -Procedure MySQL_UpdateRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "test_data"; - - FieldsStructure = New Structure; - FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "gender"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); - FilterStructure.Insert("raw" , False); - - Filters.Add(FilterStructure); - - Count = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP - Process(Count, "MySQL", "UpdateRecords", "Count"); // SKIP - Count = Count["data"].Count(); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("values", FieldsStructure); - Options.Insert("filter", FilterStructure); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "UpdateRecords", Options); - - // END - - Process(Result, "MySQL", "UpdateRecords"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "['ip_address']"); - Options.Insert("filter", Filters); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - - Process(Check, "MySQL", "UpdateRecords", "Check", Count, FieldsStructure); - -EndProcedure - -Procedure MySQL_DeleteRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "test_data"; - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "gender"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); - FilterStructure.Insert("raw" , False); - FilterStructure.Insert("union", "AND"); - - Filters.Add(FilterStructure); - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "ip_address"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1")); - FilterStructure.Insert("raw" , False); - - Obtaining = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("filter", Filters); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteRecords", Options); - - // END - - Process(Obtaining, "MySQL", "DeleteRecords", "Obtaining"); - - Count = Obtaining["data"].Count(); - Residue = 100 - Count; - - Process(Result, "MySQL", "DeleteRecords"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - - Process(Result, "MySQL", "DeleteRecords", "Check", Residue); - -EndProcedure - -Procedure MySQL_DeleteTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options); - - // END - - Process(Result, "MySQL", "DeleteTable"); - - Base = "test_data"; - Table = "test_data"; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options); - - Process(Result, "MySQL", "DeleteTable", "Test"); - -EndProcedure - -Procedure MySQL_DeleteDatabase(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = ""; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Base = "testbase1"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); - - // END - - Process(Result, "MySQL", "DeleteDatabase"); - - Base = "testbase2"; - - Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); - - Process(Connection, "MySQL", "DeleteDatabase", "Openning"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); - - Process(Result, "MySQL", "DeleteDatabase", "Deletion"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); - - Process(Result, "MySQL", "DeleteDatabase", "Error"); - - Closing = OPI_MySQL.CloseConnection(Connection); - - Process(Closing, "MySQL", "DeleteDatabase", "Closing"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); - - Process(Result, "MySQL", "DeleteDatabase", "Connection error"); - -EndProcedure - -Procedure MySQL_ClearTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ClearTable", Options); - - // END - - Process(Result, "MySQL", "ClearTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - - Process(Result, "MySQL", "ClearTable", "Check"); - -EndProcedure - -Procedure MySQL_EnsureRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "test_merge"; - - ColoumnsStruct = New Structure; // SKIP - ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP - ColoumnsStruct.Insert("name" , "TEXT"); // SKIP - ColoumnsStruct.Insert("age" , "INT"); // SKIP - ColoumnsStruct.Insert("salary", "DOUBLE"); // SKIP - OPI_MySQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP - - DataArray = New Array; - - RowStructure2 = New Structure; - RowStructure2.Insert("id" , New Structure("INT" , 1)); - RowStructure2.Insert("name" , New Structure("TEXT" , "Vitaly")); - RowStructure2.Insert("age" , New Structure("INT" , 25)); - RowStructure2.Insert("salary", New Structure("DOUBLE", 1000.12)); - - RowStructure1 = New Structure; - RowStructure1.Insert("id" , New Structure("INT" , 2)); - RowStructure1.Insert("name" , New Structure("TEXT" , "Lesha")); - RowStructure1.Insert("age" , New Structure("INT" , 20)); - RowStructure1.Insert("salary", New Structure("DOUBLE", 200.20)); - - DataArray.Add(RowStructure2); - DataArray.Add(RowStructure1); - - KeyFields = New Array; - KeyFields.Add("id"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , DataArray); - Options.Insert("db" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureRecords", Options); - - // END - - Process(Result, "MySQL", "EnsureRecords", "Insertion"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - Process(Check, "MySQL", "EnsureRecords", "Insertion check"); - - RowStructure2.Insert("name" , New Structure("TEXT" , "Vitaly Updated")); - RowStructure2.Insert("salary", New Structure("DOUBLE", 1500.50)); - - StringStructure3 = New Structure; - StringStructure3.Insert("id" , New Structure("INT" , 3)); - StringStructure3.Insert("name" , New Structure("TEXT" , "Anton")); - StringStructure3.Insert("age" , New Structure("INT" , 30)); - StringStructure3.Insert("salary", New Structure("DOUBLE", 3000.00)); - - DataArray = New Array; - DataArray.Add(RowStructure2); - DataArray.Add(StringStructure3); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows" , DataArray); - Options.Insert("db" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureRecords", Options); - - Process(Result, "MySQL", "EnsureRecords", "Updating"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); - Process(Check, "MySQL", "EnsureRecords", "Updating check"); - - OPI_MySQL.DeleteTable(Table, ConnectionString, TLSSettings); - -EndProcedure - -Procedure MySQL_GetRecordsFilterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecordsFilterStructure", Options); - - // END - - Process(Result, "MySQL", "GetRecordsFilterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecordsFilterStructure", Options); - - Process(Result, "MySQL", "GetRecordsFilterStructure", "Clear"); - -EndProcedure - -Procedure MySQL_GetTLSSettings(FunctionParameters) - - Options = New Structure; - Options.Insert("trust", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - - // END - - Process(Result, "MySQL", "GetTLSSettings"); - -EndProcedure - -Procedure MySQL_GetTableInformation(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); - - // END - - Process(Result, "MySQL", "GetTableInformation"); - - Table = "heyho"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); - - Process(Result, "MySQL", "GetTableInformation", "Error"); - -EndProcedure - -Procedure MySQL_AddTableColumn(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - Name = "new_field"; - DataType = "MEDIUMTEXT"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name", Name); - Options.Insert("type", DataType); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "AddTableColumn", Options); - - // END - - Process(Result, "MySQL", "AddTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); - - Process(Result, "MySQL", "AddTableColumn", "Check"); - -EndProcedure - -Procedure MySQL_DeleteTableColumn(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - Name = "new_field"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name", Name); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTableColumn", Options); - - // END - - Process(Result, "MySQL", "DeleteTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); - - Process(Result, "MySQL", "DeleteTableColumn", "Check"); - -EndProcedure - -Procedure MySQL_EnsureTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - TLS = True; - TLS = FunctionParameters["TLS"]; // SKIP - - Port = 3306; - Port = ?(TLS, 3307, 3306); // SKIP - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("port" , Port); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); - - If TLS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); - Else - TLSSettings = Undefined; - EndIf; - - Table = "testtable"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); - ColoumnsStruct.Insert("double_field" , "DOUBLE"); - ColoumnsStruct.Insert("bigint_field" , "BIGINT"); - ColoumnsStruct.Insert("custom_field" , "TEXT"); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols", ColoumnsStruct); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureTable", Options); - - // END - - Process(Result, "MySQL", "EnsureTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); - - Process(Check, "MySQL", "EnsureTable", "Check", ColoumnsStruct); - - Table = "test_new"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureTable", Options); - - Process(Result, "MySQL", "EnsureTable", "New"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); - - Process(Check, "MySQL", "EnsureTable", "Check", ColoumnsStruct); - -EndProcedure - -#EndRegion - -#Region GreenAPI - -Procedure GreenAPI_FormAccessParameters(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - - // END - - Process(Result, "GreenAPI", "FormAccessParameters"); - -EndProcedure - -Procedure GreenAPI_GetInstanceSettings(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceSettings", Options); - - // END - - Process(Result, "GreenAPI", "GetInstanceSettings", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_GetAccountInformation(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetAccountInformation", Options); - - // END - - Process(Result, "GreenAPI", "GetAccountInformation"); - -EndProcedure - -Procedure GreenAPI_GetInstanceSettingsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceSettingsStructure", Options); - - // END - - Process(Result, "GreenAPI", "GetInstanceSettingsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceSettingsStructure", Options); - - Process(Result, "GreenAPI", "GetInstanceSettingsStructure", "Clear"); - -EndProcedure - -Procedure GreenAPI_SetInstanceSettings(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - - SettingsStructure = New Structure; - SettingsStructure.Insert("pollMessageWebhook" , "yes"); - SettingsStructure.Insert("incomingBlockWebhook" , "no"); - SettingsStructure.Insert("incomingCallWebhook" , "no"); - SettingsStructure.Insert("editedMessageWebhook" , "yes"); - SettingsStructure.Insert("deletedMessageWebhook" , "yes"); - SettingsStructure.Insert("outgoingAPIMessageWebhook", "yes"); - - Options = New Structure; - Options.Insert("settings", SettingsStructure); - Options.Insert("access" , AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetInstanceSettings", Options); - - // END - - Process(Result, "GreenAPI", "SetInstanceSettings"); - -EndProcedure - -Procedure GreenAPI_GetInstanceStatus(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceStatus", Options); - - // END - - Process(Result, "GreenAPI", "GetInstanceStatus"); - -EndProcedure - -Procedure GreenAPI_RebootInstance(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "RebootInstance", Options); - - // END - - Process(Result, "GreenAPI", "RebootInstance"); - -EndProcedure - -Procedure GreenAPI_GetQR(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetQR", Options); - - // END - - Process(Result, "GreenAPI", "GetQR"); - -EndProcedure - -Procedure GreenAPI_LogoutInstance(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "LogoutInstance", Options); - - // END - - Process(Result, "GreenAPI", "LogoutInstance"); - -EndProcedure - -Procedure GreenAPI_GetAuthorizationCode(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - PhoneNumber = 441234567890; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("phone" , PhoneNumber); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetAuthorizationCode", Options); - - // END - - Process(Result, "GreenAPI", "GetAuthorizationCode"); - -EndProcedure - -Procedure GreenAPI_SetProfilePicture(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("picture", Image); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetProfilePicture", Options); - - // END - - Process(Result, "GreenAPI", "SetProfilePicture"); - -EndProcedure - -Procedure GreenAPI_CreateGroup(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Name = "New group"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("name" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "CreateGroup", Options); - - // END - - Process(Result, "GreenAPI", "CreateGroup", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_LeaveGroup(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "LeaveGroup", Options); - - // END - - Process(Result, "GreenAPI", "LeaveGroup"); - -EndProcedure - -Procedure GreenAPI_GetGroupInformation(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetGroupInformation", Options); - - // END - - Process(Result, "GreenAPI", "GetGroupInformation"); - -EndProcedure - -Procedure GreenAPI_UpdateGroupName(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - Name = "New name"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - Options.Insert("name" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "UpdateGroupName", Options); - - // END - - Process(Result, "GreenAPI", "UpdateGroupName"); - -EndProcedure - -Procedure GreenAPI_AddGroupMember(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - UserID = "123123123@c.us"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "AddGroupMember", Options); - - // END - - Process(Result, "GreenAPI", "AddGroupMember"); - -EndProcedure - -Procedure GreenAPI_ExcludeGroupMember(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - UserID = "123123123@c.us"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ExcludeGroupMember", Options); - - // END - - Process(Result, "GreenAPI", "ExcludeGroupMember"); - -EndProcedure - -Procedure GreenAPI_SetAdminRights(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - UserID = "123123123@c.us"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetAdminRights", Options); - - // END - - Process(Result, "GreenAPI", "SetAdminRights"); - -EndProcedure - -Procedure GreenAPI_RevokeAdminRights(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - GroupID = FunctionParameters["GreenAPI_GroupID"]; - UserID = "123123123@c.us"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("group" , GroupID); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "RevokeAdminRights", Options); - - // END - - Process(Result, "GreenAPI", "RevokeAdminRights"); - -EndProcedure - -Procedure GreenAPI_SetGroupPicture(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - GroupID = FunctionParameters["GreenAPI_GroupID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("group" , GroupID); - Options.Insert("picture", Image); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetGroupPicture", Options); - - // END - - Process(Result, "GreenAPI", "SetGroupPicture"); - -EndProcedure - -Procedure GreenAPI_SendTextMessage(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - Text = "New message"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendTextMessage", Options); - - // END - - Process(Result, "GreenAPI", "SendTextMessage", , FunctionParameters); - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("quoted", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendTextMessage", Options); - - Process(Result, "GreenAPI", "SendTextMessage", "Quote"); - -EndProcedure - -Procedure GreenAPI_DeleteMessage(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - MessageID = FunctionParameters["GreenAPI_MessageID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "DeleteMessage", Options); - - // END - - Process(Result, "GreenAPI", "DeleteMessage"); - -EndProcedure - -Procedure GreenAPI_EditMessageText(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - MessageID = FunctionParameters["GreenAPI_MessageID"]; - Text = "New message text"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "EditMessageText", Options); - - // END - - Process(Result, "GreenAPI", "EditMessageText"); - -EndProcedure - -Procedure GreenAPI_SendFile(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - File = FunctionParameters["Picture"]; // URL, Path or Binary Data - FileName = "photo.jpg"; - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - Description = "File description"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("file" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFile", Options); - - // END - - Process(Result, "GreenAPI", "SendFile", , FunctionParameters); - - File = FunctionParameters["Video"]; - FileName = "vid.mp4"; - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("file" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - Options.Insert("quoted" , MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFile", Options); - - Process(Result, "GreenAPI", "SendFile", "Quote"); - -EndProcedure - -Procedure GreenAPI_SendFileByURL(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - File = FunctionParameters["Picture"]; - FileName = "photo.jpg"; - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - Description = "File description"; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("url" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFileByURL", Options); - - // END - - Process(Result, "GreenAPI", "SendFileByURL", , FunctionParameters); - - File = FunctionParameters["Video"]; - FileName = "vid.mp4"; - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("url" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - Options.Insert("quoted" , MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFileByURL", Options); - - Process(Result, "GreenAPI", "SendFileByURL", "Quote"); - -EndProcedure - -Procedure GreenAPI_SendPoll(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - Text = "What's your favorite color??"; - - Variants = New Array; - Variants.Add("Red"); - Variants.Add("Yellow"); - Variants.Add("Green"); - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("options", Variants); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendPoll", Options); - - // END - - Process(Result, "GreenAPI", "SendPoll", , FunctionParameters); - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("options", Variants); - Options.Insert("multi" , True); - Options.Insert("quoted" , MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendPoll", Options); - - Process(Result, "GreenAPI", "SendPoll", "Quote"); - -EndProcedure - -Procedure GreenAPI_GetLocationDescription(FunctionParameters) - - Latitude = 53.908522; - Longitude = 27.574821; - Address = "Victory Square, Minsk"; - Name = "Victory sq."; - - Options = New Structure; - Options.Insert("lat" , Latitude); - Options.Insert("long", Longitude); - Options.Insert("addr", Address); - Options.Insert("name", Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetLocationDescription", Options); - - // END - - Process(Result, "GreenAPI", "GetLocationDescription"); - -EndProcedure - -Procedure GreenAPI_SendLocation(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - - Latitude = 53.908522; - Longitude = 27.574821; - Address = "Victory Square, Minsk"; - Name = "Victory sq."; - - Options = New Structure; - Options.Insert("lat" , Latitude); - Options.Insert("long", Longitude); - Options.Insert("addr", Address); - Options.Insert("name", Name); - - Location = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetLocationDescription", Options); - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("loc" , Location); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendLocation", Options); - - // END - - Process(Result, "GreenAPI", "SendLocation", , FunctionParameters); - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("lat" , Latitude); - Options.Insert("long", Longitude); - - Location = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetLocationDescription", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("loc" , Location); - Options.Insert("quoted", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendLocation", Options); - - Process(Result, "GreenAPI", "SendLocation", "Quote"); - -EndProcedure - -Procedure GreenAPI_GetContactDescription(FunctionParameters) - - Phone = 79001234568; - Name = "Artem"; - LastName = "Evpatoriysky"; - Patronymic = "Petrovich"; - Company = "Bicycle"; - - Options = New Structure; - Options.Insert("phone" , Phone); - Options.Insert("name" , Name); - Options.Insert("surname", LastName); - Options.Insert("midname", Patronymic); - Options.Insert("company", Company); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetContactDescription", Options); - - // END - - Process(Result, "GreenAPI", "GetContactDescription"); - -EndProcedure - -Procedure GreenAPI_SendContact(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - - Phone = 79001234568; - Name = "Artem"; - LastName = "Evpatoriysky"; - Patronymic = "Petrovich"; - Company = "Bicycle"; - - Options = New Structure; - Options.Insert("phone" , Phone); - Options.Insert("name" , Name); - Options.Insert("surname", LastName); - Options.Insert("midname", Patronymic); - Options.Insert("company", Company); - - Contact = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetContactDescription", Options); - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("contact", Contact); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendContact", Options); - - // END - - Process(Result, "GreenAPI", "SendContact", , FunctionParameters); - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("phone" , Phone); - Options.Insert("company", Company); - - Contact = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetContactDescription", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("contact", Contact); - Options.Insert("quoted" , MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendContact", Options); - - Process(Result, "GreenAPI", "SendContact", "Quote"); - -EndProcedure - -Procedure GreenAPI_ForwardMessages(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - From = "11001234567@c.us"; - From = FunctionParameters["GreenAPI_TestGroupID"]; // SKIP - Target = FunctionParameters["GreenAPI_TestGroupID"]; - - Message = FunctionParameters["GreenAPI_MessageID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("from" , From); - Options.Insert("to" , Target); - Options.Insert("msgs" , Message); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ForwardMessages", Options); - - // END - - Process(Result, "GreenAPI", "ForwardMessages"); - -EndProcedure - -Procedure GreenAPI_GetNotification(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetNotification", Options); - - // END - - Process(Result, "GreenAPI", "GetNotification", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_DeleteNotificationFromQueue(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ReceiptID = FunctionParameters["GreenAPI_ReceiptID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("receipt", ReceiptID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "DeleteNotificationFromQueue", Options); - - // END - - Process(Result, "GreenAPI", "DeleteNotificationFromQueue"); - -EndProcedure - -Procedure GreenAPI_DownloadMessageFile(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - MessageID = FunctionParameters["GreenAPI_FileMessageID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "DownloadMessageFile", Options); - - // END - - Process(Result, "GreenAPI", "DownloadMessageFile"); - -EndProcedure - -Procedure GreenAPI_SetReadMark(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - MessageID = FunctionParameters["GreenAPI_FileMessageID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetReadMark", Options); - - // END - - Process(Result, "GreenAPI", "SetReadMark"); - -EndProcedure - -Procedure GreenAPI_GetMessageQueue(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetMessageQueue", Options); - - // END - - Process(Result, "GreenAPI", "GetMessageQueue"); - -EndProcedure - -Procedure GreenAPI_ClearMessageQueue(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ClearMessageQueue", Options); - - // END - - Process(Result, "GreenAPI", "ClearMessageQueue"); - -EndProcedure - -Procedure GreenAPI_GetChatHistory(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetChatHistory", Options); - - // END - - Process(Result, "GreenAPI", "GetChatHistory", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_GetMessage(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - MessageID = FunctionParameters["GreenAPI_MessageID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("msg" , MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetMessage", Options); - - // END - - Process(Result, "GreenAPI", "GetMessage", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_GetIncomingMessageLog(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetIncomingMessageLog", Options); - - // END - - Process(Result, "GreenAPI", "GetIncomingMessageLog", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_GetOutgoingMessageLog(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetOutgoingMessageLog", Options); - - // END - - Process(Result, "GreenAPI", "GetOutgoingMessageLog", , FunctionParameters); - -EndProcedure - -Procedure GreenAPI_ArchiveChat(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - - OPI_GreenAPI.UnarchiveChat(AccessParameters, ChatID); // SKIP - - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ArchiveChat", Options); - - // END - - Process(Result, "GreenAPI", "ArchiveChat"); - -EndProcedure - -Procedure GreenAPI_UnarchiveChat(FunctionParameters) - - ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; - MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; - IdInstance = FunctionParameters["GreenAPI_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; - - ChatID = FunctionParameters["GreenAPI_TestGroupID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "UnarchiveChat", Options); - - // END - - Process(Result, "GreenAPI", "UnarchiveChat"); - -EndProcedure - -#EndRegion - -#Region RCON - -Procedure RCON_FormConnectionParameters(FunctionParameters) - - URL = FunctionParameters["RCON_URL"]; - Password = FunctionParameters["RCON_Password"]; - WriteTimeout = 20; - ReadTimeout = 20; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("pass" , Password); - Options.Insert("rtout", ReadTimeout); - Options.Insert("wtout", WriteTimeout); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); - - // END - - Process(Result, "RCON", "FormConnectionParameters"); - -EndProcedure - -Procedure RCON_CreateConnection(FunctionParameters) - - URL = FunctionParameters["RCON_URL"]; - Password = FunctionParameters["RCON_Password"]; - WriteTimeout = 20; - ReadTimeout = 20; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("pass" , Password); - Options.Insert("rtout", ReadTimeout); - Options.Insert("wtout", WriteTimeout); - - ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); - Result = OPI_RCON.CreateConnection(ConnectionParams); - - // END - - Process(Result, "RCON", "CreateConnection"); - -EndProcedure - -Procedure RCON_ExecuteCommand(FunctionParameters) - - URL = FunctionParameters["RCON_URL"]; - Password = FunctionParameters["RCON_Password"]; - WriteTimeout = 20; - ReadTimeout = 20; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("pass" , Password); - Options.Insert("rtout", ReadTimeout); - Options.Insert("wtout", WriteTimeout); - - ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); - Connection = OPI_RCON.CreateConnection(ConnectionParams); - - Command = "list"; - Options = New Structure; - Options.Insert("exec", Command); - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "ExecuteCommand", Options); - - // END - - Process(Result, "RCON", "ExecuteCommand"); - - Command = "list"; - Options = New Structure; - Options.Insert("exec", Command); - Options.Insert("conn", ConnectionParams); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "ExecuteCommand", Options); - - Process(Result, "RCON", "ExecuteCommand", "No connection"); - -EndProcedure - -Procedure RCON_IsConnector(FunctionParameters) - - URL = FunctionParameters["RCON_URL"]; - Password = FunctionParameters["RCON_Password"]; - WriteTimeout = 20; - ReadTimeout = 20; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("pass" , Password); - Options.Insert("rtout", ReadTimeout); - Options.Insert("wtout", WriteTimeout); - - ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); - Connection = OPI_RCON.CreateConnection(ConnectionParams); - Result = OPI_RCON.IsConnector(Connection); - - // END - - Process(Result, "RCON", "IsConnector"); - -EndProcedure - -#EndRegion - -#Region Ollama - -Procedure Ollama_GetResponse(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Prompt = "What is 1C:Enterprise?"; - Model = "tinyllama"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("prompt" , Prompt); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); - - Process(Result, "Ollama", "GetResponse"); // SKIP - - // With paramether - - Prompt = "Ollama is 22 years old and is busy saving the world. Respond using JSON"; - - Format = OPI_Tools.JSONToStructure(" - |{ - |""type"": ""object"", - |""properties"": { - | ""age"": { - | ""type"": ""integer"" - | }, - | ""available"": { - | ""type"": ""boolean"" - | } - |}, - |""required"": [ - | ""age"", - | ""available"" - |] - |}"); - - AdditionalParameters = New Structure("format", Format); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("prompt" , Prompt); - Options.Insert("options", AdditionalParameters); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); - - // END - - Process(Result, "Ollama", "GetResponse", "Parameters"); - -EndProcedure - -Procedure Ollama_GetContextResponse(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Model = "tinyllama"; - - MessagesArray = New Array; - - Options = New Structure; - Options.Insert("role", "user"); - Options.Insert("text", "What is 1C:Enterprise?"); - - Question1 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextMessageStructure", Options); - Question2 = OPI_Ollama.GetContextMessageStructure("user", "When the first version was released?"); // Question without specifics - - // Adding the first question to the context - MessagesArray.Add(Question1); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("msgs" , MessagesArray); - Options.Insert("headers", AdditionalHeaders); - - Response1 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); - - Process(Response1, "Ollama", "GetContextResponse", "Preliminary"); // SKIP - - MessagesArray.Add(Response1["message"]); // Add response to first question in context - MessagesArray.Add(Question2); // Add second question in context - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("msgs" , MessagesArray); - Options.Insert("headers", AdditionalHeaders); - - Response2 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); - - MessagesArray.Add(Response2["message"]); - - // ... - - // END - - Process(Response2, "Ollama", "GetContextResponse"); - - MessagesArray = New Array; - - Question = New Structure("role,content", "user", "Hello!"); - MessagesArray.Add(Question); - - Options = New Structure("seed,temperature", 101, 0); - AdditionalParameters = New Structure("options", Options); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("msgs" , MessagesArray); - Options.Insert("options", AdditionalParameters); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); - - Process(Result, "Ollama", "GetContextResponse", "Seed 1"); - - Message1 = Result["message"]["content"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("msgs" , MessagesArray); - Options.Insert("options", AdditionalParameters); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); - - Process(Result, "Ollama", "GetContextResponse", "Seed 2"); - - Message2 = Result["message"]["content"]; - - Options = New Structure("seed,temperature", 555, 10); - AdditionalParameters = New Structure("options", Options); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("msgs" , MessagesArray); - Options.Insert("options", AdditionalParameters); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); - - Process(Result, "Ollama", "GetContextResponse", "Seed 3"); - - Message3 = Result["message"]["content"]; - - Process(Message3, "Ollama", "GetContextResponse", "Comparison", Message1, Message2, Message3); - -EndProcedure - -Procedure Ollama_LoadModelToMemory(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "tinyllama"; - Period = 500; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("keep" , Period); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "LoadModelToMemory", Options); - - // END - - Process(Result, "Ollama", "LoadModelToMemory"); - -EndProcedure - -Procedure Ollama_UnloadModelFromMemory(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "tinyllama"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "UnloadModelFromMemory", Options); - - // END - - Process(Result, "Ollama", "UnloadModelFromMemory"); - -EndProcedure - -Procedure Ollama_GetRequestParameterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetRequestParameterStructure", Options); - - // END - - Process(Result, "Ollama", "GetRequestParameterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetRequestParameterStructure", Options); - - Process(Result, "Ollama", "GetRequestParameterStructure", "Clear"); - -EndProcedure - -Procedure Ollama_GetContextParameterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextParameterStructure", Options); - - // END - - Process(Result, "Ollama", "GetContextParameterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextParameterStructure", Options); - - Process(Result, "Ollama", "GetContextParameterStructure", "Clear"); - -EndProcedure - -Procedure Ollama_GetContextMessageStructure(FunctionParameters) - - Options = New Structure; - Options.Insert("role", "user"); - Options.Insert("text", "Hello!"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextMessageStructure", Options); - - // END - - Process(Result, "Ollama", "GetContextMessageStructure"); - -EndProcedure - -Procedure Ollama_GetModelSettingsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelSettingsStructure", Options); - - // END - - Process(Result, "Ollama", "GetModelSettingsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelSettingsStructure", Options); - - Process(Result, "Ollama", "GetModelSettingsStructure", "Clear"); - -EndProcedure - -Procedure Ollama_CreateModel(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "mario"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Settings = New Structure("from,system", "tinyllama", "You are Mario from Super Mario Bros."); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("settings", Settings); - Options.Insert("headers" , AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CreateModel", Options); - - // END - - Process(Result, "Ollama", "CreateModel"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("prompt" , "How are you?"); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); - - Process(Result, "Ollama", "CreateModel", "Request"); - -EndProcedure - -Procedure Ollama_DeleteModel(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "mario"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); - - // END - - Process(Result, "Ollama", "DeleteModel"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , "library/tinyllama:latest"); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); - Process(Result, "Ollama", "DeleteModel", "Tiny"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , "bayselonarrend/tinyllama:latest"); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); - Process(Result, "Ollama", "DeleteModel", "Tiny, account"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelList", Options); - - Process(Result, "Ollama", "DeleteModel", "List"); - -EndProcedure - -Procedure Ollama_GetModelList(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelList", Options); - - // END - - Process(Result, "Ollama", "GetModelList"); - -EndProcedure - -Procedure Ollama_ListRunningModels(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "ListRunningModels", Options); - - // END - - Process(Result, "Ollama", "ListRunningModels"); - -EndProcedure - -Procedure Ollama_GetModelInformation(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "mario"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("verbose", False); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelInformation", Options); - - // END - - Process(Result, "Ollama", "GetModelInformation"); - -EndProcedure - -Procedure Ollama_CopyModel(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "mario"; - Name = "mario2"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("name" , Name); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CopyModel", Options); - - // END - - Process(Result, "Ollama", "CopyModel"); - - OPI_Ollama.DeleteModel(URL, Name, AdditionalHeaders); - -EndProcedure - -Procedure Ollama_GetVersion(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetVersion", Options); - - // END - - Process(Result, "Ollama", "GetVersion"); - -EndProcedure - -Procedure Ollama_GetEmbeddings(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - StingsArray = New Array; - StingsArray.Add("Why is the sky blue?"); - StingsArray.Add("Why is the grass green?"); - - Model = "tinyllama"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("input" , StingsArray); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddings", Options); - - // END - - Process(Result, "Ollama", "GetEmbeddings"); - -EndProcedure - -Procedure Ollama_GetEmbeddingsParameterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddingsParameterStructure", Options); - - // END - - Process(Result, "Ollama", "GetEmbeddingsParameterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddingsParameterStructure", Options); - - Process(Result, "Ollama", "GetEmbeddingsParameterStructure", "Clear"); - -EndProcedure - -Procedure Ollama_PushModel(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "bayselonarrend/tinyllama:latest"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PushModel", Options); - - // END - - Process(Result, "Ollama", "PushModel"); - -EndProcedure - -Procedure Ollama_PullModel(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Model = "tinyllama"; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , Model); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PullModel", Options); - - // END - - Process(Result, "Ollama", "PullModel"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("model" , "bayselonarrend/tinyllama:latest"); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PullModel", Options); - - Process(Result, "Ollama", "PullModel", "Account"); - -EndProcedure - -Procedure Ollama_PushBlob(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - OPI_TypeConversion.GetBinaryData(Image, True); // SKIP - Random = GetBinaryDataFromString(String(New UUID)); // SKIP - Image = OPI_Tools.MergeData(Image, Random); // SKIP - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("data" , Image); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PushBlob", Options); - - // END - - Process(Result, "Ollama", "PushBlob", , FunctionParameters); - -EndProcedure - -Procedure Ollama_CheckBlob(FunctionParameters) - - URL = FunctionParameters["Ollama_URL"]; - Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama - SHA256 = FunctionParameters["Ollama_Blob"]; - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("digest" , SHA256); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CheckBlob", Options); - - // END - - Process(Result, "Ollama", "CheckBlob"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("digest" , "yoyoyo"); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CheckBlob", Options); - - Process(Result, "Ollama", "CheckBlob", "Error"); - -EndProcedure - -#EndRegion - -#Region HTTP - -Procedure HTTP_Initialize(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests - .NewRequest() - .Initialize(URL) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "Initialize"); - - HTTPClient = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .ProcessRequest("POST", False); - - Process(HTTPClient, "HTTP", "Initialize", "Check 1", FunctionParameters); - - AnotherRequest = HTTPClient.SetURL(FunctionParameters["HTTP_URL"] + "/post") - .ProcessRequest("POST", False) - .ReturnRequest(); - - Process(AnotherRequest, "HTTP", "Initialize", "Check 2"); - -EndProcedure - -Procedure HTTP_SetURL(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetURL"); - - HTTPClient = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("POST", False); - - Process(HTTPClient, "HTTP", "SetURL", "Check", FunctionParameters); - -EndProcedure - -Procedure HTTP_SetURLParams(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - ParametersStructure = New Structure("param1,param2", "text", 10); - - Result = OPI_HTTPRequests - .NewRequest() - .Initialize(URL) - .SetURLParams(ParametersStructure) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetURLParams", , FunctionParameters); - - HTTPClient = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetURLParams(ParametersStructure) - .ProcessRequest("POST", False); - - HTTPRequest = HTTPClient.ReturnRequest(); - - Process(HTTPRequest, "HTTP", "SetURLParams", "Check"); - - // Encoding check - - // Complex - - ParameterStructure1 = New Structure; - ParameterStructure1.Insert("param1", "search?text"); - ParameterStructure1.Insert("param2", "John Doe"); - ParameterStructure1.Insert("param3", "value&another"); - ParameterStructure1.Insert("param4", "кириллица"); - ParameterStructure1.Insert("param5", ""); - - ResourceAddress1 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParameterStructure1) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress1, "HTTP", "SetURLParams", "Option 1"); - - ParameterStructure2 = New Structure; - ParameterStructure2.Insert("param1", "search?text"); - ParameterStructure2.Insert("param2", "John Doe"); - - // Parameters in the original URL - - ResourceAddress2 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page?existing=value") - .SetURLParams(ParameterStructure2) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress2, "HTTP", "SetURLParams", "Option 2"); - - // Empty parameter string - - ParameterStructure3 = New Structure; - ParameterStructure3.Insert("param1", "search?text"); - ParameterStructure3.Insert("param2", "John Doe"); - - ResourceAddress3 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page?") - .SetURLParams(ParameterStructure3) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress3, "HTTP", "SetURLParams", "Variant 3"); - - // Special characters at path - - ParameterStructure4 = New Structure; - ParameterStructure4.Insert("param1", "search?text"); - ParameterStructure4.Insert("param2", "John Doe"); - - ResourceAddress4 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/path with spaces") - .SetURLParams(ParameterStructure4) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress4, "HTTP", "SetURLParams", "Variant 4"); - - // URL with a snippet - - ParameterStructure5 = New Structure; - ParameterStructure5.Insert("param1", "search?text"); - ParameterStructure5.Insert("param2", "John Doe"); - - ResourceAddress5 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page#section") - .SetURLParams(ParameterStructure5) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress5, "HTTP", "SetURLParams", "Variant 5"); - - // Cyrillic at path - - ParameterStructure6 = New Structure; - ParameterStructure6.Insert("param1", "search?text"); - ParameterStructure6.Insert("param2", "John Doe"); - - ResourceAddress6 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/путь") - .SetURLParams(ParameterStructure6) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress6, "HTTP", "SetURLParams", "Variant 6"); - - // Multiple parameters and encoding - - ParameterStructure7 = New Structure; - ParameterStructure7.Insert("param1", "value1"); - ParameterStructure7.Insert("param2", "value two"); - ParameterStructure7.Insert("param3", "value"); - - ResourceAddress7 = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParameterStructure7) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - Process(ResourceAddress7, "HTTP", "SetURLParams", "Variant 7"); - -EndProcedure - -Procedure HTTP_SetResponseFile(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - TFN = GetTempFileName(); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetResponseFile(TFN) // <--- - .ProcessRequest("GET") - .ReturnResponseFilename(); - - // END - - Process(Result, "HTTP", "SetResponseFile", , TFN); - - CheckResult = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .SetResponseFile(TFN) // <--- - .ProcessRequest("GET") - .ReturnResponseAsBinaryData(); - - Process(CheckResult, "HTTP", "SetResponseFile", "Body", TFN); - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure HTTP_SetDataType(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - MIMEType = "text/markdown"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetStringBody("# Hello world!!") - .SetDataType(MIMEType) // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetDataType"); - -EndProcedure - -Procedure HTTP_GetLog(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - ParametersStructure = New Structure("param1,param2", "text", 10); - - HTTPClient = OPI_HTTPRequests - .NewRequest() - .Initialize(URL) - .SetURLParams(ParametersStructure) - .ProcessRequest("GET"); - - Response = HTTPClient.ReturnResponseAsJSONObject(); - Log = HTTPClient.GetLog(True); - - // END - - Process(Log, "HTTP", "GetLog"); - -EndProcedure - -Procedure HTTP_SetBinaryBody(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetBinaryBody", , Image); - -EndProcedure - -Procedure HTTP_SetStringBody(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Text = "Hello world!!"; - Encoding = "Windows-1251"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .UseEncoding(Encoding) - .SetStringBody(Text) // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetStringBody"); - -EndProcedure - -Procedure HTTP_SetJsonBody(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - RandomArray = New Array; - RandomArray.Add("A"); - RandomArray.Add("B"); - RandomArray.Add("C"); - - Data = New Structure("Field1,Field2,Field3", 10, "Text", RandomArray); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetJsonBody(Data) // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetJsonBody", , Data); - -EndProcedure - -Procedure HTTP_SetFormBody(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Data = New Structure("Field1,Field2", "10", "Text"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetFormBody(Data) // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetFormBody", , Data); - -EndProcedure - -Procedure HTTP_StartMultipartBody(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .StartMultipartBody() // <--- - .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") - .AddMultipartFormDataField("Field1", "Text") - .AddMultipartFormDataField("Field2", "10") - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "StartMultipartBody", , Image); - -EndProcedure - -Procedure HTTP_AddMultipartFormDataFile(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .StartMultipartBody() - .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") // <--- - .AddMultipartFormDataField("Field1", "Text") - .AddMultipartFormDataField("Field2", "10") - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddMultipartFormDataFile", , Image); - -EndProcedure - -Procedure HTTP_AddMultipartFormDataField(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .StartMultipartBody() - .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") - .AddMultipartFormDataField("Field1", "Text") // <--- - .AddMultipartFormDataField("Field2", "10") // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddMultipartFormDataField", , Image); - -EndProcedure - -Procedure HTTP_AddDataAsRelated(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - RandomArray = New Array; - RandomArray.Add("A"); - RandomArray.Add("B"); - RandomArray.Add("C"); - - Data = New Structure("Field1,Field2,Field3", 10, "Text", RandomArray); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .StartMultipartBody(True, "related") - .AddDataAsRelated(Data, "application/json; charset=UTF-8") // <--- - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddDataAsRelated"); - -EndProcedure - -Procedure HTTP_UseEncoding(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Text = "Hello world!!"; - Encoding = "Windows-1251"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .UseEncoding(Encoding) // <--- - .SetStringBody(Text) - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "UseEncoding"); - -EndProcedure - -Procedure HTTP_UseGzipCompression(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .UseGzipCompression(False) // <--- - .ProcessRequest("POST", False) - .ReturnRequest(); - - // END - - Process(Result, "HTTP", "UseGzipCompression"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .UseGzipCompression(True) // <--- - .ProcessRequest("POST", False) - .ReturnRequest(); - - Process(Result, "HTTP", "UseGzipCompression", "Enabled"); - -EndProcedure - -Procedure HTTP_UseBodyFiledsAtOAuth(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Token = "***"; - Secret = "***"; - UsersKey = "***"; - UsersSecret = "***"; - Version = "1.0"; - - NewRequest = OPI_HTTPRequests.NewRequest().Initialize(URL); - - Result = NewRequest - .StartMultipartBody() - .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") - .AddMultipartFormDataField("field1", "Text") - .AddMultipartFormDataField("field2", "10") - .UseBodyFiledsAtOAuth(False) // <--- - .AddOauthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); - - // END - - LogAsString = NewRequest.GetLog(True); - Process(Result, "HTTP", "UseBodyFiledsAtOAuth", , LogAsString); - - Result = OPI_HTTPRequests - .NewRequest() - .Initialize(URL) - .StartMultipartBody() - .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") - .AddMultipartFormDataField("field1", "Text") - .AddMultipartFormDataField("field2", "10") - .UseBodyFiledsAtOAuth(True) // <--- - .AddOauthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) - .ProcessRequest("POST", False) - .GetLog(True); - - Process(Result, "HTTP", "UseBodyFiledsAtOAuth", "Enabled"); - -EndProcedure - -Procedure HTTP_SetHeaders(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Headers = New Map; - Headers.Insert("X-Header1", "Value1"); - Headers.Insert("X-Header2", "Value2"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .SetHeaders(Headers) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetHeaders"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddBearerAuthorization("1111") - .SetHeaders(Headers, True) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - Process(Result, "HTTP", "SetHeaders", "Rewrite"); - -EndProcedure - -Procedure HTTP_AddHeader(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddHeader("X-Header1", "Value1") // <--- - .AddHeader("X-Header2", "Value2") // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddHeader"); - - Headers = New Map; - Headers.Insert("X-Header1", "Value1"); - Headers.Insert("X-Header2", "Value2"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddBearerAuthorization("1111") - .AddHeader("X-Header3", "BadValue") // <--- - .AddHeader("X-Header4", "BadValue") - .SetHeaders(Headers, True) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - Process(Result, "HTTP", "AddHeader", "Replace"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddBearerAuthorization("1111") - .AddHeader("X-Header3", "BadValue") // <--- - .AddHeader("X-Header4", "BadValue") - .SetHeaders(Headers) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - Process(Result, "HTTP", "AddHeader", "Addition"); - -EndProcedure - -Procedure HTTP_AddBasicAuthorization(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddBasicAuthorization("user", "password") // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddBasicAuthorization"); - -EndProcedure - -Procedure HTTP_AddBearerAuthorization(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddBearerAuthorization("123123") // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddBearerAuthorization"); - -EndProcedure - -Procedure HTTP_AddAWS4Authorization(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - AccessKey = "AccessKey"; - SecretKey = "SecretKey"; - Region = "Region"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .AddAWS4Authorization(AccessKey, SecretKey, Region) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddAWS4Authorization"); - -EndProcedure - -Procedure HTTP_AddOAuthV1Authorization(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Token = "***"; - Secret = "***"; - UsersKey = "***"; - UsersSecret = "***"; - Version = "1.0"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .AddOAuthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "AddOAuthV1Authorization"); - -EndProcedure - -Procedure HTTP_SetOAuthV1Algorithm(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Token = "***"; - Secret = "***"; - UsersKey = "***"; - UsersSecret = "***"; - Version = "1.0"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .AddOAuthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) - .SetOAuthV1Algorithm("HMAC", "SHA1") // <--- - .ProcessRequest("GET") - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SetOAuthV1Algorithm"); - -EndProcedure - -Procedure HTTP_ProcessRequest(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("GET") // <--- - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "ProcessRequest"); - -EndProcedure - -Procedure HTTP_ExecuteRequest(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("GET", False) - .ExecuteRequest() // <--- - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "ExecuteRequest"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("GET", False) - .ReturnResponse(True); - - Process(Result, "HTTP", "ExecuteRequest", "No execution"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("GET", False) - .ExecuteRequest() - .ReturnResponse(True); - - Process(Result, "HTTP", "ExecuteRequest", "Execution"); - -EndProcedure - -Procedure HTTP_ReturnRequest(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("GET", False) - .ReturnRequest(); // <--- - - // END - - Process(Result, "HTTP", "ReturnRequest"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ReturnRequest(True); - - Process(Result, "HTTP", "ReturnRequest", "Forced"); - -EndProcedure - -Procedure HTTP_ReturnConnection(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ProcessRequest("GET", False) - .ReturnConnection(); // <--- - - // END - - Process(Result, "HTTP", "ReturnConnection"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .ReturnConnection(True); - - Process(Result, "HTTP", "ReturnConnection", "Forced"); - -EndProcedure - -Procedure HTTP_ReturnResponse(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .ProcessRequest("POST") - .ReturnResponse(); // <--- - - // END - - Process(Result, "HTTP", "ReturnResponse"); - -EndProcedure - -Procedure HTTP_ReturnResponseAsJSONObject(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .ProcessRequest("POST") - .ReturnResponseAsJSONObject(); // <--- - - // END - - Process(Result, "HTTP", "ReturnResponseAsJSONObject"); - -EndProcedure - -Procedure HTTP_ReturnResponseAsBinaryData(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .ProcessRequest("POST") - .ReturnResponseAsBinaryData(); // <--- - - // END - - Process(Result, "HTTP", "ReturnResponseAsBinaryData"); - -EndProcedure - -Procedure HTTP_ReturnResponseAsString(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/post"; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .ProcessRequest("POST") - .ReturnResponseAsString(); // <--- - - // END - - Process(Result, "HTTP", "ReturnResponseAsString"); - -EndProcedure - -Procedure HTTP_ReturnResponseFilename(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - TFN = GetTempFileName(); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetResponseFile(TFN) // <--- - .ProcessRequest("GET") - .ReturnResponseFilename(); - - // END - - Process(Result, "HTTP", "ReturnResponseFilename", , TFN); - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure HTTP_SetProxy(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - ProxySettings = New InternetProxy; - ProxySettings.Set("https", "proxy.com", 443, "user", "password", False); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .SetProxy(ProxySettings) // <--- - .ProcessRequest("GET", False) - .ReturnConnection(); - - // END - - Process(Result, "HTTP", "SetProxy"); - -EndProcedure - -Procedure HTTP_SetTimeout(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .SetURL(URL) - .SetTimeout(60) // <--- - .ProcessRequest("GET", False) - .ReturnConnection(); - - // END - - Process(Result, "HTTP", "SetTimeout"); - -EndProcedure - -Procedure HTTP_UseURLEncoding(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - ParametersStructure = New Structure; - ParametersStructure.Insert("param1", "search?text"); - ParametersStructure.Insert("param2", "John Doe"); - ParametersStructure.Insert("param3", "value&another"); - ParametersStructure.Insert("param4", "кириллица"); - ParametersStructure.Insert("param5", ""); - - NoEncoding = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParametersStructure) - .UseURLEncoding(False) // <--- - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - WithEncoding = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParametersStructure) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - // END - - Result = New Map; - Result.Insert("No encoding" , NoEncoding); - Result.Insert("With encoding" , WithEncoding); - - Process(Result, "HTTP", "UseURLEncoding"); - -EndProcedure - -Procedure HTTP_SplitArraysInURL(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/get"; - - ArrayParam = New Array; - ArrayParam.Add("val1"); - ArrayParam.Add("val2"); - ArrayParam.Add("val3"); - - ParametersStructure = New Structure("arrayfield", ArrayParam); - - Separation = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParametersStructure) - .SplitArraysInURL(True) // <--- - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - SeparationPhp = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParametersStructure) - .SplitArraysInURL(True, True) // <--- - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - NoSeparation = OPI_HTTPRequests.NewRequest() - .Initialize("https://example.com/page") - .SetURLParams(ParametersStructure) - .ProcessRequest("GET", False) - .ReturnRequest() - .ResourceAddress; - - // END - - Result = New Map; - Result.Insert("No separation", NoSeparation); - Result.Insert("Separation" , Separation); - Result.Insert("PHP" , SeparationPhp); - - Process(Result, "HTTP", "SplitArraysInURL"); - -EndProcedure - -Procedure HTTP_SendDataInParts(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/put"; - - ChunkSize = 524288; - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Image) - .SendDataInParts(ChunkSize) // <--- - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SendDataInParts"); - -EndProcedure - -Procedure HTTP_SendPart(FunctionParameters) - - URL = FunctionParameters["HTTP_URL"]; - URL = URL + "/put"; - - ChunkSize = 524288; - Data = GetBinaryDataFromString("Some data for sending"); - - // Sending only "data for" - StartPosition = 5; - Bytes = 8; - - Result = OPI_HTTPRequests.NewRequest() - .Initialize(URL) - .SetBinaryBody(Data) - .SendPart(StartPosition, Bytes) // <--- - .ReturnResponseAsJSONObject(); - - // END - - Process(Result, "HTTP", "SendPart"); - -EndProcedure - -Procedure HTTP_MaxAttempts(FunctionParameters) - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .MaxAttempts(10) - .ReturnSettings(); - - // END - - Process(Result, "HTTP", "MaxAttempts"); - -EndProcedure - -Procedure HTTP_MaxRedirects(FunctionParameters) - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .MaxRedirects(15) - .ReturnSettings(); - - // END - - Process(Result, "HTTP", "MaxRedirects"); - -EndProcedure - -Procedure HTTP_ReturnSettings(FunctionParameters) - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .ReturnSettings(); - - // END - - Process(Result, "HTTP", "ReturnSettings"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .ReturnSettings("EncodeRequestBody"); - - Process(Result, "HTTP", "ReturnSettings", "Single"); - - SettingArray = New Array; - SettingArray.Add("MaxAttempts"); - SettingArray.Add("MaxRedirects"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .MaxAttempts(5) - .ReturnSettings(SettingArray); - - Process(Result, "HTTP", "ReturnSettings", "Array"); - - Result = OPI_HTTPRequests.NewRequest() - .Initialize() - .ReturnSettings("AAA"); - - Process(Result, "HTTP", "ReturnSettings", "Nonexistent"); - -EndProcedure - -#EndRegion - -#Region OpenAI - -Procedure OpenAI_GetResponse(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - // Text messages - - Messages = New Array; - Messages.Add(OPI_OpenAI.GetMessageStructure("user" , "What is 1C:Enterprise?")); - Messages.Add(OPI_OpenAI.GetMessageStructure("assistant", "1C:Enterprise is a full-stack, low-code platform")); - Messages.Add(OPI_OpenAI.GetMessageStructure("user" , "When the first version was released?")); - - Model = "smolvlm-256m-instruct"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("model", Model); - Options.Insert("msgs" , Messages); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetResponse", Options); - - Process(Result, "OpenAI", "GetResponse"); // SKIP - - // Pictures - - Model = "moondream2-20250414"; - File = FunctionParameters["Picture"]; // URL, Path or Binary Data - FileName = StrTemplate("%1.png", String(New UUID())); - Destination = "user_data"; - - Messages = New Array; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("name" , FileName); - Options.Insert("data" , File); - Options.Insert("purpose", Destination); - - ImageUpload = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "UploadFile", Options); - - Process(ImageUpload, "OpenAI", "GetResponse", "Image upload"); // SKIP - - ImageID = ImageUpload["id"]; - - Options = New Structure; - Options.Insert("role" , "user"); - Options.Insert("file" , ImageID); - Options.Insert("prompt", "What is in this image?"); - - Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options); - - Messages.Add(Description); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("model", Model); - Options.Insert("msgs" , Messages); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetResponse", Options); - - OPI_OpenAI.DeleteFile(URL, Token, ImageID); - - // END - - Process(Result, "OpenAI", "GetResponse", "Image"); - -EndProcedure - -Procedure OpenAI_GetEmbeddings(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Text = "What is 1C:Enterprise?"; - Model = "arcee-ai_afm-4.5b"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("model", Model); - Options.Insert("input", Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetEmbeddings", Options); - - // END - - Process(Result, "OpenAI", "GetEmbeddings"); - -EndProcedure - -Procedure OpenAI_CreateAssistant(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Instruction = "You are a personal math tutor. When asked a question, write and run Python code to answer the question."; - Model = "smolvlm-256m-instruct"; - Name = "Math tutor"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("model", Model); - Options.Insert("name" , Name); - Options.Insert("inst" , Instruction); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateAssistant", Options); - - // END - - Process(Result, "OpenAI", "CreateAssistant", , FunctionParameters); - -EndProcedure - -Procedure OpenAI_DeleteAssistant(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - AssistantID = FunctionParameters["OpenAI_Assistant"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , AssistantID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DeleteAssistant", Options); - - // END - - Process(Result, "OpenAI", "DeleteAssistant", , AssistantID); - -EndProcedure - -Procedure OpenAI_RetrieveAssistant(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - AssistantID = FunctionParameters["OpenAI_Assistant"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , AssistantID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "RetrieveAssistant", Options); - - // END - - Process(Result, "OpenAI", "RetrieveAssistant"); - -EndProcedure - -Procedure OpenAI_GetAssistantsList(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Count = 2; - AdditionalParameters = New Structure("after,order", "asst_2", "desc"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("limit" , Count); - Options.Insert("options", AdditionalParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetAssistantsList", Options); - - // END - - Process(Result, "OpenAI", "GetAssistantsList"); - -EndProcedure - -Procedure OpenAI_UploadFile(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - File = FunctionParameters["Picture"]; // URL, Path or Binary Data - - FileName = StrTemplate("%1.png", String(New UUID())); - Destination = "assistants"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("name" , FileName); - Options.Insert("data" , File); - Options.Insert("purpose", Destination); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "UploadFile", Options); - - // END - - OPI_TypeConversion.GetBinaryData(File); - Process(Result, "OpenAI", "UploadFile", , FunctionParameters, FileName, File.Size() + 2); - -EndProcedure - -Procedure OpenAI_DeleteFile(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - FileID = FunctionParameters["OpenAI_File"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DeleteFile", Options); - - // END - - Process(Result, "OpenAI", "DeleteFile", , FileID); - -EndProcedure - -Procedure OpenAI_GetFileInformation(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - FileID = FunctionParameters["OpenAI_File"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetFileInformation", Options); - - // END - - Process(Result, "OpenAI", "GetFileInformation"); - -EndProcedure - -Procedure OpenAI_GetFilesList(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetFilesList", Options); - - // END - - Process(Result, "OpenAI", "GetFilesList"); - -EndProcedure - -Procedure OpenAI_DownloadFile(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - FileID = FunctionParameters["OpenAI_File"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , FileID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DownloadFile", Options); - - // END - - Process(Result, "OpenAI", "DownloadFile", , FunctionParameters); - -EndProcedure - -Procedure OpenAI_GetMessageStructure(FunctionParameters) - - Options = New Structure; - Options.Insert("role", "user"); - Options.Insert("text", "What is 1C:Enterprise?"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); - - // END - - Process(Result, "OpenAI", "GetMessageStructure"); - -EndProcedure - -Procedure OpenAI_GetImageMessageStructure(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - Image = FunctionParameters["OpenAI_File"]; - - Options = New Structure; - Options.Insert("role" , "user"); - Options.Insert("file" , Image); - Options.Insert("prompt", "What is in this image?"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options); - - // END - - Process(Result, "OpenAI", "GetImageMessageStructure"); - -EndProcedure - -Procedure OpenAI_GenerateSpeech(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Text = "Attack ships on fire off the shoulder of Orion bright as magnesium"; - Model = "bark-cpp-small"; - - AdditionalParameters = New Structure("response_format", "wav"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("model" , Model); - Options.Insert("input" , Text); - Options.Insert("options", AdditionalParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GenerateSpeech", Options); - - // END - - Process(Result, "OpenAI", "GenerateSpeech", , FunctionParameters); - -EndProcedure - -Procedure OpenAI_CreateTranscription(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Audio = FunctionParameters["OpenAI_Speech"]; - Model = "whisper-1"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("model", Model); - Options.Insert("audio", Audio); - Options.Insert("type" , "audio/wav"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateTranscription", Options); - - // END - - OPI_Tools.RemoveFileWithTry(Audio, "Failed to delete the temporary file after the test!!"); - - Process(Result, "OpenAI", "CreateTranscription"); - -EndProcedure - -Procedure OpenAI_GetImages(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Model = "sd-1.5-ggml"; - Options = New Structure; - Options.Insert("prompt", "Yellow alpaca"); - Options.Insert("amount", 1); - Options.Insert("size" , "64x64"); - - Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageDescriptionStructure", Options); - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("model", Model); - Options.Insert("descr", Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImages", Options); - - // END - - Process(Result, "OpenAI", "GetImages"); - -EndProcedure - -Procedure OpenAI_GetModelList(FunctionParameters) - - URL = FunctionParameters["OpenAI_URL"]; - Token = FunctionParameters["OpenAI_Token"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetModelList", Options); - - // END - - Process(Result, "OpenAI", "GetModelList"); - -EndProcedure - -Procedure OpenAI_GetAssistantMessage(FunctionParameters) - - Options = New Structure; - Options.Insert("text", "What is 1C:Enterprise?"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetAssistantMessage", Options); - - // END - - Options = New Structure; - Options.Insert("role", "assistant"); - Options.Insert("text", "What is 1C:Enterprise?"); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); - Check = OPI_Tools.JSONString(Check); - Result = OPI_Tools.JSONString(Result); - - Process(Result, "OpenAI", "GetAssistantMessage", , Check); - -EndProcedure - -Procedure OpenAI_GetUserMessage(FunctionParameters) - - Options = New Structure; - Options.Insert("text", "What is 1C:Enterprise?"); - Options.Insert("name", "Vitaly"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetUserMessage", Options); - - // END - - Options = New Structure; - Options.Insert("role", "user"); - Options.Insert("text", "What is 1C:Enterprise?"); - Options.Insert("name", "Vitaly"); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); - Check = OPI_Tools.JSONString(Check); - Result = OPI_Tools.JSONString(Result); - - Process(Result, "OpenAI", "GetUserMessage", , Check); - -EndProcedure - -Procedure OpenAI_GetSystemMessage(FunctionParameters) - - Options = New Structure; - Options.Insert("text", "What is 1C:Enterprise?"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetSystemMessage", Options); - - // END - - Options = New Structure; - Options.Insert("role", "system"); - Options.Insert("text", "What is 1C:Enterprise?"); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); - Check = OPI_Tools.JSONString(Check); - Result = OPI_Tools.JSONString(Result); - - Process(Result, "OpenAI", "GetSystemMessage", , Check); - -EndProcedure - -#EndRegion - -#Region MSSQL - -Procedure MSSQL_GenerateConnectionString(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "bayselonarrend"; - Password = FunctionParameters["PG_Password"]; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - // END - - Result = StrReplace(Result, Password, "***"); - Result = StrReplace(Result, Address , "127.0.0.1"); - - Process(Result, "MSSQL", "GenerateConnectionString"); - -EndProcedure - -Procedure MSSQL_CreateConnection(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - - Result = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); - - // END - - Process(Result, "MSSQL", "CreateConnection"); - -EndProcedure - -Procedure MSSQL_CloseConnection(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - - Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); - Result = OPI_MSSQL.CloseConnection(Connection); - - // END - - OPI_MSSQL.CloseConnection(Result); - - Process(Result, "MSSQL", "CloseConnection"); - -EndProcedure - -Procedure MSSQL_IsConnector(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - - Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); - Result = OPI_MSSQL.IsConnector(Connection); - - // END - - OPI_MSSQL.CloseConnection(Result); - - Process(Result, "MSSQL", "IsConnector"); - -EndProcedure - -Procedure MSSQL_ExecuteSQLQuery(FunctionParameters) - - CurrentDate = OPI_Tools.GetCurrentDate(); - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); - - OPI_MSSQL.DeleteTable("users" , Connection); // SKIP - OPI_MSSQL.DeleteTable("test_data" , Connection); // SKIP - OPI_MSSQL.DeleteTable("test_table", Connection); // SKIP - Process(Connection, "MSSQL", "ExecuteSQLQuery", "Connection"); // SKIP - - // CREATE - - QueryText = " - |CREATE TABLE test_table ( - | ID INT PRIMARY KEY, - | FirstName NVARCHAR(50), - | LastName NVARCHAR(50), - | BirthDate DATE, - | IsEmployed BIT, - | Salary DECIMAL(10, 2), - | CreatedAt DATETIME, - | Age SMALLINT, - | RowGuid UNIQUEIDENTIFIER, - | Data VARBINARY(MAX) - |);"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); - - Process(Result, "MSSQL", "ExecuteSQLQuery", "Create"); // SKIP - - // INSERT with parameters - - QueryText = " - |INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data) - |VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);"; - - ParameterArray = New Array; - ParameterArray.Add(New Structure("INT" , 1)); - ParameterArray.Add(New Structure("NVARCHAR", "Vitaly")); - ParameterArray.Add(New Structure("NVARCHAR", "Alpaca")); - ParameterArray.Add(New Structure("DATE" , CurrentDate)); - ParameterArray.Add(New Structure("BIT" , True)); - ParameterArray.Add(New Structure("DECIMAL" , 10.30)); - ParameterArray.Add(New Structure("DATETIME", CurrentDate)); - ParameterArray.Add(New Structure("SMALLINT", 20)); - ParameterArray.Add(New Structure("UUID" , New UUID)); - ParameterArray.Add(New Structure("BYTES" , Image)); - - Options = New Structure; - Options.Insert("sql" , QueryText); - Options.Insert("params", ParameterArray); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); - - Process(Result, "MSSQL", "ExecuteSQLQuery", "Insert"); // SKIP - - // SELECT (The result of this query is shown in the Result block) - - QueryText = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;"; - - Options = New Structure; - Options.Insert("sql", QueryText); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); - - Process(Result, "MSSQL", "ExecuteSQLQuery", , Image); // SKIP - - QueryText = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));"; // SKIP - Result = OPI_MSSQL.ExecuteSQLQuery(QueryText, , , Connection); // SKIP - Process(Result, "MSSQL", "ExecuteSQLQuery", "Test data"); // SKIP - - // SQL query from file - - SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file - - Options = New Structure; - Options.Insert("sql", SQLFile); - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); - - Process(Result, "MSSQL", "ExecuteSQLQuery", "File"); // SKIP - - Closing = OPI_MSSQL.CloseConnection(Connection); - - // END - - Process(Closing, "MSSQL", "ExecuteSQLQuery", "Request"); // SKIP - -EndProcedure - -Procedure MSSQL_GetTLSSettings(FunctionParameters) - - Options = New Structure; - Options.Insert("trust", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - - // END - - Process(Result, "MSSQL", "GetTLSSettings"); - -EndProcedure - -Procedure MSSQL_CreateDatabase(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Base = "testbase1"; - - OPI_MSSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); - - // END - - Process(Result, "MSSQL", "CreateDatabase"); - - Base = "testbase2"; - OPI_MSSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); - - Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); - - Process(Connection, "MSSQL", "CreateDatabase", "Openning"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); - - Process(Result, "MSSQL", "CreateDatabase", "Creation"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); - - Process(Result, "MSSQL", "CreateDatabase", "Existing"); - - OPI_MSSQL.CloseConnection(Connection); - -EndProcedure - -Procedure MSSQL_CreateTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "testtable"; - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("tinyint_field" , "tinyint"); - ColoumnsStruct.Insert("smallint_field" , "smallint"); - ColoumnsStruct.Insert("int_field" , "int"); - ColoumnsStruct.Insert("bigint_field" , "bigint"); - ColoumnsStruct.Insert("float24_field" , "float(24)"); - ColoumnsStruct.Insert("float53_field" , "float(53)"); - ColoumnsStruct.Insert("bit_field" , "bit"); - ColoumnsStruct.Insert("nvarchar_field" , "nvarchar(4000)"); - ColoumnsStruct.Insert("varbinary_field", "varbinary(max)"); - ColoumnsStruct.Insert("uid_field" , "uniqueidentifier"); - ColoumnsStruct.Insert("numeric_field" , "numeric(5,3)"); // Or decimal - ColoumnsStruct.Insert("xml_field" , "xml"); - ColoumnsStruct.Insert("date_field" , "date"); - ColoumnsStruct.Insert("time_field" , "time"); - ColoumnsStruct.Insert("dto_field" , "datetimeoffset"); - ColoumnsStruct.Insert("datetime_field" , "datetime"); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols", ColoumnsStruct); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); - - // END - - Process(Result, "MSSQL", "CreateTable"); - - Table = "ABC DEF"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); - - Process(Result, "MSSQL", "CreateTable", "Name error"); - - Table = "somename"; - ColoumnsStruct.Insert("wtf_field", "WTF"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); - - Process(Result, "MSSQL", "CreateTable", "Type error"); - -EndProcedure - -Procedure MSSQL_AddRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "testtable"; - RecordsArray = New Array; - - Image = FunctionParameters["Picture"]; - OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData - - XML = " - | - | Example - | 123 - | - | - | Test - | 456 - | - |"; - - CurrentDate = OPI_Tools.GetCurrentDate(); - CurrentDateTZ = OPI_Tools.DateRFC3339(CurrentDate, "+05:00"); - - RecordStructure = New Structure; - RecordStructure.Insert("tinyint_field" , New Structure("TINYINT" , 5)); - RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 2000)); - RecordStructure.Insert("int_field" , New Structure("INT" , 200000)); - RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 20000000000)); - RecordStructure.Insert("float24_field" , New Structure("FLOAT24" , 10.1234567)); - RecordStructure.Insert("float53_field" , New Structure("FLOAT53" , 10.123456789123456)); - RecordStructure.Insert("bit_field" , New Structure("BIT" , True)); - RecordStructure.Insert("nvarchar_field" , New Structure("NVARCHAR" , "Some text")); - RecordStructure.Insert("varbinary_field", New Structure("BYTES" , Image)); - RecordStructure.Insert("uid_field" , New Structure("UUID" , New UUID)); - RecordStructure.Insert("numeric_field" , New Structure("NUMERIC" , 5.333)); - RecordStructure.Insert("xml_field" , New Structure("XML" , XML)); - RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); - RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); - RecordStructure.Insert("dto_field" , New Structure("DATETIMEOFFSET", CurrentDateTZ)); - RecordStructure.Insert("datetime_field" , New Structure("DATETIME" , CurrentDate)); - - RecordsArray.Add(RecordStructure); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("rows", RecordsArray); - Options.Insert("trn", True); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "AddRecords", Options); - - // END - - Process(Result, "MSSQL", "AddRecords"); - -EndProcedure - -Procedure MSSQL_GetRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - // All records without filters - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - - Process(Result, "MSSQL", "GetRecords"); // SKIP - - // Filter, selected fields, limit and sorting - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , "test_data"); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "test_data"; - - Fields = New Array; - Fields.Add("first_name"); - Fields.Add("last_name"); - Fields.Add("email"); - - Filters = New Array; - - FilterStructure1 = New Structure; - - FilterStructure1.Insert("field", "gender"); - FilterStructure1.Insert("type" , "="); - FilterStructure1.Insert("value", "Male"); - FilterStructure1.Insert("union", "AND"); - FilterStructure1.Insert("raw" , False); - - FilterStructure2 = New Structure; - - FilterStructure2.Insert("field", "id"); - FilterStructure2.Insert("type" , "BETWEEN"); - FilterStructure2.Insert("value", "20 AND 50"); - FilterStructure2.Insert("raw" , True); - - Filters.Add(FilterStructure1); - Filters.Add(FilterStructure2); - - Sort = New Structure("ip_address", "DESC"); - Count = 5; - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", Fields); - Options.Insert("filter", Filters); - Options.Insert("order" , Sort); - Options.Insert("limit" , Count); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - - // END - - Process(Result, "MSSQL", "GetRecords", "Filters"); - -EndProcedure - -Procedure MSSQL_UpdateRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "test_data"; - - FieldsStructure = New Structure; - FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "gender"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("NVARCHAR", "Male")); - FilterStructure.Insert("raw" , False); - - Filters.Add(FilterStructure); - - Count = OPI_MSSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP - Process(Count, "MSSQL", "UpdateRecords", "Count"); // SKIP - Count = Count["data"].Count(); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("values", FieldsStructure); - Options.Insert("filter", FilterStructure); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "UpdateRecords", Options); - - // END - - Process(Result, "MSSQL", "UpdateRecords"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "['ip_address']"); - Options.Insert("filter", Filters); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - - Process(Check, "MSSQL", "UpdateRecords", "Check", Count, FieldsStructure); - -EndProcedure - -Procedure MSSQL_DeleteRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "test_data"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "test_data"; - - Filters = New Array; - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "gender"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("NVARCHAR", "Male")); - FilterStructure.Insert("raw" , False); - FilterStructure.Insert("union", "AND"); - - Filters.Add(FilterStructure); - - FilterStructure = New Structure; - - FilterStructure.Insert("field", "ip_address"); - FilterStructure.Insert("type" , "="); - FilterStructure.Insert("value", New Structure("NVARCHAR", "127.0.0.1")); - FilterStructure.Insert("raw" , False); - - Filters.Add(FilterStructure); - - Obtaining = OPI_MSSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("filter", Filters); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteRecords", Options); - - // END - - Process(Obtaining, "MSSQL", "DeleteRecords", "Obtaining"); - - Count = Obtaining["data"].Count(); - Residue = 100 - Count; - - Process(Result, "MSSQL", "DeleteRecords"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - - Process(Result, "MSSQL", "DeleteRecords", "Check", Residue); - -EndProcedure - -Procedure MSSQL_DeleteTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTable", Options); - - // END - - Process(Result, "MSSQL", "DeleteTable"); - - Base = "test_data"; - Table = "test_data"; - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTable", Options); - - Process(Result, "MSSQL", "DeleteTable", "Test"); - -EndProcedure - -Procedure MSSQL_DeleteDatabase(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Base = "testbase1"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); - - // END - - Process(Result, "MSSQL", "DeleteDatabase"); - - Base = "testbase2"; - - Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); - - Process(Connection, "MSSQL", "DeleteDatabase", "Openning"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); - - Process(Result, "MSSQL", "DeleteDatabase", "Deletion"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); - - Process(Result, "MSSQL", "DeleteDatabase", "Error"); - - Closing = OPI_MSSQL.CloseConnection(Connection); - - Process(Closing, "MSSQL", "DeleteDatabase", "Closing"); - - Options = New Structure; - Options.Insert("base", Base); - Options.Insert("dbc" , Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); - - Process(Result, "MSSQL", "DeleteDatabase", "Connection error"); - -EndProcedure - -Procedure MSSQL_ClearTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ClearTable", Options); - - // END - - Process(Result, "MSSQL", "ClearTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - - Process(Result, "MSSQL", "ClearTable", "Check"); - -EndProcedure - -Procedure MSSQL_GetTableInformation(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "testtable"; - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); - - // END - - Process(Result, "MSSQL", "GetTableInformation"); - - Table = "heyho"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); - - Process(Result, "MSSQL", "GetTableInformation", "Error"); - -EndProcedure - -Procedure MSSQL_AddTableColumn(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Base = "testbase1"; - Table = "testtable"; - Name = "new_field"; - DataType = "bigint"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name", Name); - Options.Insert("type", DataType); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "AddTableColumn", Options); - - // END - - Process(Result, "MSSQL", "AddTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); - - Process(Result, "MSSQL", "AddTableColumn", "Check"); - -EndProcedure - -Procedure MSSQL_DeleteTableColumn(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Base = "testbase1"; - Table = "testtable"; - Name = "new_field"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("name", Name); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTableColumn", Options); - - // END - - Process(Result, "MSSQL", "DeleteTableColumn"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); - - Process(Result, "MSSQL", "DeleteTableColumn", "Check"); - -EndProcedure - -Procedure MSSQL_EnsureTable(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - - Base = "testbase1"; - Table = "testtable"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("smallint_field" , "smallint"); - ColoumnsStruct.Insert("double_field" , "real"); - ColoumnsStruct.Insert("bigint_field" , "bigint"); - ColoumnsStruct.Insert("custom_field" , "nvarchar"); - - // When using the connection string, a new connection is initialised, - // which will be closed after the function is executed. - // If several operations are performed, it is desirable to use one connection, - // previously created by the CreateConnection function() - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols", ColoumnsStruct); - Options.Insert("dbc", ConnectionString); - Options.Insert("tls", TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureTable", Options); - - // END - - Process(Result, "MSSQL", "EnsureTable"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); - - Process(Check, "MSSQL", "EnsureTable", "Check", ColoumnsStruct); - - Table = "test_new"; - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureTable", Options); - - Process(Result, "MSSQL", "EnsureTable", "New"); - - Options = New Structure; - Options.Insert("table", Table); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); - - Process(Check, "MSSQL", "EnsureTable", "Check", ColoumnsStruct); - -EndProcedure - -Procedure MSSQL_EnsureRecords(FunctionParameters) - - Address = FunctionParameters["PG_IP"]; - Login = "SA"; - Password = FunctionParameters["PG_Password"]; - Base = "testbase1"; - - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); - - Table = "test_guarantee"; - - ColoumnsStruct = New Structure; // SKIP - ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP - ColoumnsStruct.Insert("name" , "NVARCHAR(255)"); // SKIP - ColoumnsStruct.Insert("age" , "INT"); // SKIP - ColoumnsStruct.Insert("salary", "DECIMAL(10,2)"); // SKIP - OPI_MSSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP - - DataArray = New Array; - - RowStructure2 = New Structure; - RowStructure2.Insert("id" , New Structure("INT" , 1)); - RowStructure2.Insert("name" , New Structure("NVARCHAR", "Vitaly")); - RowStructure2.Insert("age" , New Structure("INT" , 25)); - RowStructure2.Insert("salary", New Structure("DECIMAL" , 1000.12)); - - RowStructure1 = New Structure; - RowStructure1.Insert("id" , New Structure("INT" , 2)); - RowStructure1.Insert("name" , New Structure("NVARCHAR", "Lesha")); - RowStructure1.Insert("age" , New Structure("INT" , 20)); - RowStructure1.Insert("salary", New Structure("DECIMAL" , 200.20)); - - DataArray.Add(RowStructure2); - DataArray.Add(RowStructure1); - - KeyFields = New Array; - KeyFields.Add("id"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("rows" , DataArray); - Options.Insert("unique", KeyFields); - Options.Insert("db" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureRecords", Options); - - // END - - Process(Result, "MSSQL", "EnsureRecords", "Insertion"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - Process(Check, "MSSQL", "EnsureRecords", "Insertion check"); - - RowStructure2.Insert("name" , New Structure("NVARCHAR", "Vitaly Updated")); - RowStructure2.Insert("salary", New Structure("DECIMAL" , 1500.50)); - - StringStructure3 = New Structure; - StringStructure3.Insert("id" , New Structure("INT" , 3)); - StringStructure3.Insert("name" , New Structure("NVARCHAR", "Anton")); - StringStructure3.Insert("age" , New Structure("INT" , 30)); - StringStructure3.Insert("salary", New Structure("DECIMAL" , 3000.00)); - - DataArray = New Array; - DataArray.Add(RowStructure2); - DataArray.Add(StringStructure3); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("rows" , DataArray); - Options.Insert("unique", KeyFields); - Options.Insert("db" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureRecords", Options); - - Process(Result, "MSSQL", "EnsureRecords", "Updating"); - - Options = New Structure; - Options.Insert("table" , Table); - Options.Insert("fields", "*"); - Options.Insert("dbc" , ConnectionString); - Options.Insert("tls" , TLSSettings); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); - Process(Check, "MSSQL", "EnsureRecords", "Updating check"); - - OPI_MSSQL.DeleteTable(Table, ConnectionString, TLSSettings); - -EndProcedure - -Procedure MSSQL_GetRecordsFilterStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecordsFilterStructure", Options); - - // END - - Process(Result, "MSSQL", "GetRecordsFilterStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecordsFilterStructure", Options); - - Process(Result, "MSSQL", "GetRecordsFilterStructure", "Clear"); - -EndProcedure - -#EndRegion - -#Region FTP - -Procedure FTP_CreateConnection(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Result = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - // END - - Process(Result, "FTP", "CreateConnection", Postfix); - -EndProcedure - -Procedure FTP_GetWelcomeMessage(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetWelcomeMessage", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "GetWelcomeMessage", Postfix); - -EndProcedure - -Procedure FTP_GetConnectionConfiguration(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Options = New Structure; - Options.Insert("set" , FTPSettings); - Options.Insert("proxy", ProxySettings); - Options.Insert("tls" , TLSSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionConfiguration", Options); - - // END - - Process(Result, "FTP", "GetConnectionConfiguration", Postfix, FunctionParameters); - - Options = New Structure; - Options.Insert("conn", Result); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetWelcomeMessage", Options); - - Process(Check, "FTP", "GetConnectionConfiguration", "Check, " + Postfix); - -EndProcedure - -Procedure FTP_CloseConnection(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - Process(Connection, "FTP", "CloseConnection", "Openning, " + Postfix); // SKIP - - Result = OPI_FTP.CloseConnection(Connection); - - // END - - Process(Result, "FTP", "CloseConnection", Postfix); - -EndProcedure - -Procedure FTP_IsConnector(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - Process(Connection, "FTP", "IsConnector", "Openning, " + Postfix); // SKIP - - Result = OPI_FTP.IsConnector(Connection); - - // END - - Process(Result, "FTP", "IsConnector", Postfix); - -EndProcedure - -Procedure FTP_GetConnectionSettings(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - // END - - Process(Result, "FTP", "GetConnectionSettings", Postfix); - -EndProcedure - -Procedure FTP_GetProxySettings(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - // END - - Process(Result, "FTP", "GetProxySettings", Postfix); - -EndProcedure - -Procedure FTP_GetTLSSettings(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Options = New Structure; - Options.Insert("trust", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - - // END - - Process(Result, "FTP", "GetTLSSettings", Postfix); - -EndProcedure - -Procedure FTP_CreateNewDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - - Deletion = OPI_FTP.DeleteDirectory(Connection, "new_dir"); // SKIP - Process(Deletion, "FTP", "CreateNewDirectory", "Deletion, " + Postfix); // SKIP - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "CreateNewDirectory", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "CreateNewDirectory", Postfix, True); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/another_one"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "CreateNewDirectory", Options); - - Process(Result, "FTP", "CreateNewDirectory", "Nested, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "second_dir/another_one"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "CreateNewDirectory", Options); - - Process(Result, "FTP", "CreateNewDirectory", "Double, " + Postfix); - - OPI_Tools.Pause(5); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir"); - Options.Insert("rcv" , True); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Check, "FTP", "CreateNewDirectory", "Check 1, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", ""); - Options.Insert("rcv" , True); - - Check = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Check, "FTP", "CreateNewDirectory", "Check 2, " + Postfix); - -EndProcedure - -Procedure FTP_ListObjects(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", ""); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "ListObjects", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "Dir1/Dir3/Git-2.50.0-64-bit.exe"); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Result, "FTP", "ListObjects", "File, " + Postfix); - -EndProcedure - -Procedure FTP_UploadFile(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - ImagePath = "C:\pic.png"; - - Image = FunctionParameters["Picture"]; // SKIP - TFN = GetTempFileName("png"); // SKIP - CopyFile(Image, TFN); // SKIP - Image = TFN; // SKIP - - ImageDD = New BinaryData(Image); - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - Options.Insert("rtout", 1000); - Options.Insert("wtout", 1000); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("file", Image); - Options.Insert("path", "new_dir/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UploadFile", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("file", ImageDD); - Options.Insert("path", "pic_from_binary.png"); - - Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UploadFile", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "FTP", "UploadFile", Postfix , ImageDD.Size()); - Process(Result2, "FTP", "UploadFile", "Binary, " + Postfix, ImageDD.Size()); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "pic_from_binary.png"); - - Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - - Process(Result , "FTP", "UploadFile", "Size 1, " + Postfix, ImageDD.Size()); - Process(Result2, "FTP", "UploadFile", "Size 2, " + Postfix, ImageDD.Size()); - - For N = 1 To 5 Do - - Result = OPI_FTP.UploadFile(Connection, Image, "new_dir/pic_from_disk.png"); - Result2 = OPI_FTP.UploadFile(Connection, ImageDD, "pic_from_binary.png"); - - If Not Result["result"] Then - Process(Result, "FTP", "UploadFile", "Multiple, " + Postfix, ImageDD.Size()); - EndIf; - - If Not Result2["result"] Then - Process(Result2, "FTP", "UploadFile", "Multiple, binary, " + Postfix, ImageDD.Size()); - EndIf; - - EndDo; - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure FTP_DeleteFile(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "pic_from_binary.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "DeleteFile", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "FTP", "DeleteFile", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "pic_from_binary.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "DeleteFile", Options); - - Process(Result , "FTP", "DeleteFile", "Nonexistent, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", ""); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Result , "FTP", "DeleteFile", "Check, " + Postfix); - -EndProcedure - -Procedure FTP_DeleteDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/another_one"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "DeleteDirectory", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "FTP", "DeleteDirectory", Postfix); - -EndProcedure - -Procedure FTP_ClearDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "."); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ClearDirectory", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "FTP", "ClearDirectory", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "."); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Result , "FTP", "ClearDirectory", "Check, " + Postfix); - -EndProcedure - -Procedure FTP_GetObjectSize(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "FTP", "GetObjectSize", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/another.bin"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - - Process(Result , "FTP", "GetObjectSize", "Nonexistent, " + Postfix); - -EndProcedure - -Procedure FTP_UpdatePath(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("old" , "new_dir/pic_from_disk.png"); - Options.Insert("new" , "new_dir/pic_copy.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "FTP", "UpdatePath", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/pic_copy.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - - Process(Result , "FTP", "UpdatePath", "Check, new, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir/pic_from_binary.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - - Process(Result , "FTP", "UpdatePath", "Check, old, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("old" , "new_dir"); - Options.Insert("new" , "brand_new_dir"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); - - Process(Result , "FTP", "UpdatePath", "Directory, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "."); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Result , "FTP", "UpdatePath", "List, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("old" , "brand_new_dir"); - Options.Insert("new" , "new_dir"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); - - Process(Result , "FTP", "UpdatePath", "Directory, back, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("old" , "new_dir/pic_copy.png"); - Options.Insert("new" , "new_dir/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); - - Process(Result , "FTP", "UpdatePath", "Back, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "."); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); - - Process(Result , "FTP", "UpdatePath", "List, back, " + Postfix); - -EndProcedure - -Procedure FTP_SaveFile(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - - Path = "new_dir/pic_from_disk.png"; - FileName = GetTempFileName("bin"); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", Path); - Options.Insert("file", FileName); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "SaveFile", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "SaveFile", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", Path); - - Size = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - - Process(Size, "FTP", "SaveFile", "Size, " + Postfix); - - FileObject = New File(FileName); - - FileSize = FileObject.Size(); - ResultSize = Result["bytes"]; - CheckSize = Size["bytes"]; - - Process(FileSize, "FTP", "SaveFile", "File size, " + Postfix, ResultSize, CheckSize); - - Path = "new_dir/pic_from_disk.png"; - - For N = 1 To 5 Do - - Result = OPI_FTP.SaveFile(Connection, Path, FileName); - - If Not Result["result"] Then - Process(Result, "FTP", "SaveFile", "Multiple, " + Postfix); - EndIf; - - EndDo; - - OPI_Tools.RemoveFileWithTry(FileName, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure FTP_GetFileData(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - - Path = "new_dir/pic_from_disk.png"; - Result = OPI_FTP.GetFileData(Connection, Path); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "GetFileData", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", Path); - - Size = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); - - Process(Size, "FTP", "GetFileData", "Size, " + Postfix); - - FileSize = Result.Size(); - CheckSize = Size["bytes"]; - - Process(FileSize, "FTP", "GetFileData", "File size, " + Postfix, CheckSize); - - Path = "new_dir/pic_from_disk.png"; - - For N = 1 To 5 Do - - Result = OPI_FTP.GetFileData(Connection, Path); - - If Not TypeOf(Result) = Type("BinaryData") Then - Process(Result, "FTP", "GetFileData", "Multiple, " + Postfix); - EndIf; - - EndDo; - -EndProcedure - -Procedure FTP_Ping(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "Ping", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "Ping", Postfix); - -EndProcedure - -Procedure FTP_ExecuteCustomCommand(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - - CommandText = "UMASK"; - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("cmd" , CommandText); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ExecuteCustomCommand", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "ExecuteCustomCommand", Postfix); - -EndProcedure - -Procedure FTP_ExecuteArbitraryCommand(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - - CommandText = "PWD"; - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("cmd" , CommandText); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ExecuteArbitraryCommand", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "ExecuteArbitraryCommand", Postfix); - -EndProcedure - -Procedure FTP_GetCurrentDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetCurrentDirectory", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "GetCurrentDirectory", Postfix, FunctionParameters); - -EndProcedure - -Procedure FTP_ChangeCurrentDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Path = "new_dir"; - Result = OPI_FTP.ChangeCurrentDirectory(Connection, Path); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "ChangeCurrentDirectory", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetCurrentDirectory", Options); - - Process(Result, "FTP", "ChangeCurrentDirectory", "Check, " + Postfix, Path); - - Path = FunctionParameters["FTP_RootPath"]; - Result = OPI_FTP.ChangeCurrentDirectory(Connection, Path); - - Process(Result, "FTP", "ChangeCurrentDirectory", "Back, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetCurrentDirectory", Options); - - Process(Result, "FTP", "ChangeCurrentDirectory", "Check, back, " + Postfix, Path); - -EndProcedure - -Procedure FTP_GetProtocolFeatureList(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["FTP_IP"]; - Port = FunctionParameters["FTP_Port"]; - Login = FunctionParameters["FTP_User"]; - Password = FunctionParameters["FTP_Password"]; - - UseProxy = True; - FTPS = True; - - ProxySettings = Undefined; - TLSSettings = Undefined; // FTPS - - UseProxy = FunctionParameters["Proxy"]; // SKIP - FTPS = FunctionParameters["TLS"]; // SKIP - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); - - EndIf; - - If FTPS Then - Options = New Structure; - Options.Insert("trust", True); - - TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); - EndIf; - - Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); - - If OPI_FTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProtocolFeatureList", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "FTP", "GetProtocolFeatureList", Postfix); - -EndProcedure - -#EndRegion - -#Region ReportPortal - -Procedure ReportPortal_GetTemporaryToken(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Login = FunctionParameters["RPortal_Login"]; - Password = FunctionParameters["RPortal_Password"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("login", Login); - Options.Insert("pass" , Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetTemporaryToken", Options); - - // END - - Process(Result, "ReportPortal", "GetTemporaryToken", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_GetPermanentToken(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - UserID = FunctionParameters["RPortal_UserID"]; - KeyName = "test_key_2"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("user" , UserID); - Options.Insert("name" , KeyName); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetPermanentToken", Options); - - // END - - Process(Result, "ReportPortal", "GetPermanentToken", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_DeletePermanentToken(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TestApiKey"]; - UserID = FunctionParameters["RPortal_UserID"]; - KeyID = FunctionParameters["RPortal_TestKeyID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("user" , UserID); - Options.Insert("id" , KeyID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeletePermanentToken", Options); - - // END - - Process(Result, "ReportPortal", "DeletePermanentToken"); - -EndProcedure - -Procedure ReportPortal_GetUserTokens(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - UserID = FunctionParameters["RPortal_UserID"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("user" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserTokens", Options); - - // END - - Process(Result, "ReportPortal", "GetUserTokens"); - -EndProcedure - -Procedure ReportPortal_CreateLaunch(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Project = "Test"; - - StartDate = Date("20260101100000"); - - LaunchStructure = New Structure; - LaunchStructure.Insert("name" , "Test"); - LaunchStructure.Insert("startTime" , StartDate); - LaunchStructure.Insert("description", "Test launch"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("params", LaunchStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateLaunch", Options); - - // END - - Process(Result, "ReportPortal", "CreateLaunch", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_FinishLaunch(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunch"]; - Project = "Test"; - - EndDate = Date("20260101200000"); - Options = New Structure; - Options.Insert("end" , EndDate); - Options.Insert("status", "passed"); - Options.Insert("descr" , "Updated launch description"); - - FinishStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchCompletionStructure", Options); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("uuid" , LaunchID); - Options.Insert("params", FinishStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "FinishLaunch", Options); - - // END - - Process(Result, "ReportPortal", "FinishLaunch"); - -EndProcedure - -Procedure ReportPortal_CreateItem(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunch"]; - Project = "Test"; - - StartDate = Date("20260101100000"); - - ElementStructure = New Structure; - ElementStructure.Insert("name" , "Test"); - ElementStructure.Insert("startTime" , StartDate); - ElementStructure.Insert("type" , "test"); - ElementStructure.Insert("description", "Test launch"); - ElementStructure.Insert("launchUuid" , LaunchID); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("params", ElementStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateItem", Options); - - // END - - Process(Result, "ReportPortal", "CreateItem", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_FinishItem(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ElementID = FunctionParameters["RPortal_TestItem"]; - Project = "Test"; - - EndDate = Date("20260101200000"); - - FinishStructure = New Structure; - FinishStructure.Insert("endTime", EndDate); - FinishStructure.Insert("status" , "passed"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("uuid" , ElementID); - Options.Insert("params", FinishStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "FinishItem", Options); - - // END - - Process(Result, "ReportPortal", "FinishItem"); - -EndProcedure - -Procedure ReportPortal_GetLaunchStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchStructure", Options); - - // END - - Process(Result, "ReportPortal", "GetLaunchStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchStructure", Options); - - Process(Result, "ReportPortal", "GetLaunchStructure", "Clear"); - -EndProcedure - -Procedure ReportPortal_GetItemStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemStructure", Options); - - // END - - Process(Result, "ReportPortal", "GetItemStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemStructure", Options); - - Process(Result, "ReportPortal", "GetItemStructure", "Clear"); - -EndProcedure - -Procedure ReportPortal_GetItemCompletionStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemCompletionStructure", Options); - - // END - - Process(Result, "ReportPortal", "GetItemCompletionStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemCompletionStructure", Options); - - Process(Result, "ReportPortal", "GetItemCompletionStructure", "Clear"); - -EndProcedure - -Procedure ReportPortal_GetLaunchCompletionStructure(FunctionParameters) - - Time = Date("20260101100000"); - Status = "passed"; - Description = "Some test"; - Attributes = "key1:value1, key2:value2"; - - Options = New Structure; - Options.Insert("end" , Time); - Options.Insert("status", Status); - Options.Insert("descr" , Description); - Options.Insert("attr" , Attributes); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchCompletionStructure", Options); - - // END - - Process(Result, "ReportPortal", "GetLaunchCompletionStructure"); - -EndProcedure - -Procedure ReportPortal_WriteLog(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunch"]; - ElementID = FunctionParameters["RPortal_TestItem"]; - Project = "Test"; - Time = Date("20260101100010"); - Text = "Some log 1"; - - Options = New Structure; - Options.Insert("launch", LaunchID); - Options.Insert("id" , ElementID); - Options.Insert("time" , Time); - Options.Insert("text" , Text); - - LogStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLogStructure", Options); - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("params", LogStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "WriteLog", Options); - - // END - - Process(Result, "ReportPortal", "WriteLog", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_GetLogStructure(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunch"]; - ElementID = FunctionParameters["RPortal_TestItem"]; - Project = "Test"; - Time = Date("20260101100010"); - Text = "Some log"; - - Options = New Structure; - Options.Insert("launch", LaunchID); - Options.Insert("id" , ElementID); - Options.Insert("time" , Time); - Options.Insert("text" , Text); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLogStructure", Options); - - // END - - Process(Result, "ReportPortal", "GetLogStructure"); - -EndProcedure - -Procedure ReportPortal_GetLog(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LogUUID = FunctionParameters["RPortal_TestLog"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("uuid" , LogUUID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLog", Options); - - // END - - Process(Result, "ReportPortal", "GetLog", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_DeleteLog(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LogID = FunctionParameters["RPortal_TestLogId"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("id" , LogID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteLog", Options); - - // END - - Process(Result, "ReportPortal", "DeleteLog"); - -EndProcedure - -Procedure ReportPortal_CreateProject(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Name = "testproject"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("name" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateProject", Options); - - // END - - Process(Result, "ReportPortal", "CreateProject", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_DeleteProject(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ProjectID = FunctionParameters["RPortal_TestProject"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , ProjectID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteProject", Options); - - // END - - Process(Result, "ReportPortal", "DeleteProject"); - -EndProcedure - -Procedure ReportPortal_GetProject(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Name = "TestProject"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("name" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetProject", Options); - - // END - - Process(Result, "ReportPortal", "GetProject"); - -EndProcedure - -Procedure ReportPortal_GetProjects(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetProjects", Options); - - // END - - Process(Result, "ReportPortal", "GetProjects"); - -EndProcedure - -Procedure ReportPortal_AddUsersToProject(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ProjectName = "TestProject"; - - UserList = New Map; - UserList.Insert("default", "MEMBER"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , ProjectName); - Options.Insert("users", UserList); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "AddUsersToProject", Options); - - // END - - Process(Result, "ReportPortal", "AddUsersToProject"); - -EndProcedure - -Procedure ReportPortal_ExcludeUsersFromProject(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ProjectName = "TestProject"; - - ArrayOfUsers = New Array; - ArrayOfUsers.Add("default"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , ProjectName); - Options.Insert("users", ArrayOfUsers); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "ExcludeUsersFromProject", Options); - - // END - - Process(Result, "ReportPortal", "ExcludeUsersFromProject"); - -EndProcedure - -Procedure ReportPortal_GetLaunch(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchUUID = FunctionParameters["RPortal_TestLaunch"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("uuid" , LaunchUUID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunch", Options); - - // END - - Process(Result, "ReportPortal", "GetLaunch", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_GetLaunchItems(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunchId"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("id" , LaunchID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchItems", Options); - - // END - - Process(Result, "ReportPortal", "GetLaunchItems"); - -EndProcedure - -Procedure ReportPortal_GetItem(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ItemUUID = FunctionParameters["RPortal_TestItem"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("uuid" , ItemUUID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItem", Options); - - // END - - Process(Result, "ReportPortal", "GetItem", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_GetItemLogs(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ElementID = FunctionParameters["RPortal_TestItemId"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("item" , ElementID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemLogs", Options); - - // END - - Process(Result, "ReportPortal", "GetItemLogs"); - -EndProcedure - -Procedure ReportPortal_UpdateLaunch(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunchId"]; - Project = "Test"; - - LaunchStructure = New Structure; - LaunchStructure.Insert("description", "New description"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("id" , LaunchID); - Options.Insert("params", LaunchStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateLaunch", Options); - - // END - - Process(Result, "ReportPortal", "UpdateLaunch"); - -EndProcedure - -Procedure ReportPortal_UpdateItem(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ElementID = FunctionParameters["RPortal_TestItemId"]; - Project = "Test"; - - LaunchStructure = New Structure; - LaunchStructure.Insert("description", "New description"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("id" , ElementID); - Options.Insert("params", LaunchStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateItem", Options); - - // END - - Process(Result, "ReportPortal", "UpdateItem"); - -EndProcedure - -Procedure ReportPortal_DeleteLaunch(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunchId"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("id" , LaunchID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteLaunch", Options); - - // END - - Process(Result, "ReportPortal", "DeleteLaunch"); - -EndProcedure - -Procedure ReportPortal_DeleteItem(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - ElementID = FunctionParameters["RPortal_TestItemId"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("proj" , Project); - Options.Insert("id" , ElementID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteItem", Options); - - // END - - Process(Result, "ReportPortal", "DeleteItem"); - -EndProcedure - -Procedure ReportPortal_GetLaunchReport(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - LaunchID = FunctionParameters["RPortal_TestLaunchId"]; - Project = "Test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("proj" , Project); - Options.Insert("id" , LaunchID); - Options.Insert("format", "html"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchReport", Options); - - // END - - Process(Result, "ReportPortal", "GetLaunchReport"); - -EndProcedure - -Procedure ReportPortal_CreateUser(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Name = "testproject"; - - UserStructure = New Structure; - UserStructure.Insert("active" , True); - UserStructure.Insert("login" , "test"); - UserStructure.Insert("password" , "G00d_Pass"); - UserStructure.Insert("fullName" , "Test User"); - UserStructure.Insert("email" , "test@example.com"); - UserStructure.Insert("accountRole" , "USER"); - UserStructure.Insert("projectRole" , "MEMBER"); - UserStructure.Insert("defaultProject", "test"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("params", UserStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateUser", Options); - - // END - - Process(Result, "ReportPortal", "CreateUser", , FunctionParameters); - -EndProcedure - -Procedure ReportPortal_DeleteUser(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - UserID = FunctionParameters["RPortal_TestUser"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("id" , UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteUser", Options); - - // END - - Process(Result, "ReportPortal", "DeleteUser"); - -EndProcedure - -Procedure ReportPortal_GetUserFieldsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserFieldsStructure", Options); - - // END - - Process(Result, "ReportPortal", "GetUserFieldsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserFieldsStructure", Options); - - Process(Result, "ReportPortal", "GetUserFieldsStructure", "Clear"); - -EndProcedure - -Procedure ReportPortal_UpdateUser(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Login = "test"; - - UserStructure = New Structure; - UserStructure.Insert("fullName", "Updated Test User"); - UserStructure.Insert("email" , "updated@example.com"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token" , Token); - Options.Insert("login" , Login); - Options.Insert("params", UserStructure); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateUser", Options); - - // END - - Process(Result, "ReportPortal", "UpdateUser"); - -EndProcedure - -Procedure ReportPortal_GetCurrentUser(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetCurrentUser", Options); - - // END - - Process(Result, "ReportPortal", "GetCurrentUser"); - -EndProcedure - -Procedure ReportPortal_GetUser(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Login = "test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("login", Login); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUser", Options); - - // END - - Process(Result, "ReportPortal", "GetUser"); - -EndProcedure - -Procedure ReportPortal_GetUsers(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUsers", Options); - - // END - - Process(Result, "ReportPortal", "GetUsers"); - -EndProcedure - -Procedure ReportPortal_GetUserProjects(FunctionParameters) - - URL = FunctionParameters["RPortal_URL"]; - Token = FunctionParameters["RPortal_TempToken"]; - Login = "test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("token", Token); - Options.Insert("login", Login); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserProjects", Options); - - // END - - Process(Result, "ReportPortal", "GetUserProjects"); - -EndProcedure - -#EndRegion - -#Region SSH - -Procedure SSH_CreateConnection(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); - - EndIf; - - Result = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); - - // END - - Process(Result, "SSH", "CreateConnection", Postfix); - -EndProcedure - -Procedure SSH_ExecuteCommand(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); - - If OPI_SSH.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("comm", "whoami"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SSH", "ExecuteCommand", Postfix); - -EndProcedure - -Procedure SSH_GetConnectionConfiguration(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); - - EndIf; - - Options = New Structure; - Options.Insert("set" , SSHSettings); - Options.Insert("proxy", ProxySettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetConnectionConfiguration", Options); - - // END - - Process(Result, "SSH", "GetConnectionConfiguration", Postfix); - - Options = New Structure; - Options.Insert("conn", Result); - Options.Insert("comm", "whoami"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); - - Process(Result, "SSH", "GetConnectionConfiguration", "Check, " + Postfix); - -EndProcedure - -Procedure SSH_CloseConnection(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); - - If OPI_SSH.IsConnector(Connection) Then - Result = OPI_SSH.CloseConnection(Connection); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SSH", "CloseConnection", Postfix); - -EndProcedure - -Procedure SSH_IsConnector(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = 2223; // SKIP - - SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); - Result = OPI_SSH.IsConnector(Connection); - - // END - - Process(Result, "SSH", "IsConnector", Postfix); - - Result = OPI_SSH.IsConnector("a"); - - Process(Result, "SSH", "IsConnector", "Error, " + Postfix); - -EndProcedure - -Procedure SSH_GetSettingsLoginPassword(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); - - // END - - Process(Result, "SSH", "GetSettingsLoginPassword", Postfix); - -EndProcedure - -Procedure SSH_GetSettingsPrivateKey(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("key" , PrivateKey); - Options.Insert("pub" , PublicKey); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsPrivateKey", Options); - - // END - - Process(Result, "SSH", "GetSettingsPrivateKey", Postfix); - -EndProcedure - -Procedure SSH_GetSettingsViaAgent(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options); - - // END - - Process(Result, "SSH", "GetSettingsViaAgent", Postfix); - -EndProcedure - -Procedure SSH_GetSettingsKI(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add("yes"); - AnswersArray.Add(Password); - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("user" , Login); - Options.Insert("prompts", AnswersArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsKI", Options); - - // END - - Process(Result, "SSH", "GetSettingsKI", Postfix); - -EndProcedure - -Procedure SSH_GetProxySettings(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); - - // END - - Process(Result, "SSH", "GetProxySettings", Postfix); - -EndProcedure - -#EndRegion - -#Region SFTP - -Procedure SFTP_CreateConnection(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Result = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - // END - - Process(Result, "SFTP", "CreateConnection", Postfix); - -EndProcedure - -Procedure SFTP_CreateNewDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "CreateNewDirectory", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "CreateNewDirectory", Postfix); - -EndProcedure - -Procedure SFTP_DeleteDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "new_dir"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteDirectory", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "DeleteDirectory", Postfix); - -EndProcedure - -Procedure SFTP_GetCurrentDirectory(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetCurrentDirectory", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "GetCurrentDirectory", Postfix); - -EndProcedure - -Procedure SFTP_ListObjects(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "test_folder"); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "ListObjects", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "test_folder"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); - - Process(Result, "SFTP", "ListObjects", Postfix + ", No recursion"); - -EndProcedure - -Procedure SFTP_UploadFile(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Image = "C:\pic.png"; - - Image = FunctionParameters["Picture"]; // SKIP - TFN = GetTempFileName("png"); // SKIP - CopyFile(Image, TFN); // SKIP - Image = TFN; // SKIP - - ImageDD = New BinaryData(Image); - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("file", Image); - Options.Insert("path", "pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UploadFile", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("file", ImageDD); - Options.Insert("path", "files_folder/pic_from_binary.png"); - - Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UploadFile", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - UploadedFile = New File(Image); - - Process(Result , "SFTP", "UploadFile", Postfix , UploadedFile.Size()); - Process(Result2, "SFTP", "UploadFile", "Binary, " + Postfix, ImageDD.Size()); - - FileSizeLocal = UploadedFile.Size(); - FileSizeLocalBD = ImageDD.Size(); - - FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, "pic_from_disk.png")["data"]["size"]; - FileSizeRemoteBD = OPI_SFTP.GetFileInformation(Connection, "files_folder/pic_from_binary.png")["data"]["size"]; - - Process(FileSizeLocal , "SFTP", "SaveFile", "File size, " + Postfix , FileSizeRemote); - Process(FileSizeLocalBD, "SFTP", "SaveFile", "File size, BD, " + Postfix, FileSizeRemoteBD); - - For N = 1 To 7 Do - - Result = OPI_SFTP.UploadFile(Connection, Image, "pic_from_disk.png"); - Result2 = OPI_SFTP.UploadFile(Connection, ImageDD, "files_folder/pic_from_binary.png"); - - If Not Result["result"] Then - Process(Result, "SFTP", "UploadFile", "Multiple, " + Postfix, ImageDD.Size()); - EndIf; - - If Not Result2["result"] Then - Process(Result2, "SFTP", "UploadFile", "Multiple, binary, " + Postfix, ImageDD.Size()); - EndIf; - - EndDo; - - OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure SFTP_DeleteFile(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "files_folder/pic_from_binary.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteFile", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "SFTP", "DeleteFile", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "files_folder/pic_from_binary.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteFile", Options); - - Process(Result , "SFTP", "DeleteFile", "Nonexistent, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "files_folder"); - Options.Insert("rcv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); - - Process(Result , "SFTP", "DeleteFile", "Check, " + Postfix); - -EndProcedure - -Procedure SFTP_IsConnector(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - Result = OPI_SFTP.IsConnector(Connection); - - // END - - Process(Result, "SFTP", "IsConnector", Postfix); - - Result = OPI_SFTP.IsConnector("a"); - - Process(Result, "SFTP", "IsConnector", "Error, " + Postfix); - -EndProcedure - -Procedure SFTP_GetSettingsLoginPassword(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - // END - - Process(Result, "SFTP", "GetSettingsLoginPassword", Postfix); - -EndProcedure - -Procedure SFTP_GetSettingsPrivateKey(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("key" , PrivateKey); - Options.Insert("pub" , PublicKey); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsPrivateKey", Options); - - // END - - Process(Result, "SFTP", "GetSettingsPrivateKey", Postfix); - -EndProcedure - -Procedure SFTP_GetSettingsViaAgent(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsViaAgent", Options); - - // END - - Process(Result, "SFTP", "GetSettingsViaAgent", Postfix); - -EndProcedure - -Procedure SFTP_GetSettingsKI(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add("yes"); - AnswersArray.Add(Password); - - Options = New Structure; - Options.Insert("host" , Host); - Options.Insert("port" , Port); - Options.Insert("user" , Login); - Options.Insert("prompts", AnswersArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsKI", Options); - - // END - - Process(Result, "SFTP", "GetSettingsKI", Postfix); - -EndProcedure - -Procedure SFTP_GetProxySettings(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - // END - - Process(Result, "SFTP", "GetProxySettings", Postfix); - -EndProcedure - -Procedure SFTP_GetConnectionConfiguration(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Options = New Structure; - Options.Insert("set" , SFTPSettings); - Options.Insert("proxy", ProxySettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetConnectionConfiguration", Options); - - // END - - Process(Result, "SFTP", "GetConnectionConfiguration", Postfix); - - Options = New Structure; - Options.Insert("conn", Result); - Options.Insert("comm", "whoami"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); - - Process(Result, "SFTP", "GetConnectionConfiguration", "Check, " + Postfix); - -EndProcedure - -Procedure SFTP_CloseConnection(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Result = OPI_SFTP.CloseConnection(Connection); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "CloseConnection", Postfix); - -EndProcedure - -Procedure SFTP_SaveFile(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - - Path = "pic_from_disk.png"; - FileName = GetTempFileName("bin"); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", Path); - Options.Insert("file", FileName); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "SaveFile", Options); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "SaveFile", Postfix); - - UploadedFile = New File(FileName); - FileSizeLocal = UploadedFile.Size(); - FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, Path)["data"]["size"]; - - Process(FileSizeLocal, "SFTP", "SaveFile", "File size, " + Postfix, FileSizeRemote); - - Path = "files_folder/pic_from_binary.png"; - - For N = 1 To 20 Do - - Result = OPI_SFTP.SaveFile(Connection, Path, FileName); - - If Not Result["result"] Then - Process(Result, "SFTP", "SaveFile", "Multiple, " + Postfix); - EndIf; - - EndDo; - - OPI_Tools.RemoveFileWithTry(FileName, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure SFTP_GetFileData(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - - Path = "pic_from_disk.png"; - Result = OPI_SFTP.GetFileData(Connection, Path); - - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result, "SFTP", "GetFileData", Postfix); - - FileSizeLocal = Result.Size(); - FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, Path)["data"]["size"]; - - Process(FileSizeLocal, "SFTP", "GetFileData", "File size, " + Postfix, FileSizeRemote); - - Path = "files_folder/pic_from_binary.png"; - - For N = 1 To 20 Do - - Result = OPI_SFTP.GetFileData(Connection, Path); - - If Not TypeOf(Result) = Type("BinaryData") Then - Process(Result, "SFTP", "GetFileData", "Multiple, " + Postfix); - EndIf; - - EndDo; - -EndProcedure - -Procedure SFTP_UpdatePath(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("old" , "pic_from_disk.png"); - Options.Insert("new" , "files_folder/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UpdatePath", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "SFTP", "UpdatePath", Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); - - Process(Result , "SFTP", "UpdatePath", "Check, Old, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "files_folder/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); - - Process(Result , "SFTP", "UpdatePath", "Check, New, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("old" , "files_folder/pic_from_disk.png"); - Options.Insert("new" , "pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UpdatePath", Options); - - Process(Result , "SFTP", "UpdatePath", "Back, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "files_folder/pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); - - Process(Result , "SFTP", "UpdatePath", "Check, Old, Back, " + Postfix); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "pic_from_disk.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); - - Process(Result , "SFTP", "UpdatePath", "Check, New, Back, " + Postfix); - -EndProcedure - -Procedure SFTP_GetFileInformation(FunctionParameters) - - Postfix = FunctionParameters["Postfix"]; // SKIP - - Host = FunctionParameters["SSH_Host"]; - Port = FunctionParameters["SSH_Port"]; - - UseProxy = True; - ProxySettings = Undefined; - AuthorizationType = "By login and password"; - - UseProxy = FunctionParameters["Proxy"]; // SKIP - AuthorizationType = FunctionParameters["AuthType"]; // SKIP - - If AuthorizationType = "By login and password" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - Options = New Structure; - Options.Insert("host", Host); - Options.Insert("port", Port); - Options.Insert("user", Login); - Options.Insert("pass", Password); - - SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); - - ElsIf AuthorizationType = "By key" Then - - Login = FunctionParameters["SSH_User"]; - PrivateKey = "./ssh_key"; - PublicKey = "./ssh_key.pub"; - - PrivateKey = FunctionParameters["SSH_Key"]; // SKIP - PublicKey = FunctionParameters["SSH_Pub"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); - - ElsIf AuthorizationType = "Keyboard interactive" Then - - Login = FunctionParameters["SSH_User"]; - Password = FunctionParameters["SSH_Password"]; - - AnswersArray = New Array; - AnswersArray.Add(Password); - - Port = FunctionParameters["SSH_PortKI"]; // SKIP - - SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); - - Else - - Login = FunctionParameters["SSH_User"]; - SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); - - EndIf; - - If UseProxy Then - - ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 - - ProxyAddress = FunctionParameters["Proxy_IP"]; - ProxyPort = FunctionParameters["Proxy_Port"]; - ProxyLogin = FunctionParameters["Proxy_User"]; - ProxyPassword = FunctionParameters["Proxy_Password"]; - - Options = New Structure; - Options.Insert("addr" , ProxyAddress); - Options.Insert("port" , ProxyPort); - Options.Insert("type" , ProxyType); - Options.Insert("login", ProxyLogin); - Options.Insert("pass" , ProxyPassword); - - ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); - - EndIf; - - Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); - - If OPI_SFTP.IsConnector(Connection) Then - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("path", "files_folder/pic_from_binary.png"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); - Else - Result = Connection; // Error of connection - EndIf; - - // END - - Process(Result , "SFTP", "GetFileInformation", Postfix); - -EndProcedure - -#EndRegion - -#Region GreenMax - -Procedure GreenMax_FormAccessParameters(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - - // END - - Process(Result, "GreenMax", "FormAccessParameters"); - -EndProcedure - -Procedure GreenMax_GetAuthorizationCode(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - PhoneNumber = 441234567890; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("phone" , PhoneNumber); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetAuthorizationCode", Options); - - // END - - Process(Result, "GreenMax", "GetAuthorizationCode"); - -EndProcedure - -Procedure GreenMax_LogoutInstance(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "LogoutInstance", Options); - - // END - - Process(Result, "GreenMax", "LogoutInstance"); - -EndProcedure - -Procedure GreenMax_SendAuthorizationCode(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - AuthCode = 123456; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("code" , AuthCode); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendAuthorizationCode", Options); - - // END - - Process(Result, "GreenMax", "SendAuthorizationCode"); - -EndProcedure - -Procedure GreenMax_GetInstanceStatus(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceStatus", Options); - - // END - - Process(Result, "GreenMax", "GetInstanceStatus"); - -EndProcedure - -Procedure GreenMax_RebootInstance(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "RebootInstance", Options); - - // END - - Process(Result, "GreenMax", "RebootInstance"); - -EndProcedure - -Procedure GreenMax_GetInstanceSettingsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceSettingsStructure", Options); - - // END - - Process(Result, "GreenMax", "GetInstanceSettingsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceSettingsStructure", Options); - - Process(Result, "GreenMAx", "GetInstanceSettingsStructure", "Clear"); - -EndProcedure - -Procedure GreenMax_GetInstanceSettings(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceSettings", Options); - - // END - - Process(Result, "GreenMax", "GetInstanceSettings", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_SetInstanceSettings(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - - SettingsStructure = New Structure; - SettingsStructure.Insert("markIncomingMessagesReaded" , "no"); - SettingsStructure.Insert("outgoingWebhook" , "no"); - SettingsStructure.Insert("outgoingAPIMessageWebhook" , "yes"); - - Options = New Structure; - Options.Insert("settings", SettingsStructure); - Options.Insert("access" , AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetInstanceSettings", Options); - - // END - - Process(Result, "GreenMax", "SetInstanceSettings"); - -EndProcedure - -Procedure GreenMax_SetProfilePicture(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Image = FunctionParameters["Picture"]; // URL, Path or Binary Data - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("picture", Image); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetProfilePicture", Options); - - // END - - Process(Result, "GreenMax", "SetProfilePicture"); - -EndProcedure - -Procedure GreenMax_GetAccountInformation(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetAccountInformation", Options); - - // END - - Process(Result, "GreenMax", "GetAccountInformation"); - -EndProcedure - -Procedure GreenMax_CheckAccount(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - PhoneNumber = 441234567890; - PhoneNumber = FunctionParameters["GreenMax_Phone"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("phone" , PhoneNumber); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "CheckAccount", Options); - - // END - - Process(Result, "GreenMax", "CheckAccount", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_GetContactList(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Count = 1; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("count" , Count); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetContactList", Options); - - // END - - Process(Result, "GreenMax", "GetContactList", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_GetContactInformation(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ContactID = 87654321; - ContactID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ContactID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetContactInformation", Options); - - // END - - Process(Result, "GreenMax", "GetContactInformation"); - -EndProcedure - -Procedure GreenMax_GetChatList(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatList", Options); - - // END - - Process(Result, "GreenMax", "GetChatList"); - -EndProcedure - -Procedure GreenMax_GetChatAvatar(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 87654321; - ChatID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatAvatar", Options); - - // END - - Process(Result, "GreenMax", "GetChatAvatar"); - -EndProcedure - -Procedure GreenMax_CreateGroup(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - UserID = 87654321; - Name = "New group"; - - UserID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("name" , Name); - Options.Insert("members", UserID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "CreateGroup", Options); - - // END - - Process(Result, "GreenMax", "CreateGroup", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_AddGroupMember(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - MemberID = 87654321; - - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("member", MemberID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "AddGroupMember", Options); - - // END - - Process(Result, "GreenMax", "AddGroupMember"); - - GreenMax_RemoveGroupMember(FunctionParameters); - -EndProcedure - -Procedure GreenMax_RemoveGroupMember(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - MemberID = 87654321; - - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("member", MemberID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "RemoveGroupMember", Options); - - // END - - Process(Result, "GreenMax", "RemoveGroupMember"); - -EndProcedure - -Procedure GreenMax_LeaveGroup(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "LeaveGroup", Options); - - // END - - Process(Result, "GreenMax", "LeaveGroup"); - -EndProcedure - -Procedure GreenMax_UpdateGroupName(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Name = "New group name"; - ChatID = 12345678; - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("name" , Name); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "UpdateGroupName", Options); - - // END - - Process(Result, "GreenMax", "UpdateGroupName"); - -EndProcedure - -Procedure GreenMax_GetGroupInformation(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetGroupInformation", Options); - - // END - - Process(Result, "GreenMax", "GetGroupInformation"); - -EndProcedure - -Procedure GreenMax_ChangeGroupSettings(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Settings = New Structure; - Settings.Insert("allowParticipantsEditGroupSettings" , True); - Settings.Insert("allowParticipantsPinMessages" , False); - Settings.Insert("allowParticipantsAddMembers" , False); - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("set" , Settings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "ChangeGroupSettings", Options); - - // END - - Process(Result, "GreenMax", "ChangeGroupSettings"); - -EndProcedure - -Procedure GreenMax_GetGroupSettingsStructure(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetGroupSettingsStructure", Options); - - // END - - Process(Result, "GreenMax", "GetGroupSettingsStructure"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetGroupSettingsStructure", Options); - - Process(Result, "GreenMax", "GetGroupSettingsStructure", "Clear"); - -EndProcedure - -Procedure GreenMax_SetAdminRights(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - MemberID = 87654321; - - ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP - MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("member", MemberID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetAdminRights", Options); - - // END - - Process(Result, "GreenMax", "SetAdminRights"); - -EndProcedure - -Procedure GreenMax_RevokeAdminRights(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - MemberID = 87654321; - - ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP - MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("member", MemberID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "RevokeAdminRights", Options); - - // END - - Process(Result, "GreenMax", "RevokeAdminRights"); - -EndProcedure - -Procedure GreenMax_SetGroupPicture(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Image = FunctionParameters["Picture3"]; // URL, Path or Binary Data - ChatID = 12345678; - - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("picture", Image); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetGroupPicture", Options); - - // END - - Process(Result, "GreenMax", "SetGroupPicture"); - -EndProcedure - -Procedure GreenMax_SendTextMessage(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Text = "Message text"; - ChatID = 12345678; - Set = 2000; - - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("text" , Text); - Options.Insert("typing", Set); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendTextMessage", Options); - - // END - - Process(Result, "GreenMax", "SendTextMessage", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_SendFile(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - File = FunctionParameters["Picture"]; // URL, Path or Binary Data - FileName = "photo.jpg"; - ChatID = 12345678; - Description = "File description"; - - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("file" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFile", Options); - - // END - - Process(Result, "GreenMax", "SendFile", , FunctionParameters); - - File = FunctionParameters["Video"]; - FileName = "vid.mp4"; - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("file" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - Options.Insert("typing" , 1000); - Options.Insert("ttype" , "video"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFile", Options); - - Process(Result, "GreenMax", "SendFile", "Video"); - -EndProcedure - -Procedure GreenMax_SendFileByURL(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - File = FunctionParameters["Picture"]; - FileName = "photo.jpg"; - ChatID = 12345678; - Description = "File description"; - - ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("url" , File); - Options.Insert("filename", FileName); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFileByURL", Options); - - // END - - Process(Result, "GreenMax", "SendFileByURL"); - - File = FunctionParameters["Video"]; - FileName = "vid.mp4"; - - MessageID = Result["idMessage"]; - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("url" , File); - Options.Insert("filename", FileName); - Options.Insert("caption" , Description); - Options.Insert("typing" , 1000); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFileByURL", Options); - - Process(Result, "GreenMax", "SendFileByURL", "Typing"); - -EndProcedure - -Procedure GreenMax_GetNotification(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetNotification", Options); - - // END - - Process(Result, "GreenMax", "GetNotification", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_DeleteNotification(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - NotificationID = FunctionParameters["GreenMax_ReceiptID"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("id" , NotificationID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "DeleteNotification", Options); - - // END - - Process(Result, "GreenMax", "DeleteNotification", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_MarkMessagesAsRead(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - - ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "MarkMessagesAsRead", Options); - - // END - - Process(Result, "GreenMax", "MarkMessagesAsRead"); - -EndProcedure - -Procedure GreenMax_GetChatMessageHistory(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - Count = 3; - - ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("count" , Count); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatMessageHistory", Options); - - // END - - Process(Result, "GreenMax", "GetChatMessageHistory", , FunctionParameters); - -EndProcedure - -Procedure GreenMax_GetChatMessage(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - ChatID = 12345678; - MessageID = FunctionParameters["GreenMax_MainMessageID"]; - - ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access" , AccessParameters); - Options.Insert("chat" , ChatID); - Options.Insert("message", MessageID); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatMessage", Options); - - // END - - Process(Result, "GreenMax", "GetChatMessage", , MessageID); - -EndProcedure - -Procedure GreenMax_GetIncomingMessageLog(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Period = 30; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("span" , Period); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetIncomingMessageLog", Options); - - // END - - Process(Result, "GreenMax", "GetIncomingMessageLog"); - -EndProcedure - -Procedure GreenMax_GetOutgoingMessageLog(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Period = 30; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - Options.Insert("span" , Period); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetOutgoingMessageLog", Options); - - // END - - Process(Result, "GreenMax", "GetOutgoingMessageLog"); - -EndProcedure - -Procedure GreenMax_GetOutgoingMessageCount(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetOutgoingMessageCount", Options); - - // END - - Process(Result, "GreenMax", "GetOutgoingMessageCount"); - -EndProcedure - -Procedure GreenMax_GetOutgoingMessageQueue(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetOutgoingMessageQueue", Options); - - // END - - Process(Result, "GreenMax", "GetOutgoingMessageQueue"); - -EndProcedure - -Procedure GreenMax_ClearOutgoingMessageQueue(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "ClearOutgoingMessageQueue", Options); - - // END - - Process(Result, "GreenMax", "ClearOutgoingMessageQueue"); - -EndProcedure - -Procedure GreenMax_GetIncomingNotificationCount(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetIncomingNotificationCount", Options); - - // END - - Process(Result, "GreenMax", "GetIncomingNotificationCount"); - -EndProcedure - -Procedure GreenMax_ClearIncomingNotificationQueue(FunctionParameters) - - ApiUrl = FunctionParameters["GreenMax_ApiURL"]; - MediaUrl = FunctionParameters["GreenMax_MediaURL"]; - IdInstance = FunctionParameters["GreenMax_IdInstance"]; - ApiTokenInstance = FunctionParameters["GreenMax_Token"]; - - Options = New Structure; - Options.Insert("api" , ApiUrl); - Options.Insert("media", MediaUrl); - Options.Insert("id" , IdInstance); - Options.Insert("token", ApiTokenInstance); - - AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); - Options = New Structure; - Options.Insert("access", AccessParameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "ClearIncomingNotificationQueue", Options); - - // END - - Process(Result, "GreenMax", "ClearIncomingNotificationQueue"); - -EndProcedure - -#EndRegion - -#Region MongoDB - -Procedure MongoDB_GenerateConnectionString(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - - // END - - Process(Result, "MongoDB", "GenerateConnectionString", , FunctionParameters); - -EndProcedure - -Procedure MongoDB_CreateConnection(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - - Result = OPI_MongoDB.CreateConnection(ConnectionString); - - // END - - Process(Result, "MongoDB", "CreateConnection"); - - Result = OPI_MongoDB.CloseConnection(Result); - - Process(Result, "MongoDB", "CreateConnection", "Closing"); - -EndProcedure - -Procedure MongoDB_CloseConnection(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - Result = OPI_MongoDB.CloseConnection(Connection); - - // END - - Process(Result, "MongoDB", "CloseConnection"); - -EndProcedure - -Procedure MongoDB_IsConnector(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - Result = OPI_MongoDB.IsConnector(Connection); - - // END - - Process(Result, "MongoDB", "IsConnector"); - -EndProcedure - -Procedure MongoDB_ExecuteCommand(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - - Command = "listDatabases"; - Data = New Structure("nameOnly", True); - - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Process(Connection, "MongoDB", "ExecuteCommand", "Connection"); // SKIP - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("comm", Command); - Options.Insert("data", Data); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "ExecuteCommand", Options); - - // END - - Process(Result, "MongoDB", "ExecuteCommand"); - -EndProcedure - -Procedure MongoDB_GetDatabase(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("db" , Base); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Base = "test_db"; - - Options = New Structure; - Options.Insert("dbc", Connection); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDatabase", Options); - - // END - - Process(Result, "MongoDB", "GetDatabase"); - -EndProcedure - -Procedure MongoDB_GetListOfBases(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Options = New Structure; - Options.Insert("dbc", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetListOfBases", Options); - - // END - - Process(Result, "MongoDB", "GetListOfBases"); - -EndProcedure - -Procedure MongoDB_DeleteDatabase(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Options = New Structure; - Options.Insert("dbc", Connection); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteDatabase", Options); - - // END - - Process(Result, "MongoDB", "DeleteDatabase"); - -EndProcedure - -Procedure MongoDB_CreateCollection(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Name = "test_collection"; - Base = "test_database"; - - Parameters = New Map; - Expression = New Map; - GroupAnd = New Array; - - Condition1 = New Map; // Total >= 0 - Items1 = New Array; - Items1.Add("$total"); - Items1.Add(0); - Condition1.Insert("$gte", Items1); - - Condition2 = New Map; // Status <= 3 - Items2 = New Array; - Items2.Add("$status"); - Items2.Add(3); - Condition2.Insert("$lte", Items2); - - GroupAnd.Add(Condition1); - GroupAnd.Add(Condition2); - - Expression.Insert("$expr", GroupAnd); - Parameters.Insert("validator", Expression); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , Name); - Options.Insert("db" , Base); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateCollection", Options); - - // END - - Process(Result, "MongoDB", "CreateCollection"); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , Name); - Options.Insert("db" , Base); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateCollection", Options); - - Process(Result, "MongoDB", "CreateCollection", "Existing"); - -EndProcedure - -Procedure MongoDB_DeleteCollection(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "test_collection"; - Base = "test_database"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll", Collection); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteCollection", Options); - - // END - - Process(Result, "MongoDB", "DeleteCollection"); - -EndProcedure - -Procedure MongoDB_GetCollectionList(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Base = "test_database"; - - Options = New Structure; - Options.Insert("dbc", Connection); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetCollectionList", Options); - - // END - - Process(Result, "MongoDB", "GetCollectionList"); - -EndProcedure - -Procedure MongoDB_InsertDocuments(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "new_collection"; - DocsArray = New Array; - - // With implicit type casting - DocumentStructure = New Structure; - - TestArray = New Array; - TestArray.Add("Value1"); - TestArray.Add("Value2"); - - TestStructure = New Structure("text,number", "Text", 10); - TestBinary = GetBinaryDataFromString("Text"); - CurrentDate = OPI_Tools.GetCurrentDate(); - - DocumentStructure.Insert("stringField", "Text"); - DocumentStructure.Insert("intField" , 200); - DocumentStructure.Insert("doubleField", 123.456); - DocumentStructure.Insert("boolField" , True); - DocumentStructure.Insert("arrayField" , TestArray); - DocumentStructure.Insert("docField" , TestStructure); - DocumentStructure.Insert("dateField" , CurrentDate); - DocumentStructure.Insert("nullField"); - - DocsArray.Add(DocumentStructure); - - // With explicit type casting - DocumentStructure = New Structure; - - RegExp = New Structure("pattern,options", "[a-z]+@[a-z]+\.[a-z]+", "i"); - JSCode = "const result = [1, 2, 3].map(x => x * 2).filter(x => x > 3);"; - - DocumentStructure.Insert("stringField", New Structure("__OPI_STRING__" , "Text")); - DocumentStructure.Insert("oidField" , New Structure("__OPI_OBJECTID__" , "63ceed18f71dda7d8cf21e8e")); - DocumentStructure.Insert("jsField" , New Structure("__OPI_JS__" , JSCode)); - DocumentStructure.Insert("symbolField", New Structure("__OPI_SYMBOL__" , "Y")); - DocumentStructure.Insert("int32Field" , New Structure("__OPI_INT32__" , 10)); - DocumentStructure.Insert("int64Field" , New Structure("__OPI_INT64__" , 1000)); - DocumentStructure.Insert("doubleField", New Structure("__OPI_DOUBLE__" , 124.456)); - DocumentStructure.Insert("boolField" , New Structure("__OPI_BOOLEAN__" , True)); - DocumentStructure.Insert("dateField" , New Structure("__OPI_DATETIME__" , "1763204141")); - DocumentStructure.Insert("tsField" , New Structure("__OPI_TIMESTAMP__", CurrentDate)); - DocumentStructure.Insert("regexpField", New Structure("__OPI_REGEXP__" , RegExp)); - DocumentStructure.Insert("binaryField", New Structure("__OPI_BINARY__" , TestBinary)); - DocumentStructure.Insert("nullField" , New Structure("__OPI_NULL__")); - DocumentStructure.Insert("minkeyField", New Structure("__OPI_MINKEY__")); - DocumentStructure.Insert("maxkeyField", New Structure("__OPI_MAXKEY__")); - - TestArray = New Array; - TestArray.Add(New Structure("__OPI_SYMBOL__", "A")); - TestArray.Add(New Structure("__OPI_MINKEY__")); - - TestStructure = New Structure("code,number" - , New Structure("__OPI_JS__", "const result = 1") - , New Structure("__OPI_DOUBLE__", 10)); - - // Documents and arrays are not wrapped in a structure - DocumentStructure.Insert("docField" , TestStructure); - DocumentStructure.Insert("arrayField" , TestArray); - - DocsArray.Add(DocumentStructure); - - OPI_MongoDB.DeleteCollection(Connection, Collection, Base); // SKIP - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll", Collection); - Options.Insert("docs", DocsArray); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "InsertDocuments", Options); - - // END - - Process(Result, "MongoDB", "InsertDocuments"); - - DocsArray = New Array; - - CategoryMap = New Map; - CategoryMap.Insert(1, "electronics"); - CategoryMap.Insert(2, "clothing"); - CategoryMap.Insert(3, "books"); - CategoryMap.Insert(4, "products"); - - SupplierMap = New Map; - SupplierMap.Insert(1, "Supplier A"); - SupplierMap.Insert(2, "Supplier B"); - SupplierMap.Insert(3, "Supplier C"); - - For N = 1 To 15 Do - - DocumentStructure = New Structure; - - DocumentStructure.Insert("productName", "Product " + N); - DocumentStructure.Insert("category" , CategoryMap.Get(N % 4)); - DocumentStructure.Insert("price" , 50 + (N * 30)); - DocumentStructure.Insert("quantity" , 5 + (N % 10)); - DocumentStructure.Insert("rating" , Max(1, N % 6)); - DocumentStructure.Insert("inStock" , N % 3 > 0); - DocumentStructure.Insert("tags" , OPI_TestDataRetrieval.GetTagArray(N)); - DocumentStructure.Insert("createdDate", OPI_Tools.GetCurrentDate() - (N * 86400)); - - Details = New Structure; - Details.Insert("supplier" , SupplierMap.Get(N % 3)); - Details.Insert("weightKg" , N * 0.3); - Details.Insert("dimensions", New Structure("length,width,height", N * 8, N * 4, N * 2)); - DocumentStructure.Insert("details", Details); - - DocsArray.Add(DocumentStructure); - - EndDo; - - DocumentWithZero = New Structure; - DocumentWithZero.Insert("productName", "Item with zero price"); - DocumentWithZero.Insert("category" , "books"); - DocumentWithZero.Insert("price" , 0); - DocumentWithZero.Insert("quantity" , 1); - DocumentWithZero.Insert("rating" , 4); - DocumentWithZero.Insert("inStock" , True); - DocumentWithZero.Insert("tags" , New Array); - DocsArray.Add(DocumentWithZero); - - DocumentWithoutCategory = New Structure; - DocumentWithoutCategory.Insert("productName", "Item without category"); - DocumentWithoutCategory.Insert("price" , 250); - DocumentWithoutCategory.Insert("quantity" , 3); - DocumentWithoutCategory.Insert("rating" , 3); - DocumentWithoutCategory.Insert("inStock" , False); - DocsArray.Add(DocumentWithoutCategory); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll", Collection); - Options.Insert("docs", DocsArray); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "InsertDocuments", Options); - - Process(Result, "MongoDB", "InsertDocuments"); - -EndProcedure - -Procedure MongoDB_GetDocuments(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "new_collection"; - - // __4 = $ - Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); - Sort = New Structure("doubleField", -1); - Parameters = New Structure("limit", 2); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query" , Filter); - Options.Insert("sort" , Sort); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - // END - - Process(Result, "MongoDB", "GetDocuments"); - - // 1: Category and price range - Filter = New Structure("category,price", "electronics", New Structure("__4gte,__4lte", 100, 400)); - Sort = New Structure("price", 1); - Parameters = New Structure("limit", 5); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query" , Filter); - Options.Insert("sort" , Sort); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "GetDocuments", 1); - - // 2: Stock and rating - Filter = New Structure("inStock,rating", True, New Structure("__4gte", 4)); - Sort = New Structure("rating,price", -1, 1); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - Options.Insert("sort" , Sort); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "GetDocuments", 2); - - // 3: By tags array - Filter = New Structure("tags", "sale"); - Sort = New Structure("createdDate", -1); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - Options.Insert("sort" , Sort); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "GetDocuments", 3); - - // 4: By nested fields - Filter = New Map; - Filter.Insert("details.supplier", "Supplier A"); - Filter.Insert("details.weightKg", New Structure("__4lt", 3)); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "GetDocuments", 4); - - // 5: Projection - Filter = New Structure("category", "books"); - Sort = New Structure("price", -1); - Parameters = New Structure("projection", New Structure("productName,price,rating", 1, 1, 1)); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query" , Filter); - Options.Insert("sort" , Sort); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "GetDocuments", 5); - -EndProcedure - -Procedure MongoDB_GetCursor(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "new_collection"; - - Filter = New Structure("stringField", "Text"); - Sort = New Structure("doubleField", -1); - Parameters = New Structure("limit,batchSize", 2, 1); - - Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); - - // END - - Process(Result, "MongoDB", "GetCursor"); - - // Big batchSize with limit - Filter = New Structure("inStock", True); - Sort = New Structure("price", 1); - Parameters = New Structure("limit,batchSize", 8, 3); - - Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); - - Process(Result, "MongoDB", "GetCursor", 1); - - // Small batchSize without limit - Filter = New Structure("category", "clothing"); - Sort = New Structure("rating", -1); - Parameters = New Structure("batchSize", 2); - - Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); - - Process(Result, "MongoDB", "GetCursor", 2); - -EndProcedure - -Procedure MongoDB_GetDocumentBatch(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "new_collection"; - - Filter = New Structure("stringField", "Text"); - Sort = New Structure("doubleField", -1); - Parameters = New Structure("limit,batchSize", 2, 1); - - Cursor = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); - - If Not Cursor["result"] Then - Raise Cursor["error"]; - EndIf; - - Cursor = Cursor["data"]["cursor"]; - DocsArray = Cursor["firstBatch"]; - CursorID = Cursor["id"]; - ContinueGetting = CursorID > 0; - - While ContinueGetting Do - - Result = OPI_MongoDB.GetDocumentBatch(Connection, Collection, CursorID, Base); // <--- - - If Not Result["result"] Then - Raise Result["error"]; - EndIf; - - ContinueGetting = Result["data"]["cursor"]["id"] > 0; - - For Each Record In Result["data"]["cursor"]["nextBatch"] Do - DocsArray.Add(Record); - EndDo; - - EndDo; - - // END - - Process(Result, "MongoDB", "GetDocumentBatch"); - -EndProcedure - -Procedure MongoDB_UpdateDocuments(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "new_collection"; - - // __4 = $ - Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); - Data = New Structure( "__4set", New Structure("doubleField", 999)); - - Updating = OPI_MongoDB.GetDocumentUpdateStructure(Filter, Data); // Array or single - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - - // END - - Process(Result, "MongoDB", "UpdateDocuments"); - - Parameters = New Structure("limit,batchSize", 2, 1); - Sort = New Structure("doubleField", -1); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query" , Filter); - Options.Insert("sort" , Sort); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "UpdateDocuments", "Obtaining"); - - Filter = New Structure("stringField,doubleField", "Text", 999); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query" , Filter); - Options.Insert("sort" , Sort); - Options.Insert("params", Parameters); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "UpdateDocuments", "Getting new"); - - // Multiply fields - Filter = New Structure("category", "electronics"); - Data = New Structure("__4set", New Structure("price,inStock,rating", 777, False, 5)); - - Options = New Structure; - Options.Insert("query", Filter); - Options.Insert("data" , Data); - Options.Insert("multi", True); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 1); - - Filter = New Structure("category", "electronics", "price", 777); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 1"); - - // Number inc - Filter = New Structure("productName", "Product 1"); - Data = New Structure("__4inc", New Structure("quantity", 10)); - - Options = New Structure; - Options.Insert("query", Filter); - Options.Insert("data" , Data); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 2); - - Filter = New Structure("productName", "Product 1"); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 2"); - - // Array insertion - Filter = New Structure("productName", "Product 2"); - Data = New Structure("__4push", New Structure("tags", "updated")); - - Options = New Structure; - Options.Insert("query", Filter); - Options.Insert("data" , Data); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 3); - - Filter = New Structure("productName", "Product 2", "tags", "updated"); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 3"); - - // Nested field update - SettingMapping = New Map; - SettingMapping.Insert("details.weightKg", 2.5); - SettingMapping.Insert("details.supplier", "Supplier A+"); - - Filter = New Map; - Filter.Insert("details.supplier", "Supplier A"); - - Data = New Structure("__4set", SettingMapping); - - Options = New Structure; - Options.Insert("query", Filter); - Options.Insert("data" , Data); - Options.Insert("multi", True); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 4); - - Filter = New Map; - Filter.Insert("details.supplier", "Supplier A+"); - Filter.Insert("details.weightKg", 2.5); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 4"); - - // Upsert - Filter = New Structure("productName", "New product"); - - //@skip-check structure-consructor-too-many-keys - Data = New Structure("__4set", New Structure("productName,category,price,quantity,inStock,createdDate" - , "New product" - , "electronics" - , 1999 - , 1 - , True - , OPI_Tools.GetCurrentDate() - )); - - Options = New Structure; - Options.Insert("query" , Filter); - Options.Insert("data" , Data); - Options.Insert("multi" , False); - Options.Insert("upsert", True); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 5); - - Filter = New Structure("productName", "New product"); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 5"); - - // Field removing - Filter = New Structure("productName", "Product 3"); - Data = New Structure("__4unset", New Structure("rating", "")); - - Options = New Structure; - Options.Insert("query", Filter); - Options.Insert("data" , Data); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 6); - - Filter = New Structure("productName", "Product 3"); - Parameters = New Structure("projection", New Structure("productName,rating", 1, 1)); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query" , Filter); - Options.Insert("sort" , Undefined); - Options.Insert("params", Parameters); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 6"); - - // Multiply operators - Filter = New Structure("price", New Structure("__4lt", 200)); - Data = New Structure; - Data.Insert("__4set", New Structure("inStock", False)); - Data.Insert("__4inc", New Structure("quantity", -5)); - Data.Insert("__4push", New Structure("tags", "discount")); - - Options = New Structure; - Options.Insert("query", Filter); - Options.Insert("data" , Data); - Options.Insert("multi", True); - - Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", Updating); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - Process(Result, "MongoDB", "UpdateDocuments", 7); - - Filter = New Structure("price,tags", New Structure("__4lt", 200), "discount"); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 7"); - - // Updates array - UpdateArray = New Array; - - Filter1 = New Structure("category", "electronics"); - Data1 = New Structure("__4set", New Structure("price,discounted", 888, True)); - Options = New Structure; - Options.Insert("query", Filter1); - Options.Insert("data" , Data1); - Options.Insert("multi", True); - - Update1 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - UpdateArray.Add(Update1); - - Filter2 = New Structure("category", "clothing"); - Data2 = New Structure("__4inc", New Structure("quantity", 5)); - Options = New Structure; - Options.Insert("query", Filter2); - Options.Insert("data" , Data2); - Options.Insert("multi", True); - - Update2 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - UpdateArray.Add(Update2); - - Filter3 = New Structure("category", "books"); - Data3 = New Structure("__4push", New Structure("tags", "mass_update")); - Options = New Structure; - Options.Insert("query", Filter3); - Options.Insert("data" , Data3); - Options.Insert("multi", True); - - Update3 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - UpdateArray.Add(Update3); - - Filter4 = New Structure("productName", "Special item from array"); - - //@skip-check structure-consructor-too-many-keys - Data4 = New Structure("__4set", New Structure("productName,category,price,quantity,inStock,createdDate" - , "Special item from array" - , "special" - , 1111 - , 7 - , True - , OPI_Tools.GetCurrentDate() - )); - - Options = New Structure; - Options.Insert("query" , Filter4); - Options.Insert("data" , Data4); - Options.Insert("multi" , False); - Options.Insert("upsert", True); - - Update4 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - UpdateArray.Add(Update4); - - Filter5 = New Structure("rating", New Structure("__4lte", 2)); - Data5 = New Structure; - Data5.Insert("__4set", New Structure("needsImprovement", True)); - Data5.Insert("__4inc", New Structure("quantity" , -2)); - Options = New Structure; - Options.Insert("query", Filter5); - Options.Insert("data" , Data5); - Options.Insert("multi", True); - - Update5 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - UpdateArray.Add(Update5); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("updates", UpdateArray); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); - - Process(Result, "MongoDB", "UpdateDocuments", 9); - - Filter = New Structure("category,price", "electronics", 888); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_1"); - - Filter = New Structure("category,tags", "books", "mass_update"); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_2"); - - Filter = New Structure("productName", "Special item from array"); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_3"); - - Filter = New Structure("needsImprovement", True); - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_4"); - -EndProcedure - -Procedure MongoDB_GetDocumentUpdateStructure(FunctionParameters) - - // __4 = $ - Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); - Data = New Structure( "__4set", New Structure("doubleField", 999)); - - Options = New Structure; - Options.Insert("query" , Filter); - Options.Insert("data" , Data); - Options.Insert("multi" , True); - Options.Insert("upsert", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); - - // END - - Process(Result, "MongoDB", "GetDocumentUpdateStructure"); - -EndProcedure - -Procedure MongoDB_GetDocumentDeletionStructure(FunctionParameters) - - Filter = New Structure("stringField,doubleField", "Text", 999); - Result = OPI_MongoDB.GetDocumentDeletionStructure(Filter, 1); // Array or single - - // END - - Process(Result, "MongoDB", "GetDocumentDeletionStructure"); - -EndProcedure - -Procedure MongoDB_DeleteDocuments(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Collection = "new_collection"; - - Filter = New Structure("stringField,doubleField", "Text", 999); - Deletion = OPI_MongoDB.GetDocumentDeletionStructure(Filter, 1); // Array or single - - Result = OPI_MongoDB.GetDocuments(Connection, Collection, Base, Filter); // SKIP - Process(Result, "MongoDB", "DeleteDocuments", "Precheck"); // SKIP - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("deletes", Deletion); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteDocuments", Options); - - // END - - Process(Result, "MongoDB", "DeleteDocuments"); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("coll" , Collection); - Options.Insert("db" , Base); - Options.Insert("query", Filter); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); - - Process(Result, "MongoDB", "DeleteDocuments", "Check"); - -EndProcedure - -Procedure MongoDB_CreateUser(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - RoleArray = New Array; - RoleArray.Add("read"); - RoleArray.Add("userAdmin"); - - UserName = "newuser"; - UserPassword = "1234"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , UserName); - Options.Insert("roles", RoleArray); - Options.Insert("db" , Base); - Options.Insert("pwd" , UserPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateUser", Options); - - // END - - Process(Result, "MongoDB", "CreateUser"); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , UserName); - Options.Insert("roles", RoleArray); - Options.Insert("db" , Base); - Options.Insert("pwd" , UserPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateUser", Options); - - Process(Result, "MongoDB", "CreateUser", "Existing"); - -EndProcedure - -Procedure MongoDB_UpdateUser(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - RoleArray = New Array; - RoleArray.Add("readWrite"); - - UserName = "newuser"; - UserPassword = "4321"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , UserName); - Options.Insert("roles", RoleArray); - Options.Insert("db" , Base); - Options.Insert("pwd" , UserPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateUser", Options); - - // END - - Process(Result, "MongoDB", "UpdateUser"); - - UserName = "anotheruser"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , UserName); - Options.Insert("roles", RoleArray); - Options.Insert("db" , Base); - Options.Insert("pwd" , UserPassword); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateUser", Options); - - Process(Result, "MongoDB", "UpdateUser", "Nonexistent"); - -EndProcedure - -Procedure MongoDB_DeleteUser(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - UserName = "newuser"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name", UserName); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteUser", Options); - - // END - - Process(Result, "MongoDB", "DeleteUser"); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name", UserName); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteUser", Options); - - Process(Result, "MongoDB", "DeleteUser", "Again"); - -EndProcedure - -Procedure MongoDB_GetUsers(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - UserName = "newuser"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("usrs", UserName); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetUsers", Options); - - Process(Result, "MongoDB", "GetUsers", "Simple"); // SKIP - - ArrayOfUsers = New Array; - ArrayOfUsers.Add(New Structure("user,db", "bayselonarrend", "admin")); - ArrayOfUsers.Add(New Structure("user,db", "newuser" , "main")); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("usrs", ArrayOfUsers); - Options.Insert("db" , Base); - Options.Insert("spwd", True); - Options.Insert("sprv", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetUsers", Options); - - // END - - Process(Result, "MongoDB", "GetUsers"); - -EndProcedure - -Procedure MongoDB_GetDatabaseUsers(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = FunctionParameters["MongoDB_DB"]; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Options = New Structure; - Options.Insert("dbc", Connection); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDatabaseUsers", Options); - - // END - - Process(Result, "MongoDB", "GetDatabaseUsers"); - -EndProcedure - -Procedure MongoDB_CreateRole(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = "admin"; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - RoleArray = New Array; - RoleArray.Add("read"); - RoleArray.Add("userAdmin"); - - Resource = New Structure("db,collection", Base, "new_collection"); - Actions = New Array; - - Actions.Add("find"); - Actions.Add("insert"); - Actions.Add("update"); - - Options = New Structure; - Options.Insert("res", Resource); - Options.Insert("act", Actions); - - Privilege = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); - - PrivilegesArray = New Array; - PrivilegesArray.Add(Privilege); - - RoleName = "newrole"; - - OPI_MongoDB.DeleteRole(Connection, RoleName, Base); // SKIP - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , RoleName); - Options.Insert("db" , Base); - Options.Insert("prvl" , PrivilegesArray); - Options.Insert("roles", RoleArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateRole", Options); - - // END - - Process(Result, "MongoDB", "CreateRole"); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , RoleName); - Options.Insert("db" , Base); - Options.Insert("prvl" , PrivilegesArray); - Options.Insert("roles", RoleArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateRole", Options); - - Process(Result, "MongoDB", "CreateRole", "Existing"); - -EndProcedure - -Procedure MongoDB_UpdateRole(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = "admin"; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - RoleArray = New Array; - RoleArray.Add("read"); - RoleArray.Add("userAdmin"); - - Resource = New Structure("db,collection", Base, "new_collection2"); - Actions = New Array; - - Actions.Add("find"); - Actions.Add("insert"); - - Options = New Structure; - Options.Insert("res", Resource); - Options.Insert("act", Actions); - - Privilege = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); - - PrivilegesArray = New Array; - PrivilegesArray.Add(Privilege); - - RoleName = "newrole"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name" , RoleName); - Options.Insert("db" , Base); - Options.Insert("prvl" , PrivilegesArray); - Options.Insert("roles", RoleArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateRole", Options); - - // END - - Process(Result, "MongoDB", "UpdateRole"); - -EndProcedure - -Procedure MongoDB_DeleteRole(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = "admin"; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - RoleName = "newrole"; - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name", RoleName); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteRole", Options); - - // END - - Process(Result, "MongoDB", "DeleteRole"); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("name", RoleName); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteRole", Options); - - Process(Result, "MongoDB", "DeleteRole", "Again"); - -EndProcedure - -Procedure MongoDB_GetRolePrivilegeStructure(FunctionParameters) - - Base = FunctionParameters["MongoDB_DB"]; - Resource = New Structure("db,collection", Base, "new_collection"); - Actions = New Array; - - Actions.Add("find"); - Actions.Add("insert"); - Actions.Add("update"); - - Options = New Structure; - Options.Insert("res", Resource); - Options.Insert("act", Actions); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); - - // END - - Process(Result, "MongoDB", "GetRolePrivilegeStructure"); - -EndProcedure - -Procedure MongoDB_GetRoles(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = "admin"; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - Role = New Structure("role,db", "newrole", Base); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("roles", Role); - Options.Insert("db" , Base); - Options.Insert("sprv" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRoles", Options); - - // END - - Process(Result, "MongoDB", "GetRoles"); - -EndProcedure - -Procedure MongoDB_GrantRoles(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = "admin"; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - User = "bayselonarrend"; - Role = New Structure("role,db", "newrole", Base); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("user" , User); - Options.Insert("roles", Role); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GrantRoles", Options); - - // END - - Process(Result, "MongoDB", "GrantRoles"); - -EndProcedure - -Procedure MongoDB_RevokeRoles(FunctionParameters) - - Address = "127.0.0.1:1234"; - Login = FunctionParameters["MongoDB_User"]; - Password = FunctionParameters["MongoDB_Password"]; - Base = "admin"; - - Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP - - ConnectionParams = New Structure("authSource", "admin"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("usr" , Login); - Options.Insert("pwd" , Password); - Options.Insert("params", ConnectionParams); - - ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); - Connection = OPI_MongoDB.CreateConnection(ConnectionString); - - User = "bayselonarrend"; - Role = New Structure("role,db", "newrole", Base); - - Options = New Structure; - Options.Insert("dbc" , Connection); - Options.Insert("user" , User); - Options.Insert("roles", Role); - Options.Insert("db" , Base); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "RevokeRoles", Options); - - // END - - Process(Result, "MongoDB", "RevokeRoles"); - -EndProcedure - -#EndRegion - -#Region GRPC - -Procedure GRPC_CreateConnection(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Meta = New Structure("somekey", "somevalue"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - Options.Insert("meta" , Meta); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Result = OPI_GRPC.CreateConnection(Parameters, Tls); - - // END - - Process(Result, "GRPC", "CreateConnection"); - - Result = OPI_GRPC.CloseConnection(Result); - - Process(Result, "GRPC", "CreateConnection", "Closing"); - - Address = FunctionParameters["GRPC_AddressNoTls"]; - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Result = OPI_GRPC.CreateConnection(Parameters); - - Process(Result, "GRPC", "CreateConnection", "No TLS"); - - Scheme = New Map; - Scheme.Insert("main.proto", Proto1); - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Result = OPI_GRPC.CreateConnection(Parameters); - - Process(Result, "GRPC", "CreateConnection", "Error"); - -EndProcedure - -Procedure GRPC_CloseConnection(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Meta = New Structure("somekey", "somevalue"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - Options.Insert("meta" , Meta); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - Result = OPI_GRPC.CloseConnection(Connection); - - // END - - Process(Result, "GRPC", "CloseConnection"); - -EndProcedure - -Procedure GRPC_IsConnector(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Meta = New Structure("somekey", "somevalue"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - Options.Insert("meta" , Meta); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - Result = OPI_GRPC.IsConnector(Connection); - - // END - - Process(Result, "GRPC", "IsConnector"); - -EndProcedure - -Procedure GRPC_GetConnectionParameters(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Meta = New Structure("somekey", "somevalue"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - Options.Insert("meta" , Meta); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - - // END - - Process(Result, "GRPC", "GetConnectionParameters"); - -EndProcedure - -Procedure GRPC_GetTlsSettings(FunctionParameters) - - Options = New Structure; - Options.Insert("trust", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - // END - - Process(Result, "GRPC", "GetTlsSettings"); - -EndProcedure - -Procedure GRPC_SetMetadata(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - Meta = New Structure("somekey", "somevalue"); - Result = OPI_GRPC.SetMetadata(Connection, Meta); - - // END - - Process(Result, "GRPC", "SetMetadata"); - - If Not OPI_TestDataRetrieval.IsCLITest() Then - - Service = "grpcbin.GRPCBin"; - Method = "HeadersUnary"; - - Options = New Structure; - Options.Insert("conn" , Connection); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , Undefined); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); - - Process(Result, "GRPC", "SetMetadata", "Check"); - - EndIf; - -EndProcedure - -Procedure GRPC_ExecuteMethod(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Meta = New Structure("somekey", "somevalue"); - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - Options.Insert("meta" , Meta); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyUnary"; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - NumberArray = New Array; - NumberArray.Add(1); - NumberArray.Add(10); - NumberArray.Add(100); - - StructuresArray = New Array; - StructuresArray.Add(New Structure("f_string", "Nested value 1")); - StructuresArray.Add(New Structure("f_string", "Nested value 2")); - - BoolArray = New Array; - BoolArray.Add(True); - BoolArray.Add(False); - - File = FunctionParameters["Document"]; - OPI_TypeConversion.GetBinaryData(File); - - TFN = GetTempFileName(); - File.Write(TFN); - - BinaryDataArray = New Array; - BinaryDataArray.Add(File); // How Data - BinaryDataArray.Add(TFN); // How path to file - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_int64" , 123); - Data.Insert("f_float" , 123.22000122070312); - Data.Insert("f_bool" , True); - Data.Insert("f_enum" , "ENUM_1"); - Data.Insert("f_bytes" , File); - Data.Insert("f_sub" , New Structure("f_string" , "Nested value")); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_int32s" , NumberArray); - Data.Insert("f_int64s" , NumberArray); - Data.Insert("f_floats" , NumberArray); - Data.Insert("f_bytess" , BinaryDataArray); - Data.Insert("f_subs" , StructuresArray); - Data.Insert("f_bools" , BoolArray); - Data.Insert("f_enums" , StrSplit("ENUM_1,ENUM_2" , ",")); - - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , Data); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); - - // END - - Process(Result, "GRPC", "ExecuteMethod"); - - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , Undefined); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); - - Process(Result, "GRPC", "ExecuteMethod", "Empty"); - - Method = "HeadersUnary"; - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , Undefined); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); - - Process(Result, "GRPC", "ExecuteMethod", "Meta"); - -EndProcedure - -Procedure GRPC_GetServiceList(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - Scheme = FunctionParameters["GRPC_Proto"]; // String, path to file or URL - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - Options = New Structure; - Options.Insert("conn", Connection); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetServiceList", Options); - - // END - - Process(Result, "GRPC", "GetServiceList"); - -EndProcedure - -Procedure GRPC_GetMethodList(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - Scheme = FunctionParameters["GRPC_Proto"]; // String, path to file or URL - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - Service = "grpcbin.GRPCBin"; - - Options = New Structure; - Options.Insert("conn" , Connection); - Options.Insert("service", Service); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetMethodList", Options); - - // END - - Process(Result, "GRPC", "GetMethodList"); - -EndProcedure - -Procedure GRPC_GetMethod(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - Scheme = FunctionParameters["GRPC_Proto"]; // String, path to file or URL - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - Service = "grpcbin.GRPCBin"; - Method = "Index"; - - Options = New Structure; - Options.Insert("conn" , Connection); - Options.Insert("service", Service); - Options.Insert("method" , Method); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetMethod", Options); - - // END - - Process(Result, "GRPC", "GetMethod"); - -EndProcedure - -Procedure GRPC_InitializeServerStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyServerStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_bool" , True); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, Data); // <--- - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - MessagesArray = New Array; - - While True Do - - CurrentMessage = OPI_GRPC.GetMessage(Connection, StreamID); - - If Not CurrentMessage["result"] Then - - Error = CurrentMessage["error"]; - - If Error = "Timeout" Then - Continue; - ElsIf Error = "Closed" Then - Break; - Else - Raise Error; - EndIf; - - Else - - MessageData = CurrentMessage["message"]; - - If ValueIsFilled(MessageData) Then - MessagesArray.Add(MessageData); - EndIf; - - EndIf; - - EndDo; - - // END - - Process(Result , "GRPC", "InitializeServerStream"); - Process(MessagesArray, "GRPC", "InitializeServerStream", "Array"); - -EndProcedure - -Procedure GRPC_InitializeClientStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyClientStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_bool" , True); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method); // <--- - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - FinalMessage = Undefined; - - Counter = 0; - While True Do - - CurrentSend = OPI_GRPC.SendMessage(Connection, StreamID, Data); - Counter = Counter + 1; - - If Not CurrentSend["result"] Then - - Error = CurrentSend["error"]; - - If Error = "Timeout" Then - Continue; - ElsIf Error = "Closed" Then - FinalMessage = OPI_GRPC.GetMessage(Connection, StreamID); - Break; - Else - Raise StrTemplate("%1 (sent messages %2)", Error, Counter); - EndIf; - - Else - - If Counter = 10 Then - Completion = OPI_GRPC.CompleteSend(Connection, StreamID); - FinalMessage = OPI_GRPC.GetMessage(Connection, StreamID); - Break; - EndIf; - - EndIf; - - EndDo; - - // END - - Process(FinalMessage, "GRPC", "InitializeClientStream", , Counter); - -EndProcedure - -Procedure GRPC_InitializeBidirectionalStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyBidirectionalStreamStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_bool" , True); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Result = OPI_GRPC.InitializeBidirectionalStream(Connection, Service, Method); // <--- - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - ResultArray = New Array; - Counter = 0; - - While Counter < 10 Do - - Data.Insert("f_int32", Counter + 1); - - CurrentSend = OPI_GRPC.SendMessage(Connection, StreamID, Data); - - If Not CurrentSend["result"] Then - - Error = CurrentSend["error"]; - - If Error = "Timeout" Then - Continue; - Else - Raise StrTemplate("Send error: %1 (processed messages %2)", Error, Counter); - EndIf; - - EndIf; - - CurrentReceive = OPI_GRPC.GetMessage(Connection, StreamID); - - If Not CurrentReceive["result"] Then - Raise StrTemplate("Receive error: %1 (processed messages %2)", Error, Counter); - EndIf; - - ResultArray.Add(CurrentReceive["message"]); - Counter = Counter + 1; - - EndDo; - - OPI_GRPC.CloseStream(Connection, StreamID); - - // END - - Process(Result, "GRPC", "InitializeBidirectionalStream", , ResultArray); - -EndProcedure - -Procedure GRPC_SendMessage(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyClientStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_bool" , True); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method); - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - Result = OPI_GRPC.SendMessage(Connection, StreamID, Data); // <--- - Closing = OPI_GRPC.CloseStream(Connection, StreamID); - - // END - - Process(Result, "GRPC", "SendMessage", , Closing); - -EndProcedure - -Procedure GRPC_GetMessage(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyServerStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - NumberArray = New Array; - NumberArray.Add(1); - NumberArray.Add(10); - NumberArray.Add(100); - - File = FunctionParameters["Document"]; - OPI_TypeConversion.GetBinaryData(File); - - TFN = GetTempFileName(); - File.Write(TFN); - - BinaryDataArray = New Array; - BinaryDataArray.Add(File); // How Data - BinaryDataArray.Add(TFN); // How path to file - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_int64" , 123); - Data.Insert("f_float" , 123.22000122070312); - Data.Insert("f_bool" , True); - Data.Insert("f_enum" , "ENUM_1"); - Data.Insert("f_bytes" , File); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_int32s" , NumberArray); - Data.Insert("f_bytess" , BinaryDataArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, Data); - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - Result = OPI_GRPC.GetMessage(Connection, StreamID); // <--- - Closing = OPI_GRPC.CloseStream(Connection, StreamID); - - // END - - Data.Insert("f_int64s", New Array); - Data.Insert("f_enums" , New Array); - Data.Insert("f_floats", New Array); - Data.Insert("f_bools" , New Array); - Data.Insert("f_subs" , New Array); - - Process(Result, "GRPC", "GetMessage", , Closing, Data); - -EndProcedure - -Procedure GRPC_CloseStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyServerStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_bool" , True); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, Data); - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - Result = OPI_GRPC.CloseStream(Connection, StreamID); // <--- - - // END - - Process(Result, "GRPC", "CloseStream"); - - Result = OPI_GRPC.GetMessage(Connection, StreamID); - - Process(Result, "GRPC", "CloseStream", "Sending"); - -EndProcedure - -Procedure GRPC_ProcessServerStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyServerStream"; - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_bool" , True); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , Data); - Options.Insert("tls" , Tls); - Options.Insert("count" , 3); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessServerStream", Options); - - // END - - Process(Result, "GRPC", "ProcessServerStream"); - -EndProcedure - -Procedure GRPC_ProcessClientStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyClientStream"; - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_int32" , 123); - Data.Insert("f_bool" , True); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - ArrayOfRequests = New Array; - - For N = 1 To 10 Do - ArrayOfRequests.Add(Data); - EndDo; - - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , ArrayOfRequests); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessClientStream", Options); - - // END - - Process(Result, "GRPC", "ProcessClientStream"); - - ArrayOfRequests.Delete(ArrayOfRequests.UBound()); - - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("data" , ArrayOfRequests); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessClientStream", Options); - - Process(Result, "GRPC", "ProcessClientStream", "Error"); - -EndProcedure - -Procedure GRPC_ProcessBidirectionalStream(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - StingsArray = New Array; - StingsArray.Add("one"); - StingsArray.Add("two"); - StingsArray.Add("three"); - - Data = New Map; - Data.Insert("f_string" , "Test message"); - Data.Insert("f_bool" , True); - Data.Insert("f_strings", StingsArray); - Data.Insert("f_sub" , New Structure("f_string", "Nested value")); - - Service = "grpcbin.GRPCBin"; - Method = "DummyBidirectionalStreamStream"; - - ExchangeOrder = New Array; - - For N = 1 To 10 Do - - ExchangeOrder.Add(Data); // Single send - ExchangeOrder.Add(Undefined); // Single get - - EndDo; - - Options = New Structure; - Options.Insert("conn" , Parameters); - Options.Insert("service", Service); - Options.Insert("method" , Method); - Options.Insert("exch" , ExchangeOrder); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessBidirectionalStream", Options); - - // END - - Process(Result, "GRPC", "ProcessBidirectionalStream"); - -EndProcedure - -Procedure GRPC_CompleteSend(FunctionParameters) - - Address = FunctionParameters["GRPC_Address"]; - - Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL - Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL - - Scheme = New Map; - Scheme.Insert("main.proto" , Proto1); // Primary - Scheme.Insert("my_types.proto", Proto2); // For import in primary - - Options = New Structure; - Options.Insert("addr" , Address); - Options.Insert("proto", Scheme); - - Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); - - Service = "grpcbin.GRPCBin"; - Method = "DummyClientStream"; - - Connection = OPI_GRPC.CreateConnection(Parameters, Tls); - - If Not OPI_GRPC.IsConnector(Connection) Then - Raise Connection["error"]; - EndIf; - - Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method); - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - Result = OPI_GRPC.CompleteSend(Connection, StreamID); - - // END - - Process(Result, "GRPC", "CompleteSend"); - -EndProcedure - -#EndRegion - -#Region ClickHouse - -Procedure ClickHouse_ExecuteRequest(FunctionParameters) - - // Connection settings - - URL = "http://localhost:8123"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_Port"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - Connection = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); - - // Request (table creation) - - QueryText = "CREATE TABLE IF NOT EXISTS events ( - | id UInt64, - | timestamp DateTime, - | user_id UInt32, - | event_type String, - | payload String - |) ENGINE = MergeTree() - |ORDER BY (timestamp, id)"; - - Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events"); // SKIP - Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP - - Options = New Structure; - Options.Insert("query", QueryText); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "TableCreation"); // SKIP - - // Request (data insertion) - - QueryText = "INSERT INTO events FORMAT JSON"; - - DataFormat = "JSON"; - DataArray = New Array; - - CurrentDate = Date("20260101100000"); - - Record1 = New Structure; - Record1.Insert("id" , 1); - Record1.Insert("timestamp" , CurrentDate); - Record1.Insert("user_id" , 100); - Record1.Insert("event_type", "click"); - Record1.Insert("payload" , "{}"); - - Record2 = New Structure; - Record2.Insert("id" , 2); - Record2.Insert("timestamp" , CurrentDate); - Record2.Insert("user_id" , 200); - Record2.Insert("event_type", "hover"); - Record2.Insert("payload" , "{}"); - - DataArray.Add(Record1); - DataArray.Add(Record2); - - Meta = New Array; - Meta.Add(New Structure("name,type", "id" , "UInt64")); - Meta.Add(New Structure("name,type", "timestamp" , "DateTime")); - Meta.Add(New Structure("name,type", "user_id" , "UInt32")); - Meta.Add(New Structure("name,type", "event_type", "String")); - Meta.Add(New Structure("name,type", "payload" , "String")); - - Data = New Structure("meta,data", Meta, DataArray); - Database = "default"; - RequestID = String(New UUID()); - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("db" , Database); - Options.Insert("id" , RequestID); - Options.Insert("data" , Data); - Options.Insert("format", DataFormat); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "DataInsert"); // SKIP - - // Request with external table - - TableName = "ext_users"; - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("id" , "UInt64"); - ColoumnsStruct.Insert("name", "String"); - - Tab = Chars.Tab; - TableData = "1" + Tab + "John - |2" + Tab + "Jane - |3" + Tab + "Bob"; - - Options = New Structure; - Options.Insert("name" , TableName); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("data" , TableData); - Options.Insert("format", "TSV"); - - ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); - - ExternalTablesArray = New Array; - ExternalTablesArray.Add(ExternalTable); - - QueryText = "SELECT * FROM ext_users WHERE id > 1"; - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("format", "JSON"); - Options.Insert("ext" , ExternalTablesArray); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "ExternalTable"); // SKIP - - // Selection - - SelectionText = "SELECT * FROM events"; - - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - // END - - Process(Result, "ClickHouse", "ExecuteRequest"); // SKIP - - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "CSV"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "CSVSelection"); - - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "TSV"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "TSVSelection"); - - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "JSONCompact"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "JSONCompactSelection"); - - QueryText = "SELECT 1 AS result"; - - AdditionalSettings = New Map; - AdditionalSettings.Insert("max_threads", "4"); - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("format" , "JSON"); - Options.Insert("settings", AdditionalSettings); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "AdditionalSettings"); - - UUID = String(New UUID()); - Options = New Structure; - Options.Insert("id", UUID); - - Session = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options); - - QueryText = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)"; - - Options = New Structure; - Options.Insert("query", QueryText); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn" , Connection); - Options.Insert("req" , Request); - Options.Insert("session", Session); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "SessionCreation"); - - QueryText = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')"; - - Options = New Structure; - Options.Insert("query", QueryText); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn" , Connection); - Options.Insert("req" , Request); - Options.Insert("session", Session); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "ExecuteRequest", "SessionInsert"); - - QueryText = "SELECT * FROM temp_session_test"; - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn" , Connection); - Options.Insert("req" , Request); - Options.Insert("session", Session); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - // END - - Process(Result, "ClickHouse", "ExecuteRequest"); - -EndProcedure - -Procedure ClickHouse_CreateGRPCConnection(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - // Connection creation - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - Process(Connection, "ClickHouse", "CreateGRPCConnection", "Openning"); // SKIP - - // Request via open connection (table creation) - - QueryText = "CREATE TABLE IF NOT EXISTS events_grpc ( - | id UInt64, - | timestamp DateTime, - | user_id UInt32, - | event_type String, - | payload String - |) ENGINE = MergeTree() - |ORDER BY (timestamp, id)"; - - Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_grpc"); // SKIP - Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP - - Options = New Structure; - Options.Insert("query", QueryText); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "CreateGRPCConnection", "TableCreation"); // SKIP - - // Data insertion - - QueryText = "INSERT INTO events_grpc FORMAT JSON"; - - DataFormat = "JSON"; - DataArray = New Array; - - CurrentDate = OPI_Tools.GetCurrentDate(); - - Record1 = New Structure; - Record1.Insert("id" , 1); - Record1.Insert("timestamp" , CurrentDate); - Record1.Insert("user_id" , 100); - Record1.Insert("event_type", "click"); - Record1.Insert("payload" , "{}"); - - DataArray.Add(Record1); - - Meta = New Array; - Meta.Add(New Structure("name,type", "id" , "UInt64")); - Meta.Add(New Structure("name,type", "timestamp" , "DateTime")); - Meta.Add(New Structure("name,type", "user_id" , "UInt32")); - Meta.Add(New Structure("name,type", "event_type", "String")); - Meta.Add(New Structure("name,type", "payload" , "String")); - - Data = New Structure("meta,data", Meta, DataArray); - RequestID = String(New UUID()); - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("db" , "default"); - Options.Insert("id" , RequestID); - Options.Insert("data" , Data); - Options.Insert("format", DataFormat); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "CreateGRPCConnection", "DataInsert"); // SKIP - - // Selection - - SelectionText = "SELECT * FROM events_grpc"; - - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(Result, "ClickHouse", "CreateGRPCConnection", "Selection"); // SKIP - - // Request with external table via gRPC - - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("id" , "UInt64"); - ColoumnsStruct.Insert("name", "String"); - - Tab = Chars.Tab; - TableData = "1" + Tab + "John - |2" + Tab + "Jane"; - - Options = New Structure; - Options.Insert("name" , "ext_grpc"); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("data" , TableData); - Options.Insert("format", "TSV"); - - ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); - - ExternalTablesArray = New Array; - ExternalTablesArray.Add(ExternalTable); - - QueryText = "SELECT * FROM ext_grpc"; - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("format", "JSON"); - Options.Insert("ext" , ExternalTablesArray); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - // END - - Process(Result, "ClickHouse", "CreateGRPCConnection"); - -EndProcedure - -Procedure ClickHouse_GetHTTPConnectionSettings(FunctionParameters) - - URL = "http://localhost:8123"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_Port"]); // SKIP - - // No authorization - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "NoAuthorization"); // SKIP - - // With basic authorization - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "BasicAuthorization"); // SKIP - - // With JWT authorization - - JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", JWT); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "JWTAuthorization"); // SKIP - - // With additional headers - - AdditionalHeaders = New Map; - AdditionalHeaders.Insert("X-Custom-Header", "CustomValue"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth" , Authorization); - Options.Insert("headers", AdditionalHeaders); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); - - // END - - Process(Result, "ClickHouse", "GetHTTPConnectionSettings"); - -EndProcedure - -Procedure ClickHouse_GetGRPCConnectionSettings(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - // No authorization - - Options = New Structure; - Options.Insert("url", URL); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "NoAuthorization"); // SKIP - - // With basic authorization - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "BasicAuthorization"); // SKIP - - // With JWT authorization - - JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", JWT); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "JWTAuthorization"); // SKIP - - // With metadata - - Meta = New Map; - Meta.Insert("custom-meta", "value"); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - Options.Insert("meta", Meta); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - - Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "WithMetadata"); // SKIP - - // With TLS settings - - Options = New Structure; - Options.Insert("trust", True); - - Tls = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - Options.Insert("tls" , Tls); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - - // END - - Process(Result, "ClickHouse", "GetGRPCConnectionSettings"); - -EndProcedure - -Procedure ClickHouse_GetRequestSettings(FunctionParameters) - - // Minimal request - - QueryText = "SELECT 1"; - - Options = New Structure; - Options.Insert("query", QueryText); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - - Process(Result, "ClickHouse", "GetRequestSettings", "Minimal"); // SKIP - - // Full request - - RequestID = String(New UUID()); - Data = New Structure("meta,data", New Array, New Array); - Database = "default"; - ResponseFormat = "CSV"; - - AdditionalSettings = New Map; - AdditionalSettings.Insert("max_threads", "4"); - - ColoumnsStruct = New Structure("id,name", "UInt64", "String"); - Options = New Structure; - Options.Insert("name", "ext"); - Options.Insert("cols", ColoumnsStruct); - - ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); - - TableArray = New Array; - TableArray.Add(ExternalTable); - - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("db" , Database); - Options.Insert("id" , RequestID); - Options.Insert("data" , Data); - Options.Insert("format" , ResponseFormat); - Options.Insert("ext" , TableArray); - Options.Insert("settings", AdditionalSettings); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - - // END - - Process(Result, "ClickHouse", "GetRequestSettings"); - -EndProcedure - -Procedure ClickHouse_GetExternalTableStructure(FunctionParameters) - - // Minimal structure - - TableName = "external_data"; - ColoumnsStruct = New Structure; - ColoumnsStruct.Insert("id" , "UInt64"); - ColoumnsStruct.Insert("name", "String"); - - Options = New Structure; - Options.Insert("name", TableName); - Options.Insert("cols", ColoumnsStruct); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); - - Process(Result, "ClickHouse", "GetExternalTableStructure", "Minimal"); // SKIP - - // With TSV data - - TableData = StrTemplate("1%1Test - |2%1Test2", Chars.Tab); - - Options = New Structure; - Options.Insert("name" , TableName); - Options.Insert("cols" , ColoumnsStruct); - Options.Insert("data" , TableData); - Options.Insert("format", "TSV"); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); - - // END - - Process(Result, "ClickHouse", "GetExternalTableStructure"); - -EndProcedure - -Procedure ClickHouse_GetSessionSettings(FunctionParameters) - - SessionID = String(New UUID); - Check = True; - Timeout = 120; - - Options = New Structure; - Options.Insert("id" , SessionID); - Options.Insert("check" , Check); - Options.Insert("timeout", Timeout); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options); - - // END - - Process(Result, "ClickHouse", "GetSessionSettings"); - -EndProcedure - -Procedure ClickHouse_GetTlsSettings(FunctionParameters) - - Options = New Structure; - Options.Insert("trust", False); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options); - - // END - - Process(Result, "ClickHouse", "GetTlsSettings"); - -EndProcedure - -Procedure ClickHouse_OpenGRPCStream(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - Result = OPI_ClickHouse.OpenGRPCStream(Connection); // <--- - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - DataFormat = "JSON"; - CurrentDate = Date("20260101100000"); - - Counter = 0; - While Counter < 5 Do - - Record = New Structure; - Record.Insert("id" , Counter + 1); - Record.Insert("timestamp" , CurrentDate); - Record.Insert("user_id" , 100 + Counter); - Record.Insert("event_type" , "stream_test"); - Record.Insert("payload" , "{}"); - - Record = OPI_Tools.JSONString(Record) + Chars.LF; - - Last = Counter = 4; - - If Counter = 0 Then - Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); - CurrentSend = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request, , Not Last); - Else - CurrentSend = OPI_ClickHouse.SendGRPCData(Connection, StreamID, Record, Not Last); - EndIf; - - If Not CurrentSend["result"] Then - - Error = CurrentSend["error"]; - - If Error <> "Timeout" Then - Raise OPI_Tools.JSONString(CurrentSend); - EndIf; - - EndIf; - - Counter = Counter + 1; - - EndDo; - - Completion = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); - FinalMessage = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID); - - OPI_GRPC.CloseConnection(Connection); - - // END - - Process(Result , "ClickHouse", "OpenGRPCStream"); - Process(FinalMessage , "ClickHouse", "OpenGRPCStream", "Final"); - - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - SelectionText = "SELECT * FROM events_stream_test ORDER BY id"; - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - SelectionResult = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); - - Process(SelectionResult, "ClickHouse", "OpenGRPCStream", "Selection"); - - OPI_GRPC.CloseConnection(Connection); - -EndProcedure - -Procedure ClickHouse_SendGRPCMessage(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - Result = OPI_ClickHouse.OpenGRPCStream(Connection); - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - DataFormat = "JSON"; - CurrentDate = Date("20260101100000"); - - Counter = 0; - While Counter < 5 Do - - Record = New Structure; - Record.Insert("id" , Counter + 1); - Record.Insert("timestamp" , CurrentDate); - Record.Insert("user_id" , 100 + Counter); - Record.Insert("event_type" , "stream_test"); - Record.Insert("payload" , "{}"); - - Record = OPI_Tools.JSONString(Record) + Chars.LF; - - Last = Counter = 4; - - If Counter = 0 Then - - Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); - CurrentSend = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request, , Not Last); // <--- - Process(Result, "ClickHouse", "SendGRPCMessage"); // SKIP - Else - CurrentSend = OPI_ClickHouse.SendGRPCData(Connection, StreamID, Record, Not Last); - EndIf; - - If Not CurrentSend["result"] Then - - Error = CurrentSend["error"]; - - If Error <> "Timeout" Then - Raise OPI_Tools.JSONString(CurrentSend); - EndIf; - - EndIf; - - Counter = Counter + 1; - - EndDo; - - // END - - Completion = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); - FinalMessage = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID); - - OPI_GRPC.CloseConnection(Connection); - -EndProcedure - -Procedure ClickHouse_SendGRPCData(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - Result = OPI_ClickHouse.OpenGRPCStream(Connection); - - If Not Result["result"] Then - Raise Result["error"]; - Else - StreamID = Result["streamId"]; - EndIf; - - QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - DataFormat = "JSON"; - CurrentDate = Date("20260101100000"); - - Counter = 0; - While Counter < 5 Do - - Record = New Structure; - Record.Insert("id" , Counter + 1); - Record.Insert("timestamp" , CurrentDate); - Record.Insert("user_id" , 100 + Counter); - Record.Insert("event_type" , "stream_test"); - Record.Insert("payload" , "{}"); - - Record = OPI_Tools.JSONString(Record) + Chars.LF; - - Last = Counter = 4; - - If Counter = 0 Then - - Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); - CurrentSend = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request, , Not Last); - Else - CurrentSend = OPI_ClickHouse.SendGRPCData(Connection, StreamID, Record, Not Last); // <--- - Process(Result, "ClickHouse", "SendGRPCData"); // SKIP - EndIf; - - If Not CurrentSend["result"] Then - - Error = CurrentSend["error"]; - - If Error <> "Timeout" Then - Raise OPI_Tools.JSONString(CurrentSend); - EndIf; - - EndIf; - - Counter = Counter + 1; - - EndDo; - - // END - - Completion = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); - FinalMessage = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID); - - OPI_GRPC.CloseConnection(Connection); - -EndProcedure - -Procedure ClickHouse_GetGRPCMessage(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - Timeout = 10000; - - OpeningResult = OPI_ClickHouse.OpenGRPCStream(Connection, Timeout); - - If Not OpeningResult["result"] Then - Raise OpeningResult["error"]; - Else - StreamID = OpeningResult["streamId"]; - EndIf; - - QueryText = "SELECT number FROM system.numbers LIMIT 1"; - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - - Result = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request); - OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); - - Data = ""; - - If Result["result"] Then - - While True Do - - Result = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID, "JSON"); - - If Not Result["result"] Then - Break; - EndIf; - - TextPart = Result["message"]["output"]; - Data = Data + TextPart; - - EndDo; - - OPI_GRPC.CloseConnection(Connection); - - Else - Raise Result["error"]; - EndIf; - - OPI_TypeConversion.GetCollection(Data); - - // END - - Process(Data, "ClickHouse", "GetGRPCMessage"); - -EndProcedure - -Procedure ClickHouse_CompleteGRPCSending(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - Timeout = 10000; - - OpeningResult = OPI_ClickHouse.OpenGRPCStream(Connection, Timeout); - - If Not OpeningResult["result"] Then - Raise OpeningResult["error"]; - Else - StreamID = OpeningResult["streamId"]; - EndIf; - - QueryText = "SELECT number FROM system.numbers LIMIT 1"; - Options = New Structure; - Options.Insert("query" , QueryText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - - Sending = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request); - Result = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); - - // END - - Process(Result, "ClickHouse", "CompleteGRPCSending"); - - Result = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request); - - Process(Result, "ClickHouse", "CompleteGRPCSending", "Sending"); - -EndProcedure - -Procedure ClickHouse_CloseGRPCStream(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - Timeout = 10000; - - OpeningResult = OPI_ClickHouse.OpenGRPCStream(Connection, Timeout); - - If Not OpeningResult["result"] Then - Raise OpeningResult["error"]; - Else - StreamID = OpeningResult["streamId"]; - EndIf; - - Result = OPI_ClickHouse.CloseGRPCStream(Connection, StreamID); - - // END - - Process(Result, "ClickHouse", "CloseGRPCStream"); - - OPI_GRPC.CloseConnection(Connection); - -EndProcedure - -Procedure ClickHouse_ProcessGRPCSending(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - DataFormat = "JSON"; - CurrentDate = Date("20260101100000"); - - Request = Undefined; - DataArray = New Array; - - Counter = 0; - While Counter < 5 Do - - Record = New Structure; - Record.Insert("id" , Counter + 1); - Record.Insert("timestamp" , CurrentDate); - Record.Insert("user_id" , 100 + Counter); - Record.Insert("event_type", "stream_test"); - Record.Insert("payload" , "{}"); - - Record = OPI_Tools.JSONString(Record) + Chars.LF; - - If Counter = 0 Then - Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); - Else - DataArray.Add(Record); - EndIf; - - Counter = Counter + 1; - - EndDo; - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - Options.Insert("data", DataArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ProcessGRPCSending", Options); - - // END - - Process(Result, "ClickHouse", "ProcessGRPCSending"); - -EndProcedure - -Procedure ClickHouse_ProcessGRPCReceiving(FunctionParameters) - - URL = "http://localhost:9101"; - URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP - - Login = FunctionParameters["ClickHouse_User"]; - Password = FunctionParameters["ClickHouse_Password"]; - - Authorization = New Structure(Login, Password); - Options = New Structure; - Options.Insert("url" , URL); - Options.Insert("auth", Authorization); - - ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); - Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); - - SelectionText = "SELECT * FROM events_stream_test ORDER BY id"; - Options = New Structure; - Options.Insert("query" , SelectionText); - Options.Insert("format", "JSON"); - - Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); - - Options = New Structure; - Options.Insert("conn", Connection); - Options.Insert("req" , Request); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ProcessGRPCReceiving", Options); - - // END - - Process(Result, "ClickHouse", "ProcessGRPCReceiving"); - -EndProcedure - -#EndRegion - -#Region RSS - -Procedure RSS_CreateFeedRSS(FunctionParameters) - - ChannelTitle = "Test RSS channel"; - ChannelDescription = "Test RSS channel description"; - ChannelLink = "https://example.com"; - - ItemsArray = New Array; - - Options = New Structure; - Options.Insert("empty", True); - - ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); - ElementStructure["title"] = "First element"; - ElementStructure["description"] = "First element description"; - ElementStructure["link"] = "https://example.com/item1"; - ElementStructure["pubDate"] = OPI_Tools.GetCurrentDate(); - ElementStructure["author"] = "test@example.com"; - ElementStructure["guid"] = "item-1"; - - ItemsArray.Add(ElementStructure); - - Options = New Structure; - Options.Insert("empty", True); - - ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); - ElementStructure["title"] = "Second element"; - ElementStructure["description"] = "Second element description"; - ElementStructure["link"] = "https://example.com/item2"; - ElementStructure["pubDate"] = OPI_Tools.GetCurrentDate(); - ElementStructure["author"] = "test@example.com"; - ElementStructure["guid"] = "item-2"; - - ItemsArray.Add(ElementStructure); - - Options = New Structure; - Options.Insert("name" , ChannelTitle); - Options.Insert("descr", ChannelDescription); - Options.Insert("link" , ChannelLink); - Options.Insert("items", ItemsArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "CreateFeedRSS", Options); - - // END - - Process(Result, "RSS", "CreateFeedRSS", , FunctionParameters); - -EndProcedure - -Procedure RSS_GetFeedItemStructureRSS(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); - - // END - - Process(Result, "RSS", "GetFeedItemStructureRSS"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); - - Process(Result, "RSS", "GetFeedItemStructureRSS", "Clear"); - - Options = New Structure; - Options.Insert("empty", False); - Options.Insert("map" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); - - Process(Result, "RSS", "GetFeedItemStructureRSS", "Map"); - -EndProcedure - -Procedure RSS_ParseFeedRSS(FunctionParameters) - - FeedXML = FunctionParameters["RSS_FeedXML"]; - - Options = New Structure; - Options.Insert("xml", FeedXML); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "ParseFeedRSS", Options); - - // END - - Process(Result, "RSS", "ParseFeedRSS"); - - OPI_Tools.RemoveFileWithTry(FeedXML, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -Procedure RSS_CreateFeedAtom(FunctionParameters) - - FeedTitle = "Test Atom feed"; - FeedLink = "https://example.com"; - FeedID = "https://example.com/feed"; - - ItemsArray = New Array; - - Options = New Structure; - Options.Insert("empty", True); - - ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); - ElementStructure["title"] = "First record"; - ElementStructure["id"] = "https://example.com/entry1"; - ElementStructure["link"] = "https://example.com/entry1"; - ElementStructure["updated"] = OPI_Tools.GetCurrentDate(); - ElementStructure["summary"] = "First record summary"; - ElementStructure["content"] = "Full content of the first record"; - ElementStructure["author"] = "First Author"; - ElementStructure["published"] = OPI_Tools.GetCurrentDate(); - - ItemsArray.Add(ElementStructure); - - Options = New Structure; - Options.Insert("empty", True); - - ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); - ElementStructure["title"] = "Second record"; - ElementStructure["id"] = "https://example.com/entry2"; - ElementStructure["link"] = "https://example.com/entry2"; - ElementStructure["updated"] = OPI_Tools.GetCurrentDate(); - ElementStructure["summary"] = "Second record summary"; - ElementStructure["content"] = "Full content of the second record"; - ElementStructure["author"] = "Second Author"; - ElementStructure["published"] = OPI_Tools.GetCurrentDate(); - - ItemsArray.Add(ElementStructure); - - Options = New Structure; - Options.Insert("name" , FeedTitle); - Options.Insert("link" , FeedLink); - Options.Insert("id" , FeedID); - Options.Insert("items", ItemsArray); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "CreateFeedAtom", Options); - - // END - - Process(Result, "RSS", "CreateFeedAtom", , FunctionParameters); - -EndProcedure - -Procedure RSS_GetFeedItemStructureAtom(FunctionParameters) - - Options = New Structure; - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); - - // END - - Process(Result, "RSS", "GetFeedItemStructureAtom"); - - Options = New Structure; - Options.Insert("empty", True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); - - Process(Result, "RSS", "GetFeedItemStructureAtom", "Clear"); - - Options = New Structure; - Options.Insert("empty", False); - Options.Insert("map" , True); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); - - Process(Result, "RSS", "GetFeedItemStructureAtom", "Map"); - -EndProcedure - -Procedure RSS_ParseFeedAtom(FunctionParameters) - - FeedXML = FunctionParameters["RSS_AtomFeedXML"]; - - Options = New Structure; - Options.Insert("xml", FeedXML); - - Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "ParseFeedAtom", Options); - - // END - - Process(Result, "RSS", "ParseFeedAtom"); - - OPI_Tools.RemoveFileWithTry(FeedXML, "Failed to delete the temporary file after the test!!"); - -EndProcedure - -#EndRegion - -#EndRegion - -#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Airtable.os b/src/en/OInt/tests/Modules/OPItc_Airtable.os index 6957ec4597..2790e88701 100644 --- a/src/en/OInt/tests/Modules/OPItc_Airtable.os +++ b/src/en/OInt/tests/Modules/OPItc_Airtable.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tests/Modules/OPIt_Airtable.os +// OneScript: ./OInt/tests/Modules/OPItc_Airtable.os // MIT License @@ -68,8 +68,8 @@ //@skip-check module-unused-method #Use "../../tools/main" - #Use "../../tools/http" - #Use "../../api" +#Use "../../tools/http" +#Use "../../api" #Use asserts #Use "internal" diff --git a/src/en/OInt/tests/Modules/OPItc_Bitrix24.os b/src/en/OInt/tests/Modules/OPItc_Bitrix24.os new file mode 100644 index 0000000000..103b6f9f9b --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Bitrix24.os @@ -0,0 +1,6402 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Bitrix24.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Bitrix24"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Bitrix24"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Bitrix24 + +Procedure B24_TokenManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_ClientSecret", TestParameters); + + Bitrix24_GetAppAuthLink(TestParameters); + + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Code", TestParameters); + + Bitrix24_GetToken(TestParameters); + + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Refresh", TestParameters); + + Bitrix24_RefreshToken(TestParameters); + +EndProcedure + +Procedure B24_ServerTime() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + Bitrix24_ServerTime(TestParameters); + +EndProcedure + +Procedure B24_PostsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + + Bitrix24_CreatePost(TestParameters); + Bitrix24_UpdatePost(TestParameters); + Bitrix24_GetImportantPostViewers(TestParameters); + Bitrix24_GetPosts(TestParameters); + Bitrix24_AddPostComment(TestParameters); + Bitrix24_AddPostRecipients(TestParameters); + Bitrix24_DeletePost(TestParameters); + +EndProcedure + +Procedure B24_TaskManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_UserID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Bitrix24_GetTaskFieldsStructure(TestParameters); + Bitrix24_CreateTask(TestParameters); + Bitrix24_CreateTasksDependencies(TestParameters); + Bitrix24_DeleteTasksDependencies(TestParameters); + Bitrix24_UpdateTask(TestParameters); + Bitrix24_GetTask(TestParameters); + Bitrix24_MuteTask(TestParameters); + Bitrix24_UnmuteTask(TestParameters); + Bitrix24_AddTaskToFavorites(TestParameters); + Bitrix24_RemoveTaskFromFavorites(TestParameters); + Bitrix24_DelegateTask(TestParameters); + Bitrix24_DeferTask(TestParameters); + Bitrix24_CompleteTask(TestParameters); + Bitrix24_DisapproveTask(TestParameters); + Bitrix24_ApproveTask(TestParameters); + Bitrix24_RenewTask(TestParameters); + Bitrix24_StartTask(TestParameters); + Bitrix24_StartWatchingTask(TestParameters); + Bitrix24_StopWatchingTask(TestParameters); + Bitrix24_PauseTask(TestParameters); + Bitrix24_GetTaskHistory(TestParameters); + Bitrix24_GetTasksList(TestParameters); + Bitrix24_CheckTaskAccesses(TestParameters); + Bitrix24_AddTasksChecklistElement(TestParameters); + Bitrix24_UpdateTasksChecklistElement(TestParameters); + Bitrix24_GetTasksChecklist(TestParameters); + Bitrix24_GetTasksChecklistElement(TestParameters); + Bitrix24_CompleteTasksChecklistElement(TestParameters); + Bitrix24_RenewTasksChecklistElement(TestParameters); + Bitrix24_DeleteTasksChecklistElement(TestParameters); + Bitrix24_GetDailyPlan(TestParameters); + Bitrix24_GetTasksFilterStructure(TestParameters); + + Name = "Topic picture.jpg"; + Image = TestParameters["Picture"]; + DestinationID = 3; + + URL = TestParameters["Bitrix24_URL"]; + + Result = OPI_Bitrix24.UploadFileToStorage(URL, Name, Image, DestinationID); + FileID = Result["result"]["ID"]; + + OPI_TestDataRetrieval.WriteParameter("Bitrix24_TaskFileID", FileID); + TestParameters.Insert("Bitrix24_TaskFileID", FileID); + + Bitrix24_AttachFileToTopic(TestParameters); + + OPI_Bitrix24.DeleteFile(URL, FileID); + + Bitrix24_DeleteTask(TestParameters); + +EndProcedure + +Procedure B24_WorkingWithDrive() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + + Bitrix24_GetStoragesList(TestParameters); + Bitrix24_GetAppStorage(TestParameters); + Bitrix24_RenameStorage(TestParameters); + Bitrix24_GetStorage(TestParameters); + Bitrix24_UploadFileToStorage(TestParameters); + Bitrix24_GetStorageObjects(TestParameters); + Bitrix24_GetFileInformation(TestParameters); + Bitrix24_GetFileExternalLink(TestParameters); + Bitrix24_RenameFile(TestParameters); + Bitrix24_MarkFileAsDeleted(TestParameters); + Bitrix24_RestoreFile(TestParameters); + Bitrix24_CreateStorageFolder(TestParameters); + Bitrix24_RenameFolder(TestParameters); + Bitrix24_GetFolderInformation(TestParameters); + Bitrix24_GetFolderExternalLink(TestParameters); + Bitrix24_CreateSubfolder(TestParameters); + Bitrix24_MoveFileToFolder(TestParameters); + Bitrix24_MakeFolderCopy(TestParameters); + Bitrix24_UploadFileToFolder(TestParameters); + Bitrix24_MakeFileCopy(TestParameters); + Bitrix24_DeleteFile(TestParameters); + Bitrix24_GetFolderFilterStructure(TestParameters); + Bitrix24_GetFolderItems(TestParameters); + Bitrix24_MoveFolder(TestParameters); + Bitrix24_MarkFolderAsDeleted(TestParameters); + Bitrix24_RestoreFolder(TestParameters); + Bitrix24_DeleteFolder(TestParameters); + +EndProcedure + +Procedure B24_CommentsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + CurrentDate = OPI_Tools.GetCurrentDate(); + Hour = 3600; + Day = 24; + Responsible = 1; + + TaskData = New Structure; + TaskData.Insert("TITLE" , "New task"); + TaskData.Insert("DESCRIPTION" , "New task description"); + TaskData.Insert("PRIORITY" , "2"); + TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); + TaskData.Insert("RESPONSIBLE_ID", Responsible); + + URL = TestParameters["Bitrix24_URL"]; + + Result = OPI_Bitrix24.CreateTask(URL, TaskData); + TaskID = Result["result"]["task"]["id"]; + + OPI_TestDataRetrieval.WriteParameter("Bitrix24_CommentsTaskID", TaskID); + TestParameters.Insert("Bitrix24_CommentsTaskID", TaskID); + + Bitrix24_AddTaskComment(TestParameters); + Bitrix24_UpdateTaskComment(TestParameters); + // !DISABLED! Bitrix24_CreateResultFromComment(TestParameters); + // !DISABLED! Bitrix24_GetResultsList(TestParameters); + // !DISABLED! Bitrix24_DeleteResultFromComment(TestParameters); + // !DISABLED! Bitrix24_GetTaskCommentsList(TestParameters); + // !DISABLED! Bitrix24_GetTaskComment(TestParameters); + // !DISABLED! Bitrix24_DeleteTaskComment(TestParameters); + Bitrix24_GetCommentStructure(TestParameters); + + OPI_Bitrix24.DeleteTask(URL, TaskID); + +EndProcedure + +Procedure B24_Timekeeping() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + CurrentDate = OPI_Tools.GetCurrentDate(); + Hour = 3600; + Day = 24; + Responsible = 1; + + TaskData = New Structure; + TaskData.Insert("TITLE" , "New task"); + TaskData.Insert("DESCRIPTION" , "New task description"); + TaskData.Insert("PRIORITY" , "2"); + TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); + TaskData.Insert("RESPONSIBLE_ID", Responsible); + + URL = TestParameters["Bitrix24_URL"]; + + Result = OPI_Bitrix24.CreateTask(URL, TaskData); + TaskID = Result["result"]["task"]["id"]; + + OPI_TestDataRetrieval.WriteParameter("Bitrix24_ElapsedTaskID", TaskID); + TestParameters.Insert("Bitrix24_ElapsedTaskID", TaskID); + + Bitrix24_AddTaskTimeAccounting(TestParameters); + Bitrix24_GetTaskTimeAccounting(TestParameters); + Bitrix24_GetTaskTimeAccountingList(TestParameters); + Bitrix24_UpdateTaskTimeAccounting(TestParameters); + Bitrix24_DeleteTaskTimeAccounting(TestParameters); + Bitrix24_StartTimekeeping(TestParameters); + Bitrix24_PauseTimekeeping(TestParameters); + Bitrix24_GetTimekeepingStatus(TestParameters); + Bitrix24_StopTimekeeping(TestParameters); + Bitrix24_GetTimekeepingSettings(TestParameters); + + OPI_Bitrix24.DeleteTask(URL, TaskID); + +EndProcedure + +Procedure B24_Kanban() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + CurrentDate = OPI_Tools.GetCurrentDate(); + Hour = 3600; + Day = 24; + Responsible = 1; + + TaskData = New Structure; + TaskData.Insert("TITLE" , "New task"); + TaskData.Insert("DESCRIPTION" , "New task description"); + TaskData.Insert("PRIORITY" , "2"); + TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); + TaskData.Insert("RESPONSIBLE_ID", Responsible); + + URL = TestParameters["Bitrix24_URL"]; + + Result = OPI_Bitrix24.CreateTask(URL, TaskData); + TaskID = Result["result"]["task"]["id"]; + + OPI_TestDataRetrieval.WriteParameter("Bitrix24_KanbanTaskID", TaskID); + TestParameters.Insert("Bitrix24_KanbanTaskID", TaskID); + + Bitrix24_AddKanbanStage(TestParameters); + Bitrix24_GetKanbanStages(TestParameters); + Bitrix24_MoveTaskToKanbanStage(TestParameters); + Bitrix24_UpdateKanbansStage(TestParameters); + + OPI_Bitrix24.DeleteTask(URL, TaskID); + + Bitrix24_DeleteKanbanStage(TestParameters); + +EndProcedure + +Procedure B24_ChatManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Bitrix24_GetUserStatus(TestParameters); + Bitrix24_SetUserStatus(TestParameters); + Bitrix24_GetUsers(TestParameters); + Bitrix24_CreateChat(TestParameters); + + OPI_Tools.Pause(5); + + Bitrix24_GetChatUsers(TestParameters); + Bitrix24_DeleteUserFromChat(TestParameters); + Bitrix24_AddUsersToChat(TestParameters); + Bitrix24_ChangeChatTitle(TestParameters); + + OPI_Tools.Pause(5); + + Bitrix24_ChangeChatColor(TestParameters); + Bitrix24_ChangeChatPicture(TestParameters); + Bitrix24_DisableChatNotifications(TestParameters); + Bitrix24_EnableChatNotifications(TestParameters); + + OPI_Tools.Pause(5); + + Bitrix24_GetChatMessagesList(TestParameters); + Bitrix24_MarkMessageAsReaded(TestParameters); + Bitrix24_MarkMessageAsUnreaded(TestParameters); + Bitrix24_GetDialog(TestParameters); + + OPI_Tools.Pause(5); + + Bitrix24_GetChatMembersList(TestParameters); + Bitrix24_SendWritingNotification(TestParameters); + Bitrix24_SendMessage(TestParameters); + Bitrix24_EditMessage(TestParameters); + Bitrix24_GetPictureBlock(TestParameters); + Bitrix24_GetFileBlock(TestParameters); + + OPI_Tools.Pause(5); + + Bitrix24_SetMessageReaction(TestParameters); + Bitrix24_DeleteMessage(TestParameters); + Bitrix24_GetChatFilesFolder(TestParameters); + Bitrix24_SendFile(TestParameters); + + OPI_Tools.Pause(5); + + Bitrix24_ReadAll(TestParameters); + Bitrix24_ChangeChatOwner(TestParameters); + Bitrix24_LeaveChat(TestParameters); + + Bitrix24_GetChatStructure(TestParameters); + +EndProcedure + +Procedure B24_NotificationsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Bitrix24_CreatePersonalNotification(TestParameters); + Bitrix24_CreateSystemNotification(TestParameters); + Bitrix24_DeleteNotification(TestParameters); + +EndProcedure + +Procedure B24_TasksFieldsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_HookTaskFieldID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_TaskFieldID" , TestParameters); + + Bitrix24_AddCustomTaskField(TestParameters); + Bitrix24_UpdateCustomTaskField(TestParameters); + Bitrix24_GetCustomTaskField(TestParameters); + Bitrix24_GetCustomTaskFieldsList(TestParameters); + Bitrix24_DeleteCustomTaskField(TestParameters); + +EndProcedure + +Procedure B24_DepartmentsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + Bitrix24_CreateDepartment(TestParameters); + Bitrix24_GetDepartments(TestParameters); + Bitrix24_UpdateDepartment(TestParameters); + Bitrix24_DeleteDepartment(TestParameters); + +EndProcedure + +Procedure B2_UsersManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + Bitrix24_GetCurrentUser(TestParameters); + Bitrix24_GetUserFieldsStructure(TestParameters); + Bitrix24_CreateUser(TestParameters); + Bitrix24_FindUsers(TestParameters); + Bitrix24_UpdateUser(TestParameters); + Bitrix24_GetUser(TestParameters); + Bitrix24_ChangeUserStatus(TestParameters); + Bitrix24_GetUserFilterStructure(TestParameters); + +EndProcedure + +Procedure B24_LeadsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + Bitrix24_GetLeadsList(TestParameters); + Bitrix24_GetLeadFilterStructure(TestParameters); + Bitrix24_GetLeadStructure(TestParameters); + Bitrix24_CreateLead(TestParameters); + Bitrix24_GetLead(TestParameters); + Bitrix24_UpdateLead(TestParameters); + Bitrix24_DeleteLead(TestParameters); + +EndProcedure + +Procedure B24_DealsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + Bitrix24_GetDealsFilterStructure(TestParameters); + Bitrix24_GetDealStructure(TestParameters); + Bitrix24_CreateDeal(TestParameters); + Bitrix24_GetDeal(TestParameters); + Bitrix24_UpdateDeal(TestParameters); + Bitrix24_DeleteDeal(TestParameters); + Bitrix24_GetDealsList(TestParameters); + +EndProcedure + +Procedure B24_CalendarsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Domain", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Bitrix24_Token" , TestParameters); + + Bitrix24_CreateCalendar(TestParameters); + Bitrix24_UpdateCalendar(TestParameters); + Bitrix24_GetCalendarList(TestParameters); + Bitrix24_CreateCalendarEvent(TestParameters); + Bitrix24_SetUserParticipationStatus(TestParameters); + Bitrix24_GetUserParticipationStatus(TestParameters); + Bitrix24_GetCalendarEvent(TestParameters); + Bitrix24_GetCalendarEvents(TestParameters); + Bitrix24_UpdateCalendarEvent(TestParameters); + Bitrix24_GetUserBusy(TestParameters); + Bitrix24_DeleteCalendarEvent(TestParameters); + Bitrix24_DeleteCalendar(TestParameters); + Bitrix24_GetCustomCalendarSettings(TestParameters); + Bitrix24_SetCustomCalendarSettings(TestParameters); + Bitrix24_GetCalendarStructure(TestParameters); + Bitrix24_GetCalendarSettingsStructure(TestParameters); + Bitrix24_GetCalednarCustomSettingsStructure(TestParameters); + Bitrix24_GetCalendarEventsStructure(TestParameters); + Bitrix24_GetCalendarEventsFilterStructure(TestParameters); + +EndProcedure + +#EndRegion // Bitrix24 + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Bitrix24 + +Procedure Bitrix24_GetAppAuthLink(FunctionParameters) + + Domain = FunctionParameters["Bitrix24_Domain"]; + ClientID = FunctionParameters["Bitrix24_ClientID"]; + + Options = New Structure; + Options.Insert("domain", Domain); + Options.Insert("clientid", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetAppAuthLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetAppAuthLink"); + +EndProcedure + +Procedure Bitrix24_GetToken(FunctionParameters) + + ClientID = FunctionParameters["Bitrix24_ClientID"]; + ClientSecret = FunctionParameters["Bitrix24_ClientSecret"]; + Code = FunctionParameters["Bitrix24_Code"]; + + Options = New Structure; + Options.Insert("clientid", ClientID); + Options.Insert("clientsecret", ClientSecret); + Options.Insert("code", Code); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetToken"); + +EndProcedure + +Procedure Bitrix24_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["Bitrix24_ClientID"]; + ClientSecret = FunctionParameters["Bitrix24_ClientSecret"]; + Refresh = FunctionParameters["Bitrix24_Refresh"]; + + Options = New Structure; + Options.Insert("clientid", ClientID); + Options.Insert("clientsecret", ClientSecret); + Options.Insert("refresh", Refresh); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RefreshToken"); + +EndProcedure + +Procedure Bitrix24_ServerTime(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ServerTime", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ServerTime", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ServerTime", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ServerTime"); + +EndProcedure + +Procedure Bitrix24_CreatePost(FunctionParameters) + + Text = "Text of post"; + Title = "Post title"; + Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data + Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data + + Files = New Map; + Files.Insert("1.png", Image1); + Files.Insert("2.png", Image2); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("text", Text); + Options.Insert("files", Files); + Options.Insert("title", Title); + Options.Insert("important", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePost", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreatePost", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("text", Text); + Options.Insert("files", Files); + Options.Insert("title", Title); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreatePost", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdatePost(FunctionParameters) + + Text = "New post text"; + Title = "New post title"; + Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data + PostID = FunctionParameters["Bitrix24_PostID"]; + + Files = New Map; + Files.Insert("1.png", Image1); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("text", Text); + Options.Insert("files", Files); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdatePost", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdatePost", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + PostID = FunctionParameters["Bitrix24_HookPostID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("text", Text); + Options.Insert("files", Files); + Options.Insert("title", Title); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdatePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdatePost"); + +EndProcedure + +Procedure Bitrix24_DeletePost(FunctionParameters) + + PostID = FunctionParameters["Bitrix24_HookPostID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeletePost", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeletePost", "Hook"); // SKIP + + PostID = FunctionParameters["Bitrix24_PostID"]; + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeletePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeletePost"); + +EndProcedure + +Procedure Bitrix24_GetImportantPostViewers(FunctionParameters) + + PostID = FunctionParameters["Bitrix24_HookPostID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetImportantPostViewers", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetImportantPostViewers", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetImportantPostViewers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetImportantPostViewers"); + +EndProcedure + +Procedure Bitrix24_GetPosts(FunctionParameters) + + PostID = FunctionParameters["Bitrix24_PostID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetPosts", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetPosts", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetPosts", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetPosts"); + +EndProcedure + +Procedure Bitrix24_AddPostComment(FunctionParameters) + + Text = "Comment for post"; + PostID = FunctionParameters["Bitrix24_PostID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddPostComment", "Hook"); // SKIP + + Text = "Another comment"; + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("text", Text); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddPostComment"); + +EndProcedure + +Procedure Bitrix24_AddPostRecipients(FunctionParameters) + + Visibility = "UA"; + PostID = FunctionParameters["Bitrix24_PostID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("vision", Visibility); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostRecipients", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddPostRecipients", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("postid", PostID); + Options.Insert("vision", Visibility); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddPostRecipients", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddPostRecipients"); + +EndProcedure + +Procedure Bitrix24_GetTaskFieldsStructure(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskFieldsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskFieldsStructure", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskFieldsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskFieldsStructure"); + +EndProcedure + +Procedure Bitrix24_CreateTask(FunctionParameters) + + // The complete structure of the fields can be obtained by the GetTaskFieldsStructure() function() + + CurrentDate = OPI_Tools.GetCurrentDate(); + Hour = 3600; + Day = 24; + Responsible = 1; + + TaskData = New Structure; + TaskData.Insert("TITLE" , "New task"); + TaskData.Insert("DESCRIPTION" , "New task description"); + TaskData.Insert("PRIORITY" , "2"); + TaskData.Insert("DEADLINE" , CurrentDate + Hour * Day); + TaskData.Insert("RESPONSIBLE_ID", Responsible); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", TaskData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateTask", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", TaskData); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateTask", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateTask(FunctionParameters) + + // The complete structure of the fields can be obtained by the GetTaskFieldsStructure() function() + + TaskData = New Structure; + TaskData.Insert("TITLE" , "Another task title"); + TaskData.Insert("DESCRIPTION", "Another task description"); + TaskData.Insert("PRIORITY" , "1"); + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("fields", TaskData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("fields", TaskData); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTask"); + +EndProcedure + +Procedure Bitrix24_GetTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTask"); + +EndProcedure + +Procedure Bitrix24_ApproveTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ApproveTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ApproveTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ApproveTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ApproveTask"); + +EndProcedure + +Procedure Bitrix24_DisapproveTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisapproveTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DisapproveTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisapproveTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DisapproveTask"); + +EndProcedure + +Procedure Bitrix24_CompleteTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CompleteTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CompleteTask"); + +EndProcedure + +Procedure Bitrix24_RenewTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenewTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenewTask"); + +EndProcedure + +Procedure Bitrix24_DeferTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeferTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeferTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeferTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeferTask"); + +EndProcedure + +Procedure Bitrix24_StartTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "StartTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "StartTask"); + +EndProcedure + +Procedure Bitrix24_StartWatchingTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartWatchingTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "StartWatchingTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartWatchingTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "StartWatchingTask"); + +EndProcedure + +Procedure Bitrix24_StopWatchingTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopWatchingTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "StopWatchingTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopWatchingTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "StopWatchingTask"); + +EndProcedure + +Procedure Bitrix24_PauseTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "PauseTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "PauseTask"); + +EndProcedure + +Procedure Bitrix24_DeleteTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTask"); + +EndProcedure + +Procedure Bitrix24_DelegateTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + UserID = FunctionParameters["Bitrix24_UserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DelegateTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DelegateTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("user", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DelegateTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DelegateTask"); + +EndProcedure + +Procedure Bitrix24_AddTaskToFavorites(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskToFavorites", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTaskToFavorites", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskToFavorites", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTaskToFavorites"); + +EndProcedure + +Procedure Bitrix24_RemoveTaskFromFavorites(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RemoveTaskFromFavorites", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RemoveTaskFromFavorites", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RemoveTaskFromFavorites", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RemoveTaskFromFavorites"); + +EndProcedure + +Procedure Bitrix24_GetTaskHistory(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskHistory", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskHistory", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskHistory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskHistory"); + +EndProcedure + +Procedure Bitrix24_GetTasksList(FunctionParameters) + + CurrentDate = OPI_Tools.GetCurrentDate(); + + // Full filter structure you can find at GetTasksFilterStructure method + Filter = New Map; + Filter.Insert("CREATED_BY", 1); // Producer with ID 1 + Filter.Insert("!RESPONSIBLE_ID", 10); // Performers with ID not equal to 10 + Filter.Insert(">=CREATED_DATE ", CurrentDate - 60 * 60 * 24); // Creation date >= yesterday + + Fields = New Array; + Fields.Add("UF_CRM_TASK"); + Fields.Add("CREATED_BY"); + + Indent = 1; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("filter", Filter); + Options.Insert("select", Fields); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("offset", Indent); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksList"); + +EndProcedure + +Procedure Bitrix24_GetStoragesList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStoragesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetStoragesList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStoragesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetStoragesList"); + +EndProcedure + +Procedure Bitrix24_GetAppStorage(FunctionParameters) + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetAppStorage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetAppStorage", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UploadFileToStorage(FunctionParameters) + + Filename2 = "Picture2.jpg"; + Name = "Picture1.jpg"; + + Image2 = FunctionParameters["Picture"]; // Local path, URL or Binary Data + Image = FunctionParameters["Picture2"]; // Local path, URL or Binary Data + + DestinationID = 3; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Filename2); + Options.Insert("file", Image2); + Options.Insert("storageid", DestinationID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToStorage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UploadFileToStorage", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("file", Image); + Options.Insert("storageid", DestinationID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToStorage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UploadFileToStorage", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_DeleteFile(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FileID = FunctionParameters["Bitrix24_HookFileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteFile", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteFile"); + +EndProcedure + +Procedure Bitrix24_CreateStorageFolder(FunctionParameters) + + StorageID = 3; + Name = "New catalog"; + Filename2 = "New folder 2"; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + Options.Insert("title", Filename2); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateStorageFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateStorageFolder", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + Options.Insert("title", Name); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateStorageFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateStorageFolder", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_DeleteFolder(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FolderID = FunctionParameters["Bitrix24_HookFolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteFolder", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteFolder"); + +EndProcedure + +Procedure Bitrix24_GetStorage(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + StorageID = 3; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetStorage", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetStorage"); + +EndProcedure + +Procedure Bitrix24_GetStorageObjects(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + StorageID = 3; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorageObjects", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetStorageObjects", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetStorageObjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetStorageObjects"); + +EndProcedure + +Procedure Bitrix24_RenameStorage(FunctionParameters) + + Name = "New storage name"; + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + StorageID = FunctionParameters["Bitrix24_StorageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("storageid", StorageID); + Options.Insert("title", Name); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameStorage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenameStorage"); + +EndProcedure + +Procedure Bitrix24_GetFolderInformation(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderInformation", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderInformation"); + +EndProcedure + +Procedure Bitrix24_CreateSubfolder(FunctionParameters) + + FolderID = FunctionParameters["Bitrix24_FolderID"]; + Name = "New subfolder"; + Filename2 = "New subfolder 2"; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("title", Filename2); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSubfolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateSubfolder", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("title", Name); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSubfolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateSubfolder", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_MakeFolderCopy(FunctionParameters) + + DestinationID = FunctionParameters["Bitrix24_HookSubfolderID"]; + FolderID = FunctionParameters["Bitrix24_SubfolderID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("tagetid", DestinationID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MakeFolderCopy", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MakeFolderCopy", "Hook"); // SKIP + + DestinationID = FunctionParameters["Bitrix24_SubfolderID"]; + FolderID = FunctionParameters["Bitrix24_HookSubfolderID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MakeFolderCopy"); + +EndProcedure + +Procedure Bitrix24_GetFolderExternalLink(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderExternalLink", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderExternalLink", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderExternalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderExternalLink"); + +EndProcedure + +Procedure Bitrix24_GetFolderFilterStructure(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderFilterStructure", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("empty", Истина); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderFilterStructure"); + +EndProcedure + +Procedure Bitrix24_GetFolderItems(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderItems", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderItems", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFolderItems", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFolderItems"); + +EndProcedure + +Procedure Bitrix24_MarkFolderAsDeleted(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFolderAsDeleted", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkFolderAsDeleted", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFolderAsDeleted", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkFolderAsDeleted"); + +EndProcedure + +Procedure Bitrix24_RestoreFolder(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RestoreFolder", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RestoreFolder"); + +EndProcedure + +Procedure Bitrix24_MoveFolder(FunctionParameters) + + DestinationID = FunctionParameters["Bitrix24_HookfolderID"]; + FolderID = FunctionParameters["Bitrix24_SubfolderID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("tagetid", DestinationID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MoveFolder", "Hook"); // SKIP + + FolderID = FunctionParameters["Bitrix24_HookSubfolderID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("tagetid", DestinationID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MoveFolder"); + +EndProcedure + +Procedure Bitrix24_RenameFolder(FunctionParameters) + + Name = "New catalog"; + Filename2 = "New folder 2"; + + FolderID2 = FunctionParameters["Bitrix24_HookFolderID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID2); + Options.Insert("title", Filename2); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenameFolder", "Hook"); // SKIP + + FolderID = FunctionParameters["Bitrix24_FolderID"]; + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("folderid", FolderID); + Options.Insert("title", Name); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenameFolder"); + +EndProcedure + +Procedure Bitrix24_UploadFileToFolder(FunctionParameters) + + Filename2 = "Picture2.jpg"; + Name = "Picture1.jpg"; + + Image2 = FunctionParameters["Picture"]; // Local path, URL or Binary Data + Image = FunctionParameters["Picture2"]; // Local path, URL or Binary Data + + DestinationID = FunctionParameters["Bitrix24_FolderID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Filename2); + Options.Insert("file", Image2); + Options.Insert("folderid", DestinationID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UploadFileToFolder", "Hook", URL); // SKIP + + FileID = Result["result"]["ID"]; // SKIP + OPI_Bitrix24.DeleteFile(URL, FileID); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("file", Image); + Options.Insert("folderid", DestinationID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UploadFileToFolder", , URL, Token); + + FileID = Result["result"]["ID"]; + + OPI_Bitrix24.DeleteFile(URL, FileID, Token); + +EndProcedure + +Procedure Bitrix24_MakeFileCopy(FunctionParameters) + + FolderID = FunctionParameters["Bitrix24_HookFolderID"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MakeFileCopy", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MakeFileCopy", "Hook"); // SKIP + + FolderID = FunctionParameters["Bitrix24_FolderID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MakeFileCopy", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MakeFileCopy"); + +EndProcedure + +Procedure Bitrix24_GetFileInformation(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFileInformation", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFileInformation"); + +EndProcedure + +Procedure Bitrix24_GetFileExternalLink(FunctionParameters) + + OPI_Tools.Pause(20); // SKIP + + URL = FunctionParameters["Bitrix24_URL"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileExternalLink", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFileExternalLink", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileExternalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFileExternalLink"); + +EndProcedure + +Procedure Bitrix24_MarkFileAsDeleted(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFileAsDeleted", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkFileAsDeleted", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkFileAsDeleted", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkFileAsDeleted"); + +EndProcedure + +Procedure Bitrix24_RestoreFile(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RestoreFile", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RestoreFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RestoreFile"); + +EndProcedure + +Procedure Bitrix24_RenameFile(FunctionParameters) + + Name = "New file name.jpg"; + Filename2 = "New file name 2.jpg"; + + FileID2 = FunctionParameters["Bitrix24_HookFileID"]; + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID2); + Options.Insert("title", Filename2); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenameFile", "Hook"); // SKIP + + FileID = FunctionParameters["Bitrix24_FileID"]; + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("title", Name); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenameFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenameFile"); + +EndProcedure + +Procedure Bitrix24_MoveFileToFolder(FunctionParameters) + + FolderID = FunctionParameters["Bitrix24_HookSubFolderID"]; + FileID = FunctionParameters["Bitrix24_FileID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("folderid", FolderID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFileToFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MoveFileToFolder", "Hook"); // SKIP + + FolderID = FunctionParameters["Bitrix24_SubFolderID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fileid", FileID); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveFileToFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MoveFileToFolder"); + +EndProcedure + +Procedure Bitrix24_AttachFileToTopic(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + FileID = FunctionParameters["Bitrix24_TaskFileID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AttachFileToTopic", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AttachFileToTopic", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("fileid", FileID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AttachFileToTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AttachFileToTopic"); + +EndProcedure + +Procedure Bitrix24_CheckTaskAccesses(FunctionParameters) + + ArrayOfUsers = New Array; + ArrayOfUsers.Add("1"); + ArrayOfUsers.Add("10"); + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("users", ArrayOfUsers); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CheckTaskAccesses", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CheckTaskAccesses", "Hook", ArrayOfUsers.Count()); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("users", ArrayOfUsers); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CheckTaskAccesses", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CheckTaskAccesses", , ArrayOfUsers.Count()); + +EndProcedure + +Procedure Bitrix24_MuteTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MuteTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MuteTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MuteTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MuteTask"); + +EndProcedure + +Procedure Bitrix24_UnmuteTask(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UnmuteTask", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UnmuteTask", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UnmuteTask", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UnmuteTask"); + +EndProcedure + +Procedure Bitrix24_AddTaskComment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; + + Text = "Task impossible, let's split up"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTaskComment", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Text = "Task uninpossible, don't split up"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("text", Text); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTaskComment", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_DeleteTaskComment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; + CommentID = FunctionParameters["Bitrix24_HookCommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("comment", CommentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTaskComment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CommentID = FunctionParameters["Bitrix24_CommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("comment", CommentID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTaskComment"); + +EndProcedure + +Procedure Bitrix24_CreateResultFromComment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + CommentID = FunctionParameters["Bitrix24_HookCommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("comment", CommentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateResultFromComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateResultFromComment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CommentID = FunctionParameters["Bitrix24_CommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("comment", CommentID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateResultFromComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateResultFromComment"); + +EndProcedure + +Procedure Bitrix24_DeleteResultFromComment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + CommentID = FunctionParameters["Bitrix24_HookCommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("comment", CommentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteResultFromComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteResultFromComment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CommentID = FunctionParameters["Bitrix24_CommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("comment", CommentID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteResultFromComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteResultFromComment"); + +EndProcedure + +Procedure Bitrix24_GetResultsList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetResultsList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetResultsList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetResultsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetResultsList"); + +EndProcedure + +Procedure Bitrix24_GetTaskCommentsList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskCommentsList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskCommentsList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskCommentsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskCommentsList"); + +EndProcedure + +Procedure Bitrix24_GetTaskComment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + CommentID = FunctionParameters["Bitrix24_HookCommentID"]; + TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("comment", CommentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskComment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CommentID = FunctionParameters["Bitrix24_CommentID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("comment", CommentID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskComment"); + +EndProcedure + +Procedure Bitrix24_UpdateTaskComment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_CommentsTaskID"]; + CommentID = FunctionParameters["Bitrix24_HookCommentID"]; + + Text = "The task has been changed, do not split up"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("comment", CommentID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskComment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTaskComment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CommentID = FunctionParameters["Bitrix24_CommentID"]; + + Text = "The task has been changed, let's split up"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("comment", CommentID); + Options.Insert("text", Text); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTaskComment"); + +EndProcedure + +Procedure Bitrix24_CreateTasksDependencies(FunctionParameters) + + FromID = FunctionParameters["Bitrix24_HookTaskID"]; + DestinationID = FunctionParameters["Bitrix24_TaskID"]; + LinkType = 0; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("taskfrom", FromID); + Options.Insert("taskto", DestinationID); + Options.Insert("linktype", LinkType); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTasksDependencies", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateTasksDependencies", "Hook"); // SKIP + + OPI_Bitrix24.DeleteTasksDependencies(URL, FromID, DestinationID, LinkType); // SKIP + + FromID = FunctionParameters["Bitrix24_TaskID"]; + DestinationID = FunctionParameters["Bitrix24_HookTaskID"]; + LinkType = 2; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("taskfrom", FromID); + Options.Insert("taskto", DestinationID); + Options.Insert("linktype", LinkType); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateTasksDependencies", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateTasksDependencies"); + + OPI_Bitrix24.DeleteTasksDependencies(URL, FromID, DestinationID, LinkType, Token); + +EndProcedure + +Procedure Bitrix24_DeleteTasksDependencies(FunctionParameters) + + FromID = FunctionParameters["Bitrix24_HookTaskID"]; + DestinationID = FunctionParameters["Bitrix24_TaskID"]; + LinkType = 0; + + URL = FunctionParameters["Bitrix24_URL"]; + + Result = OPI_Bitrix24.CreateTasksDependencies(URL, FromID, DestinationID, LinkType); // SKIP + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("taskfrom", FromID); + Options.Insert("taskto", DestinationID); + Options.Insert("linktype", LinkType); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksDependencies", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTasksDependencies", "Hook"); // SKIP + + FromID = FunctionParameters["Bitrix24_TaskID"]; + DestinationID = FunctionParameters["Bitrix24_HookTaskID"]; + LinkType = 2; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Result = OPI_Bitrix24.CreateTasksDependencies(URL, FromID, DestinationID, LinkType, Token); // SKIP + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("taskfrom", FromID); + Options.Insert("taskto", DestinationID); + Options.Insert("linktype", LinkType); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksDependencies", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTasksDependencies"); + +EndProcedure + +Procedure Bitrix24_AddKanbanStage(FunctionParameters) + + Name = "New stage"; + Color = "0026FF"; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("color", Color); + Options.Insert("prevstage", 6); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddKanbanStage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddKanbanStage", "Hook", FunctionParameters); // SKIP + + Name = "New stage 2"; + Color = "0026FF"; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + PrevStageID = Result["result"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("color", Color); + Options.Insert("prevstage", PrevStageID); + Options.Insert("admin", Истина); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddKanbanStage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddKanbanStage", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_DeleteKanbanStage(FunctionParameters) + + StageID = FunctionParameters["Bitrix24_HookStageID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("stage", StageID); + Options.Insert("admin", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteKanbanStage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteKanbanStage", "Hook"); // SKIP + + StageID = FunctionParameters["Bitrix24_StageID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("stage", StageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteKanbanStage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteKanbanStage"); + +EndProcedure + +Procedure Bitrix24_GetKanbanStages(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("admin", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetKanbanStages", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetKanbanStages", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetKanbanStages", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetKanbanStages"); + +EndProcedure + +Procedure Bitrix24_MoveTaskToKanbanStage(FunctionParameters) + + TaskID = FunctionParameters["Bitrix24_KanbanTaskID"]; + StageID = FunctionParameters["Bitrix24_HookStageID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("stage", StageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveTaskToKanbanStage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MoveTaskToKanbanStage", "Hook"); // SKIP + + StageID = FunctionParameters["Bitrix24_StageID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("stage", StageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MoveTaskToKanbanStage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MoveTaskToKanbanStage"); + + OPI_Bitrix24.MoveTaskToKanbanStage(URL, TaskID, 2, , , Token); + +EndProcedure + +Procedure Bitrix24_UpdateKanbansStage(FunctionParameters) + + Name = "New stage name"; + Color = "000000"; + StageID = FunctionParameters["Bitrix24_HookStageID"]; + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("stage", StageID); + Options.Insert("color", Color); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateKanbansStage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateKanbansStage", "Hook"); // SKIP + + Name = "New stage name 2"; + Color = "000000"; + StageID = FunctionParameters["Bitrix24_StageID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("stage", StageID); + Options.Insert("color", Color); + Options.Insert("prevstage", 6); + Options.Insert("admin", Истина); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateKanbansStage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateKanbansStage"); + +EndProcedure + +Procedure Bitrix24_AddTasksChecklistElement(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Text = "Checklist element"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("text", Text); + Options.Insert("complete", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTasksChecklistElement", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTasksChecklistElement", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("text", Text); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTasksChecklistElement", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTasksChecklistElement", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateTasksChecklistElement(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; + + Text = "New elements text"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTasksChecklistElement", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTasksChecklistElement", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + ElementID = FunctionParameters["Bitrix24_CheckElementID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + Options.Insert("text", Text); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTasksChecklistElement", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTasksChecklistElement"); + +EndProcedure + +Procedure Bitrix24_DeleteTasksChecklistElement(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksChecklistElement", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTasksChecklistElement", "Hook"); // SKIP + + TaskID = FunctionParameters["Bitrix24_TaskID"]; + ElementID = FunctionParameters["Bitrix24_CheckElementID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTasksChecklistElement", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTasksChecklistElement"); + +EndProcedure + +Procedure Bitrix24_GetTasksChecklist(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklist", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksChecklist", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + TaskID = FunctionParameters["Bitrix24_TaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklist", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksChecklist"); + +EndProcedure + +Procedure Bitrix24_GetTasksChecklistElement(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklistElement", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksChecklistElement", "Hook"); // SKIP + + TaskID = FunctionParameters["Bitrix24_TaskID"]; + ElementID = FunctionParameters["Bitrix24_CheckElementID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksChecklistElement", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksChecklistElement"); + +EndProcedure + +Procedure Bitrix24_CompleteTasksChecklistElement(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTasksChecklistElement", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CompleteTasksChecklistElement", "Hook"); // SKIP + + TaskID = FunctionParameters["Bitrix24_TaskID"]; + ElementID = FunctionParameters["Bitrix24_CheckElementID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CompleteTasksChecklistElement", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CompleteTasksChecklistElement"); + +EndProcedure + +Procedure Bitrix24_RenewTasksChecklistElement(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_HookTaskID"]; + ElementID = FunctionParameters["Bitrix24_HookCheckElementID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTasksChecklistElement", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenewTasksChecklistElement", "Hook"); // SKIP + + TaskID = FunctionParameters["Bitrix24_TaskID"]; + ElementID = FunctionParameters["Bitrix24_CheckElementID"]; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("element", ElementID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "RenewTasksChecklistElement", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "RenewTasksChecklistElement"); + +EndProcedure + +Procedure Bitrix24_AddTaskTimeAccounting(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; + + Time = 3600; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("amount", Time); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskTimeAccounting", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTaskTimeAccounting", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Text = "Time spent on work"; + UserID = 10; + Time = 7200; + SetupDate = AddMonth(OPI_Tools.GetCurrentDate(), -1); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("amount", Time); + Options.Insert("user", UserID); + Options.Insert("text", Text); + Options.Insert("date", SetupDate); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddTaskTimeAccounting", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddTaskTimeAccounting", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateTaskTimeAccounting(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; + RecordID = FunctionParameters["Bitrix24_HookTimeID"]; + + Text = "The text I forgot last time"; + Time = 4800; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("record", RecordID); + Options.Insert("amount", Time); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskTimeAccounting", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTaskTimeAccounting", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + RecordID = FunctionParameters["Bitrix24_TimeID"]; + + Text = "New time record"; + Time = 4800; + SetupDate = AddMonth(OPI_Tools.GetCurrentDate(), -1); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("record", RecordID); + Options.Insert("amount", Time); + Options.Insert("text", Text); + Options.Insert("date", SetupDate); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateTaskTimeAccounting", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateTaskTimeAccounting"); + +EndProcedure + +Procedure Bitrix24_DeleteTaskTimeAccounting(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; + RecordID = FunctionParameters["Bitrix24_HookTimeID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("record", RecordID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskTimeAccounting", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTaskTimeAccounting", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + RecordID = FunctionParameters["Bitrix24_TimeID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("record", RecordID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteTaskTimeAccounting", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteTaskTimeAccounting"); + +EndProcedure + +Procedure Bitrix24_GetTaskTimeAccounting(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; + RecordID = FunctionParameters["Bitrix24_HookTimeID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("record", RecordID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccounting", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskTimeAccounting", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + RecordID = FunctionParameters["Bitrix24_TimeID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("record", RecordID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccounting", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskTimeAccounting"); + +EndProcedure + +Procedure Bitrix24_GetTaskTimeAccountingList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + TaskID = FunctionParameters["Bitrix24_ElapsedTaskID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccountingList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskTimeAccountingList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("task", TaskID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTaskTimeAccountingList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTaskTimeAccountingList"); + +EndProcedure + +Procedure Bitrix24_GetDailyPlan(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDailyPlan", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDailyPlan", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDailyPlan", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDailyPlan"); + +EndProcedure + +Procedure Bitrix24_CreateChat(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); + + B64Image = GetBase64StringFromBinaryData(Image); + + MembersArray = New Array; + MembersArray.Add(10); + MembersArray.Add(1); + + ChatStructure = New Structure; + ChatStructure.Insert("TYPE" , "OPEN"); + ChatStructure.Insert("TITLE" , "New chat"); + ChatStructure.Insert("DESCRIPTION", "This is a new chat"); + ChatStructure.Insert("COLOR" , "GREEN"); + ChatStructure.Insert("MESSAGE" , "Welcome to new chat"); + ChatStructure.Insert("USERS" , MembersArray); + ChatStructure.Insert("AVATAR" , B64Image); + ChatStructure.Insert("OWNER_ID" , 1); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", ChatStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateChat", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateChat", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + ChatStructure = New Structure; + ChatStructure.Insert("TYPE" , "CHAT"); + ChatStructure.Insert("TITLE", "Private chat"); + ChatStructure.Insert("USERS", MembersArray); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", ChatStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateChat", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateChat", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_GetChatUsers(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatUsers", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatUsers", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatUsers"); + +EndProcedure + +Procedure Bitrix24_LeaveChat(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "LeaveChat", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "LeaveChat", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "LeaveChat", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "LeaveChat"); + +EndProcedure + +Procedure Bitrix24_DeleteUserFromChat(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteUserFromChat", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteUserFromChat", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("user", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteUserFromChat", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteUserFromChat"); + +EndProcedure + +Procedure Bitrix24_AddUsersToChat(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + UserIDs = New Array; + UserIDs.Add(10); + UserIDs.Add(12); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("users", UserIDs); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddUsersToChat", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddUsersToChat", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("users", UserID); + Options.Insert("hide", Истина); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddUsersToChat", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "AddUsersToChat"); + +EndProcedure + +Procedure Bitrix24_ChangeChatTitle(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Title = "New chat title"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatTitle", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatTitle", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Title = "Another title"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("title", Title); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatTitle", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatTitle"); + +EndProcedure + +Procedure Bitrix24_ChangeChatColor(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Color = "AZURE"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("color", Color); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatColor", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatColor", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Color = "PURPLE"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("color", Color); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatColor", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatColor"); + +EndProcedure + +Procedure Bitrix24_ChangeChatPicture(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Image = FunctionParameters["Picture2"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatPicture", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatPicture", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("picture", Image); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatPicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatPicture"); + +EndProcedure + +Procedure Bitrix24_DisableChatNotifications(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisableChatNotifications", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DisableChatNotifications", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DisableChatNotifications", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DisableChatNotifications"); + +EndProcedure + +Procedure Bitrix24_EnableChatNotifications(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EnableChatNotifications", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "EnableChatNotifications", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EnableChatNotifications", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "EnableChatNotifications"); + +EndProcedure + +Procedure Bitrix24_ChangeChatOwner(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatOwner", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatOwner", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("user", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeChatOwner", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeChatOwner"); + +EndProcedure + +Procedure Bitrix24_GetChatMessagesList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = "chat4"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMessagesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatMessagesList", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("first", 0); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMessagesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatMessagesList", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_MarkMessageAsReaded(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + OPI_TypeConversion.GetLine(ChatID); + ChatString = "chat" + ChatID; + + MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatString); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsReaded", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkMessageAsReaded", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + MessageID = FunctionParameters["Bitrix24_UserMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("message", MessageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsReaded", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkMessageAsReaded"); + +EndProcedure + +Procedure Bitrix24_MarkMessageAsUnreaded(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + OPI_TypeConversion.GetLine(ChatID); + + ChatString = "chat" + ChatID; + MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatString); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsUnreaded", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkMessageAsUnreaded", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + MessageID = FunctionParameters["Bitrix24_UserMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("message", MessageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "MarkMessageAsUnreaded", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "MarkMessageAsUnreaded"); + +EndProcedure + +Procedure Bitrix24_GetDialog(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + OPI_TypeConversion.GetLine(ChatID); + + ChatString = "chat" + ChatID; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatString); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDialog", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDialog", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDialog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDialog"); + +EndProcedure + +Procedure Bitrix24_GetChatMembersList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + OPI_TypeConversion.GetLine(ChatID); + + ChatString = "chat" + ChatID; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatString); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMembersList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatMembersList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatMembersList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatMembersList"); + +EndProcedure + +Procedure Bitrix24_SendWritingNotification(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + OPI_TypeConversion.GetLine(ChatID); + + ChatString = "chat" + ChatID; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatString); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendWritingNotification", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SendWritingNotification", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendWritingNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SendWritingNotification"); + +EndProcedure + +Procedure Bitrix24_ReadAll(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ReadAll", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ReadAll", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ReadAll", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ReadAll"); + +EndProcedure + +Procedure Bitrix24_SendMessage(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + OPI_TypeConversion.GetLine(ChatID); + + ChatString = "chat" + ChatID; + Text = "Message text"; + Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Attachments = New Array; + Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); + Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatString); + Options.Insert("text", Text); + Options.Insert("blocks", Attachments); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SendMessage", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", UserID); + Options.Insert("text", Text); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SendMessage", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_EditMessage(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; + + Text = "New message text"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("message", MessageID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EditMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "EditMessage", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + MessageID = FunctionParameters["Bitrix24_UserMessageID"]; + + Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Attachments = New Array; + Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); + Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("message", MessageID); + Options.Insert("text", Text); + Options.Insert("blocks", Attachments); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "EditMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "EditMessage"); + +EndProcedure + +Procedure Bitrix24_DeleteMessage(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteMessage", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + MessageID = FunctionParameters["Bitrix24_UserMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("message", MessageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteMessage"); + +EndProcedure + +Procedure Bitrix24_SetMessageReaction(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + MessageID = FunctionParameters["Bitrix24_ChatMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetMessageReaction", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetMessageReaction", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + MessageID = FunctionParameters["Bitrix24_UserMessageID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("message", MessageID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetMessageReaction", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetMessageReaction"); + +EndProcedure + +Procedure Bitrix24_GetChatFilesFolder(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatFilesFolder", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatFilesFolder"); + +EndProcedure + +Procedure Bitrix24_SendFile(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ChatID = FunctionParameters["Bitrix24_HookChatID"]; + File = FunctionParameters["Document"]; // Binary Data, URL or path to file + Description = "Very important file"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + + Directory = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); + FolderID = Directory["result"]["ID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", "Imortant doc.docx"); + Options.Insert("file", File); + Options.Insert("folderid", FolderID); + + UploadedFile = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); + FileID = UploadedFile["result"]["ID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("fileid", FileID); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SendFile", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + ChatID = FunctionParameters["Bitrix24_ChatID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("token", Token); + + Directory = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatFilesFolder", Options); + FolderID = Directory["result"]["ID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", "Imortant doc.docx"); + Options.Insert("file", File); + Options.Insert("folderid", FolderID); + Options.Insert("token", Token); + + UploadedFile = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UploadFileToFolder", Options); + FileID = UploadedFile["result"]["ID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("chat", ChatID); + Options.Insert("fileid", FileID); + Options.Insert("description", Description); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SendFile"); + +EndProcedure + +Procedure Bitrix24_GetUsers(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + ArrayOfUsers = New Array; + + ArrayOfUsers.Add(1); + ArrayOfUsers.Add(10); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("users", ArrayOfUsers); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUsers", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUsers", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserIDs = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("users", UserIDs); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUsers"); + +EndProcedure + +Procedure Bitrix24_GetUserStatus(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserStatus", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserStatus", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserStatus"); + +EndProcedure + +Procedure Bitrix24_SetUserStatus(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + Status = "dnd"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("status", Status); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserStatus", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetUserStatus", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + Status = "away"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("status", Status); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetUserStatus"); + +EndProcedure + +Procedure Bitrix24_CreatePersonalNotification(FunctionParameters) + + UserID = 1; + + URL = FunctionParameters["Bitrix24_URL"]; + Text = "Message text"; + Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Attachments = New Array; + Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); + Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("text", Text); + Options.Insert("blocks", Attachments); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePersonalNotification", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreatePersonalNotification", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + Tag = "New"; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("text", Text); + Options.Insert("tag", Tag); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreatePersonalNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreatePersonalNotification", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_CreateSystemNotification(FunctionParameters) + + UserID = 1; + + URL = FunctionParameters["Bitrix24_URL"]; + Text = "Message text"; + Image = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + File = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Attachments = New Array; + Attachments.Add(OPI_Bitrix24.GetPictureBlock("Image1" , Image)); + Attachments.Add(OPI_Bitrix24.GetFileBlock("File1.docx" , File)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("text", Text); + Options.Insert("blocks", Attachments); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSystemNotification", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateSystemNotification", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + Tag = "New"; + UserID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("text", Text); + Options.Insert("tag", Tag); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateSystemNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateSystemNotification", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_DeleteNotification(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + NotificationID = FunctionParameters["Bitrix24_PersonalHookNotifyID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("notif", NotificationID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteNotification", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteNotification", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + NotificationID = FunctionParameters["Bitrix24_PersonalNotifyID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("notif", NotificationID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteNotification"); + +EndProcedure + +Procedure Bitrix24_AddCustomTaskField(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Type = "date"; + Name = "BIRTHDAY_FIELD"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("type", Type); + Options.Insert("fieldname", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddCustomTaskField", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Type = "string"; + Name = "TEXT_FIELD"; + ExternalID = "BITRIX_TEXT_FIELD"; + Title = "Text field"; + Signature = New Structure("en,ru", "Some field", "Nekotoroe pole"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("type", Type); + Options.Insert("fieldname", Name); + Options.Insert("externalid", ExternalID); + Options.Insert("title", Title); + Options.Insert("label", Signature); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "AddCustomTaskField", Options); + + // END + +EndProcedure + +Procedure Bitrix24_UpdateCustomTaskField(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + FieldID = FunctionParameters["Bitrix24_HookTaskFieldID"]; + Title = "New title"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fieldid", FieldID); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCustomTaskField", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + FieldID = FunctionParameters["Bitrix24_TaskFieldID"]; + ExternalID = "NEW_TEXT_FIELD"; + Signature = New Structure("en,ru", "Updated field", "Izmenennoe pole"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fieldid", FieldID); + Options.Insert("externalid", ExternalID); + Options.Insert("label", Signature); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCustomTaskField", Options); + + // END + +EndProcedure + +Procedure Bitrix24_GetCustomTaskField(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FieldID = FunctionParameters["Bitrix24_HookTaskFieldID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fieldid", FieldID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskField", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + FieldID = FunctionParameters["Bitrix24_TaskFieldID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fieldid", FieldID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskField", Options); + + // END + +EndProcedure + +Procedure Bitrix24_GetCustomTaskFieldsList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskFieldsList", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomTaskFieldsList", Options); + + // END + +EndProcedure + +Procedure Bitrix24_DeleteCustomTaskField(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + FieldID = FunctionParameters["Bitrix24_HookTaskFieldID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fieldid", FieldID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCustomTaskField", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + FieldID = FunctionParameters["Bitrix24_TaskFieldID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fieldid", FieldID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCustomTaskField", Options); + + // END + +EndProcedure + +Procedure Bitrix24_CreateDepartment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Name = "Main department"; + ParentID = 1; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("parentid", ParentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDepartment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateDepartment", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Name = "Subordinate department"; + ParentID = FunctionParameters["Bitrix24_HookDepID"]; + HeadID = 1; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("title", Name); + Options.Insert("parentid", ParentID); + Options.Insert("headid", HeadID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDepartment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateDepartment", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateDepartment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + DepartmentID = FunctionParameters["Bitrix24_HookDepID"]; + ParentID = 7; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("depid", DepartmentID); + Options.Insert("parentid", ParentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDepartment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateDepartment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + DepartmentID = FunctionParameters["Bitrix24_DepID"]; + Name = "New department"; + ParentID = 1; + HeadID = 10; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("depid", DepartmentID); + Options.Insert("title", Name); + Options.Insert("parentid", ParentID); + Options.Insert("headid", HeadID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDepartment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateDepartment"); + +EndProcedure + +Procedure Bitrix24_DeleteDepartment(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + DepartmentID = FunctionParameters["Bitrix24_DepID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("depid", DepartmentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDepartment", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteDepartment", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + DepartmentID = FunctionParameters["Bitrix24_HookDepID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("depid", DepartmentID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDepartment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteDepartment"); + +EndProcedure + +Procedure Bitrix24_GetDepartments(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + DepartmentID = FunctionParameters["Bitrix24_DepID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("depid", DepartmentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDepartments", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDepartments", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + HeadID = 1; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headid", HeadID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDepartments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDepartments"); + +EndProcedure + +Procedure Bitrix24_GetCurrentUser(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCurrentUser", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCurrentUser", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCurrentUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCurrentUser"); + +EndProcedure + +Procedure Bitrix24_GetUserFieldsStructure(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserFieldsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserFieldsStructure", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserFieldsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserFieldsStructure"); + +EndProcedure + +Procedure Bitrix24_CreateUser(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + Email = String(New UUID) + "@example.org"; + + // The full structure can be obtained with the function GetUserFieldsStructure + + UserStructure = New Structure; + UserStructure.Insert("EMAIL" , Email); + UserStructure.Insert("UF_DEPARTMENT", 7); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", UserStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateUser", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateUser", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + Email = String(New UUID) + "@example.org"; + + UserStructure = New Structure; + UserStructure.Insert("EMAIL" , Email); + UserStructure.Insert("NAME" , "Vitaly"); + UserStructure.Insert("LAST_NAME" , "Alpaca"); + UserStructure.Insert("PERSONAL_MOBILE", "88003553535"); + UserStructure.Insert("UF_DEPARTMENT" , 1); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", UserStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateUser", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateUser(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + UserID = FunctionParameters["Bitrix24_HookUserID"]; + Email = String(New UUID) + "@example.org"; + + // The full structure can be obtained with the function GetUserFieldsStructure + + UserStructure = New Structure; + UserStructure.Insert("EMAIL" , Email); + UserStructure.Insert("UF_DEPARTMENT", 1); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("fields", UserStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateUser", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateUser", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = FunctionParameters["Bitrix24_UserID"]; + Email = String(New UUID) + "@example.org"; + + UserStructure = New Structure; + UserStructure.Insert("EMAIL" , Email); + UserStructure.Insert("NAME" , "Oleg"); + UserStructure.Insert("LAST_NAME" , "Lama"); + UserStructure.Insert("UF_DEPARTMENT", 7); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("fields", UserStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateUser"); + +EndProcedure + +Procedure Bitrix24_ChangeUserStatus(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + UserID = FunctionParameters["Bitrix24_HookUserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("fire", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeUserStatus", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeUserStatus", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = FunctionParameters["Bitrix24_UserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("fire", Истина); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "ChangeUserStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "ChangeUserStatus"); + +EndProcedure + +Procedure Bitrix24_GetUser(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + UserID = FunctionParameters["Bitrix24_HookUserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUser", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUser", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = FunctionParameters["Bitrix24_UserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUser"); + +EndProcedure + +Procedure Bitrix24_FindUsers(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + FilterStructure = New Structure; + FilterStructure.Insert("NAME" , "Vitaly"); + FilterStructure.Insert("LAST_NAME" , "Alpaca"); + FilterStructure.Insert("WORK_POSITION" , "DevOps engineer"); + FilterStructure.Insert("UF_DEPARTMENT_NAME", "Marketing department"); + FilterStructure.Insert("USER_TYPE" , "employee"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("filter", FilterStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "FindUsers", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "FindUsers", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + FilterStructure = New Structure; + FilterStructure.Insert("UF_DEPARTMENT_NAME", "Bitrix"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("filter", FilterStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "FindUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "FindUsers"); + +EndProcedure + +Procedure Bitrix24_StartTimekeeping(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTimekeeping", Options); + + Hour = 3600; + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 1; + Time = OPI_Tools.GetCurrentDate() - Hour; + Report = "Late"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("time", Time); + Options.Insert("report", Report); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StartTimekeeping", Options); + + // END + +EndProcedure + +Procedure Bitrix24_StopTimekeeping(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopTimekeeping", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 1; + Time = OPI_Tools.GetCurrentDate(); + Report = "Time off"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("time", Time); + Options.Insert("report", Report); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "StopTimekeeping", Options); + +EndProcedure + +Procedure Bitrix24_PauseTimekeeping(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTimekeeping", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 1; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "PauseTimekeeping", Options); + + // END + +EndProcedure + +Procedure Bitrix24_GetTimekeepingStatus(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingStatus", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 1; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingStatus", Options); + +EndProcedure + +Procedure Bitrix24_GetTimekeepingSettings(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingSettings", Options); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + UserID = 1; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("userid", UserID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTimekeepingSettings", Options); + + // END + +EndProcedure + +Procedure Bitrix24_GetLeadFilterStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLeadFilterStructure"); + +EndProcedure + +Procedure Bitrix24_GetLeadStructure(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLeadStructure", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLeadStructure"); + +EndProcedure + +Procedure Bitrix24_CreateLead(FunctionParameters) + + EmailsArray = New Array; + EmailsArray.Add(New Structure("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); + EmailsArray.Add(New Structure("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); + + PhonesArray = New Array; + PhonesArray.Add(New Structure("VALUE,VALUE_TYPE", "88005553535", "WORK")); + + FieldsStructure = New Structure; + FieldsStructure.Insert("ADDRESS" , "Pushkin st., b. 10"); + FieldsStructure.Insert("ADDRESS_COUNTRY", "Russia"); + FieldsStructure.Insert("EMAIL" , EmailsArray); + FieldsStructure.Insert("NAME" , "John"); + FieldsStructure.Insert("LAST_NAME" , "Doe"); + FieldsStructure.Insert("PHONE" , PhonesArray); + FieldsStructure.Insert("TITLE" , "MegaClient"); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", FieldsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateLead", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateLead", "Hook", FunctionParameters); // SKIP + + FieldsStructure.Insert("NAME" , "Ivan"); + FieldsStructure.Insert("LAST_NAME", "Ivanov"); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", FieldsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateLead", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateLead", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateLead(FunctionParameters) + + FieldsStructure = New Structure; + FieldsStructure.Insert("ADDRESS" , "Lermontov st., b. 20"); + FieldsStructure.Insert("ADDRESS_COUNTRY", "Belarus"); + FieldsStructure.Insert("TITLE" , "SuperClient"); + + URL = FunctionParameters["Bitrix24_URL"]; + LeadID = FunctionParameters["Bitrix24_HookLeadID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("lead", LeadID); + Options.Insert("fields", FieldsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateLead", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateLead", "Hook"); // SKIP + + FieldsStructure.Insert("NAME" , "Evgeniy"); + FieldsStructure.Insert("LAST_NAME", "Evgeniev"); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + LeadID = FunctionParameters["Bitrix24_LeadID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("lead", LeadID); + Options.Insert("fields", FieldsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateLead", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateLead"); + +EndProcedure + +Procedure Bitrix24_DeleteLead(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + LeadID = FunctionParameters["Bitrix24_HookLeadID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("lead", LeadID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteLead", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteLead", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + LeadID = FunctionParameters["Bitrix24_LeadID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("lead", LeadID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteLead", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteLead"); + +EndProcedure + +Procedure Bitrix24_GetLead(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + LeadID = FunctionParameters["Bitrix24_HookLeadID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("lead", LeadID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLead", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLead", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + LeadID = FunctionParameters["Bitrix24_LeadID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("lead", LeadID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLead", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLead"); + +EndProcedure + +Procedure Bitrix24_GetLeadsList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadsList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLeadsList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Filter = New Structure; + Filter.Insert("TITLE" , "MegaClient"); + Filter.Insert("HAS_EMAIL", "Y"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("filter", Filter); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetLeadsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetLeadsList"); + +EndProcedure + +Procedure Bitrix24_GetDealsFilterStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDealsFilterStructure"); + +EndProcedure + +Procedure Bitrix24_GetDealStructure(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDealStructure", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDealStructure"); + +EndProcedure + +Procedure Bitrix24_CreateDeal(FunctionParameters) + + FieldsStructure = New Structure; + FieldsStructure.Insert("TITLE" , "Planned sale"); + FieldsStructure.Insert("TYPE_ID" , "GOODS"); + FieldsStructure.Insert("STAGE_ID" , "NEW"); + FieldsStructure.Insert("COMPANY_ID" , 1); + FieldsStructure.Insert("CONTACT_ID" , 3); + FieldsStructure.Insert("OPENED" , "Y"); + FieldsStructure.Insert("ASSIGNED_BY_ID", 1); + FieldsStructure.Insert("PROBABILITY" , 30); + FieldsStructure.Insert("CURRENCY_ID" , "USD"); + FieldsStructure.Insert("OPPORTUNITY" , 5000); + FieldsStructure.Insert("CATEGORY_ID" , 5); + FieldsStructure.Insert("BEGINDATE" , "2024-01-01"); + FieldsStructure.Insert("CLOSEDATE" , "2030-01-01"); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", FieldsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDeal", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateDeal", "Hook", FunctionParameters); // SKIP + + FieldsStructure.Insert("TITLE" , "Another deal"); + FieldsStructure.Insert("CLOSEDATE", "2031-01-01"); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", FieldsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateDeal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateDeal", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateDeal(FunctionParameters) + + FieldsStructure = New Structure; + FieldsStructure.Insert("TITLE" , "Sale in RUB"); + FieldsStructure.Insert("CURRENCY_ID", "RUB"); + FieldsStructure.Insert("OPPORTUNITY", 50000); + + URL = FunctionParameters["Bitrix24_URL"]; + DealID = FunctionParameters["Bitrix24_HookDealID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("deal", DealID); + Options.Insert("fields", FieldsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDeal", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateDeal", "Hook"); // SKIP + + FieldsStructure.Insert("TITLE" , "Future deal in RUB"); + FieldsStructure.Insert("BEGINDATE", "2025-01-01"); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + DealID = FunctionParameters["Bitrix24_DealID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("deal", DealID); + Options.Insert("fields", FieldsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateDeal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateDeal"); + +EndProcedure + +Procedure Bitrix24_GetDeal(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + DealID = FunctionParameters["Bitrix24_HookDealID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("deal", DealID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDeal", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDeal", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + DealID = FunctionParameters["Bitrix24_HookDealID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("deal", DealID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDeal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDeal"); + +EndProcedure + +Procedure Bitrix24_DeleteDeal(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + DealID = FunctionParameters["Bitrix24_HookDealID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("deal", DealID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDeal", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteDeal", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + DealID = FunctionParameters["Bitrix24_DealID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("deal", DealID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteDeal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteDeal"); + +EndProcedure + +Procedure Bitrix24_GetDealsList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealsList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDealsList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Filter = New Structure; + Filter.Insert("TITLE" , "Sale in RUB"); + Filter.Insert("CURRENCY_ID", "RUB"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("filter", Filter); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetDealsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetDealsList"); + +EndProcedure + +Procedure Bitrix24_GetTasksFilterStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetTasksFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetTasksFilterStructure"); + +EndProcedure + +Procedure Bitrix24_GetCommentStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCommentStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCommentStructure"); + +EndProcedure + +Procedure Bitrix24_GetChatStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetChatStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetChatStructure"); + +EndProcedure + +Procedure Bitrix24_GetPictureBlock(FunctionParameters) + + Name = "Image"; + URL = FunctionParameters["Picture"]; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetPictureBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetPictureBlock"); + +EndProcedure + +Procedure Bitrix24_GetFileBlock(FunctionParameters) + + Name = "Image"; + URL = FunctionParameters["Document"]; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetFileBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetFileBlock"); + +EndProcedure + +Procedure Bitrix24_GetUserFilterStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserFilterStructure"); + +EndProcedure + +Procedure Bitrix24_CreateCalendar(FunctionParameters) + + UserID = 1; + + CalendarsStructure = New Structure; + CalendarsStructure.Insert("type" , "user"); + CalendarsStructure.Insert("ownerId" , UserID); + CalendarsStructure.Insert("name" , "new calendar"); + CalendarsStructure.Insert("description", "My new calendar"); + CalendarsStructure.Insert("color" , "#FFFFFF"); + CalendarsStructure.Insert("text_color" , "#000000"); + + ExportStructure = New Structure; + ExportStructure.Insert("ALLOW", "True"); + ExportStructure.Insert("SET" , "all"); + + CalendarsStructure.Insert("export", ExportStructure); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", CalendarsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendar", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateCalendar", "Hook", FunctionParameters); // SKIP + + CalendarsStructure.Insert("name" , "Another calendar"); + CalendarsStructure.Insert("description", "My other new calendar"); + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", CalendarsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateCalendar", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateCalendar(FunctionParameters) + + UserID = 1; + + CalendarsStructure = New Structure; + CalendarsStructure.Insert("type" , "user"); + CalendarsStructure.Insert("ownerId" , UserID); + CalendarsStructure.Insert("name" , "New calendar name"); + CalendarsStructure.Insert("description", "This calendar has been changed"); + + URL = FunctionParameters["Bitrix24_URL"]; + CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("calendar", CalendarID); + Options.Insert("fields", CalendarsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendar", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateCalendar", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CalendarID = FunctionParameters["Bitrix24_CalendarID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("calendar", CalendarID); + Options.Insert("fields", CalendarsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateCalendar"); + +EndProcedure + +Procedure Bitrix24_DeleteCalendar(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; + OwnerID = 1; + Type = "user"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("calendar", CalendarID); + Options.Insert("owner", OwnerID); + Options.Insert("type", Type); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendar", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteCalendar", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CalendarID = FunctionParameters["Bitrix24_CalendarID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("calendar", CalendarID); + Options.Insert("owner", OwnerID); + Options.Insert("type", Type); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteCalendar"); + +EndProcedure + +Procedure Bitrix24_GetCalendarStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarStructure", "Clear"); + +EndProcedure + +Procedure Bitrix24_GetCalendarList(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + OwnerID = 1; + Type = "user"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("owner", OwnerID); + Options.Insert("type", Type); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarList", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarList", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("owner", OwnerID); + Options.Insert("type", Type); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarList"); + +EndProcedure + +Procedure Bitrix24_GetCalendarSettingsStructure(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarSettingsStructure", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarSettingsStructure"); + +EndProcedure + +Procedure Bitrix24_GetCalednarCustomSettingsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalednarCustomSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalednarCustomSettingsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalednarCustomSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalednarCustomSettingsStructure", "Clear"); + +EndProcedure + +Procedure Bitrix24_GetCustomCalendarSettings(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomCalendarSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCustomCalendarSettings", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCustomCalendarSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCustomCalendarSettings"); + +EndProcedure + +Procedure Bitrix24_SetCustomCalendarSettings(FunctionParameters) + + CalendarsStructure = New Structure; + CalendarsStructure.Insert("view" , "month"); + CalendarsStructure.Insert("showDeclined" , "Y"); + CalendarsStructure.Insert("collapseOffHours" , "N"); + CalendarsStructure.Insert("showCompletedTasks", "N"); + + URL = FunctionParameters["Bitrix24_URL"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("settings", CalendarsStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetCustomCalendarSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetCustomCalendarSettings", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("settings", CalendarsStructure); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetCustomCalendarSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetCustomCalendarSettings"); + +EndProcedure + +Procedure Bitrix24_GetUserBusy(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; + + User = 1; + + Week = 604800; + CurrentDate = OPI_Tools.GetCurrentDate(); + + StartDate = CurrentDate; + EndDate = CurrentDate + Week; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("users", User); + Options.Insert("from", StartDate); + Options.Insert("to", EndDate); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserBusy", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserBusy", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CalendarID = FunctionParameters["Bitrix24_CalendarID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("users", User); + Options.Insert("from", StartDate); + Options.Insert("to", EndDate); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserBusy", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserBusy"); + +EndProcedure + +Procedure Bitrix24_CreateCalendarEvent(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + CalendarID = FunctionParameters["Bitrix24_HookCalendarID"]; + + Tomorrow = OPI_Tools.GetCurrentDate() + 86400; + Hour = 3600; + + EventStucture = New Structure; + + EventStucture.Insert("type" , "user"); + EventStucture.Insert("ownerId" , 1); + EventStucture.Insert("from" , XMLString(Tomorrow)); + EventStucture.Insert("to" , XMLString(Tomorrow + Hour)); + EventStucture.Insert("section" , CalendarID); + EventStucture.Insert("name" , "New event"); + EventStucture.Insert("skip_time" , "N"); + EventStucture.Insert("timezone_from", "Europe/Minsk"); + EventStucture.Insert("timezone_to" , "Europe/Minsk"); + EventStucture.Insert("description" , "Event description"); + EventStucture.Insert("color" , "%23000000>"); + EventStucture.Insert("text_color" , "%23FFFFFF"); + EventStucture.Insert("accessibility", "quest"); + EventStucture.Insert("importance" , "normal"); + EventStucture.Insert("private_event", "Y"); + + RepeatabilityStructure = New Structure; + RepeatabilityStructure.Insert("FREQ" , "DAILY"); + RepeatabilityStructure.Insert("COUNT" , 3); + RepeatabilityStructure.Insert("INTERVAL", 10); + + DaysArray = New Array; + DaysArray.Add("SA"); + DaysArray.Add("MO"); + + RepeatabilityStructure.Insert("BYDAY", DaysArray); + RepeatabilityStructure.Insert("UNTIL", XMLString(Tomorrow + Hour * 24 * 10)); + + EventStucture.Insert("rrule" , RepeatabilityStructure); + EventStucture.Insert("is_meeting", "Y"); + EventStucture.Insert("location" , "Office"); + + RemindersArray = New Array; + + ReminderStructure = New Structure; + ReminderStructure.Insert("type" , "day"); + ReminderStructure.Insert("count", 1); + + RemindersArray.Add(ReminderStructure); + + EventStucture.Insert("remind" , RemindersArray); + EventStucture.Insert("attendees", StrSplit("1,10", ",")); + EventStucture.Insert("host" , 1); + + MeetingStructure = New Structure; + MeetingStructure.Insert("notify" , "Y"); + MeetingStructure.Insert("reinvite" , "Y"); + MeetingStructure.Insert("allow_invite", "N"); + MeetingStructure.Insert("hide_guests" , "N"); + + EventStucture.Insert("meeting", MeetingStructure); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", EventStucture); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendarEvent", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateCalendarEvent", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + CalendarID = FunctionParameters["Bitrix24_CalendarID"]; + + EventStucture.Insert("section", CalendarID); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("fields", EventStucture); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "CreateCalendarEvent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "CreateCalendarEvent", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_UpdateCalendarEvent(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + EventID = FunctionParameters["Bitrix24_HookCEventID"]; + + EventStucture = New Structure; + + EventStucture.Insert("ownerId" , 1); + EventStucture.Insert("type" , "user"); + EventStucture.Insert("name" , "Modified event"); + EventStucture.Insert("description" , "New event description"); + EventStucture.Insert("importance" , "low"); + EventStucture.Insert("private_event", "Y"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("fields", EventStucture); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendarEvent", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateCalendarEvent", "Hook", FunctionParameters); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + EventID = FunctionParameters["Bitrix24_CEventID"]; + CalendarID = FunctionParameters["Bitrix24_CalendarID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("fields", EventStucture); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "UpdateCalendarEvent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "UpdateCalendarEvent", , FunctionParameters); + +EndProcedure + +Procedure Bitrix24_DeleteCalendarEvent(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + EventID = FunctionParameters["Bitrix24_HookCEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendarEvent", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteCalendarEvent", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + EventID = FunctionParameters["Bitrix24_CEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "DeleteCalendarEvent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "DeleteCalendarEvent"); + +EndProcedure + +Procedure Bitrix24_GetCalendarEvent(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + EventID = FunctionParameters["Bitrix24_HookCEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvent", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEvent", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + EventID = FunctionParameters["Bitrix24_CEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEvent"); + +EndProcedure + +Procedure Bitrix24_GetCalendarEvents(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + OwnerID = 1; + Type = "user"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("owner", OwnerID); + Options.Insert("type", Type); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvents", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEvents", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + EventID = FunctionParameters["Bitrix24_CEventID"]; + CalendarID1 = FunctionParameters["Bitrix24_HookCalendarID"]; + CalendarID2 = FunctionParameters["Bitrix24_CalendarID"]; + + Tomorrow = OPI_Tools.GetCurrentDate() + 86400; + NextDay = Tomorrow + 86400; + + ArrayOfCalendars = New Array; + ArrayOfCalendars.Add(CalendarID1); + ArrayOfCalendars.Add(CalendarID2); + + Filter = New Structure; + Filter.Insert("from" , Tomorrow); + Filter.Insert("to" , NextDay); + Filter.Insert("section", ArrayOfCalendars); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("owner", OwnerID); + Options.Insert("type", Type); + Options.Insert("filter", Filter); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEvents", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEvents"); + +EndProcedure + +Procedure Bitrix24_SetUserParticipationStatus(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + EventID = FunctionParameters["Bitrix24_HookCEventID"]; + Status = "Y"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("status", Status); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserParticipationStatus", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetUserParticipationStatus", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + EventID = FunctionParameters["Bitrix24_CEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("status", Status); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "SetUserParticipationStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "SetUserParticipationStatus"); + +EndProcedure + +Procedure Bitrix24_GetUserParticipationStatus(FunctionParameters) + + URL = FunctionParameters["Bitrix24_URL"]; + EventID = FunctionParameters["Bitrix24_HookCEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserParticipationStatus", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserParticipationStatus", "Hook"); // SKIP + + URL = FunctionParameters["Bitrix24_Domain"]; + Token = FunctionParameters["Bitrix24_Token"]; + EventID = FunctionParameters["Bitrix24_CEventID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("event", EventID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetUserParticipationStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetUserParticipationStatus"); + +EndProcedure + +Procedure Bitrix24_GetCalendarEventsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEventsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEventsStructure", "Clear"); + +EndProcedure + +Procedure Bitrix24_GetCalendarEventsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEventsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("bitrix24", "GetCalendarEventsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Bitrix24", "GetCalendarEventsFilterStructure", "Clear"); + +EndProcedure + +#EndRegion // Bitrix24 + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Б24_РаботаСТокеном() Export + B24_TokenManagement(); +EndProcedure + +Procedure Б24_СерверноеВремя() Export + B24_ServerTime(); +EndProcedure + +Procedure Б24_РаботаСНовостями() Export + B24_PostsManagement(); +EndProcedure + +Procedure Б24_РаботаСЗадачами() Export + B24_TaskManagement(); +EndProcedure + +Procedure Б24_РаботаСДиском() Export + B24_WorkingWithDrive(); +EndProcedure + +Procedure Б24_РаботаСКомментариями() Export + B24_CommentsManagement(); +EndProcedure + +Procedure Б24_УчетРабочегоВремени() Export + B24_Timekeeping(); +EndProcedure + +Procedure Б24_Канбан() Export + B24_Kanban(); +EndProcedure + +Procedure Б24_РаботаСЧатами() Export + B24_ChatManagement(); +EndProcedure + +Procedure Б24_РаботаСУведомлениями() Export + B24_NotificationsManagement(); +EndProcedure + +Procedure Б24_РаботаСПолямиЗадач() Export + B24_TasksFieldsManagement(); +EndProcedure + +Procedure Б24_УправлениеПодразделениями() Export + B24_DepartmentsManagement(); +EndProcedure + +Procedure Б24_УправлениеПользователями() Export + B2_UsersManagement(); +EndProcedure + +Procedure Б24_РаботаСЛидами() Export + B24_LeadsManagement(); +EndProcedure + +Procedure Б24_РаботаСоСделками() Export + B24_DealsManagement(); +EndProcedure + +Procedure Б24_РаботаСКалендарями() Export + B24_CalendarsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_CDEK.os b/src/en/OInt/tests/Modules/OPItc_CDEK.os new file mode 100644 index 0000000000..f8808ae49d --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_CDEK.os @@ -0,0 +1,919 @@ +// OneScript: ./OInt/tests/Modules/OPItc_CDEK.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("CDEK"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("CDEK"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region CDEK + +Procedure CdekAPI_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("CDEK_Account" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("CDEK_Password", TestParameters); + + CDEK_GetToken(TestParameters); + CDEK_GetCashboxChecksByDate(TestParameters); + CDEK_GetDeliveryCashRegistry(TestParameters); + CDEK_GetDeliveryCashTransfers(TestParameters); + CDEK_GetOfficeFilterDescription(TestParameters); + CDEK_GetOfficeList(TestParameters); + CDEK_GetRegionsList(TestParameters); + +EndProcedure + +Procedure CDEKAPI_OrdersManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("CDEK_Token", TestParameters); + + CDEK_GetOrderDescription(TestParameters); + CDEK_CreateOrder(TestParameters); + + OPI_Tools.Pause(25); + + CDEK_GetOrder(TestParameters); + CDEK_GetOrderByNumber(TestParameters); + CDEK_CreateReceipt(TestParameters); + CDEK_CreateBarcode(TestParameters); + CDEK_CreatePrealert(TestParameters); + + OPI_Tools.Pause(25); + + CDEK_GetReceipt(TestParameters); + CDEK_GetBarcode(TestParameters); + CDEK_GetPrealert(TestParameters); + CDEK_GetPassportDataStatus(TestParameters); + CDEK_GetCashboxCheck(TestParameters); + CDEK_UpdateOrder(TestParameters); + CDEK_CreateCustomerRefund(TestParameters); + CDEK_CreateRefusal(TestParameters); + CDEK_DeleteOrder(TestParameters); + +EndProcedure + +Procedure CdekAPI_CourierInvitationsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("CDEK_Token", TestParameters); + + CDEK_CreateOrder(TestParameters); + + OPI_Tools.Pause(25); + + CDEK_GetCourierInvitationsDescription(TestParameters); + CDEK_CreateCourierInvitation(TestParameters); + CDEK_GetCourierInvitation(TestParameters); + CDEK_DeleteCourierInvitation(TestParameters); + CDEK_GetAppointmentDescription(TestParameters); + + CDEK_GetAvailableDeliveryIntervals(TestParameters); + CDEK_RegisterDeliveryAppointment(TestParameters); + + OPI_Tools.Pause(25); + + CDEK_GetDeliveryAppointment(TestParameters); + CDEK_DeleteOrder(TestParameters); + +EndProcedure + +#EndRegion // CDEK + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region CDEK + +Procedure CDEK_GetToken(FunctionParameters) + + Account = FunctionParameters["CDEK_Account"]; + Password = FunctionParameters["CDEK_Password"]; + + Options = New Structure; + Options.Insert("account", Account); + Options.Insert("pass", Password); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetToken", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetOrderDescription(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrderDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOrderDescription"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrderDescription", Options); + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOrderDescription", "Clear"); + +EndProcedure + +Procedure CDEK_CreateOrder(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + + OrderDescription = New Structure; + + SendLocation = New Structure; + SendLocation.Insert("code" , "44"); + SendLocation.Insert("city" , "Moscow"); + SendLocation.Insert("address", "Ave. Leningradsky, 4"); + + DestLocation = New Structure; + DestLocation.Insert("code" , "270"); + DestLocation.Insert("city" , "Novosibirsk"); + DestLocation.Insert("address", "st. Bluchera, 32"); + + Recipient = New Structure; + + Phones = New Array; + Phones.Add(New Structure("number", "+79134637228")); + + Recipient.Insert("phones", Phones); + Recipient.Insert("name" , "Ivaniv Ivan"); + + Sender = New Structure("name", "Petrov Petr"); + + Services = New Array; + + Service = New Structure; + Service.Insert("code" , "SECURE_PACKAGE_A2"); + Service.Insert("parameter", 10); + + Services.Add(Service); + + Packages = New Array; + + Package = New Structure; + + Items = New Array; + + Item = New Structure; + + Payment = New Structure; + Payment.Insert("value", 3000); + + Item.Insert("payment" , Payment); + Item.Insert("ware_key", "00055"); + Item.Insert("name" , "Product"); + Item.Insert("cost" , 300); + Item.Insert("amount" , 2); + Item.Insert("weight" , 700); + Item.Insert("url" , "www.item.ru"); + + Items.Add(Item); + + Package.Insert("items" , Items); + Package.Insert("number" , "bar-001"); + Package.Insert("comment", "Packaging"); + Package.Insert("height" , 10); + Package.Insert("length" , 10); + Package.Insert("weight" , "4000"); + Package.Insert("width" , 10); + + Packages.Add(Package); + + OrderDescription.Insert("from_location", SendLocation); + OrderDescription.Insert("to_location" , DestLocation); + OrderDescription.Insert("packages" , Packages); + OrderDescription.Insert("recipient" , Recipient); + OrderDescription.Insert("sender" , Sender); + OrderDescription.Insert("services" , Services); + + OrderDescription.Insert("number" , String(New UUID)); + OrderDescription.Insert("comment" , "New order"); + OrderDescription.Insert("tariff_code", 139); + + OrderDescription.Insert("delivery_recipient_cost" , New Structure("value" , 50)); + OrderDescription.Insert("delivery_recipient_cost_adv", New Structure("sum,threshold", 3000, 200)); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("order", OrderDescription); + Options.Insert("ostore", Истина); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateOrder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreateOrder", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetOrder(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOrder", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetOrderByNumber(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + + OrderNumber = FunctionParameters["CDEK_OrderIMN"]; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("number", OrderNumber); + Options.Insert("internal", Истина); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOrderByNumber", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOrderByNumber"); + +EndProcedure + +Procedure CDEK_UpdateOrder(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + OrderDescription = New Structure("comment", "NewComment"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("order", OrderDescription); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "UpdateOrder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "UpdateOrder"); + +EndProcedure + +Procedure CDEK_DeleteOrder(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "DeleteOrder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "DeleteOrder"); + +EndProcedure + +Procedure CDEK_CreateCustomerRefund(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + Tariff = 139; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("tariff", Tariff); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateCustomerRefund", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreateCustomerRefund"); + +EndProcedure + +Procedure CDEK_CreateRefusal(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateRefusal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreateRefusal"); + +EndProcedure + +Procedure CDEK_GetCourierInvitationsDescription(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCourierInvitationsDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetCourierInvitationsDescription"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCourierInvitationsDescription", Options); + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetCourierInvitationsDescription", "Clear"); + +EndProcedure + +Procedure CDEK_CreateCourierInvitation(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + CurrentDate = OPI_Tools.GetCurrentDate(); + + InvitationDescription = New Structure; + InvitationDescription.Insert("intake_date" , Format(CurrentDate + 60 * 60 * 24, "DF=yyyy-MM-dd")); + InvitationDescription.Insert("intake_time_from", "10:00"); + InvitationDescription.Insert("intake_time_to" , "17:00"); + InvitationDescription.Insert("name" , "Consolidated cargo"); + InvitationDescription.Insert("weight" , 1000); + InvitationDescription.Insert("length" , 10); + InvitationDescription.Insert("width" , 10); + InvitationDescription.Insert("height" , 10); + InvitationDescription.Insert("comment" , "Comment to courier"); + InvitationDescription.Insert("need_call" , False); + + Sender = New Structure; + Sender.Insert("company", "Company"); + Sender.Insert("name" , "Ivaniv Ivan"); + + Phones = New Array; + Phone = New Structure("number", "+79589441654"); + Phones.Add(Phone); + + Sender.Insert("phones", Phones); + + InvitationDescription.Insert("sender", Sender); + + ShippingPoint = New Structure; + ShippingPoint.Insert("code" , "44"); + ShippingPoint.Insert("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + ShippingPoint.Insert("postal_code" , "109004"); + ShippingPoint.Insert("longitude" , 37.6204); + ShippingPoint.Insert("latitude" , 55.754); + ShippingPoint.Insert("country_code", "RU"); + ShippingPoint.Insert("region" , "Moscow"); + ShippingPoint.Insert("sub_region" , "Moscow"); + ShippingPoint.Insert("city" , "Moscow"); + ShippingPoint.Insert("kladr_code" , "7700000000000"); + ShippingPoint.Insert("address" , "st. Bluchera, 32"); + + InvitationDescription.Insert("from_location", ShippingPoint); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("intake", InvitationDescription); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateCourierInvitation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreateCourierInvitation", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetCourierInvitation(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_IntakeUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCourierInvitation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetCourierInvitation"); + +EndProcedure + +Procedure CDEK_DeleteCourierInvitation(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_IntakeUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "DeleteCourierInvitation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "DeleteCourierInvitation"); + +EndProcedure + +Procedure CDEK_CreateReceipt(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + Type = "tpl_russia"; + Copies = 1; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuids", UUID); + Options.Insert("type", Type); + Options.Insert("count", Copies); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateReceipt", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreateReceipt", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetReceipt(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_PrintUUID"]; + + Result = OPI_CDEK.GetReceipt(Token, UUID, , True); // Server response with a URL + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetReceipt"); + +EndProcedure + +Procedure CDEK_CreateBarcode(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + Format = "A5"; + Copies = 1; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuids", UUID); + Options.Insert("count", Copies); + Options.Insert("format", Format); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreateBarcode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreateBarcode", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetBarcode(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_BarcodeUUID"]; + + Result = OPI_CDEK.GetBarcode(Token, UUID, , True); // Server response with a URL + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetBarcode"); + +EndProcedure + +Procedure CDEK_GetAvailableDeliveryIntervals(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetAvailableDeliveryIntervals", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetAvailableDeliveryIntervals"); + +EndProcedure + +Procedure CDEK_GetAppointmentDescription(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetAppointmentDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetAppointmentDescription"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetAppointmentDescription", Options); + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetAppointmentDescription", "Clear"); + +EndProcedure + +Procedure CDEK_RegisterDeliveryAppointment(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + OrderUUID = FunctionParameters["CDEK_OrderUUID"]; + + Day = 60 * 60 * 24; + CurrentDate = BegOfDay(OPI_Tools.GetCurrentDate()); + DeliveryDate = CurrentDate + Day * 14; + + While DayOfWeek(DeliveryDate) > 5 Do + DeliveryDate = DeliveryDate + Day; + EndDo; + + Appointment = New Structure; + + Appointment.Insert("cdek_number", "1106207236"); + Appointment.Insert("order_uuid" , OrderUUID); + Appointment.Insert("date" , Format(DeliveryDate, "DF=yyyy-MM-dd")); + Appointment.Insert("time_from" , "10:00"); + Appointment.Insert("time_to" , "17:00"); + Appointment.Insert("comment" , "Group office"); + + DeliveryLocation = New Structure; + DeliveryLocation.Insert("code" , "270"); + DeliveryLocation.Insert("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + DeliveryLocation.Insert("postal_code" , "109004"); + DeliveryLocation.Insert("longitude" , 37.6204); + DeliveryLocation.Insert("latitude" , 55.754); + DeliveryLocation.Insert("country_code", "RU"); + DeliveryLocation.Insert("region" , "Novosibirsk"); + DeliveryLocation.Insert("sub_region" , "Novosibirsk"); + DeliveryLocation.Insert("city" , "Novosibirsk"); + DeliveryLocation.Insert("kladr_code" , "7700000000000"); + DeliveryLocation.Insert("address" , "st. Bluchera, 33"); + + Appointment.Insert("to_location", DeliveryLocation); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("appt", Appointment); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "RegisterDeliveryAppointment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "RegisterDeliveryAppointment", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetDeliveryAppointment(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_ApptUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetDeliveryAppointment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetDeliveryAppointment"); + +EndProcedure + +Procedure CDEK_CreatePrealert(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + Point = "NSK27"; + TransferDate = OPI_Tools.GetCurrentDate() + 60 * 60 * 24; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuids", UUID); + Options.Insert("date", TransferDate); + Options.Insert("point", Point); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "CreatePrealert", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "CreatePrealert", , FunctionParameters); + +EndProcedure + +Procedure CDEK_GetPrealert(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_PrealertUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetPrealert", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetPrealert"); + +EndProcedure + +Procedure CDEK_GetPassportDataStatus(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetPassportDataStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetPassportDataStatus"); + +EndProcedure + +Procedure CDEK_GetCashboxCheck(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + UUID = FunctionParameters["CDEK_OrderUUID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("uuid", UUID); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCashboxCheck", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetCashboxCheck"); + +EndProcedure + +Procedure CDEK_GetCashboxChecksByDate(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + ReceivingDate = OPI_Tools.GetCurrentDate(); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("date", ReceivingDate); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetCashboxChecksByDate", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetCashboxChecksByDate"); + +EndProcedure + +Procedure CDEK_GetDeliveryCashRegistry(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + ReceivingDate = OPI_Tools.GetCurrentDate(); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("date", ReceivingDate); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetDeliveryCashRegistry", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetDeliveryCashRegistry"); + +EndProcedure + +Procedure CDEK_GetDeliveryCashTransfers(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + ReceivingDate = OPI_Tools.GetCurrentDate(); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("date", ReceivingDate); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetDeliveryCashTransfers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetDeliveryCashTransfers"); + +EndProcedure + +Procedure CDEK_GetOfficeFilterDescription(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOfficeFilterDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOfficeFilterDescription"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOfficeFilterDescription", Options); + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOfficeFilterDescription", "Clear"); + +EndProcedure + +Procedure CDEK_GetOfficeList(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + Filter = New Structure; + Filter.Insert("weight_max" , 50); + Filter.Insert("city_code" , 270); + Filter.Insert("allowed_cod", True); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("filter", Filter); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetOfficeList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetOfficeList"); + +EndProcedure + +Procedure CDEK_GetRegionsList(FunctionParameters) + + Token = FunctionParameters["CDEK_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("testapi", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("cdek", "GetRegionsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "CDEK", "GetRegionsList"); + +EndProcedure + +#EndRegion // CDEK + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure СдэкАПИ_ОбщиеМетоды() Export + CdekAPI_CommonMethods(); +EndProcedure + +Procedure СдэкАПИ_РаботаСЗаказами() Export + CDEKAPI_OrdersManagement(); +EndProcedure + +Procedure СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера() Export + CdekAPI_CourierInvitationsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_ClickHouse.os b/src/en/OInt/tests/Modules/OPItc_ClickHouse.os new file mode 100644 index 0000000000..8f72b309e7 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_ClickHouse.os @@ -0,0 +1,1342 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ClickHouse.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("ClickHouse"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("ClickHouse"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region ClickHouse + +Procedure CH_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_PortGRPC" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters); + + ClickHouse_ExecuteRequest(TestParameters); + ClickHouse_GetHTTPConnectionSettings(TestParameters); + ClickHouse_GetGRPCConnectionSettings(TestParameters); + ClickHouse_GetRequestSettings(TestParameters); + ClickHouse_GetExternalTableStructure(TestParameters); + ClickHouse_GetSessionSettings(TestParameters); + +EndProcedure + +Procedure CH_GRPC() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_PortGRPC" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters); + + ClickHouse_CreateGRPCConnection(TestParameters); + ClickHouse_GetTlsSettings(TestParameters); + + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), TestParameters["ClickHouse_PortGRPC"]); + + Login = TestParameters["ClickHouse_User"]; + Password = TestParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + ConnectionSettings = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + TableCreationText = "CREATE TABLE IF NOT EXISTS events_stream_test ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_stream_test"); + Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); + + Request = OPI_ClickHouse.GetRequestSettings(TableCreationText); + Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); + + ClickHouse_OpenGRPCStream(TestParameters); + ClickHouse_SendGRPCMessage(TestParameters); + ClickHouse_SendGRPCData(TestParameters); + ClickHouse_GetGRPCMessage(TestParameters); + ClickHouse_CompleteGRPCSending(TestParameters); + ClickHouse_CloseGRPCStream(TestParameters); + ClickHouse_ProcessGRPCSending(TestParameters); + ClickHouse_ProcessGRPCReceiving(TestParameters); + +EndProcedure + +#EndRegion // ClickHouse + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region ClickHouse + +Procedure ClickHouse_ExecuteRequest(FunctionParameters) + + // Connection settings + + URL = "http://localhost:8123"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_Port"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + Connection = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); + + // Request (table creation) + + QueryText = "CREATE TABLE IF NOT EXISTS events ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events"); // SKIP + Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP + + Options = New Structure; + Options.Insert("query", QueryText); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "TableCreation"); // SKIP + + // Request (data insertion) + + QueryText = "INSERT INTO events FORMAT JSON"; + + DataFormat = "JSON"; + DataArray = New Array; + + CurrentDate = Date("20260101100000"); + + Record1 = New Structure; + Record1.Insert("id" , 1); + Record1.Insert("timestamp" , CurrentDate); + Record1.Insert("user_id" , 100); + Record1.Insert("event_type", "click"); + Record1.Insert("payload" , "{}"); + + Record2 = New Structure; + Record2.Insert("id" , 2); + Record2.Insert("timestamp" , CurrentDate); + Record2.Insert("user_id" , 200); + Record2.Insert("event_type", "hover"); + Record2.Insert("payload" , "{}"); + + DataArray.Add(Record1); + DataArray.Add(Record2); + + Meta = New Array; + Meta.Add(New Structure("name,type", "id" , "UInt64")); + Meta.Add(New Structure("name,type", "timestamp" , "DateTime")); + Meta.Add(New Structure("name,type", "user_id" , "UInt32")); + Meta.Add(New Structure("name,type", "event_type", "String")); + Meta.Add(New Structure("name,type", "payload" , "String")); + + Data = New Structure("meta,data", Meta, DataArray); + Database = "default"; + RequestID = String(New UUID()); + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("db", Database); + Options.Insert("id", RequestID); + Options.Insert("data", Data); + Options.Insert("format", DataFormat); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "DataInsert"); // SKIP + + // Request with external table + + TableName = "ext_users"; + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "UInt64"); + ColoumnsStruct.Insert("name", "String"); + + Tab = Chars.Tab; + TableData = "1" + Tab + "John + |2" + Tab + "Jane + |3" + Tab + "Bob"; + + Options = New Structure; + Options.Insert("name", TableName); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("data", TableData); + Options.Insert("format", "TSV"); + + ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); + + ExternalTablesArray = New Array; + ExternalTablesArray.Add(ExternalTable); + + QueryText = "SELECT * FROM ext_users WHERE id > 1"; + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("format", "JSON"); + Options.Insert("ext", ExternalTablesArray); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "ExternalTable"); // SKIP + + // Selection + + SelectionText = "SELECT * FROM events"; + + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest"); // SKIP + + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "CSV"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "CSVSelection"); + + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "TSV"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "TSVSelection"); + + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "JSONCompact"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "JSONCompactSelection"); + + QueryText = "SELECT 1 AS result"; + + AdditionalSettings = New Map; + AdditionalSettings.Insert("max_threads", "4"); + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("format", "JSON"); + Options.Insert("settings", AdditionalSettings); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "AdditionalSettings"); + + UUID = String(New UUID()); + Options = New Structure; + Options.Insert("id", UUID); + + Session = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options); + + QueryText = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)"; + + Options = New Structure; + Options.Insert("query", QueryText); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + Options.Insert("session", Session); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "SessionCreation"); + + QueryText = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')"; + + Options = New Structure; + Options.Insert("query", QueryText); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + Options.Insert("session", Session); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest", "SessionInsert"); + + QueryText = "SELECT * FROM temp_session_test"; + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + Options.Insert("session", Session); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ExecuteRequest"); + +EndProcedure + +Procedure ClickHouse_CreateGRPCConnection(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + // Connection creation + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + OPI_TestDataRetrieval.Process(Connection, "ClickHouse", "CreateGRPCConnection", "Openning"); // SKIP + + // Request via open connection (table creation) + + QueryText = "CREATE TABLE IF NOT EXISTS events_grpc ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_grpc"); // SKIP + Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP + + Options = New Structure; + Options.Insert("query", QueryText); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CreateGRPCConnection", "TableCreation"); // SKIP + + // Data insertion + + QueryText = "INSERT INTO events_grpc FORMAT JSON"; + + DataFormat = "JSON"; + DataArray = New Array; + + CurrentDate = OPI_Tools.GetCurrentDate(); + + Record1 = New Structure; + Record1.Insert("id" , 1); + Record1.Insert("timestamp" , CurrentDate); + Record1.Insert("user_id" , 100); + Record1.Insert("event_type", "click"); + Record1.Insert("payload" , "{}"); + + DataArray.Add(Record1); + + Meta = New Array; + Meta.Add(New Structure("name,type", "id" , "UInt64")); + Meta.Add(New Structure("name,type", "timestamp" , "DateTime")); + Meta.Add(New Structure("name,type", "user_id" , "UInt32")); + Meta.Add(New Structure("name,type", "event_type", "String")); + Meta.Add(New Structure("name,type", "payload" , "String")); + + Data = New Structure("meta,data", Meta, DataArray); + RequestID = String(New UUID()); + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("db", "default"); + Options.Insert("id", RequestID); + Options.Insert("data", Data); + Options.Insert("format", DataFormat); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CreateGRPCConnection", "DataInsert"); // SKIP + + // Selection + + SelectionText = "SELECT * FROM events_grpc"; + + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CreateGRPCConnection", "Selection"); // SKIP + + // Request with external table via gRPC + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "UInt64"); + ColoumnsStruct.Insert("name", "String"); + + Tab = Chars.Tab; + TableData = "1" + Tab + "John + |2" + Tab + "Jane"; + + Options = New Structure; + Options.Insert("name", "ext_grpc"); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("data", TableData); + Options.Insert("format", "TSV"); + + ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); + + ExternalTablesArray = New Array; + ExternalTablesArray.Add(ExternalTable); + + QueryText = "SELECT * FROM ext_grpc"; + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("format", "JSON"); + Options.Insert("ext", ExternalTablesArray); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CreateGRPCConnection"); + +EndProcedure + +Procedure ClickHouse_GetHTTPConnectionSettings(FunctionParameters) + + URL = "http://localhost:8123"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_Port"]); // SKIP + + // No authorization + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "NoAuthorization"); // SKIP + + // With basic authorization + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "BasicAuthorization"); // SKIP + + // With JWT authorization + + JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", JWT); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "JWTAuthorization"); // SKIP + + // With additional headers + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("X-Custom-Header", "CustomValue"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetHTTPConnectionSettings"); + +EndProcedure + +Procedure ClickHouse_GetGRPCConnectionSettings(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + // No authorization + + Options = New Structure; + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "NoAuthorization"); // SKIP + + // With basic authorization + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "BasicAuthorization"); // SKIP + + // With JWT authorization + + JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", JWT); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "JWTAuthorization"); // SKIP + + // With metadata + + Meta = New Map; + Meta.Insert("custom-meta", "value"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + Options.Insert("meta", Meta); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "WithMetadata"); // SKIP + + // With TLS settings + + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetGRPCConnectionSettings"); + +EndProcedure + +Procedure ClickHouse_GetRequestSettings(FunctionParameters) + + // Minimal request + + QueryText = "SELECT 1"; + + Options = New Structure; + Options.Insert("query", QueryText); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetRequestSettings", "Minimal"); // SKIP + + // Full request + + RequestID = String(New UUID()); + Data = New Structure("meta,data", New Array, New Array); + Database = "default"; + ResponseFormat = "CSV"; + + AdditionalSettings = New Map; + AdditionalSettings.Insert("max_threads", "4"); + + ColoumnsStruct = New Structure("id,name", "UInt64", "String"); + Options = New Structure; + Options.Insert("name", "ext"); + Options.Insert("cols", ColoumnsStruct); + + ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); + + TableArray = New Array; + TableArray.Add(ExternalTable); + + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("db", Database); + Options.Insert("id", RequestID); + Options.Insert("data", Data); + Options.Insert("format", ResponseFormat); + Options.Insert("ext", TableArray); + Options.Insert("settings", AdditionalSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetRequestSettings"); + +EndProcedure + +Procedure ClickHouse_GetExternalTableStructure(FunctionParameters) + + // Minimal structure + + TableName = "external_data"; + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "UInt64"); + ColoumnsStruct.Insert("name", "String"); + + Options = New Structure; + Options.Insert("name", TableName); + Options.Insert("cols", ColoumnsStruct); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetExternalTableStructure", "Minimal"); // SKIP + + // With TSV data + + TableData = StrTemplate("1%1Test + |2%1Test2", Chars.Tab); + + Options = New Structure; + Options.Insert("name", TableName); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("data", TableData); + Options.Insert("format", "TSV"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetExternalTableStructure"); + +EndProcedure + +Procedure ClickHouse_GetSessionSettings(FunctionParameters) + + SessionID = String(New UUID); + Check = True; + Timeout = 120; + + Options = New Structure; + Options.Insert("id", SessionID); + Options.Insert("check", Check); + Options.Insert("timeout", Timeout); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetSessionSettings"); + +EndProcedure + +Procedure ClickHouse_GetTlsSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "GetTlsSettings"); + +EndProcedure + +Procedure ClickHouse_OpenGRPCStream(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + Result = OPI_ClickHouse.OpenGRPCStream(Connection); // <--- + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + DataFormat = "JSON"; + CurrentDate = Date("20260101100000"); + + Counter = 0; + While Counter < 5 Do + + Record = New Structure; + Record.Insert("id" , Counter + 1); + Record.Insert("timestamp" , CurrentDate); + Record.Insert("user_id" , 100 + Counter); + Record.Insert("event_type" , "stream_test"); + Record.Insert("payload" , "{}"); + + Record = OPI_Tools.JSONString(Record) + Chars.LF; + + Last = Counter = 4; + + If Counter = 0 Then + Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); + CurrentSend = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request, , Not Last); + Else + CurrentSend = OPI_ClickHouse.SendGRPCData(Connection, StreamID, Record, Not Last); + EndIf; + + If Not CurrentSend["result"] Then + + Error = CurrentSend["error"]; + + If Error <> "Timeout" Then + Raise OPI_Tools.JSONString(CurrentSend); + EndIf; + + EndIf; + + Counter = Counter + 1; + + EndDo; + + Completion = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); + FinalMessage = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID); + + OPI_GRPC.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result , "ClickHouse", "OpenGRPCStream"); + OPI_TestDataRetrieval.Process(FinalMessage , "ClickHouse", "OpenGRPCStream", "Final"); + + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + SelectionText = "SELECT * FROM events_stream_test ORDER BY id"; + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + SelectionResult = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options); + + OPI_TestDataRetrieval.Process(SelectionResult, "ClickHouse", "OpenGRPCStream", "Selection"); + + OPI_GRPC.CloseConnection(Connection); + +EndProcedure + +Procedure ClickHouse_SendGRPCMessage(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + Result = OPI_ClickHouse.OpenGRPCStream(Connection); + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + DataFormat = "JSON"; + CurrentDate = Date("20260101100000"); + + Counter = 0; + While Counter < 5 Do + + Record = New Structure; + Record.Insert("id" , Counter + 1); + Record.Insert("timestamp" , CurrentDate); + Record.Insert("user_id" , 100 + Counter); + Record.Insert("event_type" , "stream_test"); + Record.Insert("payload" , "{}"); + + Record = OPI_Tools.JSONString(Record) + Chars.LF; + + Last = Counter = 4; + + If Counter = 0 Then + + Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); + CurrentSend = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request, , Not Last); // <--- + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "SendGRPCMessage"); // SKIP + Else + CurrentSend = OPI_ClickHouse.SendGRPCData(Connection, StreamID, Record, Not Last); + EndIf; + + If Not CurrentSend["result"] Then + + Error = CurrentSend["error"]; + + If Error <> "Timeout" Then + Raise OPI_Tools.JSONString(CurrentSend); + EndIf; + + EndIf; + + Counter = Counter + 1; + + EndDo; + + // END + + Completion = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); + FinalMessage = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID); + + OPI_GRPC.CloseConnection(Connection); + +EndProcedure + +Procedure ClickHouse_SendGRPCData(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + Result = OPI_ClickHouse.OpenGRPCStream(Connection); + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + DataFormat = "JSON"; + CurrentDate = Date("20260101100000"); + + Counter = 0; + While Counter < 5 Do + + Record = New Structure; + Record.Insert("id" , Counter + 1); + Record.Insert("timestamp" , CurrentDate); + Record.Insert("user_id" , 100 + Counter); + Record.Insert("event_type" , "stream_test"); + Record.Insert("payload" , "{}"); + + Record = OPI_Tools.JSONString(Record) + Chars.LF; + + Last = Counter = 4; + + If Counter = 0 Then + + Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); + CurrentSend = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request, , Not Last); + Else + CurrentSend = OPI_ClickHouse.SendGRPCData(Connection, StreamID, Record, Not Last); // <--- + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "SendGRPCData"); // SKIP + EndIf; + + If Not CurrentSend["result"] Then + + Error = CurrentSend["error"]; + + If Error <> "Timeout" Then + Raise OPI_Tools.JSONString(CurrentSend); + EndIf; + + EndIf; + + Counter = Counter + 1; + + EndDo; + + // END + + Completion = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); + FinalMessage = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID); + + OPI_GRPC.CloseConnection(Connection); + +EndProcedure + +Procedure ClickHouse_GetGRPCMessage(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + Timeout = 10000; + + OpeningResult = OPI_ClickHouse.OpenGRPCStream(Connection, Timeout); + + If Not OpeningResult["result"] Then + Raise OpeningResult["error"]; + Else + StreamID = OpeningResult["streamId"]; + EndIf; + + QueryText = "SELECT number FROM system.numbers LIMIT 1"; + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + + Result = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request); + OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); + + Data = ""; + + If Result["result"] Then + + While True Do + + Result = OPI_ClickHouse.GetGRPCMessage(Connection, StreamID, "JSON"); + + If Not Result["result"] Then + Break; + EndIf; + + TextPart = Result["message"]["output"]; + Data = Data + TextPart; + + EndDo; + + OPI_GRPC.CloseConnection(Connection); + + Else + Raise Result["error"]; + EndIf; + + OPI_TypeConversion.GetCollection(Data); + + // END + + OPI_TestDataRetrieval.Process(Data, "ClickHouse", "GetGRPCMessage"); + +EndProcedure + +Procedure ClickHouse_CompleteGRPCSending(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + Timeout = 10000; + + OpeningResult = OPI_ClickHouse.OpenGRPCStream(Connection, Timeout); + + If Not OpeningResult["result"] Then + Raise OpeningResult["error"]; + Else + StreamID = OpeningResult["streamId"]; + EndIf; + + QueryText = "SELECT number FROM system.numbers LIMIT 1"; + Options = New Structure; + Options.Insert("query", QueryText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + + Sending = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request); + Result = OPI_ClickHouse.CompleteGRPCSending(Connection, StreamID); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CompleteGRPCSending"); + + Result = OPI_ClickHouse.SendGRPCMessage(Connection, StreamID, Request); + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CompleteGRPCSending", "Sending"); + +EndProcedure + +Procedure ClickHouse_CloseGRPCStream(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + Timeout = 10000; + + OpeningResult = OPI_ClickHouse.OpenGRPCStream(Connection, Timeout); + + If Not OpeningResult["result"] Then + Raise OpeningResult["error"]; + Else + StreamID = OpeningResult["streamId"]; + EndIf; + + Result = OPI_ClickHouse.CloseGRPCStream(Connection, StreamID); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "CloseGRPCStream"); + + OPI_GRPC.CloseConnection(Connection); + +EndProcedure + +Procedure ClickHouse_ProcessGRPCSending(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + QueryText = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + DataFormat = "JSON"; + CurrentDate = Date("20260101100000"); + + Request = Undefined; + DataArray = New Array; + + Counter = 0; + While Counter < 5 Do + + Record = New Structure; + Record.Insert("id" , Counter + 1); + Record.Insert("timestamp" , CurrentDate); + Record.Insert("user_id" , 100 + Counter); + Record.Insert("event_type", "stream_test"); + Record.Insert("payload" , "{}"); + + Record = OPI_Tools.JSONString(Record) + Chars.LF; + + If Counter = 0 Then + Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", , Record, DataFormat); + Else + DataArray.Add(Record); + EndIf; + + Counter = Counter + 1; + + EndDo; + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + Options.Insert("data", DataArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ProcessGRPCSending", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ProcessGRPCSending"); + +EndProcedure + +Procedure ClickHouse_ProcessGRPCReceiving(FunctionParameters) + + URL = "http://localhost:9101"; + URL = StrTemplate("http://%1:%2", OPI_TestDataRetrieval.GetLocalhost(), FunctionParameters["ClickHouse_PortGRPC"]); // SKIP + + Login = FunctionParameters["ClickHouse_User"]; + Password = FunctionParameters["ClickHouse_Password"]; + + Authorization = New Structure(Login, Password); + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("auth", Authorization); + + ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options); + Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings); + + SelectionText = "SELECT * FROM events_stream_test ORDER BY id"; + Options = New Structure; + Options.Insert("query", SelectionText); + Options.Insert("format", "JSON"); + + Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("req", Request); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ProcessGRPCReceiving", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ClickHouse", "ProcessGRPCReceiving"); + +EndProcedure + +#EndRegion // ClickHouse + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure CH_ОсновныеМетоды() Export + CH_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Dropbox.os b/src/en/OInt/tests/Modules/OPItc_Dropbox.os new file mode 100644 index 0000000000..1e022c4d29 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Dropbox.os @@ -0,0 +1,858 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Dropbox.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Dropbox"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Dropbox"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Dropbox + +Procedure DropboxAPI_GetUpdateToken() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Appkey" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Appsecret", TestParameters); + + Dropbox_GetAuthorizationLink(TestParameters); + + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Code", TestParameters); + + Dropbox_GetToken(TestParameters); + + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Refresh", TestParameters); + + Dropbox_RefreshToken(TestParameters); + +EndProcedure + +Procedure DropboxAPI_UploadFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Big" , TestParameters); + + Dropbox_UploadFile(TestParameters); + Dropbox_GetObjectInformation(TestParameters); + Dropbox_GetObjectVersionList(TestParameters); + Dropbox_RestoreObjectToVersion(TestParameters); + Dropbox_GetPreview(TestParameters); + Dropbox_DownloadFile(TestParameters); + Dropbox_MoveObject(TestParameters); + Dropbox_CopyObject(TestParameters); + Dropbox_DeleteObject(TestParameters); + +EndProcedure + +Procedure DropboxAPI_CreateFolder() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); + + Dropbox_CreateFolder(TestParameters); + Dropbox_DownloadFolder(TestParameters); + +EndProcedure + +Procedure DropboxAPI_GetFolderFileList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); + + Dropbox_GetListOfFolderFiles(TestParameters); + +EndProcedure + +Procedure DropboxAPI_UploadFileByURL() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Dropbox_UploadFileByURL(TestParameters); + Dropbox_GetUploadStatusByURL(TestParameters); + +EndProcedure + +Procedure DropboxAPI_CreateDeleteTag() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); + + Dropbox_AddTag(TestParameters); + Dropbox_GetTagList(TestParameters); + Dropbox_DeleteTag(TestParameters); + +EndProcedure + +Procedure DropboxAPI_GetAccount() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token", TestParameters); + + Dropbox_GetAccountInformation(TestParameters); + Dropbox_GetSpaceUsageData(TestParameters); + +EndProcedure + +Procedure DropboxAPI_AccessManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_OtherUser", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Dropbox_FileID" , TestParameters); + + Dropbox_AddUsersToFile(TestParameters); + Dropbox_PublishFolder(TestParameters); + Dropbox_AddUsersToFolder(TestParameters); + Dropbox_CancelFolderPublication(TestParameters); + Dropbox_GetAsynchronousChangeStatus(TestParameters); + Dropbox_CancelFilePublication(TestParameters); + +EndProcedure + +#EndRegion // Dropbox + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Dropbox + +Procedure Dropbox_GetAuthorizationLink(FunctionParameters) + + AppKey = FunctionParameters["Dropbox_Appkey"]; + Options = New Structure; + Options.Insert("appkey", AppKey); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAuthorizationLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetAuthorizationLink"); + +EndProcedure + +Procedure Dropbox_GetToken(FunctionParameters) + + AppKey = FunctionParameters["Dropbox_Appkey"]; + AppSecret = FunctionParameters["Dropbox_Appsecret"]; + Code = FunctionParameters["Dropbox_Code"]; + + Options = New Structure; + Options.Insert("appkey", AppKey); + Options.Insert("appsecret", AppSecret); + Options.Insert("code", Code); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetToken"); + +EndProcedure + +Procedure Dropbox_RefreshToken(FunctionParameters) + + AppKey = FunctionParameters["Dropbox_Appkey"]; + AppSecret = FunctionParameters["Dropbox_Appsecret"]; + RefreshToken = FunctionParameters["Dropbox_Refresh"]; + + Options = New Structure; + Options.Insert("appkey", AppKey); + Options.Insert("appsecret", AppSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "RefreshToken"); + +EndProcedure + +Procedure Dropbox_GetObjectInformation(FunctionParameters) + + Path = "/New/pic.png"; + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("detail", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetObjectInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetObjectInformation", , Path); + +EndProcedure + +Procedure Dropbox_GetPreview(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/mydoc.docx"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetPreview", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetPreview"); + +EndProcedure + +Procedure Dropbox_UploadFile(FunctionParameters) + + Path = "/New/pic.png"; + Token = FunctionParameters["Dropbox_Token"]; + Image = FunctionParameters["Picture"]; + + ImagePath = GetTempFileName("png"); + CopyFile(Image, ImagePath); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", ImagePath); + Options.Insert("path", Path); + Options.Insert("overwrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "UploadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "UploadFile", , Path); + + OPI_Tools.RemoveFileWithTry(ImagePath, "Failed to delete the temporary file after the test!!"); + + If Not OPI_Tools.IsOneScript() And FunctionParameters.Property("Big") Then + + BigFile = FunctionParameters["Big"]; + + Path = "/giant.tmp"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", BigFile); + Options.Insert("path", Path); + Options.Insert("overwrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "UploadFile", "Big", Path); + + EndIf; + +EndProcedure + +Procedure Dropbox_UploadFileByURL(FunctionParameters) + + Path = "/New/url_doc.docx"; + Token = FunctionParameters["Dropbox_Token"]; + URL = FunctionParameters["Document"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "UploadFileByURL", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "UploadFileByURL", , FunctionParameters); + +EndProcedure + +Procedure Dropbox_GetUploadStatusByURL(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + WorkID = FunctionParameters["Dropbox_Job"]; + Status = "in_progress"; + + While Status = "in_progress" Do + + Result = OPI_Dropbox.GetUploadStatusByURL(Token, WorkID); + Status = Result[".tag"]; + + OPI_Tools.Pause(5); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetUploadStatusByURL", "Progress"); // SKIP + + EndDo; + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetUploadStatusByURL"); + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/url_doc.docx"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteObject", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetUploadStatusByURL", "Deletion", Path); + +EndProcedure + +Procedure Dropbox_DeleteObject(FunctionParameters) + + Path = "/New/pic.png"; + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "DeleteObject", , Path); + +EndProcedure + +Procedure Dropbox_CopyObject(FunctionParameters) + + Original = "/New/pic.png"; + Copy = "/New/pic_copy.png"; + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", Original); + Options.Insert("to", Copy); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CopyObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "CopyObject", , Copy); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Copy); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteObject", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "CopyObject", "Deletion", Copy); + +EndProcedure + +Procedure Dropbox_MoveObject(FunctionParameters) + + OriginalPath = "/New/pic.png"; + TargetPath = "/pic.png"; + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", OriginalPath); + Options.Insert("to", TargetPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "MoveObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "MoveObject", , TargetPath); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", TargetPath); + Options.Insert("to", OriginalPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "MoveObject", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "MoveObject", "Deletion", OriginalPath); + +EndProcedure + +Procedure Dropbox_CreateFolder(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New catalog"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CreateFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "CreateFolder", , Path); + + OPI_Dropbox.DeleteObject(Token, Path); + +EndProcedure + +Procedure Dropbox_DownloadFile(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/pic.png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "DownloadFile"); + +EndProcedure + +Procedure Dropbox_DownloadFolder(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DownloadFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "DownloadFolder"); + +EndProcedure + +Procedure Dropbox_GetListOfFolderFiles(FunctionParameters) + + Path = "/New"; + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("detail", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetListOfFolderFiles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetListOfFolderFiles"); + +EndProcedure + +Procedure Dropbox_GetObjectVersionList(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/pic.png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("amount", 1); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetObjectVersionList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetObjectVersionList", , FunctionParameters); + +EndProcedure + +Procedure Dropbox_RestoreObjectToVersion(FunctionParameters) + + Version = FunctionParameters["Dropbox_FileRevision"]; + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/pic.png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("rev", Version); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "RestoreObjectToVersion", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "RestoreObjectToVersion", , Path); + +EndProcedure + +Procedure Dropbox_GetTagList(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + + PathsArray = New Array; + PathsArray.Add("/New/Dogs.mp3"); + PathsArray.Add("/New/mydoc.docx"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", PathsArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetTagList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetTagList", , FunctionParameters, PathsArray); + +EndProcedure + +Procedure Dropbox_AddTag(FunctionParameters) + + Tag = "Important"; + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/mydoc.docx"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("tag", Tag); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "AddTag"); + +EndProcedure + +Procedure Dropbox_DeleteTag(FunctionParameters) + + Tag = "Important"; + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New/mydoc.docx"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("tag", Tag); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "DeleteTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "DeleteTag"); + +EndProcedure + +Procedure Dropbox_GetAccountInformation(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAccountInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetAccountInformation"); + + AccountID = Result["account_id"]; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("account", AccountID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAccountInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetAccountInformation", "By ID"); + +EndProcedure + +Procedure Dropbox_GetSpaceUsageData(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetSpaceUsageData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetSpaceUsageData"); + +EndProcedure + +Procedure Dropbox_AddUsersToFile(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Email = FunctionParameters["Dropbox_OtherUser"]; + File = FunctionParameters["Dropbox_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", File); + Options.Insert("emails", Email); + Options.Insert("readonly", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "AddUsersToFile", , Email, False); + + Mails = New Array; + Mails.Add(Email); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", File); + Options.Insert("emails", Mails); + Options.Insert("readonly", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "AddUsersToFile", , Email, True); + +EndProcedure + +Procedure Dropbox_PublishFolder(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Path = "/New"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "PublishFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "PublishFolder", , FunctionParameters); + +EndProcedure + +Procedure Dropbox_CancelFolderPublication(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Folder = FunctionParameters["Dropbox_SharedFolder"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("folder", Folder); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CancelFolderPublication", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "CancelFolderPublication"); // SKIP + + CurrentStatus = "in_progress"; + JobID = Result["async_job_id"]; + + While CurrentStatus = "in_progress" Do + Result = OPI_Dropbox.GetAsynchronousChangeStatus(Token, JobID); + CurrentStatus = Result[".tag"]; + OPI_Tools.Pause(3); + EndDo; + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "CancelFolderPublication", "Ending", FunctionParameters, JobID); + +EndProcedure + +Procedure Dropbox_GetAsynchronousChangeStatus(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + JobID = FunctionParameters["Dropbox_NewJobID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("job", JobID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "GetAsynchronousChangeStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "GetAsynchronousChangeStatus"); + +EndProcedure + +Procedure Dropbox_AddUsersToFolder(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + Email = FunctionParameters["Dropbox_OtherUser"]; + Folder = FunctionParameters["Dropbox_SharedFolder"]; // shared_folder_id + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("folder", Folder); + Options.Insert("emails", Email); + Options.Insert("readonly", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "AddUsersToFolder"); + + Mails = New Array; + Mails.Add(Email); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("folder", Folder); + Options.Insert("emails", Mails); + Options.Insert("readonly", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "AddUsersToFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "AddUsersToFolder", "Additional"); + +EndProcedure + +Procedure Dropbox_CancelFilePublication(FunctionParameters) + + Token = FunctionParameters["Dropbox_Token"]; + File = FunctionParameters["Dropbox_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("dropbox", "CancelFilePublication", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Dropbox", "CancelFilePublication"); + +EndProcedure + +#EndRegion // Dropbox + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ДропБокс_ПолучитьОбновитьТокен() Export + DropboxAPI_GetUpdateToken(); +EndProcedure + +Procedure ДропБокс_ЗагрузитьФайл() Export + DropboxAPI_UploadFile(); +EndProcedure + +Procedure ДропБокс_СоздатьКаталог() Export + DropboxAPI_CreateFolder(); +EndProcedure + +Procedure ДропБокс_ПолучитьСписокФайловПапки() Export + DropboxAPI_GetFolderFileList(); +EndProcedure + +Procedure ДропБокс_ЗагрузитьФайлПоURL() Export + DropboxAPI_UploadFileByURL(); +EndProcedure + +Procedure ДропБокс_СоздатьУдалитьТег() Export + DropboxAPI_CreateDeleteTag(); +EndProcedure + +Procedure ДропБокс_ПолучитьАккаунт() Export + DropboxAPI_GetAccount(); +EndProcedure + +Procedure ДропБокс_РаботаСДоступами() Export + DropboxAPI_AccessManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_FTP.os b/src/en/OInt/tests/Modules/OPItc_FTP.os new file mode 100644 index 0000000000..a2fd317a3a --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_FTP.os @@ -0,0 +1,2000 @@ +// OneScript: ./OInt/tests/Modules/OPItc_FTP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("FTP"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("FTP"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region FTP + +Procedure FT_DirecotryManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetFTPParameterOptions(); + + For Each TestParameters In OptionArray Do + + FTP_ClearDirectory(TestParameters); + FTP_CreateNewDirectory(TestParameters); + FTP_GetCurrentDirectory(TestParameters); + FTP_ChangeCurrentDirectory(TestParameters); + FTP_ListObjects(TestParameters); + FTP_DeleteDirectory(TestParameters); + + EndDo; + +EndProcedure + +Procedure FT_FileOperations() Export + + OptionArray = OPI_TestDataRetrieval.GetFTPParameterOptions(); + + For Each TestParameters In OptionArray Do + + FTP_UploadFile(TestParameters); + FTP_SaveFile(TestParameters); + FTP_GetFileData(TestParameters); + FTP_DeleteFile(TestParameters); + + EndDo; + +EndProcedure + +Procedure FT_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetFTPParameterOptions(); + + For Each TestParameters In OptionArray Do + + FTP_CreateConnection(TestParameters); + FTP_GetWelcomeMessage(TestParameters); + FTP_GetProtocolFeatureList(TestParameters); + FTP_GetConnectionConfiguration(TestParameters); + FTP_CloseConnection(TestParameters); + FTP_IsConnector(TestParameters); + FTP_GetConnectionSettings(TestParameters); + FTP_GetProxySettings(TestParameters); + FTP_GetTLSSettings(TestParameters); + FTP_GetObjectSize(TestParameters); + FTP_UpdatePath(TestParameters); + FTP_ExecuteCustomCommand(TestParameters); + FTP_ExecuteArbitraryCommand(TestParameters); + FTP_Ping(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // FTP + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region FTP + +Procedure FTP_CreateConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Result = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "CreateConnection", Postfix); + +EndProcedure + +Procedure FTP_GetWelcomeMessage(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetWelcomeMessage", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetWelcomeMessage", Postfix); + +EndProcedure + +Procedure FTP_GetConnectionConfiguration(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Options = New Structure; + Options.Insert("set", FTPSettings); + Options.Insert("proxy", ProxySettings); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionConfiguration", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetConnectionConfiguration", Postfix, FunctionParameters); + + Options = New Structure; + Options.Insert("conn", Result); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetWelcomeMessage", Options); + + OPI_TestDataRetrieval.Process(Check, "FTP", "GetConnectionConfiguration", "Check, " + Postfix); + +EndProcedure + +Procedure FTP_CloseConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "FTP", "CloseConnection", "Openning, " + Postfix); // SKIP + + Result = OPI_FTP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "CloseConnection", Postfix); + +EndProcedure + +Procedure FTP_IsConnector(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "FTP", "IsConnector", "Openning, " + Postfix); // SKIP + + Result = OPI_FTP.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "IsConnector", Postfix); + +EndProcedure + +Procedure FTP_GetConnectionSettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetConnectionSettings", Postfix); + +EndProcedure + +Procedure FTP_GetProxySettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetProxySettings", Postfix); + +EndProcedure + +Procedure FTP_GetTLSSettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetTLSSettings", Postfix); + +EndProcedure + +Procedure FTP_CreateNewDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + + Deletion = OPI_FTP.DeleteDirectory(Connection, "new_dir"); // SKIP + OPI_TestDataRetrieval.Process(Deletion, "FTP", "CreateNewDirectory", "Deletion, " + Postfix); // SKIP + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "CreateNewDirectory", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "CreateNewDirectory", Postfix, True); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/another_one"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "CreateNewDirectory", Options); + + OPI_TestDataRetrieval.Process(Result, "FTP", "CreateNewDirectory", "Nested, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "second_dir/another_one"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "CreateNewDirectory", Options); + + OPI_TestDataRetrieval.Process(Result, "FTP", "CreateNewDirectory", "Double, " + Postfix); + + OPI_Tools.Pause(5); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir"); + Options.Insert("rcv", Истина); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Check, "FTP", "CreateNewDirectory", "Check 1, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", ""); + Options.Insert("rcv", Истина); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Check, "FTP", "CreateNewDirectory", "Check 2, " + Postfix); + +EndProcedure + +Procedure FTP_ListObjects(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", ""); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "ListObjects", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "Dir1/Dir3/Git-2.50.0-64-bit.exe"); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result, "FTP", "ListObjects", "File, " + Postfix); + +EndProcedure + +Procedure FTP_UploadFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + ImagePath = "C:\pic.png"; + + Image = FunctionParameters["Picture"]; // SKIP + TFN = GetTempFileName("png"); // SKIP + CopyFile(Image, TFN); // SKIP + Image = TFN; // SKIP + + ImageDD = New BinaryData(Image); + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("rtout", 1000); + Options.Insert("wtout", 1000); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("file", Image); + Options.Insert("path", "new_dir/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UploadFile", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("file", ImageDD); + Options.Insert("path", "pic_from_binary.png"); + + Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UploadFile", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "FTP", "UploadFile", Postfix , ImageDD.Size()); + OPI_TestDataRetrieval.Process(Result2, "FTP", "UploadFile", "Binary, " + Postfix, ImageDD.Size()); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_binary.png"); + + Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UploadFile", "Size 1, " + Postfix, ImageDD.Size()); + OPI_TestDataRetrieval.Process(Result2, "FTP", "UploadFile", "Size 2, " + Postfix, ImageDD.Size()); + + For N = 1 To 5 Do + + Result = OPI_FTP.UploadFile(Connection, Image, "new_dir/pic_from_disk.png"); + Result2 = OPI_FTP.UploadFile(Connection, ImageDD, "pic_from_binary.png"); + + If Not Result["result"] Then + OPI_TestDataRetrieval.Process(Result, "FTP", "UploadFile", "Multiple, " + Postfix, ImageDD.Size()); + EndIf; + + If Not Result2["result"] Then + OPI_TestDataRetrieval.Process(Result2, "FTP", "UploadFile", "Multiple, binary, " + Postfix, ImageDD.Size()); + EndIf; + + EndDo; + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure FTP_DeleteFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "DeleteFile", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "FTP", "DeleteFile", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "DeleteFile", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "DeleteFile", "Nonexistent, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", ""); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "DeleteFile", "Check, " + Postfix); + +EndProcedure + +Procedure FTP_DeleteDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/another_one"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "DeleteDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "FTP", "DeleteDirectory", Postfix); + +EndProcedure + +Procedure FTP_ClearDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "."); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ClearDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "FTP", "ClearDirectory", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "."); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "ClearDirectory", "Check, " + Postfix); + +EndProcedure + +Procedure FTP_GetObjectSize(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "FTP", "GetObjectSize", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/another.bin"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "GetObjectSize", "Nonexistent, " + Postfix); + +EndProcedure + +Procedure FTP_UpdatePath(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "new_dir/pic_from_disk.png"); + Options.Insert("new", "new_dir/pic_copy.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/pic_copy.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "Check, new, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "Check, old, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "new_dir"); + Options.Insert("new", "brand_new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "Directory, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "."); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "List, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "brand_new_dir"); + Options.Insert("new", "new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "Directory, back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "new_dir/pic_copy.png"); + Options.Insert("new", "new_dir/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "UpdatePath", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "Back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "."); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result , "FTP", "UpdatePath", "List, back, " + Postfix); + +EndProcedure + +Procedure FTP_SaveFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + + Path = "new_dir/pic_from_disk.png"; + FileName = GetTempFileName("bin"); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", Path); + Options.Insert("file", FileName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "SaveFile", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "SaveFile", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", Path); + + Size = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + + OPI_TestDataRetrieval.Process(Size, "FTP", "SaveFile", "Size, " + Postfix); + + FileObject = New File(FileName); + + FileSize = FileObject.Size(); + ResultSize = Result["bytes"]; + CheckSize = Size["bytes"]; + + OPI_TestDataRetrieval.Process(FileSize, "FTP", "SaveFile", "File size, " + Postfix, ResultSize, CheckSize); + + Path = "new_dir/pic_from_disk.png"; + + For N = 1 To 5 Do + + Result = OPI_FTP.SaveFile(Connection, Path, FileName); + + If Not Result["result"] Then + OPI_TestDataRetrieval.Process(Result, "FTP", "SaveFile", "Multiple, " + Postfix); + EndIf; + + EndDo; + + OPI_Tools.RemoveFileWithTry(FileName, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure FTP_GetFileData(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + + Path = "new_dir/pic_from_disk.png"; + Result = OPI_FTP.GetFileData(Connection, Path); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetFileData", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", Path); + + Size = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetObjectSize", Options); + + OPI_TestDataRetrieval.Process(Size, "FTP", "GetFileData", "Size, " + Postfix); + + FileSize = Result.Size(); + CheckSize = Size["bytes"]; + + OPI_TestDataRetrieval.Process(FileSize, "FTP", "GetFileData", "File size, " + Postfix, CheckSize); + + Path = "new_dir/pic_from_disk.png"; + + For N = 1 To 5 Do + + Result = OPI_FTP.GetFileData(Connection, Path); + + If Not TypeOf(Result) = Type("BinaryData") Then + OPI_TestDataRetrieval.Process(Result, "FTP", "GetFileData", "Multiple, " + Postfix); + EndIf; + + EndDo; + +EndProcedure + +Procedure FTP_Ping(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "Ping", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "Ping", Postfix); + +EndProcedure + +Procedure FTP_ExecuteCustomCommand(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + + CommandText = "UMASK"; + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("cmd", CommandText); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ExecuteCustomCommand", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "ExecuteCustomCommand", Postfix); + +EndProcedure + +Procedure FTP_ExecuteArbitraryCommand(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + + CommandText = "PWD"; + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("cmd", CommandText); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "ExecuteArbitraryCommand", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "ExecuteArbitraryCommand", Postfix); + +EndProcedure + +Procedure FTP_GetCurrentDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetCurrentDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetCurrentDirectory", Postfix, FunctionParameters); + +EndProcedure + +Procedure FTP_ChangeCurrentDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Path = "new_dir"; + Result = OPI_FTP.ChangeCurrentDirectory(Connection, Path); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "ChangeCurrentDirectory", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetCurrentDirectory", Options); + + OPI_TestDataRetrieval.Process(Result, "FTP", "ChangeCurrentDirectory", "Check, " + Postfix, Path); + + Path = FunctionParameters["FTP_RootPath"]; + Result = OPI_FTP.ChangeCurrentDirectory(Connection, Path); + + OPI_TestDataRetrieval.Process(Result, "FTP", "ChangeCurrentDirectory", "Back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetCurrentDirectory", Options); + + OPI_TestDataRetrieval.Process(Result, "FTP", "ChangeCurrentDirectory", "Check, back, " + Postfix, Path); + +EndProcedure + +Procedure FTP_GetProtocolFeatureList(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["FTP_IP"]; + Port = FunctionParameters["FTP_Port"]; + Login = FunctionParameters["FTP_User"]; + Password = FunctionParameters["FTP_Password"]; + + UseProxy = True; + FTPS = True; + + ProxySettings = Undefined; + TLSSettings = Undefined; // FTPS + + UseProxy = FunctionParameters["Proxy"]; // SKIP + FTPS = FunctionParameters["TLS"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + FTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetConnectionSettings", Options); + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProxySettings", Options); + + EndIf; + + If FTPS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetTLSSettings", Options); + EndIf; + + Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings); + + If OPI_FTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ftp", "GetProtocolFeatureList", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "FTP", "GetProtocolFeatureList", Postfix); + +EndProcedure + +#EndRegion // FTP + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure FT_РаботаСДиректориями() Export + FT_DirecotryManagement(); +EndProcedure + +Procedure FT_РаботаСФайлами() Export + FT_FileOperations(); +EndProcedure + +Procedure FT_ОсновныеМетоды() Export + FT_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GRPC.os b/src/en/OInt/tests/Modules/OPItc_GRPC.os new file mode 100644 index 0000000000..d45049fadf --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GRPC.os @@ -0,0 +1,1282 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GRPC.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GRPC"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GRPC"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GRPC + +Procedure GR_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GRPC_Address" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_AddressNoTls", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_Proto" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoTS" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoImport" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + GRPC_CreateConnection(TestParameters); + GRPC_CloseConnection(TestParameters); + GRPC_IsConnector(TestParameters); + GRPC_SetMetadata(TestParameters); + GRPC_ExecuteMethod(TestParameters); + GRPC_GetTlsSettings(TestParameters); + GRPC_GetConnectionParameters(TestParameters); + +EndProcedure + +Procedure GR_Introspection() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GRPC_Address" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_Proto" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoImport", TestParameters); + + GRPC_GetServiceList(TestParameters); + GRPC_GetMethodList(TestParameters); + GRPC_GetMethod(TestParameters); + +EndProcedure + +Procedure GR_Streaming() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GRPC_Address" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_AddressNoTls", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_Proto" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoTS" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GRPC_ProtoImport" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + GRPC_InitializeServerStream(TestParameters); + GRPC_InitializeClientStream(TestParameters); + GRPC_InitializeBidirectionalStream(TestParameters); + GRPC_SendMessage(TestParameters); + GRPC_GetMessage(TestParameters); + GRPC_CloseStream(TestParameters); + GRPC_ProcessServerStream(TestParameters); + GRPC_ProcessClientStream(TestParameters); + GRPC_ProcessBidirectionalStream(TestParameters); + GRPC_CompleteSend(TestParameters); + +EndProcedure + +#EndRegion // GRPC + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GRPC + +Procedure GRPC_CreateConnection(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Meta = New Structure("somekey", "somevalue"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + Options.Insert("meta", Meta); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Result = OPI_GRPC.CreateConnection(Parameters, Tls); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CreateConnection"); + + Result = OPI_GRPC.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CreateConnection", "Closing"); + + Address = FunctionParameters["GRPC_AddressNoTls"]; + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Result = OPI_GRPC.CreateConnection(Parameters); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CreateConnection", "No TLS"); + + Scheme = New Map; + Scheme.Insert("main.proto", Proto1); + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Result = OPI_GRPC.CreateConnection(Parameters); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CreateConnection", "Error"); + +EndProcedure + +Procedure GRPC_CloseConnection(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Meta = New Structure("somekey", "somevalue"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + Options.Insert("meta", Meta); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + Result = OPI_GRPC.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CloseConnection"); + +EndProcedure + +Procedure GRPC_IsConnector(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Meta = New Structure("somekey", "somevalue"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + Options.Insert("meta", Meta); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + Result = OPI_GRPC.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "IsConnector"); + +EndProcedure + +Procedure GRPC_GetConnectionParameters(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Meta = New Structure("somekey", "somevalue"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + Options.Insert("meta", Meta); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "GetConnectionParameters"); + +EndProcedure + +Procedure GRPC_GetTlsSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "GetTlsSettings"); + +EndProcedure + +Procedure GRPC_SetMetadata(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + Meta = New Structure("somekey", "somevalue"); + Result = OPI_GRPC.SetMetadata(Connection, Meta); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "SetMetadata"); + + If Not OPI_TestDataRetrieval.IsCLITest() Then + + Service = "grpcbin.GRPCBin"; + Method = "HeadersUnary"; + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", Неопределено); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "SetMetadata", "Check"); + + EndIf; + +EndProcedure + +Procedure GRPC_ExecuteMethod(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Meta = New Structure("somekey", "somevalue"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + Options.Insert("meta", Meta); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyUnary"; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + NumberArray = New Array; + NumberArray.Add(1); + NumberArray.Add(10); + NumberArray.Add(100); + + StructuresArray = New Array; + StructuresArray.Add(New Structure("f_string", "Nested value 1")); + StructuresArray.Add(New Structure("f_string", "Nested value 2")); + + BoolArray = New Array; + BoolArray.Add(True); + BoolArray.Add(False); + + File = FunctionParameters["Document"]; + OPI_TypeConversion.GetBinaryData(File); + + TFN = GetTempFileName(); + File.Write(TFN); + + BinaryDataArray = New Array; + BinaryDataArray.Add(File); // How Data + BinaryDataArray.Add(TFN); // How path to file + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_int64" , 123); + Data.Insert("f_float" , 123.22000122070312); + Data.Insert("f_bool" , True); + Data.Insert("f_enum" , "ENUM_1"); + Data.Insert("f_bytes" , File); + Data.Insert("f_sub" , New Structure("f_string" , "Nested value")); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_int32s" , NumberArray); + Data.Insert("f_int64s" , NumberArray); + Data.Insert("f_floats" , NumberArray); + Data.Insert("f_bytess" , BinaryDataArray); + Data.Insert("f_subs" , StructuresArray); + Data.Insert("f_bools" , BoolArray); + Data.Insert("f_enums" , StrSplit("ENUM_1,ENUM_2" , ",")); + + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", Data); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ExecuteMethod"); + + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", Неопределено); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ExecuteMethod", "Empty"); + + Method = "HeadersUnary"; + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", Неопределено); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ExecuteMethod", Options); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ExecuteMethod", "Meta"); + +EndProcedure + +Procedure GRPC_GetServiceList(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + Scheme = FunctionParameters["GRPC_Proto"]; // String, path to file or URL + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetServiceList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "GetServiceList"); + +EndProcedure + +Procedure GRPC_GetMethodList(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + Scheme = FunctionParameters["GRPC_Proto"]; // String, path to file or URL + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + Service = "grpcbin.GRPCBin"; + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("service", Service); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetMethodList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "GetMethodList"); + +EndProcedure + +Procedure GRPC_GetMethod(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + Scheme = FunctionParameters["GRPC_Proto"]; // String, path to file or URL + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + Service = "grpcbin.GRPCBin"; + Method = "Index"; + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("service", Service); + Options.Insert("method", Method); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetMethod", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "GetMethod"); + +EndProcedure + +Procedure GRPC_InitializeServerStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyServerStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_bool" , True); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, Data); // <--- + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + MessagesArray = New Array; + + While True Do + + CurrentMessage = OPI_GRPC.GetMessage(Connection, StreamID); + + If Not CurrentMessage["result"] Then + + Error = CurrentMessage["error"]; + + If Error = "Timeout" Then + Continue; + ElsIf Error = "Closed" Then + Break; + Else + Raise Error; + EndIf; + + Else + + MessageData = CurrentMessage["message"]; + + If ValueIsFilled(MessageData) Then + MessagesArray.Add(MessageData); + EndIf; + + EndIf; + + EndDo; + + // END + + OPI_TestDataRetrieval.Process(Result , "GRPC", "InitializeServerStream"); + OPI_TestDataRetrieval.Process(MessagesArray, "GRPC", "InitializeServerStream", "Array"); + +EndProcedure + +Procedure GRPC_InitializeClientStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyClientStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_bool" , True); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method); // <--- + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + FinalMessage = Undefined; + + Counter = 0; + While True Do + + CurrentSend = OPI_GRPC.SendMessage(Connection, StreamID, Data); + Counter = Counter + 1; + + If Not CurrentSend["result"] Then + + Error = CurrentSend["error"]; + + If Error = "Timeout" Then + Continue; + ElsIf Error = "Closed" Then + FinalMessage = OPI_GRPC.GetMessage(Connection, StreamID); + Break; + Else + Raise StrTemplate("%1 (sent messages %2)", Error, Counter); + EndIf; + + Else + + If Counter = 10 Then + Completion = OPI_GRPC.CompleteSend(Connection, StreamID); + FinalMessage = OPI_GRPC.GetMessage(Connection, StreamID); + Break; + EndIf; + + EndIf; + + EndDo; + + // END + + OPI_TestDataRetrieval.Process(FinalMessage, "GRPC", "InitializeClientStream", , Counter); + +EndProcedure + +Procedure GRPC_InitializeBidirectionalStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyBidirectionalStreamStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_bool" , True); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Result = OPI_GRPC.InitializeBidirectionalStream(Connection, Service, Method); // <--- + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + ResultArray = New Array; + Counter = 0; + + While Counter < 10 Do + + Data.Insert("f_int32", Counter + 1); + + CurrentSend = OPI_GRPC.SendMessage(Connection, StreamID, Data); + + If Not CurrentSend["result"] Then + + Error = CurrentSend["error"]; + + If Error = "Timeout" Then + Continue; + Else + Raise StrTemplate("Send error: %1 (processed messages %2)", Error, Counter); + EndIf; + + EndIf; + + CurrentReceive = OPI_GRPC.GetMessage(Connection, StreamID); + + If Not CurrentReceive["result"] Then + Raise StrTemplate("Receive error: %1 (processed messages %2)", Error, Counter); + EndIf; + + ResultArray.Add(CurrentReceive["message"]); + Counter = Counter + 1; + + EndDo; + + OPI_GRPC.CloseStream(Connection, StreamID); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "InitializeBidirectionalStream", , ResultArray); + +EndProcedure + +Procedure GRPC_SendMessage(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyClientStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_bool" , True); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method); + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + Result = OPI_GRPC.SendMessage(Connection, StreamID, Data); // <--- + Closing = OPI_GRPC.CloseStream(Connection, StreamID); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "SendMessage", , Closing); + +EndProcedure + +Procedure GRPC_GetMessage(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyServerStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + NumberArray = New Array; + NumberArray.Add(1); + NumberArray.Add(10); + NumberArray.Add(100); + + File = FunctionParameters["Document"]; + OPI_TypeConversion.GetBinaryData(File); + + TFN = GetTempFileName(); + File.Write(TFN); + + BinaryDataArray = New Array; + BinaryDataArray.Add(File); // How Data + BinaryDataArray.Add(TFN); // How path to file + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_int64" , 123); + Data.Insert("f_float" , 123.22000122070312); + Data.Insert("f_bool" , True); + Data.Insert("f_enum" , "ENUM_1"); + Data.Insert("f_bytes" , File); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_int32s" , NumberArray); + Data.Insert("f_bytess" , BinaryDataArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, Data); + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + Result = OPI_GRPC.GetMessage(Connection, StreamID); // <--- + Closing = OPI_GRPC.CloseStream(Connection, StreamID); + + // END + + Data.Insert("f_int64s", New Array); + Data.Insert("f_enums" , New Array); + Data.Insert("f_floats", New Array); + Data.Insert("f_bools" , New Array); + Data.Insert("f_subs" , New Array); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "GetMessage", , Closing, Data); + +EndProcedure + +Procedure GRPC_CloseStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyServerStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_bool" , True); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, Data); + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + Result = OPI_GRPC.CloseStream(Connection, StreamID); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CloseStream"); + + Result = OPI_GRPC.GetMessage(Connection, StreamID); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CloseStream", "Sending"); + +EndProcedure + +Procedure GRPC_ProcessServerStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyServerStream"; + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_bool" , True); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", Data); + Options.Insert("tls", Tls); + Options.Insert("count", 3); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessServerStream", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ProcessServerStream"); + +EndProcedure + +Procedure GRPC_ProcessClientStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyClientStream"; + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_int32" , 123); + Data.Insert("f_bool" , True); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + ArrayOfRequests = New Array; + + For N = 1 To 10 Do + ArrayOfRequests.Add(Data); + EndDo; + + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", ArrayOfRequests); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessClientStream", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ProcessClientStream"); + + ArrayOfRequests.Delete(ArrayOfRequests.UBound()); + + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("data", ArrayOfRequests); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessClientStream", Options); + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ProcessClientStream", "Error"); + +EndProcedure + +Procedure GRPC_ProcessBidirectionalStream(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + StingsArray = New Array; + StingsArray.Add("one"); + StingsArray.Add("two"); + StingsArray.Add("three"); + + Data = New Map; + Data.Insert("f_string" , "Test message"); + Data.Insert("f_bool" , True); + Data.Insert("f_strings", StingsArray); + Data.Insert("f_sub" , New Structure("f_string", "Nested value")); + + Service = "grpcbin.GRPCBin"; + Method = "DummyBidirectionalStreamStream"; + + ExchangeOrder = New Array; + + For N = 1 To 10 Do + + ExchangeOrder.Add(Data); // Single send + ExchangeOrder.Add(Undefined); // Single get + + EndDo; + + Options = New Structure; + Options.Insert("conn", Parameters); + Options.Insert("service", Service); + Options.Insert("method", Method); + Options.Insert("exch", ExchangeOrder); + Options.Insert("tls", Tls); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "ProcessBidirectionalStream", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "ProcessBidirectionalStream"); + +EndProcedure + +Procedure GRPC_CompleteSend(FunctionParameters) + + Address = FunctionParameters["GRPC_Address"]; + + Proto1 = FunctionParameters["GRPC_ProtoImport"]; // String, path to file or URL + Proto2 = FunctionParameters["GRPC_ProtoTS"]; // String, path to file or URL + + Scheme = New Map; + Scheme.Insert("main.proto" , Proto1); // Primary + Scheme.Insert("my_types.proto", Proto2); // For import in primary + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("proto", Scheme); + + Parameters = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetConnectionParameters", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("grpc", "GetTlsSettings", Options); + + Service = "grpcbin.GRPCBin"; + Method = "DummyClientStream"; + + Connection = OPI_GRPC.CreateConnection(Parameters, Tls); + + If Not OPI_GRPC.IsConnector(Connection) Then + Raise Connection["error"]; + EndIf; + + Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method); + + If Not Result["result"] Then + Raise Result["error"]; + Else + StreamID = Result["streamId"]; + EndIf; + + Result = OPI_GRPC.CompleteSend(Connection, StreamID); + + // END + + OPI_TestDataRetrieval.Process(Result, "GRPC", "CompleteSend"); + +EndProcedure + +#EndRegion // GRPC + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure GR_ОсновныеМетоды() Export + GR_CommonMethods(); +EndProcedure + +Procedure GR_Интроспекция() Export + GR_Introspection(); +EndProcedure + +Procedure GR_Стриминг() Export + GR_Streaming(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GoogleCalendar.os b/src/en/OInt/tests/Modules/OPItc_GoogleCalendar.os new file mode 100644 index 0000000000..b6a0ff0f05 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GoogleCalendar.os @@ -0,0 +1,631 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleCalendar.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GoogleCalendar"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GoogleCalendar"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GoogleCalendar + +Procedure GC_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); + + GoogleCalendar_FormCodeRetrievalLink(TestParameters); + GoogleCalendar_GetTokenByCode(TestParameters); + GoogleCalendar_RefreshToken(TestParameters); + GoogleCalendar_GetServiceAccountToken(TestParameters); + +EndProcedure + +Procedure GC_GetCalendarList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + + GoogleCalendar_GetCalendarList(TestParameters); + +EndProcedure + +Procedure GC_CreateDeleteCalendar() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + + GoogleCalendar_CreateCalendar(TestParameters); + GoogleCalendar_EditCalendarMetadata(TestParameters); + GoogleCalendar_GetCalendarMetadata(TestParameters); + GoogleCalendar_AddCalendarToList(TestParameters); + GoogleCalendar_EditListCalendar(TestParameters); + GoogleCalendar_GetListCalendar(TestParameters); + GoogleCalendar_ClearMainCalendar(TestParameters); + // !DISABLED! GoogleCalendar_DeleteCalendarFromList(TestParameters); + GoogleCalendar_DeleteCalendar(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure GC_CreateDeleteEvent() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_NewCalendarID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_CalendarID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + + GoogleCalendar_CreateCalendar(TestParameters); + GoogleCalendar_CreateEvent(TestParameters); + GoogleCalendar_EditEvent(TestParameters); + GoogleCalendar_GetEvent(TestParameters); + GoogleCalendar_MoveEvent(TestParameters); + GoogleCalendar_GetEventList(TestParameters); + GoogleCalendar_GetEventDescription(TestParameters); + GoogleCalendar_DeleteEvent(TestParameters); + GoogleCalendar_DeleteCalendar(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +#EndRegion // GoogleCalendar + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GoogleCalendar + +Procedure GoogleCalendar_FormCodeRetrievalLink(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + Options = New Structure; + Options.Insert("id", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "FormCodeRetrievalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "FormCodeRetrievalLink"); + +EndProcedure + +Procedure GoogleCalendar_GetTokenByCode(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + Code = FunctionParameters["Google_Code"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("code", Code); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetTokenByCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetTokenByCode"); + +EndProcedure + +Procedure GoogleCalendar_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + RefreshToken = FunctionParameters["Google_Refresh"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "RefreshToken"); + +EndProcedure + +Procedure GoogleCalendar_GetServiceAccountToken(FunctionParameters) + + Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection + + Token = FunctionParameters["Access_Token"]; // SKIP + Data = OPI_HTTPRequests // SKIP + .NewRequest() // SKIP + .Initialize(Data) // SKIP + .AddBearerAuthorization(Token) // SKIP + .ProcessRequest("GET") // SKIP + .ReturnResponseAsBinaryData(); // SKIP + + Scope = New Array; + Scope.Add("https://www.googleapis.com/auth/calendar"); + Scope.Add("https://www.googleapis.com/auth/drive"); + Scope.Add("https://www.googleapis.com/auth/spreadsheets"); + + Options = New Structure; + Options.Insert("auth", Data); + Options.Insert("scope", Scope); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetServiceAccountToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetServiceAccountToken"); + +EndProcedure + +Procedure GoogleCalendar_GetCalendarList(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetCalendarList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetCalendarList"); + +EndProcedure + +Procedure GoogleCalendar_CreateCalendar(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Name = "TestCalendar"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "CreateCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "CreateCalendar", , FunctionParameters, Name); + +EndProcedure + +Procedure GoogleCalendar_EditCalendarMetadata(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + Name = "New name"; + Description = "New description"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + Options.Insert("title", Name); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "EditCalendarMetadata", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "EditCalendarMetadata", , Name, Description); + +EndProcedure + +Procedure GoogleCalendar_GetCalendarMetadata(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetCalendarMetadata", Options); + + // END + + Name = "New name"; + Description = "New description"; + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetCalendarMetadata", , Name, Description); + +EndProcedure + +Procedure GoogleCalendar_AddCalendarToList(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "AddCalendarToList", Options); + + // END + + Name = "New name"; + Description = "New description"; + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "AddCalendarToList", , Name, Description); + +EndProcedure + +Procedure GoogleCalendar_EditListCalendar(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + PrimaryColor = "#000000"; + SecondaryColor = "#ffd800"; + Hidden = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + Options.Insert("primary", PrimaryColor); + Options.Insert("secondary", SecondaryColor); + Options.Insert("hidden", Hidden); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "EditListCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "EditListCalendar", , PrimaryColor, SecondaryColor); + +EndProcedure + +Procedure GoogleCalendar_GetListCalendar(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetListCalendar", Options); + + // END + + PrimaryColor = "#000000"; + SecondaryColor = "#ffd800"; + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetListCalendar", , PrimaryColor, SecondaryColor); + +EndProcedure + +Procedure GoogleCalendar_ClearMainCalendar(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "ClearMainCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "ClearMainCalendar"); + +EndProcedure + +Procedure GoogleCalendar_DeleteCalendarFromList(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "DeleteCalendarFromList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "DeleteCalendarFromList"); + +EndProcedure + +Procedure GoogleCalendar_DeleteCalendar(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "DeleteCalendar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "DeleteCalendar"); + +EndProcedure + +Procedure GoogleCalendar_CreateEvent(FunctionParameters) + + CurrentDate = OPI_Tools.GetCurrentDate(); + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + Name = "New event"; + Description = "TestEventDescription"; + Hour = 3600; + + Image1 = FunctionParameters["Picture"]; // URL, Binary or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path + Attachments = New Map; + + Attachments.Insert("Image1", Image1); + Attachments.Insert("Image2", Image2); + + EventDescription = New Map; + EventDescription.Insert("Description" , Description); + EventDescription.Insert("Title" , Name); + EventDescription.Insert("Venue" , "InOffice"); + EventDescription.Insert("StartDate" , CurrentDate); + EventDescription.Insert("EndDate" , EventDescription["StartDate"] + Hour); + EventDescription.Insert("ArrayOfAttachmentURLs", Attachments); + EventDescription.Insert("SendNotifications" , True); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + Options.Insert("props", EventDescription); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "CreateEvent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "CreateEvent", , FunctionParameters, Name, Description); + +EndProcedure + +Procedure GoogleCalendar_EditEvent(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + Event = FunctionParameters["Google_EventID"]; + Description = "New event description"; + + EventDescription = New Map; + EventDescription.Insert("Description", Description); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + Options.Insert("props", EventDescription); + Options.Insert("event", Event); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "EditEvent", Options); + + // END + + Name = "New event"; + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "EditEvent", , Name, Description); + +EndProcedure + +Procedure GoogleCalendar_GetEvent(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + Event = FunctionParameters["Google_EventID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + Options.Insert("event", Event); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetEvent", Options); + + // END + + Name = "New event"; + Description = "New event description"; + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetEvent", , Name, Description); + +EndProcedure + +Procedure GoogleCalendar_MoveEvent(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Event = FunctionParameters["Google_EventID"]; + + SourceCalendar = FunctionParameters["Google_NewCalendarID"]; + TargetCalendar = FunctionParameters["Google_CalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", SourceCalendar); + Options.Insert("to", TargetCalendar); + Options.Insert("event", Event); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "MoveEvent", Options); + + // END + + Name = "New event"; + Description = "New event description"; + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "MoveEvent", , Name, Description); + + OPI_GoogleCalendar.MoveEvent(Token, TargetCalendar, SourceCalendar, Event); + +EndProcedure + +Procedure GoogleCalendar_DeleteEvent(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + Event = FunctionParameters["Google_EventID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + Options.Insert("event", Event); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "DeleteEvent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "DeleteEvent"); + +EndProcedure + +Procedure GoogleCalendar_GetEventList(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Calendar = FunctionParameters["Google_NewCalendarID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("calendar", Calendar); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetEventList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetEventList"); + +EndProcedure + +Procedure GoogleCalendar_GetEventDescription(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gcalendar", "GetEventDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleCalendar", "GetEventDescription"); + +EndProcedure + +#EndRegion // GoogleCalendar + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ГК_Авторизация() Export + GC_Authorization(); +EndProcedure + +Procedure ГК_ПолучитьСписокКалендарей() Export + GC_GetCalendarList(); +EndProcedure + +Procedure ГК_СоздатьУдалитьКалендарь() Export + GC_CreateDeleteCalendar(); +EndProcedure + +Procedure ГК_СоздатьУдалитьСобытие() Export + GC_CreateDeleteEvent(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GoogleDrive.os b/src/en/OInt/tests/Modules/OPItc_GoogleDrive.os new file mode 100644 index 0000000000..bca5500baf --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GoogleDrive.os @@ -0,0 +1,609 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleDrive.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GoogleDrive"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GoogleDrive"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GoogleDrive + +Procedure GD_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); + + GoogleDrive_FormCodeRetrievalLink(TestParameters); + GoogleDrive_GetTokenByCode(TestParameters); + GoogleDrive_RefreshToken(TestParameters); + GoogleDrive_GetServiceAccountToken(TestParameters); + +EndProcedure + +Procedure GD_GetCatalogList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + + GoogleDrive_GetDirectoriesList(TestParameters); + GoogleDrive_GetObjectInformation(TestParameters); + +EndProcedure + +Procedure GD_UploadDeleteFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GD_Catalog" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Big" , TestParameters); + + TestParameters.Insert("ArrayOfDeletions", New Array); + + GoogleDrive_UploadFile(TestParameters); + GoogleDrive_CopyObject(TestParameters); + GoogleDrive_DownloadFile(TestParameters); + GoogleDrive_UpdateFile(TestParameters); + GoogleDrive_GetFilesList(TestParameters); + GoogleDrive_DeleteObject(TestParameters); + GoogleDrive_GetFileDescription(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure GD_CreateDeleteComment() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GD_Catalog" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + TestParameters.Insert("ArrayOfDeletions", New Array); + + GoogleDrive_UploadFile(TestParameters); + + GoogleDrive_CreateComment(TestParameters); + GoogleDrive_GetComment(TestParameters); + GoogleDrive_GetCommentList(TestParameters); + GoogleDrive_DeleteComment(TestParameters); + + GoogleDrive_DeleteObject(TestParameters); + +EndProcedure + +Procedure GD_CreateCatalog() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GD_Catalog" , TestParameters); + + GoogleDrive_CreateFolder(TestParameters); + +EndProcedure + +#EndRegion // GoogleDrive + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GoogleDrive + +Procedure GoogleDrive_FormCodeRetrievalLink(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + Options = New Structure; + Options.Insert("id", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "FormCodeRetrievalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "FormCodeRetrievalLink"); + +EndProcedure + +Procedure GoogleDrive_GetTokenByCode(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + Code = FunctionParameters["Google_Code"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("code", Code); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetTokenByCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetTokenByCode"); + +EndProcedure + +Procedure GoogleDrive_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + RefreshToken = FunctionParameters["Google_Refresh"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "RefreshToken"); + +EndProcedure + +Procedure GoogleDrive_GetServiceAccountToken(FunctionParameters) + + Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection + + Token = FunctionParameters["Access_Token"]; // SKIP + Data = OPI_HTTPRequests // SKIP + .NewRequest() // SKIP + .Initialize(Data) // SKIP + .AddBearerAuthorization(Token) // SKIP + .ProcessRequest("GET") // SKIP + .ReturnResponseAsBinaryData(); // SKIP + + Scope = New Array; + Scope.Add("https://www.googleapis.com/auth/calendar"); + Scope.Add("https://www.googleapis.com/auth/drive"); + Scope.Add("https://www.googleapis.com/auth/spreadsheets"); + + Options = New Structure; + Options.Insert("auth", Data); + Options.Insert("scope", Scope); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetServiceAccountToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetServiceAccountToken"); + +EndProcedure + +Procedure GoogleDrive_GetDirectoriesList(FunctionParameters) + + Name = "TestFolder"; + Token = FunctionParameters["Google_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("query", Name); + Options.Insert("depth", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetDirectoriesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetDirectoriesList", , FunctionParameters); + +EndProcedure + +Procedure GoogleDrive_GetObjectInformation(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_Catalog"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetObjectInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetObjectInformation"); + +EndProcedure + +Procedure GoogleDrive_UploadFile(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Directory = FunctionParameters["GD_Catalog"]; + Image = FunctionParameters["Picture"]; // URL, Binary Data or File path + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Description = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetFileDescription", Options); + + Description.Insert("Parent", Directory); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", Image); + Options.Insert("props", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "UploadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "UploadFile", , FunctionParameters, Description); + + If Not OPI_Tools.IsOneScript() And FunctionParameters.Property("Big") Then + + BigFile = FunctionParameters["Big"]; + Description.Insert("Name", "big.rar"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", BigFile); + Options.Insert("props", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "UploadFile", "Big", FunctionParameters, Description); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Result); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DownloadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "UploadFile", "Check", FunctionParameters, Description); + + EndIf; + +EndProcedure + +Procedure GoogleDrive_CopyObject(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + NewName = "CopiedFile.jpeg"; + NewParent = "root"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + Options.Insert("title", NewName); + Options.Insert("catalog", NewParent); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CopyObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "CopyObject", , FunctionParameters, NewName); + +EndProcedure + +Procedure GoogleDrive_DownloadFile(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "DownloadFile", , FunctionParameters); + +EndProcedure + +Procedure GoogleDrive_UpdateFile(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + NewName = "UpdatedFile.jpg"; + Identifier = FunctionParameters["GD_File"]; + File = FunctionParameters["Picture2"]; // URL, Binary Data or File path + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + Options.Insert("file", File); + Options.Insert("title", NewName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "UpdateFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "UpdateFile", , NewName); + +EndProcedure + +Procedure GoogleDrive_GetFilesList(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Directory = "root"; + NameContains = "data"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("query", NameContains); + Options.Insert("catalog", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetFilesList"); + +EndProcedure + +Procedure GoogleDrive_DeleteObject(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DeleteObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "DeleteObject"); + + For Each Deletable In FunctionParameters["ArrayOfDeletions"] Do + + Result = OPI_GoogleDrive.DeleteObject(Token, Deletable); + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "DeleteObject", "Additional"); + + OPI_Tools.Pause(2); + + EndDo; + +EndProcedure + +Procedure GoogleDrive_GetFileDescription(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetFileDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetFileDescription"); + +EndProcedure + +Procedure GoogleDrive_CreateComment(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + Comment = "Comment text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + Options.Insert("text", Comment); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CreateComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "CreateComment", , FunctionParameters, Comment); + +EndProcedure + +Procedure GoogleDrive_GetComment(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + CommentID = FunctionParameters["GD_Comment"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + Options.Insert("comment", CommentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetComment"); + +EndProcedure + +Procedure GoogleDrive_GetCommentList(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "GetCommentList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "GetCommentList"); + +EndProcedure + +Procedure GoogleDrive_DeleteComment(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GD_File"]; + CommentID = FunctionParameters["GD_Comment"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("object", Identifier); + Options.Insert("comment", CommentID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "DeleteComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "DeleteComment"); + +EndProcedure + +Procedure GoogleDrive_CreateFolder(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Directory = FunctionParameters["GD_Catalog"]; + Name = "TestFolder"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + Options.Insert("catalog", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CreateFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "CreateFolder"); + + CatalogID = Result["id"]; + OPI_GoogleDrive.DeleteObject(Token, CatalogID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gdrive", "CreateFolder", Options); + + OPI_TestDataRetrieval.Process(Result, "GoogleDrive", "CreateFolder", "Root"); + + CatalogID = Result["id"]; + OPI_GoogleDrive.DeleteObject(Token, CatalogID); + +EndProcedure + +#EndRegion // GoogleDrive + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ГД_Авторизация() Export + GD_Authorization(); +EndProcedure + +Procedure ГД_ПолучитьСписокКаталогов() Export + GD_GetCatalogList(); +EndProcedure + +Procedure ГД_ЗагрузитьУдалитьФайл() Export + GD_UploadDeleteFile(); +EndProcedure + +Procedure ГД_СоздатьУдалитьКомментарий() Export + GD_CreateDeleteComment(); +EndProcedure + +Procedure ГД_СоздатьКаталог() Export + GD_CreateCatalog(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GoogleSheets.os b/src/en/OInt/tests/Modules/OPItc_GoogleSheets.os new file mode 100644 index 0000000000..dfeef0eccd --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GoogleSheets.os @@ -0,0 +1,494 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleSheets.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GoogleSheets"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GoogleSheets"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GoogleSheets + +Procedure GT_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); + + GoogleSheets_FormCodeRetrievalLink(TestParameters); + GoogleSheets_GetTokenByCode(TestParameters); + GoogleSheets_RefreshToken(TestParameters); + GoogleSheets_GetServiceAccountToken(TestParameters); + +EndProcedure + +Procedure GT_CreateTable() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + + GoogleSheets_CreateSpreadsheet(TestParameters); + GoogleSheets_GetSpreadsheet(TestParameters); + GoogleSheets_CopySheet(TestParameters); + GoogleSheets_AddSheet(TestParameters); + GoogleSheets_DeleteSheet(TestParameters); + GoogleSheets_EditSpreadsheetTitle(TestParameters); + GoogleSheets_GetTable(TestParameters); + + OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet"]); + OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet2"]); + +EndProcedure + +Procedure GT_FillClearCells() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_Token", TestParameters); + + GoogleSheets_CreateSpreadsheet(TestParameters); + GoogleSheets_SetCellValues(TestParameters); + GoogleSheets_GetCellValues(TestParameters); + GoogleSheets_ClearCells(TestParameters); + + OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet"]); + OPI_GoogleDrive.DeleteObject(TestParameters["Google_Token"], TestParameters["GS_Spreadsheet2"]); + +EndProcedure + +#EndRegion // GoogleSheets + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GoogleSheets + +Procedure GoogleSheets_FormCodeRetrievalLink(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + Options = New Structure; + Options.Insert("id", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "FormCodeRetrievalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "FormCodeRetrievalLink"); + +EndProcedure + +Procedure GoogleSheets_GetTokenByCode(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + Code = FunctionParameters["Google_Code"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("code", Code); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetTokenByCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "GetTokenByCode"); + +EndProcedure + +Procedure GoogleSheets_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + RefreshToken = FunctionParameters["Google_Refresh"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "RefreshToken"); + +EndProcedure + +Procedure GoogleSheets_GetServiceAccountToken(FunctionParameters) + + Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection + + Token = FunctionParameters["Access_Token"]; // SKIP + Data = OPI_HTTPRequests // SKIP + .NewRequest() // SKIP + .Initialize(Data) // SKIP + .AddBearerAuthorization(Token) // SKIP + .ProcessRequest("GET") // SKIP + .ReturnResponseAsBinaryData(); // SKIP + + Scope = New Array; + Scope.Add("https://www.googleapis.com/auth/calendar"); + Scope.Add("https://www.googleapis.com/auth/drive"); + Scope.Add("https://www.googleapis.com/auth/spreadsheets"); + + Options = New Structure; + Options.Insert("auth", Data); + Options.Insert("scope", Scope); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetServiceAccountToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "GetServiceAccountToken"); + +EndProcedure + +Procedure GoogleSheets_CreateSpreadsheet(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Name = "TestTable"; + + SheetArray = New Array; + SheetArray.Add("Sheet1"); + SheetArray.Add("Sheet2"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + Options.Insert("sheets", SheetArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "CreateSpreadsheet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "CreateSpreadsheet", , FunctionParameters, Name, SheetArray); + + Name = "Test table (new.)"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + Options.Insert("sheets", SheetArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "CreateSpreadsheet", Options); + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "CreateSpreadsheet", "Additionally", FunctionParameters, Name); + +EndProcedure + +Procedure GoogleSheets_GetSpreadsheet(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Identifier = FunctionParameters["GS_Spreadsheet"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Identifier); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetSpreadsheet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "GetSpreadsheet"); + +EndProcedure + +Procedure GoogleSheets_CopySheet(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + From = FunctionParameters["GS_Spreadsheet"]; + Target = FunctionParameters["GS_Spreadsheet2"]; + Sheet = FunctionParameters["GS_Sheet"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", From); + Options.Insert("to", Target); + Options.Insert("sheet", Sheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "CopySheet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "CopySheet"); + +EndProcedure + +Procedure GoogleSheets_AddSheet(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + Name = "TestSheet"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "AddSheet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "AddSheet"); + +EndProcedure + +Procedure GoogleSheets_DeleteSheet(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + Sheet = FunctionParameters["GS_Sheet"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("sheet", Sheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "DeleteSheet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "DeleteSheet", , Spreadsheet); + +EndProcedure + +Procedure GoogleSheets_EditSpreadsheetTitle(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + Name = "Test table (changed.)"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "EditSpreadsheetTitle", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "EditSpreadsheetTitle", , Spreadsheet); + +EndProcedure + +Procedure GoogleSheets_GetTable(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetSpreadsheet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "GetTable"); + +EndProcedure + +Procedure GoogleSheets_SetCellValues(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + Sheet = "Sheet2"; + + ValueMapping = New Map; + ValueMapping.Insert("A1", "ThisIsA1"); + ValueMapping.Insert("A2", "ThisIsA2"); + ValueMapping.Insert("B2", "ThisIsB2"); + ValueMapping.Insert("B3", "ThisIsB3"); + ValueMapping.Insert("A3", "ThisIsA3"); + ValueMapping.Insert("A4", "ThisIsA4"); + ValueMapping.Insert("B1", "ThisIsB1"); + ValueMapping.Insert("B4", "ThisIsB4"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("data", ValueMapping); + Options.Insert("sheetname", Sheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "SetCellValues", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "SetCellValues", , ValueMapping.Count()); + +EndProcedure + +Procedure GoogleSheets_GetCellValues(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + Sheet = "Sheet2"; + + CellsArray = New Array; + CellsArray.Add("B2"); + CellsArray.Add("A3"); + CellsArray.Add("B4"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("cells", CellsArray); + Options.Insert("sheetname", Sheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetCellValues", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "GetCellValues", , CellsArray.Count()); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("sheetname", Sheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "GetCellValues", Options); + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "GetCellValues", "All", Spreadsheet); + +EndProcedure + +Procedure GoogleSheets_ClearCells(FunctionParameters) + + Token = FunctionParameters["Google_Token"]; + Spreadsheet = FunctionParameters["GS_Spreadsheet"]; + Sheet = "Sheet2"; + + CellsArray = New Array; + CellsArray.Add("B2"); + CellsArray.Add("A3"); + CellsArray.Add("B4"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("spreadsheet", Spreadsheet); + Options.Insert("cells", CellsArray); + Options.Insert("sheetname", Sheet); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("gsheets", "ClearCells", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleSheets", "ClearCells", , CellsArray.Count()); + +EndProcedure + +#EndRegion // GoogleSheets + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ГТ_Авторизация() Export + GT_Authorization(); +EndProcedure + +Procedure ГТ_СоздатьТаблицу() Export + GT_CreateTable(); +EndProcedure + +Procedure ГТ_ЗаполнитьОчиститьЯчейки() Export + GT_FillClearCells(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GoogleWorkspace.os b/src/en/OInt/tests/Modules/OPItc_GoogleWorkspace.os new file mode 100644 index 0000000000..d7f5ff9031 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GoogleWorkspace.os @@ -0,0 +1,221 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleWorkspace.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GoogleWorkspace"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GoogleWorkspace"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GoogleWorkspace + +Procedure GW_Auth() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ClientSecret", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Code" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_Refresh" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Google_ServiceData" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Access_Token" , TestParameters); + + GoogleWorkspace_FormCodeRetrievalLink(TestParameters); + GoogleWorkspace_GetTokenByCode(TestParameters); + GoogleWorkspace_RefreshToken(TestParameters); + GoogleWorkspace_GetServiceAccountToken(TestParameters); + +EndProcedure + +#EndRegion // GoogleWorkspace + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GoogleWorkspace + +Procedure GoogleWorkspace_FormCodeRetrievalLink(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + Options = New Structure; + Options.Insert("id", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "FormCodeRetrievalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleWorkspace", "FormCodeRetrievalLink"); + +EndProcedure + +Procedure GoogleWorkspace_GetTokenByCode(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + Code = FunctionParameters["Google_Code"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("code", Code); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "GetTokenByCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleWorkspace", "GetTokenByCode"); + +EndProcedure + +Procedure GoogleWorkspace_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["Google_ClientID"]; + ClientSecret = FunctionParameters["Google_ClientSecret"]; + RefreshToken = FunctionParameters["Google_Refresh"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleWorkspace", "RefreshToken"); + +EndProcedure + +Procedure GoogleWorkspace_GetServiceAccountToken(FunctionParameters) + + Data = FunctionParameters["Google_ServiceData"]; // URL, binary Data, file or collection + + Token = FunctionParameters["Access_Token"]; // SKIP + Data = OPI_HTTPRequests // SKIP + .NewRequest() // SKIP + .Initialize(Data) // SKIP + .AddBearerAuthorization(Token) // SKIP + .ProcessRequest("GET") // SKIP + .ReturnResponseAsBinaryData(); // SKIP + + Scope = New Array; + Scope.Add("https://www.googleapis.com/auth/calendar"); + Scope.Add("https://www.googleapis.com/auth/drive"); + Scope.Add("https://www.googleapis.com/auth/spreadsheets"); + + Options = New Structure; + Options.Insert("auth", Data); + Options.Insert("scope", Scope); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("google", "GetServiceAccountToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GoogleWorkspace", "GetServiceAccountToken"); + +EndProcedure + +#EndRegion // GoogleWorkspace + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ГВ_Авторизация() Export + GW_Auth(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GreenAPI.os b/src/en/OInt/tests/Modules/OPItc_GreenAPI.os new file mode 100644 index 0000000000..dcc772730e --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GreenAPI.os @@ -0,0 +1,1592 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GreenAPI.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GreenAPI"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GreenAPI"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GreenAPI + +Procedure GAPI_Account() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + GreenAPI_ArchiveChat(TestParameters); + GreenAPI_UnarchiveChat(TestParameters); + GreenAPI_FormAccessParameters(TestParameters); + GreenAPI_GetInstanceSettings(TestParameters); + GreenAPI_GetAccountInformation(TestParameters); + GreenAPI_GetInstanceSettingsStructure(TestParameters); + GreenAPI_SetInstanceSettings(TestParameters); + GreenAPI_GetInstanceStatus(TestParameters); + GreenAPI_SetProfilePicture(TestParameters); + // !DISABLED! GreenMax_RebootInstance(TestParameters); + // !DISABLED! GreenAPI_GetAuthorizationCode(TestParameters); + // !DISABLED! GreenAPI_LogoutInstance(TestParameters); + // !DISABLED! GreenAPI_GetQR(TestParameters); + +EndProcedure + +Procedure GAPI_GroupManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + GreenAPI_CreateGroup(TestParameters); + GreenAPI_GetGroupInformation(TestParameters); + GreenAPI_UpdateGroupName(TestParameters); + GreenAPI_SetGroupPicture(TestParameters); + GreenAPI_AddGroupMember(TestParameters); + GreenAPI_ExcludeGroupMember(TestParameters); + GreenAPI_SetAdminRights(TestParameters); + GreenAPI_RevokeAdminRights(TestParameters); + GreenAPI_LeaveGroup(TestParameters); + +EndProcedure + +Procedure GAPI_MessageSending() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + GreenAPI_SendTextMessage(TestParameters); + GreenAPI_SendFile(TestParameters); + GreenAPI_SendFileByURL(TestParameters); + GreenAPI_SendPoll(TestParameters); + GreenAPI_SendLocation(TestParameters); + GreenAPI_SendContact(TestParameters); + GreenAPI_ForwardMessages(TestParameters); + GreenAPI_GetLocationDescription(TestParameters); + GreenAPI_GetContactDescription(TestParameters); + GreenAPI_EditMessageText(TestParameters); + GreenAPI_DeleteMessage(TestParameters); + +EndProcedure + +Procedure GAPI_NotificationsReceiving() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_FileMessageID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_DownloadMessageID", TestParameters); + + GreenAPI_GetNotification(TestParameters); + GreenAPI_SetReadMark(TestParameters); + // !DISABLED! GreenAPI_DownloadMessageFile(TestParameters); + GreenAPI_DeleteNotificationFromQueue(TestParameters); + +EndProcedure + +Procedure GAPI_MessageQueue() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); + + GreenAPI_GetMessageQueue(TestParameters); + GreenAPI_ClearMessageQueue(TestParameters); + +EndProcedure + +Procedure GAPI_MessageLogs() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_TestGroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenAPI_MessageID" , TestParameters); + + GreenAPI_GetChatHistory(TestParameters); + GreenAPI_GetMessage(TestParameters); + GreenAPI_GetIncomingMessageLog(TestParameters); + GreenAPI_GetOutgoingMessageLog(TestParameters); + +EndProcedure + +#EndRegion // GreenAPI + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GreenAPI + +Procedure GreenAPI_FormAccessParameters(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "FormAccessParameters"); + +EndProcedure + +Procedure GreenAPI_GetInstanceSettings(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetInstanceSettings", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_GetAccountInformation(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetAccountInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetAccountInformation"); + +EndProcedure + +Procedure GreenAPI_GetInstanceSettingsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetInstanceSettingsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetInstanceSettingsStructure", "Clear"); + +EndProcedure + +Procedure GreenAPI_SetInstanceSettings(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + + SettingsStructure = New Structure; + SettingsStructure.Insert("pollMessageWebhook" , "yes"); + SettingsStructure.Insert("incomingBlockWebhook" , "no"); + SettingsStructure.Insert("incomingCallWebhook" , "no"); + SettingsStructure.Insert("editedMessageWebhook" , "yes"); + SettingsStructure.Insert("deletedMessageWebhook" , "yes"); + SettingsStructure.Insert("outgoingAPIMessageWebhook", "yes"); + + Options = New Structure; + Options.Insert("settings", SettingsStructure); + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetInstanceSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SetInstanceSettings"); + +EndProcedure + +Procedure GreenAPI_GetInstanceStatus(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetInstanceStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetInstanceStatus"); + +EndProcedure + +Procedure GreenAPI_RebootInstance(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "RebootInstance", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "RebootInstance"); + +EndProcedure + +Procedure GreenAPI_GetQR(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetQR", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetQR"); + +EndProcedure + +Procedure GreenAPI_LogoutInstance(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "LogoutInstance", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "LogoutInstance"); + +EndProcedure + +Procedure GreenAPI_GetAuthorizationCode(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + PhoneNumber = 441234567890; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("phone", PhoneNumber); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetAuthorizationCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetAuthorizationCode"); + +EndProcedure + +Procedure GreenAPI_SetProfilePicture(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetProfilePicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SetProfilePicture"); + +EndProcedure + +Procedure GreenAPI_CreateGroup(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Name = "New group"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "CreateGroup", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "CreateGroup", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_LeaveGroup(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "LeaveGroup", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "LeaveGroup"); + +EndProcedure + +Procedure GreenAPI_GetGroupInformation(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetGroupInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetGroupInformation"); + +EndProcedure + +Procedure GreenAPI_UpdateGroupName(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + Name = "New name"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "UpdateGroupName", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "UpdateGroupName"); + +EndProcedure + +Procedure GreenAPI_AddGroupMember(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + UserID = "123123123@c.us"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "AddGroupMember", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "AddGroupMember"); + +EndProcedure + +Procedure GreenAPI_ExcludeGroupMember(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + UserID = "123123123@c.us"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ExcludeGroupMember", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "ExcludeGroupMember"); + +EndProcedure + +Procedure GreenAPI_SetAdminRights(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + UserID = "123123123@c.us"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetAdminRights", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SetAdminRights"); + +EndProcedure + +Procedure GreenAPI_RevokeAdminRights(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + GroupID = FunctionParameters["GreenAPI_GroupID"]; + UserID = "123123123@c.us"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "RevokeAdminRights", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "RevokeAdminRights"); + +EndProcedure + +Procedure GreenAPI_SetGroupPicture(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + GroupID = FunctionParameters["GreenAPI_GroupID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("group", GroupID); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetGroupPicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SetGroupPicture"); + +EndProcedure + +Procedure GreenAPI_SendTextMessage(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + Text = "New message"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendTextMessage", , FunctionParameters); + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("quoted", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendTextMessage", "Quote"); + +EndProcedure + +Procedure GreenAPI_DeleteMessage(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + MessageID = FunctionParameters["GreenAPI_MessageID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "DeleteMessage"); + +EndProcedure + +Procedure GreenAPI_EditMessageText(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + MessageID = FunctionParameters["GreenAPI_MessageID"]; + Text = "New message text"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "EditMessageText", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "EditMessageText"); + +EndProcedure + +Procedure GreenAPI_SendFile(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + File = FunctionParameters["Picture"]; // URL, Path or Binary Data + FileName = "photo.jpg"; + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + Description = "File description"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendFile", , FunctionParameters); + + File = FunctionParameters["Video"]; + FileName = "vid.mp4"; + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + Options.Insert("quoted", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendFile", "Quote"); + +EndProcedure + +Procedure GreenAPI_SendFileByURL(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + File = FunctionParameters["Picture"]; + FileName = "photo.jpg"; + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + Description = "File description"; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("url", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFileByURL", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendFileByURL", , FunctionParameters); + + File = FunctionParameters["Video"]; + FileName = "vid.mp4"; + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("url", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + Options.Insert("quoted", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendFileByURL", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendFileByURL", "Quote"); + +EndProcedure + +Procedure GreenAPI_SendPoll(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + Text = "What's your favorite color??"; + + Variants = New Array; + Variants.Add("Red"); + Variants.Add("Yellow"); + Variants.Add("Green"); + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("options", Variants); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendPoll", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendPoll", , FunctionParameters); + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("options", Variants); + Options.Insert("multi", Истина); + Options.Insert("quoted", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendPoll", "Quote"); + +EndProcedure + +Procedure GreenAPI_GetLocationDescription(FunctionParameters) + + Latitude = 53.908522; + Longitude = 27.574821; + Address = "Victory Square, Minsk"; + Name = "Victory sq."; + + Options = New Structure; + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + Options.Insert("addr", Address); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetLocationDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetLocationDescription"); + +EndProcedure + +Procedure GreenAPI_SendLocation(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + + Latitude = 53.908522; + Longitude = 27.574821; + Address = "Victory Square, Minsk"; + Name = "Victory sq."; + + Options = New Structure; + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + Options.Insert("addr", Address); + Options.Insert("name", Name); + + Location = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetLocationDescription", Options); + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("loc", Location); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendLocation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendLocation", , FunctionParameters); + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + + Location = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetLocationDescription", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("loc", Location); + Options.Insert("quoted", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendLocation", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendLocation", "Quote"); + +EndProcedure + +Procedure GreenAPI_GetContactDescription(FunctionParameters) + + Phone = 79001234568; + Name = "Artem"; + LastName = "Evpatoriysky"; + Patronymic = "Petrovich"; + Company = "Bicycle"; + + Options = New Structure; + Options.Insert("phone", Phone); + Options.Insert("name", Name); + Options.Insert("surname", LastName); + Options.Insert("midname", Patronymic); + Options.Insert("company", Company); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetContactDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetContactDescription"); + +EndProcedure + +Procedure GreenAPI_SendContact(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + + Phone = 79001234568; + Name = "Artem"; + LastName = "Evpatoriysky"; + Patronymic = "Petrovich"; + Company = "Bicycle"; + + Options = New Structure; + Options.Insert("phone", Phone); + Options.Insert("name", Name); + Options.Insert("surname", LastName); + Options.Insert("midname", Patronymic); + Options.Insert("company", Company); + + Contact = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetContactDescription", Options); + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("contact", Contact); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendContact", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendContact", , FunctionParameters); + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("phone", Phone); + Options.Insert("company", Company); + + Contact = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetContactDescription", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("contact", Contact); + Options.Insert("quoted", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SendContact", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SendContact", "Quote"); + +EndProcedure + +Procedure GreenAPI_ForwardMessages(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + From = "11001234567@c.us"; + From = FunctionParameters["GreenAPI_TestGroupID"]; // SKIP + Target = FunctionParameters["GreenAPI_TestGroupID"]; + + Message = FunctionParameters["GreenAPI_MessageID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("from", From); + Options.Insert("to", Target); + Options.Insert("msgs", Message); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ForwardMessages", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "ForwardMessages"); + +EndProcedure + +Procedure GreenAPI_GetNotification(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetNotification", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_DeleteNotificationFromQueue(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ReceiptID = FunctionParameters["GreenAPI_ReceiptID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("receipt", ReceiptID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "DeleteNotificationFromQueue", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "DeleteNotificationFromQueue"); + +EndProcedure + +Procedure GreenAPI_DownloadMessageFile(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + MessageID = FunctionParameters["GreenAPI_FileMessageID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "DownloadMessageFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "DownloadMessageFile"); + +EndProcedure + +Procedure GreenAPI_SetReadMark(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + MessageID = FunctionParameters["GreenAPI_FileMessageID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "SetReadMark", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "SetReadMark"); + +EndProcedure + +Procedure GreenAPI_GetMessageQueue(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetMessageQueue", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetMessageQueue"); + +EndProcedure + +Procedure GreenAPI_ClearMessageQueue(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ClearMessageQueue", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "ClearMessageQueue"); + +EndProcedure + +Procedure GreenAPI_GetChatHistory(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetChatHistory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetChatHistory", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_GetMessage(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + MessageID = FunctionParameters["GreenAPI_MessageID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("msg", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetMessage", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_GetIncomingMessageLog(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetIncomingMessageLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetIncomingMessageLog", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_GetOutgoingMessageLog(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "GetOutgoingMessageLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "GetOutgoingMessageLog", , FunctionParameters); + +EndProcedure + +Procedure GreenAPI_ArchiveChat(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + + OPI_GreenAPI.UnarchiveChat(AccessParameters, ChatID); // SKIP + + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "ArchiveChat", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "ArchiveChat"); + +EndProcedure + +Procedure GreenAPI_UnarchiveChat(FunctionParameters) + + ApiUrl = FunctionParameters["GreenAPI_ApiURL"]; + MediaUrl = FunctionParameters["GreenAPI_MediaURL"]; + IdInstance = FunctionParameters["GreenAPI_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenAPI_Token"]; + + ChatID = FunctionParameters["GreenAPI_TestGroupID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenapi", "UnarchiveChat", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenAPI", "UnarchiveChat"); + +EndProcedure + +#EndRegion // GreenAPI + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure GAPI_Аккаунт() Export + GAPI_Account(); +EndProcedure + +Procedure GAPI_УправлениеГруппами() Export + GAPI_GroupManagement(); +EndProcedure + +Procedure GAPI_ОтправкаСообщений() Export + GAPI_MessageSending(); +EndProcedure + +Procedure GAPI_ПолучениеУведомлений() Export + GAPI_NotificationsReceiving(); +EndProcedure + +Procedure GAPI_ОчередьСообщений() Export + GAPI_MessageQueue(); +EndProcedure + +Procedure GAPI_ЖурналыСообщений() Export + GAPI_MessageLogs(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_GreenMax.os b/src/en/OInt/tests/Modules/OPItc_GreenMax.os new file mode 100644 index 0000000000..57144621c3 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_GreenMax.os @@ -0,0 +1,1532 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GreenMax.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("GreenMax"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("GreenMax"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region GreenMax + +Procedure GMax_Account() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); + //OPI_TestDataRetrieval.ParameterToCollection("GreenMax_TestGroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + GreenMax_FormAccessParameters(TestParameters); + // !DISABLED! GreenMax_LogoutInstance(TestParameters); + // !DISABLED! GreenMax_GetAuthorizationCode(TestParameters); + // !DISABLED! GreenMax_SendAuthorizationCode(TestParameters); + GreenMax_GetInstanceStatus(TestParameters); + GreenMax_GetInstanceSettings(TestParameters); + GreenMax_SetInstanceSettings(TestParameters); + GreenMax_GetInstanceSettingsStructure(TestParameters); + GreenMax_SetProfilePicture(TestParameters); + GreenMax_GetAccountInformation(TestParameters); + GreenMax_CheckAccount(TestParameters); + GreenMax_GetContactList(TestParameters); + GreenMax_GetContactInformation(TestParameters); + GreenMax_GetChatList(TestParameters); + GreenMax_GetChatAvatar(TestParameters); + GreenMax_RebootInstance(TestParameters); + +EndProcedure + +Procedure GMax_GroupManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MainGroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture3" , TestParameters); + + GreenMax_GetContactList(TestParameters); + OPI_Tools.Pause(1); + GreenMax_CreateGroup(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetGroupInformation(TestParameters); + OPI_Tools.Pause(1); + GreenMax_UpdateGroupName(TestParameters); + OPI_Tools.Pause(1); + GreenMax_ChangeGroupSettings(TestParameters); + OPI_Tools.Pause(1); + GreenMax_SetAdminRights(TestParameters); + OPI_Tools.Pause(1); + GreenMax_RevokeAdminRights(TestParameters); + OPI_Tools.Pause(1); + GreenMax_RemoveGroupMember(TestParameters); + OPI_Tools.Pause(1); + GreenMax_AddGroupMember(TestParameters); + OPI_Tools.Pause(1); + GreenMax_SetGroupPicture(TestParameters); + OPI_Tools.Pause(1); + GreenMax_LeaveGroup(TestParameters); + GreenMax_GetGroupSettingsStructure(TestParameters); + +EndProcedure + +Procedure GMax_MessageSending() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + GreenMax_GetContactList(TestParameters); + OPI_Tools.Pause(1); + GreenMax_CreateGroup(TestParameters); + OPI_Tools.Pause(1); + GreenMax_SendTextMessage(TestParameters); + OPI_Tools.Pause(1); + GreenMax_SendFile(TestParameters); + OPI_Tools.Pause(1); + GreenMax_SendFileByURL(TestParameters); + OPI_Tools.Pause(1); + GreenMax_RemoveGroupMember(TestParameters); + OPI_Tools.Pause(1); + GreenMax_LeaveGroup(TestParameters); + OPI_Tools.Pause(1); + +EndProcedure + +Procedure GMax_Notifications() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); + + GreenMax_GetNotification(TestParameters); + GreenMax_DeleteNotification(TestParameters); + +EndProcedure + +Procedure GMax_MessageHistory() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MainGroupID", TestParameters); + + GreenMax_MarkMessagesAsRead(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetChatMessageHistory(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetChatMessage(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetIncomingMessageLog(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetOutgoingMessageLog(TestParameters); + OPI_Tools.Pause(1); + +EndProcedure + +Procedure GMax_Queues() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_ApiURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MediaURL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_IdInstance" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_Phone" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_AccountID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GreenMax_MainGroupID", TestParameters); + + GreenMax_GetOutgoingMessageCount(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetOutgoingMessageQueue(TestParameters); + OPI_Tools.Pause(1); + GreenMax_ClearOutgoingMessageQueue(TestParameters); + OPI_Tools.Pause(1); + GreenMax_GetIncomingNotificationCount(TestParameters); + OPI_Tools.Pause(1); + GreenMax_ClearIncomingNotificationQueue(TestParameters); + OPI_Tools.Pause(1); + +EndProcedure + +#EndRegion // GreenMax + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region GreenMax + +Procedure GreenMax_FormAccessParameters(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "FormAccessParameters"); + +EndProcedure + +Procedure GreenMax_GetAuthorizationCode(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + PhoneNumber = 441234567890; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("phone", PhoneNumber); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetAuthorizationCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetAuthorizationCode"); + +EndProcedure + +Procedure GreenMax_LogoutInstance(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "LogoutInstance", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "LogoutInstance"); + +EndProcedure + +Procedure GreenMax_SendAuthorizationCode(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + AuthCode = 123456; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("code", AuthCode); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendAuthorizationCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SendAuthorizationCode"); + +EndProcedure + +Procedure GreenMax_GetInstanceStatus(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceStatus", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetInstanceStatus"); + +EndProcedure + +Procedure GreenMax_RebootInstance(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "RebootInstance", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "RebootInstance"); + +EndProcedure + +Procedure GreenMax_GetInstanceSettingsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetInstanceSettingsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenMAx", "GetInstanceSettingsStructure", "Clear"); + +EndProcedure + +Procedure GreenMax_GetInstanceSettings(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetInstanceSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetInstanceSettings", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_SetInstanceSettings(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + + SettingsStructure = New Structure; + SettingsStructure.Insert("markIncomingMessagesReaded" , "no"); + SettingsStructure.Insert("outgoingWebhook" , "no"); + SettingsStructure.Insert("outgoingAPIMessageWebhook" , "yes"); + + Options = New Structure; + Options.Insert("settings", SettingsStructure); + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetInstanceSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SetInstanceSettings"); + +EndProcedure + +Procedure GreenMax_SetProfilePicture(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetProfilePicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SetProfilePicture"); + +EndProcedure + +Procedure GreenMax_GetAccountInformation(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetAccountInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetAccountInformation"); + +EndProcedure + +Procedure GreenMax_CheckAccount(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + PhoneNumber = 441234567890; + PhoneNumber = FunctionParameters["GreenMax_Phone"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("phone", PhoneNumber); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "CheckAccount", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "CheckAccount", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_GetContactList(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Count = 1; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("count", Count); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetContactList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetContactList", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_GetContactInformation(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ContactID = 87654321; + ContactID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ContactID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetContactInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetContactInformation"); + +EndProcedure + +Procedure GreenMax_GetChatList(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetChatList"); + +EndProcedure + +Procedure GreenMax_GetChatAvatar(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 87654321; + ChatID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatAvatar", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetChatAvatar"); + +EndProcedure + +Procedure GreenMax_CreateGroup(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + UserID = 87654321; + Name = "New group"; + + UserID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("name", Name); + Options.Insert("members", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "CreateGroup", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "CreateGroup", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_AddGroupMember(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + MemberID = 87654321; + + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("member", MemberID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "AddGroupMember", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "AddGroupMember"); + + GreenMax_RemoveGroupMember(FunctionParameters); + +EndProcedure + +Procedure GreenMax_RemoveGroupMember(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + MemberID = 87654321; + + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("member", MemberID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "RemoveGroupMember", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "RemoveGroupMember"); + +EndProcedure + +Procedure GreenMax_LeaveGroup(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "LeaveGroup", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "LeaveGroup"); + +EndProcedure + +Procedure GreenMax_UpdateGroupName(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Name = "New group name"; + ChatID = 12345678; + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "UpdateGroupName", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "UpdateGroupName"); + +EndProcedure + +Procedure GreenMax_GetGroupInformation(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetGroupInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetGroupInformation"); + +EndProcedure + +Procedure GreenMax_ChangeGroupSettings(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Settings = New Structure; + Settings.Insert("allowParticipantsEditGroupSettings" , True); + Settings.Insert("allowParticipantsPinMessages" , False); + Settings.Insert("allowParticipantsAddMembers" , False); + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("set", Settings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "ChangeGroupSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "ChangeGroupSettings"); + +EndProcedure + +Procedure GreenMax_GetGroupSettingsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetGroupSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetGroupSettingsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetGroupSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetGroupSettingsStructure", "Clear"); + +EndProcedure + +Procedure GreenMax_SetAdminRights(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + MemberID = 87654321; + + ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP + MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("member", MemberID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetAdminRights", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SetAdminRights"); + +EndProcedure + +Procedure GreenMax_RevokeAdminRights(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + MemberID = 87654321; + + ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP + MemberID = FunctionParameters["GreenMax_ContactID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("member", MemberID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "RevokeAdminRights", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "RevokeAdminRights"); + +EndProcedure + +Procedure GreenMax_SetGroupPicture(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Image = FunctionParameters["Picture3"]; // URL, Path or Binary Data + ChatID = 12345678; + + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SetGroupPicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SetGroupPicture"); + +EndProcedure + +Procedure GreenMax_SendTextMessage(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Text = "Message text"; + ChatID = 12345678; + Set = 2000; + + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("typing", Set); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SendTextMessage", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_SendFile(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + File = FunctionParameters["Picture"]; // URL, Path or Binary Data + FileName = "photo.jpg"; + ChatID = 12345678; + Description = "File description"; + + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SendFile", , FunctionParameters); + + File = FunctionParameters["Video"]; + FileName = "vid.mp4"; + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + Options.Insert("typing", 1000); + Options.Insert("ttype", "video"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SendFile", "Video"); + +EndProcedure + +Procedure GreenMax_SendFileByURL(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + File = FunctionParameters["Picture"]; + FileName = "photo.jpg"; + ChatID = 12345678; + Description = "File description"; + + ChatID = FunctionParameters["GreenMax_GroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("url", File); + Options.Insert("filename", FileName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFileByURL", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SendFileByURL"); + + File = FunctionParameters["Video"]; + FileName = "vid.mp4"; + + MessageID = Result["idMessage"]; + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("url", File); + Options.Insert("filename", FileName); + Options.Insert("caption", Description); + Options.Insert("typing", 1000); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "SendFileByURL", Options); + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "SendFileByURL", "Typing"); + +EndProcedure + +Procedure GreenMax_GetNotification(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetNotification", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_DeleteNotification(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + NotificationID = FunctionParameters["GreenMax_ReceiptID"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("id", NotificationID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "DeleteNotification", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "DeleteNotification", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_MarkMessagesAsRead(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + + ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "MarkMessagesAsRead", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "MarkMessagesAsRead"); + +EndProcedure + +Procedure GreenMax_GetChatMessageHistory(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + Count = 3; + + ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("count", Count); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatMessageHistory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetChatMessageHistory", , FunctionParameters); + +EndProcedure + +Procedure GreenMax_GetChatMessage(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + ChatID = 12345678; + MessageID = FunctionParameters["GreenMax_MainMessageID"]; + + ChatID = FunctionParameters["GreenMax_MainGroupID"]; // SKIP + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetChatMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetChatMessage", , MessageID); + +EndProcedure + +Procedure GreenMax_GetIncomingMessageLog(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Period = 30; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("span", Period); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetIncomingMessageLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetIncomingMessageLog"); + +EndProcedure + +Procedure GreenMax_GetOutgoingMessageLog(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Period = 30; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + Options.Insert("span", Period); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetOutgoingMessageLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetOutgoingMessageLog"); + +EndProcedure + +Procedure GreenMax_GetOutgoingMessageCount(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetOutgoingMessageCount", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetOutgoingMessageCount"); + +EndProcedure + +Procedure GreenMax_GetOutgoingMessageQueue(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetOutgoingMessageQueue", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetOutgoingMessageQueue"); + +EndProcedure + +Procedure GreenMax_ClearOutgoingMessageQueue(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "ClearOutgoingMessageQueue", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "ClearOutgoingMessageQueue"); + +EndProcedure + +Procedure GreenMax_GetIncomingNotificationCount(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "GetIncomingNotificationCount", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "GetIncomingNotificationCount"); + +EndProcedure + +Procedure GreenMax_ClearIncomingNotificationQueue(FunctionParameters) + + ApiUrl = FunctionParameters["GreenMax_ApiURL"]; + MediaUrl = FunctionParameters["GreenMax_MediaURL"]; + IdInstance = FunctionParameters["GreenMax_IdInstance"]; + ApiTokenInstance = FunctionParameters["GreenMax_Token"]; + + Options = New Structure; + Options.Insert("api", ApiUrl); + Options.Insert("media", MediaUrl); + Options.Insert("id", IdInstance); + Options.Insert("token", ApiTokenInstance); + + AccessParameters = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "FormAccessParameters", Options); + Options = New Structure; + Options.Insert("access", AccessParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("greenmax", "ClearIncomingNotificationQueue", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "GreenMax", "ClearIncomingNotificationQueue"); + +EndProcedure + +#EndRegion // GreenMax + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure GMax_Аккаунт() Export + GMax_Account(); +EndProcedure + +Procedure GMax_РаботаСГруппами() Export + GMax_GroupManagement(); +EndProcedure + +Procedure GMax_ОтправкаСообщений() Export + GMax_MessageSending(); +EndProcedure + +Procedure GMax_Уведомления() Export + GMax_Notifications(); +EndProcedure + +Procedure GMax_ИсторияСообщений() Export + GMax_MessageHistory(); +EndProcedure + +Procedure GMax_Очереди() Export + GMax_Queues(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_HTTP.os b/src/en/OInt/tests/Modules/OPItc_HTTP.os new file mode 100644 index 0000000000..ac24b9c2c4 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_HTTP.os @@ -0,0 +1,1392 @@ +// OneScript: ./OInt/tests/Modules/OPItc_HTTP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("HTTP"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("HTTP"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region HTTP + +Procedure HTTP_Initialization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL" , TestParameters); + + HTTP_Initialize(TestParameters); + HTTP_SetURL(TestParameters); + HTTP_SetURLParams(TestParameters); + HTTP_SetResponseFile(TestParameters); + HTTP_SetDataType(TestParameters); + HTTP_GetLog(TestParameters); + HTTP_SetProxy(TestParameters); + HTTP_SetTimeout(TestParameters); + +EndProcedure + +Procedure HTTP_BodySet() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + HTTP_SetBinaryBody(TestParameters); + HTTP_SetStringBody(TestParameters); + HTTP_SetJsonBody(TestParameters); + HTTP_SetFormBody(TestParameters); + HTTP_StartMultipartBody(TestParameters); + HTTP_AddMultipartFormDataField(TestParameters); + HTTP_AddMultipartFormDataFile(TestParameters); + HTTP_AddDataAsRelated(TestParameters); + +EndProcedure + +Procedure HTTP_Settings() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + HTTP_UseEncoding(TestParameters); + HTTP_UseGzipCompression(TestParameters); + HTTP_UseBodyFiledsAtOAuth(TestParameters); + HTTP_UseURLEncoding(TestParameters); + HTTP_SplitArraysInURL(TestParameters); + HTTP_MaxRedirects(TestParameters); + HTTP_MaxAttempts(TestParameters); + HTTP_ReturnSettings(TestParameters); + +EndProcedure + +Procedure HTTP_HeadersSetting() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); + + HTTP_SetHeaders(TestParameters); + HTTP_AddHeader(TestParameters); + +EndProcedure + +Procedure HTTP_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); + + HTTP_AddBasicAuthorization(TestParameters); + HTTP_AddBearerAuthorization(TestParameters); + HTTP_AddAWS4Authorization(TestParameters); + HTTP_AddOAuthV1Authorization(TestParameters); + HTTP_SetOAuthV1Algorithm(TestParameters); + +EndProcedure + +Procedure HTTP_RequestProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + HTTP_ProcessRequest(TestParameters); + HTTP_ExecuteRequest(TestParameters); + HTTP_ReturnRequest(TestParameters); + HTTP_ReturnConnection(TestParameters); + HTTP_SendDataInParts(TestParameters); + HTTP_SendPart(TestParameters); + +EndProcedure + +Procedure HTTP_ResponseReceiving() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("HTTP_URL", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + HTTP_ReturnResponse(TestParameters); + HTTP_ReturnResponseAsJSONObject(TestParameters); + HTTP_ReturnResponseAsBinaryData(TestParameters); + HTTP_ReturnResponseAsString(TestParameters); + HTTP_ReturnResponseFilename(TestParameters); + +EndProcedure + +#EndRegion + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region HTTP + +Procedure HTTP_Initialize(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests + .NewRequest() + .Initialize(URL) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "Initialize"); + + HTTPClient = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .ProcessRequest("POST", False); + + OPI_TestDataRetrieval.Process(HTTPClient, "HTTP", "Initialize", "Check 1", FunctionParameters); + + AnotherRequest = HTTPClient.SetURL(FunctionParameters["HTTP_URL"] + "/post") + .ProcessRequest("POST", False) + .ReturnRequest(); + + OPI_TestDataRetrieval.Process(AnotherRequest, "HTTP", "Initialize", "Check 2"); + +EndProcedure + +Procedure HTTP_SetURL(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetURL"); + + HTTPClient = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("POST", False); + + OPI_TestDataRetrieval.Process(HTTPClient, "HTTP", "SetURL", "Check", FunctionParameters); + +EndProcedure + +Procedure HTTP_SetURLParams(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ParametersStructure = New Structure("param1,param2", "text", 10); + + Result = OPI_HTTPRequests + .NewRequest() + .Initialize(URL) + .SetURLParams(ParametersStructure) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetURLParams", , FunctionParameters); + + HTTPClient = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetURLParams(ParametersStructure) + .ProcessRequest("POST", False); + + HTTPRequest = HTTPClient.ReturnRequest(); + + OPI_TestDataRetrieval.Process(HTTPRequest, "HTTP", "SetURLParams", "Check"); + + // Encoding check + + // Complex + + ParameterStructure1 = New Structure; + ParameterStructure1.Insert("param1", "search?text"); + ParameterStructure1.Insert("param2", "John Doe"); + ParameterStructure1.Insert("param3", "value&another"); + ParameterStructure1.Insert("param4", "кириллица"); + ParameterStructure1.Insert("param5", ""); + + ResourceAddress1 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParameterStructure1) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress1, "HTTP", "SetURLParams", "Option 1"); + + ParameterStructure2 = New Structure; + ParameterStructure2.Insert("param1", "search?text"); + ParameterStructure2.Insert("param2", "John Doe"); + + // Parameters in the original URL + + ResourceAddress2 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page?existing=value") + .SetURLParams(ParameterStructure2) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress2, "HTTP", "SetURLParams", "Option 2"); + + // Empty parameter string + + ParameterStructure3 = New Structure; + ParameterStructure3.Insert("param1", "search?text"); + ParameterStructure3.Insert("param2", "John Doe"); + + ResourceAddress3 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page?") + .SetURLParams(ParameterStructure3) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress3, "HTTP", "SetURLParams", "Variant 3"); + + // Special characters at path + + ParameterStructure4 = New Structure; + ParameterStructure4.Insert("param1", "search?text"); + ParameterStructure4.Insert("param2", "John Doe"); + + ResourceAddress4 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/path with spaces") + .SetURLParams(ParameterStructure4) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress4, "HTTP", "SetURLParams", "Variant 4"); + + // URL with a snippet + + ParameterStructure5 = New Structure; + ParameterStructure5.Insert("param1", "search?text"); + ParameterStructure5.Insert("param2", "John Doe"); + + ResourceAddress5 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page#section") + .SetURLParams(ParameterStructure5) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress5, "HTTP", "SetURLParams", "Variant 5"); + + // Cyrillic at path + + ParameterStructure6 = New Structure; + ParameterStructure6.Insert("param1", "search?text"); + ParameterStructure6.Insert("param2", "John Doe"); + + ResourceAddress6 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/путь") + .SetURLParams(ParameterStructure6) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress6, "HTTP", "SetURLParams", "Variant 6"); + + // Multiple parameters and encoding + + ParameterStructure7 = New Structure; + ParameterStructure7.Insert("param1", "value1"); + ParameterStructure7.Insert("param2", "value two"); + ParameterStructure7.Insert("param3", "value"); + + ResourceAddress7 = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParameterStructure7) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + OPI_TestDataRetrieval.Process(ResourceAddress7, "HTTP", "SetURLParams", "Variant 7"); + +EndProcedure + +Procedure HTTP_SetResponseFile(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + TFN = GetTempFileName(); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetResponseFile(TFN) // <--- + .ProcessRequest("GET") + .ReturnResponseFilename(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetResponseFile", , TFN); + + CheckResult = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetResponseFile(TFN) // <--- + .ProcessRequest("GET") + .ReturnResponseAsBinaryData(); + + OPI_TestDataRetrieval.Process(CheckResult, "HTTP", "SetResponseFile", "Body", TFN); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure HTTP_SetDataType(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + MIMEType = "text/markdown"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetStringBody("# Hello world!!") + .SetDataType(MIMEType) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetDataType"); + +EndProcedure + +Procedure HTTP_GetLog(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ParametersStructure = New Structure("param1,param2", "text", 10); + + HTTPClient = OPI_HTTPRequests + .NewRequest() + .Initialize(URL) + .SetURLParams(ParametersStructure) + .ProcessRequest("GET"); + + Response = HTTPClient.ReturnResponseAsJSONObject(); + Log = HTTPClient.GetLog(True); + + // END + + OPI_TestDataRetrieval.Process(Log, "HTTP", "GetLog"); + +EndProcedure + +Procedure HTTP_SetBinaryBody(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetBinaryBody", , Image); + +EndProcedure + +Procedure HTTP_SetStringBody(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Text = "Hello world!!"; + Encoding = "Windows-1251"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .UseEncoding(Encoding) + .SetStringBody(Text) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetStringBody"); + +EndProcedure + +Procedure HTTP_SetJsonBody(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + RandomArray = New Array; + RandomArray.Add("A"); + RandomArray.Add("B"); + RandomArray.Add("C"); + + Data = New Structure("Field1,Field2,Field3", 10, "Text", RandomArray); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetJsonBody(Data) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetJsonBody", , Data); + +EndProcedure + +Procedure HTTP_SetFormBody(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Data = New Structure("Field1,Field2", "10", "Text"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetFormBody(Data) // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetFormBody", , Data); + +EndProcedure + +Procedure HTTP_StartMultipartBody(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody() // <--- + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("Field1", "Text") + .AddMultipartFormDataField("Field2", "10") + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "StartMultipartBody", , Image); + +EndProcedure + +Procedure HTTP_AddMultipartFormDataFile(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") // <--- + .AddMultipartFormDataField("Field1", "Text") + .AddMultipartFormDataField("Field2", "10") + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddMultipartFormDataFile", , Image); + +EndProcedure + +Procedure HTTP_AddMultipartFormDataField(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("Field1", "Text") // <--- + .AddMultipartFormDataField("Field2", "10") // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddMultipartFormDataField", , Image); + +EndProcedure + +Procedure HTTP_AddDataAsRelated(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + RandomArray = New Array; + RandomArray.Add("A"); + RandomArray.Add("B"); + RandomArray.Add("C"); + + Data = New Structure("Field1,Field2,Field3", 10, "Text", RandomArray); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .StartMultipartBody(True, "related") + .AddDataAsRelated(Data, "application/json; charset=UTF-8") // <--- + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddDataAsRelated"); + +EndProcedure + +Procedure HTTP_UseEncoding(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Text = "Hello world!!"; + Encoding = "Windows-1251"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .UseEncoding(Encoding) // <--- + .SetStringBody(Text) + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseEncoding"); + +EndProcedure + +Procedure HTTP_UseGzipCompression(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .UseGzipCompression(False) // <--- + .ProcessRequest("POST", False) + .ReturnRequest(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseGzipCompression"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .UseGzipCompression(True) // <--- + .ProcessRequest("POST", False) + .ReturnRequest(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseGzipCompression", "Enabled"); + +EndProcedure + +Procedure HTTP_UseBodyFiledsAtOAuth(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Token = "***"; + Secret = "***"; + UsersKey = "***"; + UsersSecret = "***"; + Version = "1.0"; + + NewRequest = OPI_HTTPRequests.NewRequest().Initialize(URL); + + Result = NewRequest + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("field1", "Text") + .AddMultipartFormDataField("field2", "10") + .UseBodyFiledsAtOAuth(False) // <--- + .AddOauthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); + + // END + + LogAsString = NewRequest.GetLog(True); + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseBodyFiledsAtOAuth", , LogAsString); + + Result = OPI_HTTPRequests + .NewRequest() + .Initialize(URL) + .StartMultipartBody() + .AddMultipartFormDataFile("file1", "pic.png", Image, "image/png") + .AddMultipartFormDataField("field1", "Text") + .AddMultipartFormDataField("field2", "10") + .UseBodyFiledsAtOAuth(True) // <--- + .AddOauthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) + .ProcessRequest("POST", False) + .GetLog(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseBodyFiledsAtOAuth", "Enabled"); + +EndProcedure + +Procedure HTTP_SetHeaders(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Headers = New Map; + Headers.Insert("X-Header1", "Value1"); + Headers.Insert("X-Header2", "Value2"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetHeaders(Headers) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetHeaders"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("1111") + .SetHeaders(Headers, True) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetHeaders", "Rewrite"); + +EndProcedure + +Procedure HTTP_AddHeader(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddHeader("X-Header1", "Value1") // <--- + .AddHeader("X-Header2", "Value2") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddHeader"); + + Headers = New Map; + Headers.Insert("X-Header1", "Value1"); + Headers.Insert("X-Header2", "Value2"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("1111") + .AddHeader("X-Header3", "BadValue") // <--- + .AddHeader("X-Header4", "BadValue") + .SetHeaders(Headers, True) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddHeader", "Replace"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("1111") + .AddHeader("X-Header3", "BadValue") // <--- + .AddHeader("X-Header4", "BadValue") + .SetHeaders(Headers) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddHeader", "Addition"); + +EndProcedure + +Procedure HTTP_AddBasicAuthorization(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBasicAuthorization("user", "password") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddBasicAuthorization"); + +EndProcedure + +Procedure HTTP_AddBearerAuthorization(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization("123123") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddBearerAuthorization"); + +EndProcedure + +Procedure HTTP_AddAWS4Authorization(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + AccessKey = "AccessKey"; + SecretKey = "SecretKey"; + Region = "Region"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddAWS4Authorization(AccessKey, SecretKey, Region) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddAWS4Authorization"); + +EndProcedure + +Procedure HTTP_AddOAuthV1Authorization(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Token = "***"; + Secret = "***"; + UsersKey = "***"; + UsersSecret = "***"; + Version = "1.0"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .AddOAuthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "AddOAuthV1Authorization"); + +EndProcedure + +Procedure HTTP_SetOAuthV1Algorithm(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Token = "***"; + Secret = "***"; + UsersKey = "***"; + UsersSecret = "***"; + Version = "1.0"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .AddOAuthV1Authorization(Token, Secret, UsersKey, UsersSecret, Version) + .SetOAuthV1Algorithm("HMAC", "SHA1") // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetOAuthV1Algorithm"); + +EndProcedure + +Procedure HTTP_ProcessRequest(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET") // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ProcessRequest"); + +EndProcedure + +Procedure HTTP_ExecuteRequest(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ExecuteRequest() // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ExecuteRequest"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ReturnResponse(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ExecuteRequest", "No execution"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ExecuteRequest() + .ReturnResponse(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ExecuteRequest", "Execution"); + +EndProcedure + +Procedure HTTP_ReturnRequest(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ReturnRequest(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnRequest"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ReturnRequest(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnRequest", "Forced"); + +EndProcedure + +Procedure HTTP_ReturnConnection(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ProcessRequest("GET", False) + .ReturnConnection(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnConnection"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .ReturnConnection(True); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnConnection", "Forced"); + +EndProcedure + +Procedure HTTP_ReturnResponse(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponse(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponse"); + +EndProcedure + +Procedure HTTP_ReturnResponseAsJSONObject(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponseAsJSONObject(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseAsJSONObject"); + +EndProcedure + +Procedure HTTP_ReturnResponseAsBinaryData(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponseAsBinaryData(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseAsBinaryData"); + +EndProcedure + +Procedure HTTP_ReturnResponseAsString(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/post"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .ProcessRequest("POST") + .ReturnResponseAsString(); // <--- + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseAsString"); + +EndProcedure + +Procedure HTTP_ReturnResponseFilename(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + TFN = GetTempFileName(); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetResponseFile(TFN) // <--- + .ProcessRequest("GET") + .ReturnResponseFilename(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnResponseFilename", , TFN); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure HTTP_SetProxy(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ProxySettings = New InternetProxy; + ProxySettings.Set("https", "proxy.com", 443, "user", "password", False); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetProxy(ProxySettings) // <--- + .ProcessRequest("GET", False) + .ReturnConnection(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetProxy"); + +EndProcedure + +Procedure HTTP_SetTimeout(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .SetTimeout(60) // <--- + .ProcessRequest("GET", False) + .ReturnConnection(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SetTimeout"); + +EndProcedure + +Procedure HTTP_UseURLEncoding(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ParametersStructure = New Structure; + ParametersStructure.Insert("param1", "search?text"); + ParametersStructure.Insert("param2", "John Doe"); + ParametersStructure.Insert("param3", "value&another"); + ParametersStructure.Insert("param4", "кириллица"); + ParametersStructure.Insert("param5", ""); + + NoEncoding = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .UseURLEncoding(False) // <--- + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + WithEncoding = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + // END + + Result = New Map; + Result.Insert("No encoding" , NoEncoding); + Result.Insert("With encoding" , WithEncoding); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "UseURLEncoding"); + +EndProcedure + +Procedure HTTP_SplitArraysInURL(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/get"; + + ArrayParam = New Array; + ArrayParam.Add("val1"); + ArrayParam.Add("val2"); + ArrayParam.Add("val3"); + + ParametersStructure = New Structure("arrayfield", ArrayParam); + + Separation = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .SplitArraysInURL(True) // <--- + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + SeparationPhp = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .SplitArraysInURL(True, True) // <--- + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + NoSeparation = OPI_HTTPRequests.NewRequest() + .Initialize("https://example.com/page") + .SetURLParams(ParametersStructure) + .ProcessRequest("GET", False) + .ReturnRequest() + .ResourceAddress; + + // END + + Result = New Map; + Result.Insert("No separation", NoSeparation); + Result.Insert("Separation" , Separation); + Result.Insert("PHP" , SeparationPhp); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SplitArraysInURL"); + +EndProcedure + +Procedure HTTP_SendDataInParts(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/put"; + + ChunkSize = 524288; + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Image) + .SendDataInParts(ChunkSize) // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SendDataInParts"); + +EndProcedure + +Procedure HTTP_SendPart(FunctionParameters) + + URL = FunctionParameters["HTTP_URL"]; + URL = URL + "/put"; + + ChunkSize = 524288; + Data = GetBinaryDataFromString("Some data for sending"); + + // Sending only "data for" + StartPosition = 5; + Bytes = 8; + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(URL) + .SetBinaryBody(Data) + .SendPart(StartPosition, Bytes) // <--- + .ReturnResponseAsJSONObject(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "SendPart"); + +EndProcedure + +Procedure HTTP_MaxAttempts(FunctionParameters) + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .MaxAttempts(10) + .ReturnSettings(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "MaxAttempts"); + +EndProcedure + +Procedure HTTP_MaxRedirects(FunctionParameters) + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .MaxRedirects(15) + .ReturnSettings(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "MaxRedirects"); + +EndProcedure + +Procedure HTTP_ReturnSettings(FunctionParameters) + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .ReturnSettings(); + + // END + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .ReturnSettings("EncodeRequestBody"); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings", "Single"); + + SettingArray = New Array; + SettingArray.Add("MaxAttempts"); + SettingArray.Add("MaxRedirects"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .MaxAttempts(5) + .ReturnSettings(SettingArray); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings", "Array"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .ReturnSettings("AAA"); + + OPI_TestDataRetrieval.Process(Result, "HTTP", "ReturnSettings", "Nonexistent"); + +EndProcedure + +#EndRegion + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure HTTP_Инициализация() Export + HTTP_Initialization(); +EndProcedure + +Procedure HTTP_УстановкаТела() Export + HTTP_BodySet(); +EndProcedure + +Procedure HTTP_Настройки() Export + HTTP_Settings(); +EndProcedure + +Procedure HTTP_УстановкаЗаголовков() Export + HTTP_HeadersSetting(); +EndProcedure + +Procedure HTTP_Авторизация() Export + HTTP_Authorization(); +EndProcedure + +Procedure HTTP_ОбработкаЗапроса() Export + HTTP_RequestProcessing(); +EndProcedure + +Procedure HTTP_ПолучениеОтвета() Export + HTTP_ResponseReceiving(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_MSSQL.os b/src/en/OInt/tests/Modules/OPItc_MSSQL.os new file mode 100644 index 0000000000..213987c6c2 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_MSSQL.os @@ -0,0 +1,1382 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MSSQL.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("MSSQL"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("MSSQL"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region MSSQL + +Procedure MSS_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("SQL2" , TestParameters); + + MSSQL_GenerateConnectionString(TestParameters); + MSSQL_CreateConnection(TestParameters); + MSSQL_CloseConnection(TestParameters); + MSSQL_IsConnector(TestParameters); + MSSQL_ExecuteSQLQuery(TestParameters); + MSSQL_GetTLSSettings(TestParameters); + +EndProcedure + +Procedure MSS_ORM() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + MSSQL_CreateDatabase(TestParameters); + MSSQL_CreateTable(TestParameters); + MSSQL_AddRecords(TestParameters); + MSSQL_EnsureRecords(TestParameters); + MSSQL_GetRecords(TestParameters); + MSSQL_UpdateRecords(TestParameters); + MSSQL_DeleteRecords(TestParameters); + MSSQL_ClearTable(TestParameters); + MSSQL_GetTableInformation(TestParameters); + MSSQL_AddTableColumn(TestParameters); + MSSQL_DeleteTableColumn(TestParameters); + MSSQL_EnsureTable(TestParameters); + MSSQL_DeleteTable(TestParameters); + MSSQL_DeleteDatabase(TestParameters); + MSSQL_GetRecordsFilterStructure(TestParameters); + +EndProcedure + +#EndRegion // MSSQL + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region MSSQL + +Procedure MSSQL_GenerateConnectionString(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // END + + Result = StrReplace(Result, Password, "***"); + Result = StrReplace(Result, Address , "127.0.0.1"); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GenerateConnectionString"); + +EndProcedure + +Procedure MSSQL_CreateConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + Result = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateConnection"); + +EndProcedure + +Procedure MSSQL_CloseConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MSSQL.CloseConnection(Connection); + + // END + + OPI_MSSQL.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CloseConnection"); + +EndProcedure + +Procedure MSSQL_IsConnector(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MSSQL.IsConnector(Connection); + + // END + + OPI_MSSQL.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "IsConnector"); + +EndProcedure + +Procedure MSSQL_ExecuteSQLQuery(FunctionParameters) + + CurrentDate = OPI_Tools.GetCurrentDate(); + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_MSSQL.DeleteTable("users" , Connection); // SKIP + OPI_MSSQL.DeleteTable("test_data" , Connection); // SKIP + OPI_MSSQL.DeleteTable("test_table", Connection); // SKIP + OPI_TestDataRetrieval.Process(Connection, "MSSQL", "ExecuteSQLQuery", "Connection"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + | ID INT PRIMARY KEY, + | FirstName NVARCHAR(50), + | LastName NVARCHAR(50), + | BirthDate DATE, + | IsEmployed BIT, + | Salary DECIMAL(10, 2), + | CreatedAt DATETIME, + | Age SMALLINT, + | RowGuid UNIQUEIDENTIFIER, + | Data VARBINARY(MAX) + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data) + |VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);"; + + ParameterArray = New Array; + ParameterArray.Add(New Structure("INT" , 1)); + ParameterArray.Add(New Structure("NVARCHAR", "Vitaly")); + ParameterArray.Add(New Structure("NVARCHAR", "Alpaca")); + ParameterArray.Add(New Structure("DATE" , CurrentDate)); + ParameterArray.Add(New Structure("BIT" , True)); + ParameterArray.Add(New Structure("DECIMAL" , 10.30)); + ParameterArray.Add(New Structure("DATETIME", CurrentDate)); + ParameterArray.Add(New Structure("SMALLINT", 20)); + ParameterArray.Add(New Structure("UUID" , New UUID)); + ParameterArray.Add(New Structure("BYTES" , Image)); + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", , Image); // SKIP + + QueryText = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));"; // SKIP + Result = OPI_MSSQL.ExecuteSQLQuery(QueryText, , , Connection); // SKIP + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "Test data"); // SKIP + + // SQL query from file + + SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file + + Options = New Structure; + Options.Insert("sql", SQLFile); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ExecuteSQLQuery", "File"); // SKIP + + Closing = OPI_MSSQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Closing, "MSSQL", "ExecuteSQLQuery", "Request"); // SKIP + +EndProcedure + +Procedure MSSQL_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetTLSSettings"); + +EndProcedure + +Procedure MSSQL_CreateDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Base = "testbase1"; + + OPI_MSSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateDatabase"); + + Base = "testbase2"; + OPI_MSSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MSSQL", "CreateDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateDatabase", "Creation"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateDatabase", "Existing"); + + OPI_MSSQL.CloseConnection(Connection); + +EndProcedure + +Procedure MSSQL_CreateTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("tinyint_field" , "tinyint"); + ColoumnsStruct.Insert("smallint_field" , "smallint"); + ColoumnsStruct.Insert("int_field" , "int"); + ColoumnsStruct.Insert("bigint_field" , "bigint"); + ColoumnsStruct.Insert("float24_field" , "float(24)"); + ColoumnsStruct.Insert("float53_field" , "float(53)"); + ColoumnsStruct.Insert("bit_field" , "bit"); + ColoumnsStruct.Insert("nvarchar_field" , "nvarchar(4000)"); + ColoumnsStruct.Insert("varbinary_field", "varbinary(max)"); + ColoumnsStruct.Insert("uid_field" , "uniqueidentifier"); + ColoumnsStruct.Insert("numeric_field" , "numeric(5,3)"); // Or decimal + ColoumnsStruct.Insert("xml_field" , "xml"); + ColoumnsStruct.Insert("date_field" , "date"); + ColoumnsStruct.Insert("time_field" , "time"); + ColoumnsStruct.Insert("dto_field" , "datetimeoffset"); + ColoumnsStruct.Insert("datetime_field" , "datetime"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateTable"); + + Table = "ABC DEF"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateTable", "Name error"); + + Table = "somename"; + ColoumnsStruct.Insert("wtf_field", "WTF"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "CreateTable", "Type error"); + +EndProcedure + +Procedure MSSQL_AddRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + RecordsArray = New Array; + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + XML = " + | + | Example + | 123 + | + | + | Test + | 456 + | + |"; + + CurrentDate = OPI_Tools.GetCurrentDate(); + CurrentDateTZ = OPI_Tools.DateRFC3339(CurrentDate, "+05:00"); + + RecordStructure = New Structure; + RecordStructure.Insert("tinyint_field" , New Structure("TINYINT" , 5)); + RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 2000)); + RecordStructure.Insert("int_field" , New Structure("INT" , 200000)); + RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 20000000000)); + RecordStructure.Insert("float24_field" , New Structure("FLOAT24" , 10.1234567)); + RecordStructure.Insert("float53_field" , New Structure("FLOAT53" , 10.123456789123456)); + RecordStructure.Insert("bit_field" , New Structure("BIT" , True)); + RecordStructure.Insert("nvarchar_field" , New Structure("NVARCHAR" , "Some text")); + RecordStructure.Insert("varbinary_field", New Structure("BYTES" , Image)); + RecordStructure.Insert("uid_field" , New Structure("UUID" , New UUID)); + RecordStructure.Insert("numeric_field" , New Structure("NUMERIC" , 5.333)); + RecordStructure.Insert("xml_field" , New Structure("XML" , XML)); + RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); + RecordStructure.Insert("dto_field" , New Structure("DATETIMEOFFSET", CurrentDateTZ)); + RecordStructure.Insert("datetime_field" , New Structure("DATETIME" , CurrentDate)); + + RecordsArray.Add(RecordStructure); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", RecordsArray); + Options.Insert("trn", Истина); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "AddRecords"); + +EndProcedure + +Procedure MSSQL_GetRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // All records without filters + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecords"); // SKIP + + // Filter, selected fields, limit and sorting + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", "test_data"); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_data"; + + Fields = New Array; + Fields.Add("first_name"); + Fields.Add("last_name"); + Fields.Add("email"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "gender"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Male"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "id"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 50"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("ip_address", "DESC"); + Count = 5; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecords", "Filters"); + +EndProcedure + +Procedure MSSQL_UpdateRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_data"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("NVARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Count = OPI_MSSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + OPI_TestDataRetrieval.Process(Count, "MSSQL", "UpdateRecords", "Count"); // SKIP + Count = Count["data"].Count(); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("values", FieldsStructure); + Options.Insert("filter", FilterStructure); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "UpdateRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "UpdateRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['ip_address']"); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "MSSQL", "UpdateRecords", "Check", Count, FieldsStructure); + +EndProcedure + +Procedure MSSQL_DeleteRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_data"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("NVARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + FilterStructure.Insert("union", "AND"); + + Filters.Add(FilterStructure); + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "ip_address"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("NVARCHAR", "127.0.0.1")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Obtaining = OPI_MSSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Obtaining, "MSSQL", "DeleteRecords", "Obtaining"); + + Count = Obtaining["data"].Count(); + Residue = 100 - Count; + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteRecords", "Check", Residue); + +EndProcedure + +Procedure MSSQL_DeleteTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTable"); + + Base = "test_data"; + Table = "test_data"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTable", "Test"); + +EndProcedure + +Procedure MSSQL_DeleteDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Base = "testbase1"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase"); + + Base = "testbase2"; + + Connection = OPI_MSSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MSSQL", "DeleteDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase", "Deletion"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase", "Error"); + + Closing = OPI_MSSQL.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Closing, "MSSQL", "DeleteDatabase", "Closing"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteDatabase", "Connection error"); + +EndProcedure + +Procedure MSSQL_ClearTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "ClearTable", "Check"); + +EndProcedure + +Procedure MSSQL_GetTableInformation(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetTableInformation"); + + Table = "heyho"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetTableInformation", "Error"); + +EndProcedure + +Procedure MSSQL_AddTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Base = "testbase1"; + Table = "testtable"; + Name = "new_field"; + DataType = "bigint"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "AddTableColumn", "Check"); + +EndProcedure + +Procedure MSSQL_DeleteTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Base = "testbase1"; + Table = "testtable"; + Name = "new_field"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure MSSQL_EnsureTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + + Base = "testbase1"; + Table = "testtable"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("smallint_field" , "smallint"); + ColoumnsStruct.Insert("double_field" , "real"); + ColoumnsStruct.Insert("bigint_field" , "bigint"); + ColoumnsStruct.Insert("custom_field" , "nvarchar"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureTable", "Check", ColoumnsStruct); + +EndProcedure + +Procedure MSSQL_EnsureRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "SA"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetTLSSettings", Options); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GenerateConnectionString", Options); + + Table = "test_guarantee"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "NVARCHAR(255)"); // SKIP + ColoumnsStruct.Insert("age" , "INT"); // SKIP + ColoumnsStruct.Insert("salary", "DECIMAL(10,2)"); // SKIP + OPI_MSSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , New Structure("INT" , 1)); + RowStructure2.Insert("name" , New Structure("NVARCHAR", "Vitaly")); + RowStructure2.Insert("age" , New Structure("INT" , 25)); + RowStructure2.Insert("salary", New Structure("DECIMAL" , 1000.12)); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , New Structure("INT" , 2)); + RowStructure1.Insert("name" , New Structure("NVARCHAR", "Lesha")); + RowStructure1.Insert("age" , New Structure("INT" , 20)); + RowStructure1.Insert("salary", New Structure("DECIMAL" , 200.20)); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , New Structure("NVARCHAR", "Vitaly Updated")); + RowStructure2.Insert("salary", New Structure("DECIMAL" , 1500.50)); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , New Structure("INT" , 3)); + StringStructure3.Insert("name" , New Structure("NVARCHAR", "Anton")); + StringStructure3.Insert("age" , New Structure("INT" , 30)); + StringStructure3.Insert("salary", New Structure("DECIMAL" , 3000.00)); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MSSQL", "EnsureRecords", "Updating check"); + + OPI_MSSQL.DeleteTable(Table, ConnectionString, TLSSettings); + +EndProcedure + +Procedure MSSQL_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mssql", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "MSSQL", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +#EndRegion // MSSQL + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure MSS_ОсновныеМетоды() Export + MSS_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_MongoDB.os b/src/en/OInt/tests/Modules/OPItc_MongoDB.os new file mode 100644 index 0000000000..cd2da3a285 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_MongoDB.os @@ -0,0 +1,2025 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MongoDB.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("MongoDB"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("MongoDB"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region MongoDB + +Procedure Mongo_CommonMethods() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_GenerateConnectionString(TestParameters); + MongoDB_CreateConnection(TestParameters); + MongoDB_CloseConnection(TestParameters); + MongoDB_IsConnector(TestParameters); + MongoDB_ExecuteCommand(TestParameters); + +EndProcedure + +Procedure Mong_DatabaseManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_GetDatabase(TestParameters); + MongoDB_GetListOfBases(TestParameters); + MongoDB_DeleteDatabase(TestParameters); + +EndProcedure + +Procedure Mongo_CollectionManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_CreateCollection(TestParameters); + MongoDB_GetCollectionList(TestParameters); + MongoDB_DeleteCollection(TestParameters); + +EndProcedure + +Procedure Mongo_DocumentsManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + MongoDB_InsertDocuments(TestParameters); + MongoDB_GetDocuments(TestParameters); + MongoDB_GetCursor(TestParameters); + MongoDB_GetDocumentBatch(TestParameters); + MongoDB_UpdateDocuments(TestParameters); + MongoDB_DeleteDocuments(TestParameters); + MongoDB_GetDocumentUpdateStructure(TestParameters); + MongoDB_GetDocumentDeletionStructure(TestParameters); + +EndProcedure + +Procedure Mongo_UserManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_CreateUser(TestParameters); + MongoDB_UpdateUser(TestParameters); + MongoDB_GetUsers(TestParameters); + MongoDB_GetDatabaseUsers(TestParameters); + MongoDB_DeleteUser(TestParameters); + +EndProcedure + +Procedure Mongo_RoleManagement() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Port" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("MongoDB_DB" , TestParameters); + + MongoDB_CreateRole(TestParameters); + MongoDB_GetRoles(TestParameters); + MongoDB_GrantRoles(TestParameters); + MongoDB_RevokeRoles(TestParameters); + MongoDB_UpdateRole(TestParameters); + MongoDB_DeleteRole(TestParameters); + MongoDB_GetRolePrivilegeStructure(TestParameters); + +EndProcedure + +#EndRegion // MongoDB + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region MongoDB + +Procedure MongoDB_GenerateConnectionString(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GenerateConnectionString", , FunctionParameters); + +EndProcedure + +Procedure MongoDB_CreateConnection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Result = OPI_MongoDB.CreateConnection(ConnectionString); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateConnection"); + + Result = OPI_MongoDB.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateConnection", "Closing"); + +EndProcedure + +Procedure MongoDB_CloseConnection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + Result = OPI_MongoDB.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CloseConnection"); + +EndProcedure + +Procedure MongoDB_IsConnector(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + Result = OPI_MongoDB.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "IsConnector"); + +EndProcedure + +Procedure MongoDB_ExecuteCommand(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + + Command = "listDatabases"; + Data = New Structure("nameOnly", True); + + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + OPI_TestDataRetrieval.Process(Connection, "MongoDB", "ExecuteCommand", "Connection"); // SKIP + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("comm", Command); + Options.Insert("data", Data); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "ExecuteCommand", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "ExecuteCommand"); + +EndProcedure + +Procedure MongoDB_GetDatabase(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Base = "test_db"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDatabase"); + +EndProcedure + +Procedure MongoDB_GetListOfBases(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Options = New Structure; + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetListOfBases", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetListOfBases"); + +EndProcedure + +Procedure MongoDB_DeleteDatabase(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDatabase"); + +EndProcedure + +Procedure MongoDB_CreateCollection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Name = "test_collection"; + Base = "test_database"; + + Parameters = New Map; + Expression = New Map; + GroupAnd = New Array; + + Condition1 = New Map; // Total >= 0 + Items1 = New Array; + Items1.Add("$total"); + Items1.Add(0); + Condition1.Insert("$gte", Items1); + + Condition2 = New Map; // Status <= 3 + Items2 = New Array; + Items2.Add("$status"); + Items2.Add(3); + Condition2.Insert("$lte", Items2); + + GroupAnd.Add(Condition1); + GroupAnd.Add(Condition2); + + Expression.Insert("$expr", GroupAnd); + Parameters.Insert("validator", Expression); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", Name); + Options.Insert("db", Base); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateCollection"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", Name); + Options.Insert("db", Base); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateCollection", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateCollection", "Existing"); + +EndProcedure + +Procedure MongoDB_DeleteCollection(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "test_collection"; + Base = "test_database"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteCollection"); + +EndProcedure + +Procedure MongoDB_GetCollectionList(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Base = "test_database"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetCollectionList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCollectionList"); + +EndProcedure + +Procedure MongoDB_InsertDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + DocsArray = New Array; + + // With implicit type casting + DocumentStructure = New Structure; + + TestArray = New Array; + TestArray.Add("Value1"); + TestArray.Add("Value2"); + + TestStructure = New Structure("text,number", "Text", 10); + TestBinary = GetBinaryDataFromString("Text"); + CurrentDate = OPI_Tools.GetCurrentDate(); + + DocumentStructure.Insert("stringField", "Text"); + DocumentStructure.Insert("intField" , 200); + DocumentStructure.Insert("doubleField", 123.456); + DocumentStructure.Insert("boolField" , True); + DocumentStructure.Insert("arrayField" , TestArray); + DocumentStructure.Insert("docField" , TestStructure); + DocumentStructure.Insert("dateField" , CurrentDate); + DocumentStructure.Insert("nullField"); + + DocsArray.Add(DocumentStructure); + + // With explicit type casting + DocumentStructure = New Structure; + + RegExp = New Structure("pattern,options", "[a-z]+@[a-z]+\.[a-z]+", "i"); + JSCode = "const result = [1, 2, 3].map(x => x * 2).filter(x => x > 3);"; + + DocumentStructure.Insert("stringField", New Structure("__OPI_STRING__" , "Text")); + DocumentStructure.Insert("oidField" , New Structure("__OPI_OBJECTID__" , "63ceed18f71dda7d8cf21e8e")); + DocumentStructure.Insert("jsField" , New Structure("__OPI_JS__" , JSCode)); + DocumentStructure.Insert("symbolField", New Structure("__OPI_SYMBOL__" , "Y")); + DocumentStructure.Insert("int32Field" , New Structure("__OPI_INT32__" , 10)); + DocumentStructure.Insert("int64Field" , New Structure("__OPI_INT64__" , 1000)); + DocumentStructure.Insert("doubleField", New Structure("__OPI_DOUBLE__" , 124.456)); + DocumentStructure.Insert("boolField" , New Structure("__OPI_BOOLEAN__" , True)); + DocumentStructure.Insert("dateField" , New Structure("__OPI_DATETIME__" , "1763204141")); + DocumentStructure.Insert("tsField" , New Structure("__OPI_TIMESTAMP__", CurrentDate)); + DocumentStructure.Insert("regexpField", New Structure("__OPI_REGEXP__" , RegExp)); + DocumentStructure.Insert("binaryField", New Structure("__OPI_BINARY__" , TestBinary)); + DocumentStructure.Insert("nullField" , New Structure("__OPI_NULL__")); + DocumentStructure.Insert("minkeyField", New Structure("__OPI_MINKEY__")); + DocumentStructure.Insert("maxkeyField", New Structure("__OPI_MAXKEY__")); + + TestArray = New Array; + TestArray.Add(New Structure("__OPI_SYMBOL__", "A")); + TestArray.Add(New Structure("__OPI_MINKEY__")); + + TestStructure = New Structure("code,number" + , New Structure("__OPI_JS__", "const result = 1") + , New Structure("__OPI_DOUBLE__", 10)); + + // Documents and arrays are not wrapped in a structure + DocumentStructure.Insert("docField" , TestStructure); + DocumentStructure.Insert("arrayField" , TestArray); + + DocsArray.Add(DocumentStructure); + + OPI_MongoDB.DeleteCollection(Connection, Collection, Base); // SKIP + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("docs", DocsArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "InsertDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "InsertDocuments"); + + DocsArray = New Array; + + CategoryMap = New Map; + CategoryMap.Insert(1, "electronics"); + CategoryMap.Insert(2, "clothing"); + CategoryMap.Insert(3, "books"); + CategoryMap.Insert(4, "products"); + + SupplierMap = New Map; + SupplierMap.Insert(1, "Supplier A"); + SupplierMap.Insert(2, "Supplier B"); + SupplierMap.Insert(3, "Supplier C"); + + For N = 1 To 15 Do + + DocumentStructure = New Structure; + + DocumentStructure.Insert("productName", "Product " + N); + DocumentStructure.Insert("category" , CategoryMap.Get(N % 4)); + DocumentStructure.Insert("price" , 50 + (N * 30)); + DocumentStructure.Insert("quantity" , 5 + (N % 10)); + DocumentStructure.Insert("rating" , Max(1, N % 6)); + DocumentStructure.Insert("inStock" , N % 3 > 0); + DocumentStructure.Insert("tags" , OPI_TestDataRetrieval.GetTagArray(N)); + DocumentStructure.Insert("createdDate", OPI_Tools.GetCurrentDate() - (N * 86400)); + + Details = New Structure; + Details.Insert("supplier" , SupplierMap.Get(N % 3)); + Details.Insert("weightKg" , N * 0.3); + Details.Insert("dimensions", New Structure("length,width,height", N * 8, N * 4, N * 2)); + DocumentStructure.Insert("details", Details); + + DocsArray.Add(DocumentStructure); + + EndDo; + + DocumentWithZero = New Structure; + DocumentWithZero.Insert("productName", "Item with zero price"); + DocumentWithZero.Insert("category" , "books"); + DocumentWithZero.Insert("price" , 0); + DocumentWithZero.Insert("quantity" , 1); + DocumentWithZero.Insert("rating" , 4); + DocumentWithZero.Insert("inStock" , True); + DocumentWithZero.Insert("tags" , New Array); + DocsArray.Add(DocumentWithZero); + + DocumentWithoutCategory = New Structure; + DocumentWithoutCategory.Insert("productName", "Item without category"); + DocumentWithoutCategory.Insert("price" , 250); + DocumentWithoutCategory.Insert("quantity" , 3); + DocumentWithoutCategory.Insert("rating" , 3); + DocumentWithoutCategory.Insert("inStock" , False); + DocsArray.Add(DocumentWithoutCategory); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("docs", DocsArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "InsertDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "InsertDocuments"); + +EndProcedure + +Procedure MongoDB_GetDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + // __4 = $ + Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); + Sort = New Structure("doubleField", -1); + Parameters = New Structure("limit", 2); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments"); + + // 1: Category and price range + Filter = New Structure("category,price", "electronics", New Structure("__4gte,__4lte", 100, 400)); + Sort = New Structure("price", 1); + Parameters = New Structure("limit", 5); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 1); + + // 2: Stock and rating + Filter = New Structure("inStock,rating", True, New Structure("__4gte", 4)); + Sort = New Structure("rating,price", -1, 1); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 2); + + // 3: By tags array + Filter = New Structure("tags", "sale"); + Sort = New Structure("createdDate", -1); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 3); + + // 4: By nested fields + Filter = New Map; + Filter.Insert("details.supplier", "Supplier A"); + Filter.Insert("details.weightKg", New Structure("__4lt", 3)); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 4); + + // 5: Projection + Filter = New Structure("category", "books"); + Sort = New Structure("price", -1); + Parameters = New Structure("projection", New Structure("productName,price,rating", 1, 1, 1)); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocuments", 5); + +EndProcedure + +Procedure MongoDB_GetCursor(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + Filter = New Structure("stringField", "Text"); + Sort = New Structure("doubleField", -1); + Parameters = New Structure("limit,batchSize", 2, 1); + + Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCursor"); + + // Big batchSize with limit + Filter = New Structure("inStock", True); + Sort = New Structure("price", 1); + Parameters = New Structure("limit,batchSize", 8, 3); + + Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCursor", 1); + + // Small batchSize without limit + Filter = New Structure("category", "clothing"); + Sort = New Structure("rating", -1); + Parameters = New Structure("batchSize", 2); + + Result = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetCursor", 2); + +EndProcedure + +Procedure MongoDB_GetDocumentBatch(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + Filter = New Structure("stringField", "Text"); + Sort = New Structure("doubleField", -1); + Parameters = New Structure("limit,batchSize", 2, 1); + + Cursor = OPI_MongoDB.GetCursor(Connection, Collection, Base, Filter, Sort, Parameters); + + If Not Cursor["result"] Then + Raise Cursor["error"]; + EndIf; + + Cursor = Cursor["data"]["cursor"]; + DocsArray = Cursor["firstBatch"]; + CursorID = Cursor["id"]; + ContinueGetting = CursorID > 0; + + While ContinueGetting Do + + Result = OPI_MongoDB.GetDocumentBatch(Connection, Collection, CursorID, Base); // <--- + + If Not Result["result"] Then + Raise Result["error"]; + EndIf; + + ContinueGetting = Result["data"]["cursor"]["id"] > 0; + + For Each Record In Result["data"]["cursor"]["nextBatch"] Do + DocsArray.Add(Record); + EndDo; + + EndDo; + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocumentBatch"); + +EndProcedure + +Procedure MongoDB_UpdateDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + // __4 = $ + Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); + Data = New Structure( "__4set", New Structure("doubleField", 999)); + + Updating = OPI_MongoDB.GetDocumentUpdateStructure(Filter, Data); // Array or single + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments"); + + Parameters = New Structure("limit,batchSize", 2, 1); + Sort = New Structure("doubleField", -1); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", "Obtaining"); + + Filter = New Structure("stringField,doubleField", "Text", 999); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Sort); + Options.Insert("params", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", "Getting new"); + + // Multiply fields + Filter = New Structure("category", "electronics"); + Data = New Structure("__4set", New Structure("price,inStock,rating", 777, False, 5)); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 1); + + Filter = New Structure("category", "electronics", "price", 777); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 1"); + + // Number inc + Filter = New Structure("productName", "Product 1"); + Data = New Structure("__4inc", New Structure("quantity", 10)); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 2); + + Filter = New Structure("productName", "Product 1"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 2"); + + // Array insertion + Filter = New Structure("productName", "Product 2"); + Data = New Structure("__4push", New Structure("tags", "updated")); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 3); + + Filter = New Structure("productName", "Product 2", "tags", "updated"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 3"); + + // Nested field update + SettingMapping = New Map; + SettingMapping.Insert("details.weightKg", 2.5); + SettingMapping.Insert("details.supplier", "Supplier A+"); + + Filter = New Map; + Filter.Insert("details.supplier", "Supplier A"); + + Data = New Structure("__4set", SettingMapping); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 4); + + Filter = New Map; + Filter.Insert("details.supplier", "Supplier A+"); + Filter.Insert("details.weightKg", 2.5); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 4"); + + // Upsert + Filter = New Structure("productName", "New product"); + + //@skip-check structure-consructor-too-many-keys + Data = New Structure("__4set", New Structure("productName,category,price,quantity,inStock,createdDate" + , "New product" + , "electronics" + , 1999 + , 1 + , True + , OPI_Tools.GetCurrentDate() + )); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Ложь); + Options.Insert("upsert", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 5); + + Filter = New Structure("productName", "New product"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 5"); + + // Field removing + Filter = New Structure("productName", "Product 3"); + Data = New Structure("__4unset", New Structure("rating", "")); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 6); + + Filter = New Structure("productName", "Product 3"); + Parameters = New Structure("projection", New Structure("productName,rating", 1, 1)); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + Options.Insert("sort", Неопределено); + Options.Insert("params", Parameters); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 6"); + + // Multiply operators + Filter = New Structure("price", New Structure("__4lt", 200)); + Data = New Structure; + Data.Insert("__4set", New Structure("inStock", False)); + Data.Insert("__4inc", New Structure("quantity", -5)); + Data.Insert("__4push", New Structure("tags", "discount")); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + + Updating = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", Updating); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 7); + + Filter = New Structure("price,tags", New Structure("__4lt", 200), "discount"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 7"); + + // Updates array + UpdateArray = New Array; + + Filter1 = New Structure("category", "electronics"); + Data1 = New Structure("__4set", New Structure("price,discounted", 888, True)); + Options = New Structure; + Options.Insert("query", Filter1); + Options.Insert("data", Data1); + Options.Insert("multi", Истина); + + Update1 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update1); + + Filter2 = New Structure("category", "clothing"); + Data2 = New Structure("__4inc", New Structure("quantity", 5)); + Options = New Structure; + Options.Insert("query", Filter2); + Options.Insert("data", Data2); + Options.Insert("multi", Истина); + + Update2 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update2); + + Filter3 = New Structure("category", "books"); + Data3 = New Structure("__4push", New Structure("tags", "mass_update")); + Options = New Structure; + Options.Insert("query", Filter3); + Options.Insert("data", Data3); + Options.Insert("multi", Истина); + + Update3 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update3); + + Filter4 = New Structure("productName", "Special item from array"); + + //@skip-check structure-consructor-too-many-keys + Data4 = New Structure("__4set", New Structure("productName,category,price,quantity,inStock,createdDate" + , "Special item from array" + , "special" + , 1111 + , 7 + , True + , OPI_Tools.GetCurrentDate() + )); + + Options = New Structure; + Options.Insert("query", Filter4); + Options.Insert("data", Data4); + Options.Insert("multi", Ложь); + Options.Insert("upsert", Истина); + + Update4 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update4); + + Filter5 = New Structure("rating", New Structure("__4lte", 2)); + Data5 = New Structure; + Data5.Insert("__4set", New Structure("needsImprovement", True)); + Data5.Insert("__4inc", New Structure("quantity" , -2)); + Options = New Structure; + Options.Insert("query", Filter5); + Options.Insert("data", Data5); + Options.Insert("multi", Истина); + + Update5 = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + UpdateArray.Add(Update5); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("updates", UpdateArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateDocuments", 9); + + Filter = New Structure("category,price", "electronics", 888); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_1"); + + Filter = New Structure("category,tags", "books", "mass_update"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_2"); + + Filter = New Structure("productName", "Special item from array"); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_3"); + + Filter = New Structure("needsImprovement", True); + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + CheckResult = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + OPI_TestDataRetrieval.Process(CheckResult, "MongoDB", "UpdateDocuments", "Check 8_4"); + +EndProcedure + +Procedure MongoDB_GetDocumentUpdateStructure(FunctionParameters) + + // __4 = $ + Filter = New Structure("stringField,doubleField", "Text", New Structure("__4gte, __4lte", 100, 150)); + Data = New Structure( "__4set", New Structure("doubleField", 999)); + + Options = New Structure; + Options.Insert("query", Filter); + Options.Insert("data", Data); + Options.Insert("multi", Истина); + Options.Insert("upsert", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocumentUpdateStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocumentUpdateStructure"); + +EndProcedure + +Procedure MongoDB_GetDocumentDeletionStructure(FunctionParameters) + + Filter = New Structure("stringField,doubleField", "Text", 999); + Result = OPI_MongoDB.GetDocumentDeletionStructure(Filter, 1); // Array or single + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDocumentDeletionStructure"); + +EndProcedure + +Procedure MongoDB_DeleteDocuments(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Collection = "new_collection"; + + Filter = New Structure("stringField,doubleField", "Text", 999); + Deletion = OPI_MongoDB.GetDocumentDeletionStructure(Filter, 1); // Array or single + + Result = OPI_MongoDB.GetDocuments(Connection, Collection, Base, Filter); // SKIP + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDocuments", "Precheck"); // SKIP + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("deletes", Deletion); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteDocuments", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDocuments"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("coll", Collection); + Options.Insert("db", Base); + Options.Insert("query", Filter); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDocuments", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteDocuments", "Check"); + +EndProcedure + +Procedure MongoDB_CreateUser(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("read"); + RoleArray.Add("userAdmin"); + + UserName = "newuser"; + UserPassword = "1234"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateUser"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateUser", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateUser", "Existing"); + +EndProcedure + +Procedure MongoDB_UpdateUser(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("readWrite"); + + UserName = "newuser"; + UserPassword = "4321"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateUser"); + + UserName = "anotheruser"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("roles", RoleArray); + Options.Insert("db", Base); + Options.Insert("pwd", UserPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateUser", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateUser", "Nonexistent"); + +EndProcedure + +Procedure MongoDB_DeleteUser(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + UserName = "newuser"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteUser"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", UserName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteUser", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteUser", "Again"); + +EndProcedure + +Procedure MongoDB_GetUsers(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + UserName = "newuser"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("usrs", UserName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetUsers", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetUsers", "Simple"); // SKIP + + ArrayOfUsers = New Array; + ArrayOfUsers.Add(New Structure("user,db", "bayselonarrend", "admin")); + ArrayOfUsers.Add(New Structure("user,db", "newuser" , "main")); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("usrs", ArrayOfUsers); + Options.Insert("db", Base); + Options.Insert("spwd", Истина); + Options.Insert("sprv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetUsers"); + +EndProcedure + +Procedure MongoDB_GetDatabaseUsers(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = FunctionParameters["MongoDB_DB"]; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetDatabaseUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetDatabaseUsers"); + +EndProcedure + +Procedure MongoDB_CreateRole(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("read"); + RoleArray.Add("userAdmin"); + + Resource = New Structure("db,collection", Base, "new_collection"); + Actions = New Array; + + Actions.Add("find"); + Actions.Add("insert"); + Actions.Add("update"); + + Options = New Structure; + Options.Insert("res", Resource); + Options.Insert("act", Actions); + + Privilege = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); + + PrivilegesArray = New Array; + PrivilegesArray.Add(Privilege); + + RoleName = "newrole"; + + OPI_MongoDB.DeleteRole(Connection, RoleName, Base); // SKIP + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + Options.Insert("prvl", PrivilegesArray); + Options.Insert("roles", RoleArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateRole", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateRole"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + Options.Insert("prvl", PrivilegesArray); + Options.Insert("roles", RoleArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "CreateRole", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "CreateRole", "Existing"); + +EndProcedure + +Procedure MongoDB_UpdateRole(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleArray = New Array; + RoleArray.Add("read"); + RoleArray.Add("userAdmin"); + + Resource = New Structure("db,collection", Base, "new_collection2"); + Actions = New Array; + + Actions.Add("find"); + Actions.Add("insert"); + + Options = New Structure; + Options.Insert("res", Resource); + Options.Insert("act", Actions); + + Privilege = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); + + PrivilegesArray = New Array; + PrivilegesArray.Add(Privilege); + + RoleName = "newrole"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + Options.Insert("prvl", PrivilegesArray); + Options.Insert("roles", RoleArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "UpdateRole", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "UpdateRole"); + +EndProcedure + +Procedure MongoDB_DeleteRole(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + RoleName = "newrole"; + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteRole", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteRole"); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("name", RoleName); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "DeleteRole", Options); + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "DeleteRole", "Again"); + +EndProcedure + +Procedure MongoDB_GetRolePrivilegeStructure(FunctionParameters) + + Base = FunctionParameters["MongoDB_DB"]; + Resource = New Structure("db,collection", Base, "new_collection"); + Actions = New Array; + + Actions.Add("find"); + Actions.Add("insert"); + Actions.Add("update"); + + Options = New Structure; + Options.Insert("res", Resource); + Options.Insert("act", Actions); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRolePrivilegeStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetRolePrivilegeStructure"); + +EndProcedure + +Procedure MongoDB_GetRoles(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + Role = New Structure("role,db", "newrole", Base); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("roles", Role); + Options.Insert("db", Base); + Options.Insert("sprv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GetRoles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GetRoles"); + +EndProcedure + +Procedure MongoDB_GrantRoles(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + User = "bayselonarrend"; + Role = New Structure("role,db", "newrole", Base); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("user", User); + Options.Insert("roles", Role); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GrantRoles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "GrantRoles"); + +EndProcedure + +Procedure MongoDB_RevokeRoles(FunctionParameters) + + Address = "127.0.0.1:1234"; + Login = FunctionParameters["MongoDB_User"]; + Password = FunctionParameters["MongoDB_Password"]; + Base = "admin"; + + Address = OPI_TestDataRetrieval.GetLocalhost() + ":" + FunctionParameters["MongoDB_Port"]; // SKIP + + ConnectionParams = New Structure("authSource", "admin"); + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("usr", Login); + Options.Insert("pwd", Password); + Options.Insert("params", ConnectionParams); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "GenerateConnectionString", Options); + Connection = OPI_MongoDB.CreateConnection(ConnectionString); + + User = "bayselonarrend"; + Role = New Structure("role,db", "newrole", Base); + + Options = New Structure; + Options.Insert("dbc", Connection); + Options.Insert("user", User); + Options.Insert("roles", Role); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mongodb", "RevokeRoles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MongoDB", "RevokeRoles"); + +EndProcedure + +#EndRegion // MongoDB + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Mongo_ОсновныеМетоды() Export + Mongo_CommonMethods(); +EndProcedure + +Procedure Mongo_РаботаСБазами() Export + Mong_DatabaseManagement(); +EndProcedure + +Procedure Mongo_РаботаСКоллекциями() Export + Mongo_CollectionManagement(); +EndProcedure + +Procedure Mongo_РаботаСДокументами() Export + Mongo_DocumentsManagement(); +EndProcedure + +Procedure Mongo_УправлениеПользователями() Export + Mongo_UserManagement(); +EndProcedure + +Procedure Mongo_УправлениеРолями() Export + Mongo_RoleManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_MySQL.os b/src/en/OInt/tests/Modules/OPItc_MySQL.os new file mode 100644 index 0000000000..ebbdb3b823 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_MySQL.os @@ -0,0 +1,1603 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MySQL.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("MySQL"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("MySQL"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region MySQL + +Procedure MYS_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetMySQLParameterOptions(); + + For Each TestParameters In OptionArray Do + + MySQL_GenerateConnectionString(TestParameters); + MySQL_CreateConnection(TestParameters); + MySQL_CloseConnection(TestParameters); + MySQL_IsConnector(TestParameters); + MySQL_ExecuteSQLQuery(TestParameters); + MySQL_GetTLSSettings(TestParameters); + + EndDo; + +EndProcedure + +Procedure MYS_ORM() Export + + OptionArray = OPI_TestDataRetrieval.GetMySQLParameterOptions(); + + For Each TestParameters In OptionArray Do + + MySQL_CreateDatabase(TestParameters); + MySQL_CreateTable(TestParameters); + MySQL_AddRecords(TestParameters); + MySQL_EnsureRecords(TestParameters); + MySQL_GetRecords(TestParameters); + MySQL_UpdateRecords(TestParameters); + MySQL_DeleteRecords(TestParameters); + MySQL_ClearTable(TestParameters); + MySQL_GetTableInformation(TestParameters); + MySQL_AddTableColumn(TestParameters); + MySQL_DeleteTableColumn(TestParameters); + MySQL_EnsureTable(TestParameters); + MySQL_DeleteTable(TestParameters); + MySQL_DeleteDatabase(TestParameters); + MySQL_GetRecordsFilterStructure(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // MySQL + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region MySQL + +Procedure MySQL_GenerateConnectionString(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + // END + + Result = StrReplace(Result, Password, "***"); + Result = StrReplace(Result, Address , "127.0.0.1"); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GenerateConnectionString"); + +EndProcedure + +Procedure MySQL_CreateConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Result = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + // END + + OPI_MySQL.CloseConnection(Result); + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateConnection"); + +EndProcedure + +Procedure MySQL_CloseConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MySQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CloseConnection"); + +EndProcedure + +Procedure MySQL_IsConnector(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_MySQL.IsConnector(Connection); + + OPI_MySQL.CloseConnection(Result); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "IsConnector"); + +EndProcedure + +Procedure MySQL_ExecuteSQLQuery(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_MySQL.DeleteTable("users" , Connection); // SKIP + OPI_MySQL.DeleteTable("test_data" , Connection); // SKIP + OPI_MySQL.DeleteTable("test_table", Connection); // SKIP + + OPI_TestDataRetrieval.Process(Connection, "MySQL", "ExecuteSQLQuery", "Connection"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + |id INT AUTO_INCREMENT PRIMARY KEY, + |name VARCHAR(255), + |age INT, + |salary DOUBLE, + |amount FLOAT, + |type TINYINT UNSIGNED, + |date DATE, + |time TIME, + |data MEDIUMBLOB + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) + |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; + + ParameterArray = New Array; + ParameterArray.Add(New Structure("TEXT" , "Vitaly")); + ParameterArray.Add(New Structure("INT" , 25)); + ParameterArray.Add(New Structure("DOUBLE", 1000.12)); + ParameterArray.Add(New Structure("FLOAT" , 1000.12)); + ParameterArray.Add(New Structure("UINT" , 1)); + ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate())); + ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate())); + ParameterArray.Add(New Structure("BYTES" , Image)); + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", , Image); // SKIP + + Result = OPI_MySQL.ExecuteSQLQuery("create table test_data (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Connection); // SKIP + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "Test data"); // SKIP + + // SQL query from file + + SQLFile = FunctionParameters["SQL2"]; // Binary Data, URL or path to file + + Options = New Structure; + Options.Insert("sql", SQLFile); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ExecuteSQLQuery", "File"); // SKIP + + Closing = OPI_MySQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Closing, "MySQL", "ExecuteSQLQuery", "Closing"); // SKIP + +EndProcedure + +Procedure MySQL_CreateDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + OPI_MySQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateDatabase"); + + Base = "testbase2"; + OPI_MySQL.DeleteDatabase(Base, ConnectionString, TLSSettings); + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MySQL", "CreateDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateDatabase", "Creation"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateDatabase", "Existing"); + + OPI_MySQL.CloseConnection(Connection); + +EndProcedure + +Procedure MySQL_CreateTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("char_field" , "CHAR(5)"); + ColoumnsStruct.Insert("varchar_field" , "VARCHAR(255)"); + ColoumnsStruct.Insert("tinytext_field" , "TINYTEXT"); + ColoumnsStruct.Insert("text_field" , "TEXT"); + ColoumnsStruct.Insert("mediumtext_field", "MEDIUMTEXT"); + ColoumnsStruct.Insert("longtext_field" , "LONGTEXT"); + ColoumnsStruct.Insert("tinyint_field" , "TINYINT"); + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("mediumint_field" , "MEDIUMINT"); + ColoumnsStruct.Insert("int_field" , "INT"); + ColoumnsStruct.Insert("uint_field" , "INT UNSIGNED"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("float_field" , "FLOAT"); + ColoumnsStruct.Insert("double_field" , "DOUBLE"); + ColoumnsStruct.Insert("date_field" , "DATE"); + ColoumnsStruct.Insert("time_field" , "TIME"); + ColoumnsStruct.Insert("datetime_field" , "DATETIME"); + ColoumnsStruct.Insert("timestamp_field" , "TIMESTAMP"); + ColoumnsStruct.Insert("mediumblob_field", "MEDIUMBLOB"); + ColoumnsStruct.Insert("set_field" , "SET('one','two','three')"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateTable"); + + Table = "ABC DEF"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateTable", "Name error"); + + Table = "somename"; + ColoumnsStruct.Insert("wtf_field", "WTF"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "CreateTable", "Type error"); + +EndProcedure + +Procedure MySQL_AddRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + RecordsArray = New Array; + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + CurrentDate = OPI_Tools.GetCurrentDate(); + + RecordStructure = New Structure; + RecordStructure.Insert("char_field" , New Structure("TEXT" , "AAAAA")); + RecordStructure.Insert("varchar_field" , New Structure("TEXT" , "Some varchar")); + RecordStructure.Insert("tinytext_field" , New Structure("TEXT" , "Some tiny text")); + RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text")); + RecordStructure.Insert("mediumtext_field", New Structure("TEXT" , "Some medium text")); + RecordStructure.Insert("longtext_field" , New Structure("TEXT" , "Some looooooong text")); + RecordStructure.Insert("tinyint_field" , New Structure("INT" , 127)); + RecordStructure.Insert("smallint_field" , New Structure("INT" , -32767)); + RecordStructure.Insert("mediumint_field" , New Structure("INT" , 8388607)); + RecordStructure.Insert("int_field" , New Structure("INT" , -2147483647)); + RecordStructure.Insert("uint_field" , New Structure("UINT" , 4294967295)); + RecordStructure.Insert("bigint_field" , New Structure("INT" , 9223372036854775807)); + RecordStructure.Insert("float_field" , New Structure("FLOAT" , 100.50)); + RecordStructure.Insert("double_field" , New Structure("FLOAT" , 100.512123)); + RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); + RecordStructure.Insert("datetime_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("timestamp_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("mediumblob_field", New Structure("BYTES" , Image)); + RecordStructure.Insert("set_field" , New Structure("TEXT" , "one")); + + RecordsArray.Add(RecordStructure); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", RecordsArray); + Options.Insert("trn", Истина); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "AddRecords"); + +EndProcedure + +Procedure MySQL_GetRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + // All records without filters + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecords"); // SKIP + + // Filter, selected fields, limit and sorting + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", "test_data"); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + Table = "test_data"; + + Fields = New Array; + Fields.Add("first_name"); + Fields.Add("last_name"); + Fields.Add("email"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "gender"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Male"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "id"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 50"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("ip_address", "DESC"); + Count = 5; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecords", "Filters"); + +EndProcedure + +Procedure MySQL_UpdateRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Count = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + OPI_TestDataRetrieval.Process(Count, "MySQL", "UpdateRecords", "Count"); // SKIP + Count = Count["data"].Count(); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("values", FieldsStructure); + Options.Insert("filter", FilterStructure); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "UpdateRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "UpdateRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['ip_address']"); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "MySQL", "UpdateRecords", "Check", Count, FieldsStructure); + +EndProcedure + +Procedure MySQL_DeleteRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + FilterStructure.Insert("union", "AND"); + + Filters.Add(FilterStructure); + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "ip_address"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1")); + FilterStructure.Insert("raw" , False); + + Obtaining = OPI_MySQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Obtaining, "MySQL", "DeleteRecords", "Obtaining"); + + Count = Obtaining["data"].Count(); + Residue = 100 - Count; + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteRecords", "Check", Residue); + +EndProcedure + +Procedure MySQL_DeleteTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTable"); + + Base = "test_data"; + Table = "test_data"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTable", "Test"); + +EndProcedure + +Procedure MySQL_DeleteDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = ""; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase"); + + Base = "testbase2"; + + Connection = OPI_MySQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "MySQL", "DeleteDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase", "Deletion"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase", "Error"); + + Closing = OPI_MySQL.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Closing, "MySQL", "DeleteDatabase", "Closing"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteDatabase", "Connection error"); + +EndProcedure + +Procedure MySQL_ClearTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "ClearTable", "Check"); + +EndProcedure + +Procedure MySQL_EnsureRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_merge"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "TEXT"); // SKIP + ColoumnsStruct.Insert("age" , "INT"); // SKIP + ColoumnsStruct.Insert("salary", "DOUBLE"); // SKIP + OPI_MySQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , New Structure("INT" , 1)); + RowStructure2.Insert("name" , New Structure("TEXT" , "Vitaly")); + RowStructure2.Insert("age" , New Structure("INT" , 25)); + RowStructure2.Insert("salary", New Structure("DOUBLE", 1000.12)); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , New Structure("INT" , 2)); + RowStructure1.Insert("name" , New Structure("TEXT" , "Lesha")); + RowStructure1.Insert("age" , New Structure("INT" , 20)); + RowStructure1.Insert("salary", New Structure("DOUBLE", 200.20)); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , New Structure("TEXT" , "Vitaly Updated")); + RowStructure2.Insert("salary", New Structure("DOUBLE", 1500.50)); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , New Structure("INT" , 3)); + StringStructure3.Insert("name" , New Structure("TEXT" , "Anton")); + StringStructure3.Insert("age" , New Structure("INT" , 30)); + StringStructure3.Insert("salary", New Structure("DOUBLE", 3000.00)); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureRecords", "Updating check"); + + OPI_MySQL.DeleteTable(Table, ConnectionString, TLSSettings); + +EndProcedure + +Procedure MySQL_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +Procedure MySQL_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetTLSSettings"); + +EndProcedure + +Procedure MySQL_GetTableInformation(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetTableInformation"); + + Table = "heyho"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "GetTableInformation", "Error"); + +EndProcedure + +Procedure MySQL_AddTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + DataType = "MEDIUMTEXT"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "AddTableColumn", "Check"); + +EndProcedure + +Procedure MySQL_DeleteTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure MySQL_EnsureTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 3306; + Port = ?(TLS, 3307, 3306); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("double_field" , "DOUBLE"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("custom_field" , "TEXT"); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "MySQL", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("mysql", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "MySQL", "EnsureTable", "Check", ColoumnsStruct); + +EndProcedure + +#EndRegion // MySQL + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure MYS_ОсновныеМетоды() Export + MYS_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Neocities.os b/src/en/OInt/tests/Modules/OPItc_Neocities.os new file mode 100644 index 0000000000..4ac99913bd --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Neocities.os @@ -0,0 +1,323 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Neocities.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Neocities"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Neocities"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Neocities + +Procedure NC_FilesManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("NC_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Gif" , TestParameters); + + Neocities_UploadFile(TestParameters); + Neocities_UploadFiles(TestParameters); + Neocities_GetFilesList(TestParameters); + Neocities_DeleteSelectedFiles(TestParameters); + Neocities_SynchronizeFolders(TestParameters); + +EndProcedure + +Procedure NC_DataRetrieving() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("NC_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("NC_Login" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("NC_Password", TestParameters); + + Neocities_GetSiteData(TestParameters); + Neocities_GetToken(TestParameters); + +EndProcedure + +#EndRegion // Neocities + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Neocities + +Procedure Neocities_UploadFile(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + Data = FunctionParameters["Picture"]; // URL, Path or Binary Data + Path = "testfolder/test_pic.png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("file", Data); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "UploadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "UploadFile"); + +EndProcedure + +Procedure Neocities_UploadFiles(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + + Image1 = FunctionParameters["Picture"]; // URL, Path or Binary Data + Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data + GIF = FunctionParameters["Gif"]; // URL, Path or Binary Data + + FileMapping = New Map; + FileMapping.Insert("test/pic1.png", Image1); + FileMapping.Insert("test/gif.gif" , Image2); + FileMapping.Insert("pic2.png" , GIF); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("files", FileMapping); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "UploadFiles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "UploadFiles"); + +EndProcedure + +Procedure Neocities_DeleteSelectedFiles(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + + Paths = New Array; + Paths.Add("/test/pic1.png"); + Paths.Add("/test/gif.gif"); + Paths.Add("/pic2.png"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", Paths); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "DeleteSelectedFiles"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", "/testfolder"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "DeleteSelectedFiles", "Directory 1"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("paths", "/test"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "DeleteSelectedFiles", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "DeleteSelectedFiles", "Directory 2"); + +EndProcedure + +Procedure Neocities_GetFilesList(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + Path = "test"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetFilesList"); + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetFilesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetFilesList", "All"); + +EndProcedure + +Procedure Neocities_GetSiteData(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + Website = "2athenaeum"; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetSiteData", Options); + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetSiteData"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("sitename", Website); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetSiteData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetSiteData", "Website"); + +EndProcedure + +Procedure Neocities_GetToken(FunctionParameters) + + Login = FunctionParameters["NC_Login"]; + Password = FunctionParameters["NC_Password"]; + + Options = New Structure; + Options.Insert("login", Login); + Options.Insert("password", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "GetToken", Options); + + // END + + Result["api_key"] = "***"; + + OPI_TestDataRetrieval.Process(Result, "Neocities", "GetToken"); + +EndProcedure + +Procedure Neocities_SynchronizeFolders(FunctionParameters) + + Token = FunctionParameters["NC_Token"]; + + LocalFolder = "C:\test_site"; + RemoteFolder = "test_sync"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("local", LocalFolder); + Options.Insert("remote", RemoteFolder); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("neocities", "SynchronizeFolders", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Neocities", "SynchronizeFolders"); + +EndProcedure + +#EndRegion // Neocities + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure НС_РаботаСФайлами() Export + NC_FilesManagement(); +EndProcedure + +Procedure НС_ПолучениеДанных() Export + NC_DataRetrieving(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Notion.os b/src/en/OInt/tests/Modules/OPItc_Notion.os new file mode 100644 index 0000000000..ba014cb0f0 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Notion.os @@ -0,0 +1,476 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Notion.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Notion"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Notion"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Notion + +Procedure NotionAPI_CreatePage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2" , TestParameters); + + Notion_CreatePage(TestParameters); + Notion_GetPage(TestParameters); + Notion_EditPageProperties(TestParameters); + +EndProcedure + +Procedure NotionAPI_CreateUpdateBase() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Notion_CreateDatabase(TestParameters); + Notion_EditDatabaseProperties(TestParameters); + Notion_GetDatabase(TestParameters); + Notion_CreatePageInDatabase(TestParameters); + +EndProcedure + +Procedure NotionAPI_CreateDeleteBlock() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Parent", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_Block" , TestParameters); + + Notion_ReturnBlock(TestParameters); + Notion_CreateBlock(TestParameters); + Notion_ReturnChildBlocks(TestParameters); + Notion_DeleteBlock(TestParameters); + +EndProcedure + +Procedure NotionAPI_GetUsers() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Notion_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Notion_User" , TestParameters); + + Notion_UserList(TestParameters); + Notion_GetUserData(TestParameters); + +EndProcedure + +#EndRegion // Notion + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Notion + +Procedure Notion_CreatePage(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Parent = FunctionParameters["Notion_Parent"]; + Title = "TestTitle"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Parent); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreatePage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreatePage", , FunctionParameters); + +EndProcedure + +Procedure Notion_CreateDatabase(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Parent = FunctionParameters["Notion_Parent"]; + Title = "TestTitle"; + + Properties = New Map; + Properties.Insert("Name" , "title"); + Properties.Insert("Description" , "rich_text"); + Properties.Insert("Number" , "number"); + Properties.Insert("CreationDate", "date"); + Properties.Insert("Image" , "files"); + Properties.Insert("Active" , "checkbox"); + Properties.Insert("Website" , "url"); + Properties.Insert("Email" , "email"); + Properties.Insert("Phone" , "phone_number"); + Properties.Insert("User" , "people"); + + ValueSelection = New Map; + ValueSelection.Insert("New" , "green"); + ValueSelection.Insert("InProgress" , "yellow"); + ValueSelection.Insert("Remote" , "red"); + + Properties.Insert("Status", ValueSelection); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Parent); + Options.Insert("title", Title); + Options.Insert("props", Properties); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreateDatabase", , FunctionParameters); + +EndProcedure + +Procedure Notion_EditDatabaseProperties(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Base = FunctionParameters["Notion_Base"]; + + Title = "TestTitle"; + Description = "TestDescription"; + + Properties = New Map; + Properties.Insert("Email", "rich_text"); // Type fields "Email" will changed with email to text + Properties.Insert("Website"); // Field "Website" will deleted + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("base", Base); + Options.Insert("props", Properties); + Options.Insert("title", Title); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "EditDatabaseProperties", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "EditDatabaseProperties"); + +EndProcedure + +Procedure Notion_GetPage(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Page = FunctionParameters["Notion_Page"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Page); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetPage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "GetPage"); + +EndProcedure + +Procedure Notion_GetDatabase(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Base = FunctionParameters["Notion_Base"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("base", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "GetDatabase"); + +EndProcedure + +Procedure Notion_CreatePageInDatabase(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Base = FunctionParameters["Notion_Base"]; + Image_ = FunctionParameters["Picture"]; // URL, Binary Data or File path + + Image = New Map; + Image.Insert("Logo", Image_); + + Properties = New Map; + Properties.Insert("Name" , "LLC Vector"); + Properties.Insert("Description" , "OurFirstClient"); + Properties.Insert("Number" , 1); + Properties.Insert("CreationDate", OPI_Tools.GetCurrentDate()); + Properties.Insert("Image" , Image); + Properties.Insert("Active" , True); + Properties.Insert("Website" , "https://vector.ru"); + Properties.Insert("Email" , "mail@vector.ru"); + Properties.Insert("Phone" , "88005553535"); + Properties.Insert("Status" , "New"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("base", Base); + Options.Insert("data", Properties); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreatePageInDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreatePageInDatabase", , Base); + +EndProcedure + +Procedure Notion_EditPageProperties(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Page = FunctionParameters["Notion_Page"]; + Icon = FunctionParameters["Picture"]; + Cover = FunctionParameters["Picture2"]; + Archive = False; + + Properties = New Map; + Properties.Insert("Active", False); + Properties.Insert("Email" , "vector@mail.ru"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Page); + Options.Insert("data", Properties); + Options.Insert("icon", Icon); + Options.Insert("cover", Cover); + Options.Insert("archive", Archive); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "EditPageProperties", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "EditPageProperties"); + +EndProcedure + +Procedure Notion_ReturnBlock(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Block = FunctionParameters["Notion_Block"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "ReturnBlock"); + +EndProcedure + +Procedure Notion_CreateBlock(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Parent = FunctionParameters["Notion_Parent"]; + Block = FunctionParameters["Notion_Block"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + BlockData = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnBlock", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("page", Parent); + Options.Insert("block", BlockData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "CreateBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "CreateBlock", , FunctionParameters); + +EndProcedure + +Procedure Notion_ReturnChildBlocks(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Block = FunctionParameters["Notion_NewBlock"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "ReturnChildBlocks", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "ReturnChildBlocks"); + +EndProcedure + +Procedure Notion_DeleteBlock(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + Block = FunctionParameters["Notion_NewBlock"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("block", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "DeleteBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "DeleteBlock"); + +EndProcedure + +Procedure Notion_UserList(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "UserList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "UserList"); + +EndProcedure + +Procedure Notion_GetUserData(FunctionParameters) + + Token = FunctionParameters["Notion_Token"]; + User = FunctionParameters["Notion_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("user", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("notion", "GetUserData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Notion", "GetUserData"); + +EndProcedure + +#EndRegion // Notion + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure НоушнАпи_СоздатьСтраницу() Export + NotionAPI_CreatePage(); +EndProcedure + +Procedure НоушнАпи_СоздатьИзменитьБазу() Export + NotionAPI_CreateUpdateBase(); +EndProcedure + +Procedure НоушнАпи_СоздатьУдалитьБлок() Export + NotionAPI_CreateDeleteBlock(); +EndProcedure + +Procedure НоушнАпи_ПолучитьПользователей() Export + NotionAPI_GetUsers(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Ollama.os b/src/en/OInt/tests/Modules/OPItc_Ollama.os new file mode 100644 index 0000000000..10e3d73b95 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Ollama.os @@ -0,0 +1,818 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Ollama.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Ollama"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Ollama"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Ollama + +Procedure OLLM_RequestsProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); + + Ollama_PullModel(TestParameters); + Ollama_GetVersion(TestParameters); + Ollama_GetResponse(TestParameters); + Ollama_GetContextResponse(TestParameters); + Ollama_GetEmbeddings(TestParameters); + Ollama_GetRequestParameterStructure(TestParameters); + Ollama_GetContextParameterStructure(TestParameters); + Ollama_GetContextMessageStructure(TestParameters); + Ollama_GetEmbeddingsParameterStructure(TestParameters); + +EndProcedure + +Procedure OLLM_ModelsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); + + Ollama_PullModel(TestParameters); + Ollama_LoadModelToMemory(TestParameters); + Ollama_UnloadModelFromMemory(TestParameters); + Ollama_CreateModel(TestParameters); + Ollama_GetModelInformation(TestParameters); + Ollama_GetModelList(TestParameters); + Ollama_ListRunningModels(TestParameters); + Ollama_CopyModel(TestParameters); + Ollama_PushModel(TestParameters); + Ollama_GetModelSettingsStructure(TestParameters); + Ollama_DeleteModel(TestParameters); + +EndProcedure + +Procedure OLLM_WorkingWithBlob() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Ollama_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Ollama_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Ollama_PushBlob(TestParameters); + Ollama_CheckBlob(TestParameters); + +EndProcedure + +#EndRegion // Ollama + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Ollama + +Procedure Ollama_GetResponse(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Prompt = "What is 1C:Enterprise?"; + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("prompt", Prompt); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetResponse"); // SKIP + + // With paramether + + Prompt = "Ollama is 22 years old and is busy saving the world. Respond using JSON"; + + Format = OPI_Tools.JSONToStructure(" + |{ + |""type"": ""object"", + |""properties"": { + | ""age"": { + | ""type"": ""integer"" + | }, + | ""available"": { + | ""type"": ""boolean"" + | } + |}, + |""required"": [ + | ""age"", + | ""available"" + |] + |}"); + + AdditionalParameters = New Structure("format", Format); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("prompt", Prompt); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetResponse", "Parameters"); + +EndProcedure + +Procedure Ollama_GetContextResponse(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Model = "tinyllama"; + + MessagesArray = New Array; + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Question1 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextMessageStructure", Options); + Question2 = OPI_Ollama.GetContextMessageStructure("user", "When the first version was released?"); // Question without specifics + + // Adding the first question to the context + MessagesArray.Add(Question1); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("headers", AdditionalHeaders); + + Response1 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Response1, "Ollama", "GetContextResponse", "Preliminary"); // SKIP + + MessagesArray.Add(Response1["message"]); // Add response to first question in context + MessagesArray.Add(Question2); // Add second question in context + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("headers", AdditionalHeaders); + + Response2 = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + MessagesArray.Add(Response2["message"]); + + // ... + + // END + + OPI_TestDataRetrieval.Process(Response2, "Ollama", "GetContextResponse"); + + MessagesArray = New Array; + + Question = New Structure("role,content", "user", "Hello!"); + MessagesArray.Add(Question); + + Options = New Structure("seed,temperature", 101, 0); + AdditionalParameters = New Structure("options", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextResponse", "Seed 1"); + + Message1 = Result["message"]["content"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextResponse", "Seed 2"); + + Message2 = Result["message"]["content"]; + + Options = New Structure("seed,temperature", 555, 10); + AdditionalParameters = New Structure("options", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("msgs", MessagesArray); + Options.Insert("options", AdditionalParameters); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextResponse", "Seed 3"); + + Message3 = Result["message"]["content"]; + + OPI_TestDataRetrieval.Process(Message3, "Ollama", "GetContextResponse", "Comparison", Message1, Message2, Message3); + +EndProcedure + +Procedure Ollama_LoadModelToMemory(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "tinyllama"; + Period = 500; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("keep", Period); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "LoadModelToMemory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "LoadModelToMemory"); + +EndProcedure + +Procedure Ollama_UnloadModelFromMemory(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "UnloadModelFromMemory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "UnloadModelFromMemory"); + +EndProcedure + +Procedure Ollama_GetRequestParameterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetRequestParameterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetRequestParameterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetRequestParameterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetRequestParameterStructure", "Clear"); + +EndProcedure + +Procedure Ollama_GetContextParameterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextParameterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextParameterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextParameterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextParameterStructure", "Clear"); + +EndProcedure + +Procedure Ollama_GetContextMessageStructure(FunctionParameters) + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "Hello!"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetContextMessageStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetContextMessageStructure"); + +EndProcedure + +Procedure Ollama_GetModelSettingsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelSettingsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelSettingsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelSettingsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelSettingsStructure", "Clear"); + +EndProcedure + +Procedure Ollama_CreateModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Settings = New Structure("from,system", "tinyllama", "You are Mario from Super Mario Bros."); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("settings", Settings); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CreateModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CreateModel"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("prompt", "How are you?"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CreateModel", "Request"); + +EndProcedure + +Procedure Ollama_DeleteModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", "library/tinyllama:latest"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel", "Tiny"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", "bayselonarrend/tinyllama:latest"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "DeleteModel", Options); + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel", "Tiny, account"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelList", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "DeleteModel", "List"); + +EndProcedure + +Procedure Ollama_GetModelList(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelList"); + +EndProcedure + +Procedure Ollama_ListRunningModels(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "ListRunningModels", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "ListRunningModels"); + +EndProcedure + +Procedure Ollama_GetModelInformation(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("verbose", Ложь); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetModelInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetModelInformation"); + +EndProcedure + +Procedure Ollama_CopyModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "mario"; + Name = "mario2"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("name", Name); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CopyModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CopyModel"); + + OPI_Ollama.DeleteModel(URL, Name, AdditionalHeaders); + +EndProcedure + +Procedure Ollama_GetVersion(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetVersion", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetVersion"); + +EndProcedure + +Procedure Ollama_GetEmbeddings(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + StingsArray = New Array; + StingsArray.Add("Why is the sky blue?"); + StingsArray.Add("Why is the grass green?"); + + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("input", StingsArray); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetEmbeddings"); + +EndProcedure + +Procedure Ollama_GetEmbeddingsParameterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddingsParameterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetEmbeddingsParameterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "GetEmbeddingsParameterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "GetEmbeddingsParameterStructure", "Clear"); + +EndProcedure + +Procedure Ollama_PushModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "bayselonarrend/tinyllama:latest"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PushModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PushModel"); + +EndProcedure + +Procedure Ollama_PullModel(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Model = "tinyllama"; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", Model); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PullModel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PullModel"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("model", "bayselonarrend/tinyllama:latest"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PullModel", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PullModel", "Account"); + +EndProcedure + +Procedure Ollama_PushBlob(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + + OPI_TypeConversion.GetBinaryData(Image, True); // SKIP + Random = GetBinaryDataFromString(String(New UUID)); // SKIP + Image = OPI_Tools.MergeData(Image, Random); // SKIP + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("data", Image); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "PushBlob", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "PushBlob", , FunctionParameters); + +EndProcedure + +Procedure Ollama_CheckBlob(FunctionParameters) + + URL = FunctionParameters["Ollama_URL"]; + Token = FunctionParameters["Ollama_Token"]; // Authorization - not part API Ollama + SHA256 = FunctionParameters["Ollama_Blob"]; + + AdditionalHeaders = New Map; + AdditionalHeaders.Insert("Authorization", StrTemplate("Bearer %1", Token)); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("digest", SHA256); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CheckBlob", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CheckBlob"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("digest", "yoyoyo"); + Options.Insert("headers", AdditionalHeaders); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ollama", "CheckBlob", Options); + + OPI_TestDataRetrieval.Process(Result, "Ollama", "CheckBlob", "Error"); + +EndProcedure + +#EndRegion // Ollama + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure OLLM_ОбработкаЗапросов() Export + OLLM_RequestsProcessing(); +EndProcedure + +Procedure OLLM_РаботаСМоделями() Export + OLLM_ModelsManagement(); +EndProcedure + +Procedure OLLM_РаботаСBlob() Export + OLLM_WorkingWithBlob(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_OpenAI.os b/src/en/OInt/tests/Modules/OPItc_OpenAI.os new file mode 100644 index 0000000000..7c28009825 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_OpenAI.os @@ -0,0 +1,682 @@ +// OneScript: ./OInt/tests/Modules/OPItc_OpenAI.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("OpenAI"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("OpenAI"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region OpenAI + +Procedure OAI_RequestsProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_File" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + OpenAI_GetResponse(TestParameters); + OpenAI_GetEmbeddings(TestParameters); + OpenAI_GetMessageStructure(TestParameters); + OpenAI_GetImageMessageStructure(TestParameters); + OpenAI_GetImages(TestParameters); + OpenAI_GetAssistantMessage(TestParameters); + OpenAI_GetUserMessage(TestParameters); + OpenAI_GetSystemMessage(TestParameters); + +EndProcedure + +Procedure OAI_Assistants() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + + OpenAI_CreateAssistant(TestParameters); + OpenAI_RetrieveAssistant(TestParameters); + OpenAI_GetAssistantsList(TestParameters); + OpenAI_DeleteAssistant(TestParameters); + +EndProcedure + +Procedure OAI_FileManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + OpenAI_UploadFile(TestParameters); + OpenAI_GetFileInformation(TestParameters); + OpenAI_GetFilesList(TestParameters); + OpenAI_DownloadFile(TestParameters); + OpenAI_DeleteFile(TestParameters); + +EndProcedure + +Procedure OAI_AudioProcessing() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + + OpenAI_GenerateSpeech(TestParameters); + OpenAI_CreateTranscription(TestParameters); + +EndProcedure + +Procedure OAI_ModelsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters); + + OpenAI_GetModelList(TestParameters); + +EndProcedure + +#EndRegion // OpenAI + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region OpenAI + +Procedure OpenAI_GetResponse(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + // Text messages + + Messages = New Array; + Messages.Add(OPI_OpenAI.GetMessageStructure("user" , "What is 1C:Enterprise?")); + Messages.Add(OPI_OpenAI.GetMessageStructure("assistant", "1C:Enterprise is a full-stack, low-code platform")); + Messages.Add(OPI_OpenAI.GetMessageStructure("user" , "When the first version was released?")); + + Model = "smolvlm-256m-instruct"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("msgs", Messages); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetResponse", Options); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetResponse"); // SKIP + + // Pictures + + Model = "moondream2-20250414"; + File = FunctionParameters["Picture"]; // URL, Path or Binary Data + FileName = StrTemplate("%1.png", String(New UUID())); + Destination = "user_data"; + + Messages = New Array; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", FileName); + Options.Insert("data", File); + Options.Insert("purpose", Destination); + + ImageUpload = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(ImageUpload, "OpenAI", "GetResponse", "Image upload"); // SKIP + + ImageID = ImageUpload["id"]; + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("file", ImageID); + Options.Insert("prompt", "What is in this image?"); + + Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options); + + Messages.Add(Description); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("msgs", Messages); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetResponse", Options); + + OPI_OpenAI.DeleteFile(URL, Token, ImageID); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetResponse", "Image"); + +EndProcedure + +Procedure OpenAI_GetEmbeddings(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Text = "What is 1C:Enterprise?"; + Model = "arcee-ai_afm-4.5b"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("input", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetEmbeddings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetEmbeddings"); + +EndProcedure + +Procedure OpenAI_CreateAssistant(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Instruction = "You are a personal math tutor. When asked a question, write and run Python code to answer the question."; + Model = "smolvlm-256m-instruct"; + Name = "Math tutor"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("name", Name); + Options.Insert("inst", Instruction); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateAssistant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "CreateAssistant", , FunctionParameters); + +EndProcedure + +Procedure OpenAI_DeleteAssistant(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + AssistantID = FunctionParameters["OpenAI_Assistant"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", AssistantID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DeleteAssistant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "DeleteAssistant", , AssistantID); + +EndProcedure + +Procedure OpenAI_RetrieveAssistant(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + AssistantID = FunctionParameters["OpenAI_Assistant"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", AssistantID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "RetrieveAssistant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "RetrieveAssistant"); + +EndProcedure + +Procedure OpenAI_GetAssistantsList(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Count = 2; + AdditionalParameters = New Structure("after,order", "asst_2", "desc"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("limit", Count); + Options.Insert("options", AdditionalParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetAssistantsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetAssistantsList"); + +EndProcedure + +Procedure OpenAI_UploadFile(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + File = FunctionParameters["Picture"]; // URL, Path or Binary Data + + FileName = StrTemplate("%1.png", String(New UUID())); + Destination = "assistants"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", FileName); + Options.Insert("data", File); + Options.Insert("purpose", Destination); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "UploadFile", Options); + + // END + + OPI_TypeConversion.GetBinaryData(File); + OPI_TestDataRetrieval.Process(Result, "OpenAI", "UploadFile", , FunctionParameters, FileName, File.Size() + 2); + +EndProcedure + +Procedure OpenAI_DeleteFile(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + FileID = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DeleteFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "DeleteFile", , FileID); + +EndProcedure + +Procedure OpenAI_GetFileInformation(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + FileID = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetFileInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetFileInformation"); + +EndProcedure + +Procedure OpenAI_GetFilesList(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetFilesList"); + +EndProcedure + +Procedure OpenAI_DownloadFile(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + FileID = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "DownloadFile", , FunctionParameters); + +EndProcedure + +Procedure OpenAI_GetMessageStructure(FunctionParameters) + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetMessageStructure"); + +EndProcedure + +Procedure OpenAI_GetImageMessageStructure(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + Image = FunctionParameters["OpenAI_File"]; + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("file", Image); + Options.Insert("prompt", "What is in this image?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetImageMessageStructure"); + +EndProcedure + +Procedure OpenAI_GenerateSpeech(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Text = "Attack ships on fire off the shoulder of Orion bright as magnesium"; + Model = "bark-cpp-small"; + + AdditionalParameters = New Structure("response_format", "wav"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("input", Text); + Options.Insert("options", AdditionalParameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GenerateSpeech", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GenerateSpeech", , FunctionParameters); + +EndProcedure + +Procedure OpenAI_CreateTranscription(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Audio = FunctionParameters["OpenAI_Speech"]; + Model = "whisper-1"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("audio", Audio); + Options.Insert("type", "audio/wav"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateTranscription", Options); + + // END + + OPI_Tools.RemoveFileWithTry(Audio, "Failed to delete the temporary file after the test!!"); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "CreateTranscription"); + +EndProcedure + +Procedure OpenAI_GetImages(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Model = "sd-1.5-ggml"; + Options = New Structure; + Options.Insert("prompt", "Yellow alpaca"); + Options.Insert("amount", 1); + Options.Insert("size", "64x64"); + + Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageDescriptionStructure", Options); + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("model", Model); + Options.Insert("descr", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImages", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetImages"); + +EndProcedure + +Procedure OpenAI_GetModelList(FunctionParameters) + + URL = FunctionParameters["OpenAI_URL"]; + Token = FunctionParameters["OpenAI_Token"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetModelList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetModelList"); + +EndProcedure + +Procedure OpenAI_GetAssistantMessage(FunctionParameters) + + Options = New Structure; + Options.Insert("text", "What is 1C:Enterprise?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetAssistantMessage", Options); + + // END + + Options = New Structure; + Options.Insert("role", "assistant"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + Check = OPI_Tools.JSONString(Check); + Result = OPI_Tools.JSONString(Result); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetAssistantMessage", , Check); + +EndProcedure + +Procedure OpenAI_GetUserMessage(FunctionParameters) + + Options = New Structure; + Options.Insert("text", "What is 1C:Enterprise?"); + Options.Insert("name", "Vitaly"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetUserMessage", Options); + + // END + + Options = New Structure; + Options.Insert("role", "user"); + Options.Insert("text", "What is 1C:Enterprise?"); + Options.Insert("name", "Vitaly"); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + Check = OPI_Tools.JSONString(Check); + Result = OPI_Tools.JSONString(Result); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetUserMessage", , Check); + +EndProcedure + +Procedure OpenAI_GetSystemMessage(FunctionParameters) + + Options = New Structure; + Options.Insert("text", "What is 1C:Enterprise?"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetSystemMessage", Options); + + // END + + Options = New Structure; + Options.Insert("role", "system"); + Options.Insert("text", "What is 1C:Enterprise?"); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options); + Check = OPI_Tools.JSONString(Check); + Result = OPI_Tools.JSONString(Result); + + OPI_TestDataRetrieval.Process(Result, "OpenAI", "GetSystemMessage", , Check); + +EndProcedure + +#EndRegion // OpenAI + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure OAI_ОбработкаЗапросов() Export + OAI_RequestsProcessing(); +EndProcedure + +Procedure OAI_Ассистенты() Export + OAI_Assistants(); +EndProcedure + +Procedure OAI_РаботаСФайлами() Export + OAI_FileManagement(); +EndProcedure + +Procedure OAI_РаботаСАудио() Export + OAI_AudioProcessing(); +EndProcedure + +Procedure OAI_РаботаСМоделями() Export + OAI_ModelsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_PostgreSQL.os b/src/en/OInt/tests/Modules/OPItc_PostgreSQL.os new file mode 100644 index 0000000000..6ee1648d98 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_PostgreSQL.os @@ -0,0 +1,1672 @@ +// OneScript: ./OInt/tests/Modules/OPItc_PostgreSQL.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("PostgreSQL"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("PostgreSQL"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region PostgreSQL + +Procedure Postgres_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetPostgresParameterOptions(); + + For Each TestParameters In OptionArray Do + + PostgreSQL_GenerateConnectionString(TestParameters); + PostgreSQL_CreateConnection(TestParameters); + PostgreSQL_CloseConnection(TestParameters); + PostgreSQL_IsConnector(TestParameters); + PostgreSQL_ExecuteSQLQuery(TestParameters); + PostgreSQL_GetTLSSettings(TestParameters); + + EndDo; + +EndProcedure + +Procedure Postgres_ORM() Export + + OptionArray = OPI_TestDataRetrieval.GetPostgresParameterOptions(); + + For Each TestParameters In OptionArray Do + + PostgreSQL_CreateDatabase(TestParameters); + PostgreSQL_CreateTable(TestParameters); + PostgreSQL_AddRecords(TestParameters); + PostgreSQL_EnsureRecords(TestParameters); + PostgreSQL_GetRecords(TestParameters); + PostgreSQL_UpdateRecords(TestParameters); + PostgreSQL_DeleteRecords(TestParameters); + PostgreSQL_ClearTable(TestParameters); + PostgreSQL_GetTableInformation(TestParameters); + PostgreSQL_AddTableColumn(TestParameters); + PostgreSQL_DeleteTableColumn(TestParameters); + PostgreSQL_EnsureTable(TestParameters); + PostgreSQL_DeleteTable(TestParameters); + PostgreSQL_DisableAllDatabaseConnections(TestParameters); + PostgreSQL_DeleteDatabase(TestParameters); + PostgreSQL_GetRecordsFilterStructure(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // PostgreSQL + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region PostgreSQL + +Procedure PostgreSQL_GenerateConnectionString(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + // END + + Result = StrReplace(Result, Password, "***"); + Result = StrReplace(Result, Address , "127.0.0.1"); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GenerateConnectionString"); + +EndProcedure + +Procedure PostgreSQL_CreateConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Result = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + // END + + OPI_PostgreSQL.CloseConnection(Result); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateConnection"); + +EndProcedure + +Procedure PostgreSQL_CloseConnection(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_PostgreSQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CloseConnection"); + +EndProcedure + +Procedure PostgreSQL_IsConnector(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + Result = OPI_PostgreSQL.IsConnector(Connection); + + OPI_PostgreSQL.CloseConnection(Result); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "IsConnector"); + +EndProcedure + +Procedure PostgreSQL_ExecuteSQLQuery(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_PostgreSQL.DeleteTable("users" , Connection); // SKIP + OPI_PostgreSQL.DeleteTable("test_data" , Connection); // SKIP + OPI_PostgreSQL.DeleteTable("test_table", Connection); // SKIP + + OPI_TestDataRetrieval.Process(Connection, "PostgreSQL", "ExecuteSQLQuery", "Connection"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + |id SERIAL PRIMARY KEY, + |name NAME, + |age INT, + |salary REAL, + |is_active BOOL, + |created_at DATE, + |data BYTEA + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES ($1, $2, $3, $4, $5, $6);"; + + ParameterArray = New Array; + ParameterArray.Add(New Structure("NAME" , "Vitaly")); + ParameterArray.Add(New Structure("INT" , 25)); + ParameterArray.Add(New Structure("REAL" , 1000.12)); + ParameterArray.Add(New Structure("BOOL" , True)); + ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate())); + ParameterArray.Add(New Structure("BYTEA", Image)); + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", , Image); // SKIP + + // DO + Transaction + + QueryText = "DO $$ + |BEGIN + | CREATE TABLE users ( + | id SMALLSERIAL, + | name TEXT NOT NULL, + | age INT NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + |END $$ LANGUAGE plpgsql;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Transaction"); // SKIP + + // SQL query from file + + SQLFile = FunctionParameters["SQL"]; // Binary Data, URL or path to file + + Options = New Structure; + Options.Insert("sql", SQLFile); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "File"); // SKIP + + Closing = OPI_PostgreSQL.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ExecuteSQLQuery", "Closing"); + +EndProcedure + +Procedure PostgreSQL_CreateDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + Deletion = OPI_PostgreSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); // SKIP + OPI_TestDataRetrieval.LogServiceInformation(Deletion, "CreateDatabase (deleting)", "PostgreSQL"); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateDatabase"); + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "PostgreSQL", "CreateDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateDatabase", "Existing"); + + Base = "testbase2"; + + OPI_PostgreSQL.DeleteDatabase(Base, ConnectionString, TLSSettings); + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateDatabase", "New"); + + OPI_PostgreSQL.CloseConnection(Connection); + +EndProcedure + +Procedure PostgreSQL_CreateTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("bool_field" , "BOOL"); + ColoumnsStruct.Insert("oldchar_field" , """char"""); + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL"); + ColoumnsStruct.Insert("int_field" , "INT"); + ColoumnsStruct.Insert("serial_field" , "SERIAL"); + ColoumnsStruct.Insert("oid_field" , "OID"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("bigserial_field" , "BIGSERIAL"); + ColoumnsStruct.Insert("real_field" , "REAL"); + ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION"); + ColoumnsStruct.Insert("text_field" , "TEXT"); + ColoumnsStruct.Insert("varchar_field" , "VARCHAR"); + ColoumnsStruct.Insert("charn_field" , "CHAR(3)"); + ColoumnsStruct.Insert("char_field" , "CHAR"); + ColoumnsStruct.Insert("name_field" , "NAME"); + ColoumnsStruct.Insert("bytea_field" , "BYTEA"); + ColoumnsStruct.Insert("ts_field" , "TIMESTAMP"); + ColoumnsStruct.Insert("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); + ColoumnsStruct.Insert("ip_field" , "INET"); + ColoumnsStruct.Insert("json_field" , "JSON"); + ColoumnsStruct.Insert("jsonb_field" , "JSONB"); + ColoumnsStruct.Insert("date_field" , "DATE"); + ColoumnsStruct.Insert("time_field" , "TIME"); + ColoumnsStruct.Insert("uuid_field" , "UUID"); + ColoumnsStruct.Insert("numeric_field" , "NUMERIC(15, 2)"); + + OPI_PostgreSQL.DeleteTable(Table, ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateTable"); + + Table = "ABC DEF"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateTable", "Name error"); + + Table = "somename"; + ColoumnsStruct.Insert("wtf_field", "WTF"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "CreateTable", "Type error"); + +EndProcedure + +Procedure PostgreSQL_GetTableInformation(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetTableInformation"); + + Table = "heyho"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetTableInformation", "Error"); + +EndProcedure + +Procedure PostgreSQL_AddRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + RecordsArray = New Array; + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + CasualStructure = New Structure("key,value", "ItsKey", 10); + + CurrentDate = OPI_Tools.GetCurrentDate(); + CurrentDateTZ = OPI_Tools.DateRFC3339(CurrentDate, "+05:00"); + + RecordStructure = New Structure; + RecordStructure.Insert("bool_field" , New Structure("BOOL" , True)); + RecordStructure.Insert("oldchar_field" , New Structure("OLDCHAR" , 1)); // or "char" + RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 5)); + RecordStructure.Insert("smallserial_field", New Structure("SMALLSERIAL" , 6)); + RecordStructure.Insert("int_field" , New Structure("INT" , 100)); + RecordStructure.Insert("serial_field" , New Structure("SERIAL" , 100)); + RecordStructure.Insert("oid_field" , New Structure("OID" , 24576)); + RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999)); + RecordStructure.Insert("bigserial_field" , New Structure("BIGSERIAL" , 9999999)); + RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2)); + RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION" , 1.0002)); // or DOUBLE PRECISION + RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text")); + RecordStructure.Insert("varchar_field" , New Structure("VARCHAR" , "Some varchar")); + RecordStructure.Insert("charn_field" , New Structure("CHAR" , "AAA")); + RecordStructure.Insert("char_field" , New Structure("CHAR" , "A")); + RecordStructure.Insert("name_field" , New Structure("NAME" , "Vitaly")); + RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image)); + RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , CurrentDate)); + RecordStructure.Insert("tswtz_field" , New Structure("TIMESTAMP_WITH_TIME_ZONE", CurrentDateTZ)); // or TIMESTAMP WITH TIME ZONE + RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1")); + RecordStructure.Insert("json_field" , New Structure("JSON" , CasualStructure)); + RecordStructure.Insert("jsonb_field" , New Structure("JSONB" , CasualStructure)); + RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate)); + RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate)); + RecordStructure.Insert("uuid_field" , New Structure("UUID" , New UUID)); + RecordStructure.Insert("numeric_field" , New Structure("NUMERIC" , "15.2")); + + RecordsArray.Add(RecordStructure); + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", RecordsArray); + Options.Insert("trn", Истина); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "AddRecords"); + +EndProcedure + +Procedure PostgreSQL_GetRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + // All records without filters + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecords"); // SKIP + + // Filter, selected fields, limit and sorting + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", "test_data"); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + Table = "test_data"; + + Fields = New Array; + Fields.Add("first_name"); + Fields.Add("last_name"); + Fields.Add("email"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "gender"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Male"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "id"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 50"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("ip_address", "DESC"); + Count = 5; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecords", "Filters"); + +EndProcedure + +Procedure PostgreSQL_UpdateRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("ip_address", New Structure("VARCHAR", "127.0.0.1")); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Count = OPI_PostgreSQl.GetRecords(Table, , Filters, , , ConnectionString); // SKIP + OPI_TestDataRetrieval.Process(Count, "PostgreSQL", "UpdateRecords", "Count"); // SKIP + Count = Count["data"].Count(); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Result = OPI_PostgreSQl.UpdateRecords(Table + , FieldsStructure + , FilterStructure + , ConnectionString + , TLSSettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "UpdateRecords"); + + Check = OPI_PostgreSQl.GetRecords(Table, "['ip_address']", Filters, , , ConnectionString); + + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "UpdateRecords", "Check", Count, FieldsStructure); + +EndProcedure + +Procedure PostgreSQL_DeleteRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "test_data"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_data"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "gender"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "Male")); + FilterStructure.Insert("raw" , False); + FilterStructure.Insert("union", "AND"); + + Filters.Add(FilterStructure); + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "ip_address"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", New Structure("VARCHAR", "127.0.0.1")); + FilterStructure.Insert("raw" , False); + + Obtaining = OPI_PostgreSQL.GetRecords(Table, , Filters, , , ConnectionString, TLSSettings); // SKIP + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", Filters); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Obtaining, "PostgreSQL", "DeleteRecords", "Obtaining"); + + Count = Obtaining["data"].Count(); + Residue = 100 - Count; + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteRecords", "Check", Residue); + +EndProcedure + +Procedure PostgreSQL_DeleteTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTable"); + + Base = "test_data"; + Table = "test_data"; + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTable", "Test"); + +EndProcedure + +Procedure PostgreSQL_DeleteDatabase(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "postgres"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Base = "testbase1"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase"); + + Base = "testbase2"; + + Connection = OPI_PostgreSQL.CreateConnection(ConnectionString, TLSSettings); + + OPI_TestDataRetrieval.Process(Connection, "PostgreSQL", "DeleteDatabase", "Openning"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DisableAllDatabaseConnections", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Shutdown"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Deletion"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Error"); + + Closing = OPI_PostgreSQL.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Closing, "PostgreSQL", "DeleteDatabase", "Closing"); + + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteDatabase", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteDatabase", "Connection error"); + +EndProcedure + +Procedure PostgreSQL_ClearTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "ClearTable", "Check"); + +EndProcedure + +Procedure PostgreSQL_DisableAllDatabaseConnections(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + // When using the connection string, a new connection is initialised, + // which will be closed after the function is executed. + // If several operations are performed, it is desirable to use one connection, + // previously created by the CreateConnection function() + Options = New Structure; + Options.Insert("base", Base); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DisableAllDatabaseConnections", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DisableAllDatabaseConnections"); + +EndProcedure + +Procedure PostgreSQL_EnsureRecords(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "test_merge"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INT PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "TEXT"); // SKIP + ColoumnsStruct.Insert("age" , "INT"); // SKIP + ColoumnsStruct.Insert("salary", "REAL"); // SKIP + OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , New Structure("INT" , 1)); + RowStructure2.Insert("name" , New Structure("TEXT", "Vitaly")); + RowStructure2.Insert("age" , New Structure("INT" , 25)); + RowStructure2.Insert("salary", New Structure("REAL", 1000.12)); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , New Structure("INT" , 2)); + RowStructure1.Insert("name" , New Structure("TEXT", "Lesha")); + RowStructure1.Insert("age" , New Structure("INT" , 20)); + RowStructure1.Insert("salary", New Structure("REAL", 200.20)); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , New Structure("TEXT", "Vitaly Updated")); + RowStructure2.Insert("salary", New Structure("REAL", 1500.50)); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , New Structure("INT" , 3)); + StringStructure3.Insert("name" , New Structure("TEXT", "Anton")); + StringStructure3.Insert("age" , New Structure("INT" , 30)); + StringStructure3.Insert("salary", New Structure("REAL", 3000.00)); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureRecords", "Updating check"); + + OPI_PostgreSQL.DeleteTable(Table, ConnectionString, TLSSettings); + +EndProcedure + +Procedure PostgreSQL_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +Procedure PostgreSQL_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "GetTLSSettings"); + +EndProcedure + +Procedure PostgreSQL_AddTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + DataType = "TEXT"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "AddTableColumn", "Check"); + +EndProcedure + +Procedure PostgreSQL_DeleteTableColumn(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + Name = "new_field"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure PostgreSQL_EnsureTable(FunctionParameters) + + Address = FunctionParameters["PG_IP"]; + Login = "bayselonarrend"; + Password = FunctionParameters["PG_Password"]; + Base = "testbase1"; + + TLS = True; + TLS = FunctionParameters["TLS"]; // SKIP + + Port = 5432; + Port = ?(TLS, 5433, 5432); // SKIP + + Options = New Structure; + Options.Insert("addr", Address); + Options.Insert("db", Base); + Options.Insert("login", Login); + Options.Insert("pass", Password); + Options.Insert("port", Port); + + ConnectionString = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GenerateConnectionString", Options); + + If TLS Then + Options = New Structure; + Options.Insert("trust", Истина); + + TLSSettings = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTLSSettings", Options); + Else + TLSSettings = Undefined; + EndIf; + + Table = "testtable"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("smallint_field" , "SMALLINT"); + ColoumnsStruct.Insert("uuid_field" , "uuid"); + ColoumnsStruct.Insert("bigint_field" , "BIGINT"); + ColoumnsStruct.Insert("custom_field" , "TEXT"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "PostgreSQL", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("dbc", ConnectionString); + Options.Insert("tls", TLSSettings); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("postgres", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "PostgreSQL", "EnsureTable", "Check", ColoumnsStruct); + +EndProcedure + +#EndRegion // PostgreSQL + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Postgres_ОсновныеМетоды() Export + Postgres_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_RCON.os b/src/en/OInt/tests/Modules/OPItc_RCON.os new file mode 100644 index 0000000000..17779de86f --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_RCON.os @@ -0,0 +1,240 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RCON.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("RCON"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("RCON"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region RCON + +Procedure RC_CommandsExecution() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RCON_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RCON_Password", TestParameters); + + RCON_FormConnectionParameters(TestParameters); + RCON_CreateConnection(TestParameters); + RCON_ExecuteCommand(TestParameters); + RCON_IsConnector(TestParameters); + +EndProcedure + +#EndRegion // RCON + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region RCON + +Procedure RCON_FormConnectionParameters(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "FormConnectionParameters"); + +EndProcedure + +Procedure RCON_CreateConnection(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + Result = OPI_RCON.CreateConnection(ConnectionParams); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "CreateConnection"); + +EndProcedure + +Procedure RCON_ExecuteCommand(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + Connection = OPI_RCON.CreateConnection(ConnectionParams); + + Command = "list"; + Options = New Structure; + Options.Insert("exec", Command); + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "ExecuteCommand", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "ExecuteCommand"); + + Command = "list"; + Options = New Structure; + Options.Insert("exec", Command); + Options.Insert("conn", ConnectionParams); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "ExecuteCommand", Options); + + OPI_TestDataRetrieval.Process(Result, "RCON", "ExecuteCommand", "No connection"); + +EndProcedure + +Procedure RCON_IsConnector(FunctionParameters) + + URL = FunctionParameters["RCON_URL"]; + Password = FunctionParameters["RCON_Password"]; + WriteTimeout = 20; + ReadTimeout = 20; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("pass", Password); + Options.Insert("rtout", ReadTimeout); + Options.Insert("wtout", WriteTimeout); + + ConnectionParams = OPI_TestDataRetrieval.ExecuteTestCLI("rcon", "FormConnectionParameters", Options); + Connection = OPI_RCON.CreateConnection(ConnectionParams); + Result = OPI_RCON.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "RCON", "IsConnector"); + +EndProcedure + +#EndRegion // RCON + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure RC_ВыполнениеКоманд() Export + RC_CommandsExecution(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_RSS.os b/src/en/OInt/tests/Modules/OPItc_RSS.os new file mode 100644 index 0000000000..ddeb1b4c29 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_RSS.os @@ -0,0 +1,335 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RSS.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("RSS"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("RSS"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region RSS + +Procedure RSS_RSSMethods() Export + + TestParameters = New Structure; + + RSS_CreateFeedRSS(TestParameters); + RSS_GetFeedItemStructureRSS(TestParameters); + RSS_ParseFeedRSS(TestParameters); + +EndProcedure + +Procedure RSS_AtomMethods() Export + + TestParameters = New Structure; + + RSS_CreateFeedAtom(TestParameters); + RSS_GetFeedItemStructureAtom(TestParameters); + RSS_ParseFeedAtom(TestParameters); + +EndProcedure + +#EndRegion // RSS + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region RSS + +Procedure RSS_CreateFeedRSS(FunctionParameters) + + ChannelTitle = "Test RSS channel"; + ChannelDescription = "Test RSS channel description"; + ChannelLink = "https://example.com"; + + ItemsArray = New Array; + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + ElementStructure["title"] = "First element"; + ElementStructure["description"] = "First element description"; + ElementStructure["link"] = "https://example.com/item1"; + ElementStructure["pubDate"] = OPI_Tools.GetCurrentDate(); + ElementStructure["author"] = "test@example.com"; + ElementStructure["guid"] = "item-1"; + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + ElementStructure["title"] = "Second element"; + ElementStructure["description"] = "Second element description"; + ElementStructure["link"] = "https://example.com/item2"; + ElementStructure["pubDate"] = OPI_Tools.GetCurrentDate(); + ElementStructure["author"] = "test@example.com"; + ElementStructure["guid"] = "item-2"; + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("name", ChannelTitle); + Options.Insert("descr", ChannelDescription); + Options.Insert("link", ChannelLink); + Options.Insert("items", ItemsArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "CreateFeedRSS", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "CreateFeedRSS", , FunctionParameters); + +EndProcedure + +Procedure RSS_GetFeedItemStructureRSS(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureRSS"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureRSS", "Clear"); + + Options = New Structure; + Options.Insert("empty", Ложь); + Options.Insert("map", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureRSS", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureRSS", "Map"); + +EndProcedure + +Procedure RSS_ParseFeedRSS(FunctionParameters) + + FeedXML = FunctionParameters["RSS_FeedXML"]; + + Options = New Structure; + Options.Insert("xml", FeedXML); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "ParseFeedRSS", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "ParseFeedRSS"); + + OPI_Tools.RemoveFileWithTry(FeedXML, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure RSS_CreateFeedAtom(FunctionParameters) + + FeedTitle = "Test Atom feed"; + FeedLink = "https://example.com"; + FeedID = "https://example.com/feed"; + + ItemsArray = New Array; + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + ElementStructure["title"] = "First record"; + ElementStructure["id"] = "https://example.com/entry1"; + ElementStructure["link"] = "https://example.com/entry1"; + ElementStructure["updated"] = OPI_Tools.GetCurrentDate(); + ElementStructure["summary"] = "First record summary"; + ElementStructure["content"] = "Full content of the first record"; + ElementStructure["author"] = "First Author"; + ElementStructure["published"] = OPI_Tools.GetCurrentDate(); + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("empty", Истина); + + ElementStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + ElementStructure["title"] = "Second record"; + ElementStructure["id"] = "https://example.com/entry2"; + ElementStructure["link"] = "https://example.com/entry2"; + ElementStructure["updated"] = OPI_Tools.GetCurrentDate(); + ElementStructure["summary"] = "Second record summary"; + ElementStructure["content"] = "Full content of the second record"; + ElementStructure["author"] = "Second Author"; + ElementStructure["published"] = OPI_Tools.GetCurrentDate(); + + ItemsArray.Add(ElementStructure); + + Options = New Structure; + Options.Insert("name", FeedTitle); + Options.Insert("link", FeedLink); + Options.Insert("id", FeedID); + Options.Insert("items", ItemsArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "CreateFeedAtom", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "CreateFeedAtom", , FunctionParameters); + +EndProcedure + +Procedure RSS_GetFeedItemStructureAtom(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureAtom"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureAtom", "Clear"); + + Options = New Structure; + Options.Insert("empty", Ложь); + Options.Insert("map", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "GetFeedItemStructureAtom", Options); + + OPI_TestDataRetrieval.Process(Result, "RSS", "GetFeedItemStructureAtom", "Map"); + +EndProcedure + +Procedure RSS_ParseFeedAtom(FunctionParameters) + + FeedXML = FunctionParameters["RSS_AtomFeedXML"]; + + Options = New Structure; + Options.Insert("xml", FeedXML); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rss", "ParseFeedAtom", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "RSS", "ParseFeedAtom"); + + OPI_Tools.RemoveFileWithTry(FeedXML, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +#EndRegion // RSS + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure RSS_МетодыRSS() Export + RSS_RSSMethods(); +EndProcedure + +Procedure RSS_МетодыAtom() Export + RSS_AtomMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_ReportPortal.os b/src/en/OInt/tests/Modules/OPItc_ReportPortal.os new file mode 100644 index 0000000000..4bdb438303 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_ReportPortal.os @@ -0,0 +1,1082 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ReportPortal.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("ReportPortal"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("ReportPortal"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region ReportPortal + +Procedure RPortal_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_Login" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_UserID" , TestParameters); + + ReportPortal_GetTemporaryToken(TestParameters); + ReportPortal_GetPermanentToken(TestParameters); + ReportPortal_DeletePermanentToken(TestParameters); + ReportPortal_GetUserTokens(TestParameters); + +EndProcedure + +Procedure RPortal_TestManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateLaunch(TestParameters); + ReportPortal_GetLaunch(TestParameters); + ReportPortal_GetLaunchItems(TestParameters); + ReportPortal_UpdateLaunch(TestParameters); + ReportPortal_CreateItem(TestParameters); + ReportPortal_GetItem(TestParameters); + ReportPortal_GetItemLogs(TestParameters); + ReportPortal_UpdateItem(TestParameters); + ReportPortal_FinishItem(TestParameters); + ReportPortal_FinishLaunch(TestParameters); + ReportPortal_DeleteItem(TestParameters); + ReportPortal_GetLaunchReport(TestParameters); + ReportPortal_DeleteLaunch(TestParameters); + ReportPortal_GetLaunchStructure(TestParameters); + ReportPortal_GetItemStructure(TestParameters); + ReportPortal_GetItemCompletionStructure(TestParameters); + ReportPortal_GetLaunchCompletionStructure(TestParameters); + +EndProcedure + +Procedure RPortal_LogRecording() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateLaunch(TestParameters); + ReportPortal_CreateItem(TestParameters); + + ReportPortal_WriteLog(TestParameters); + ReportPortal_GetLogStructure(TestParameters); + ReportPortal_GetLog(TestParameters); + ReportPortal_DeleteLog(TestParameters); + + ReportPortal_FinishItem(TestParameters); + ReportPortal_FinishLaunch(TestParameters); + +EndProcedure + +Procedure RPortal_ProjectManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateProject(TestParameters); + ReportPortal_GetProject(TestParameters); + ReportPortal_GetProjects(TestParameters); + ReportPortal_AddUsersToProject(TestParameters); + ReportPortal_ExcludeUsersFromProject(TestParameters); + ReportPortal_DeleteProject(TestParameters); + +EndProcedure + +Procedure RPortal_UserManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("RPortal_TempToken", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("RPortal_URL" , TestParameters); + + ReportPortal_CreateUser(TestParameters); + ReportPortal_GetCurrentUser(TestParameters); + ReportPortal_GetUser(TestParameters); + ReportPortal_GetUsers(TestParameters); + ReportPortal_GetUserProjects(TestParameters); + ReportPortal_UpdateUser(TestParameters); + ReportPortal_DeleteUser(TestParameters); + ReportPortal_GetUserFieldsStructure(TestParameters); + +EndProcedure + +#EndRegion // ReportPortal + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region ReportPortal + +Procedure ReportPortal_GetTemporaryToken(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Login = FunctionParameters["RPortal_Login"]; + Password = FunctionParameters["RPortal_Password"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("login", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetTemporaryToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetTemporaryToken", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetPermanentToken(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + UserID = FunctionParameters["RPortal_UserID"]; + KeyName = "test_key_2"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("user", UserID); + Options.Insert("name", KeyName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetPermanentToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetPermanentToken", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeletePermanentToken(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TestApiKey"]; + UserID = FunctionParameters["RPortal_UserID"]; + KeyID = FunctionParameters["RPortal_TestKeyID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("user", UserID); + Options.Insert("id", KeyID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeletePermanentToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeletePermanentToken"); + +EndProcedure + +Procedure ReportPortal_GetUserTokens(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + UserID = FunctionParameters["RPortal_UserID"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserTokens", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserTokens"); + +EndProcedure + +Procedure ReportPortal_CreateLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Project = "Test"; + + StartDate = Date("20260101100000"); + + LaunchStructure = New Structure; + LaunchStructure.Insert("name" , "Test"); + LaunchStructure.Insert("startTime" , StartDate); + LaunchStructure.Insert("description", "Test launch"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("params", LaunchStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateLaunch", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_FinishLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + Project = "Test"; + + EndDate = Date("20260101200000"); + Options = New Structure; + Options.Insert("end", EndDate); + Options.Insert("status", "passed"); + Options.Insert("descr", "Updated launch description"); + + FinishStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchCompletionStructure", Options); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", LaunchID); + Options.Insert("params", FinishStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "FinishLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "FinishLaunch"); + +EndProcedure + +Procedure ReportPortal_CreateItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + Project = "Test"; + + StartDate = Date("20260101100000"); + + ElementStructure = New Structure; + ElementStructure.Insert("name" , "Test"); + ElementStructure.Insert("startTime" , StartDate); + ElementStructure.Insert("type" , "test"); + ElementStructure.Insert("description", "Test launch"); + ElementStructure.Insert("launchUuid" , LaunchID); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("params", ElementStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateItem", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_FinishItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + + EndDate = Date("20260101200000"); + + FinishStructure = New Structure; + FinishStructure.Insert("endTime", EndDate); + FinishStructure.Insert("status" , "passed"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", ElementID); + Options.Insert("params", FinishStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "FinishItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "FinishItem"); + +EndProcedure + +Procedure ReportPortal_GetLaunchStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_GetItemStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_GetItemCompletionStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemCompletionStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemCompletionStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemCompletionStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemCompletionStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_GetLaunchCompletionStructure(FunctionParameters) + + Time = Date("20260101100000"); + Status = "passed"; + Description = "Some test"; + Attributes = "key1:value1, key2:value2"; + + Options = New Structure; + Options.Insert("end", Time); + Options.Insert("status", Status); + Options.Insert("descr", Description); + Options.Insert("attr", Attributes); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchCompletionStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchCompletionStructure"); + +EndProcedure + +Procedure ReportPortal_WriteLog(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + ElementID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + Time = Date("20260101100010"); + Text = "Some log 1"; + + Options = New Structure; + Options.Insert("launch", LaunchID); + Options.Insert("id", ElementID); + Options.Insert("time", Time); + Options.Insert("text", Text); + + LogStructure = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLogStructure", Options); + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("params", LogStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "WriteLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "WriteLog", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetLogStructure(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunch"]; + ElementID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + Time = Date("20260101100010"); + Text = "Some log"; + + Options = New Structure; + Options.Insert("launch", LaunchID); + Options.Insert("id", ElementID); + Options.Insert("time", Time); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLogStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLogStructure"); + +EndProcedure + +Procedure ReportPortal_GetLog(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LogUUID = FunctionParameters["RPortal_TestLog"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", LogUUID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLog", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeleteLog(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LogID = FunctionParameters["RPortal_TestLogId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LogID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteLog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteLog"); + +EndProcedure + +Procedure ReportPortal_CreateProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Name = "testproject"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateProject", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeleteProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ProjectID = FunctionParameters["RPortal_TestProject"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", ProjectID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteProject"); + +EndProcedure + +Procedure ReportPortal_GetProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Name = "TestProject"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("name", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetProject"); + +EndProcedure + +Procedure ReportPortal_GetProjects(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetProjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetProjects"); + +EndProcedure + +Procedure ReportPortal_AddUsersToProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ProjectName = "TestProject"; + + UserList = New Map; + UserList.Insert("default", "MEMBER"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", ProjectName); + Options.Insert("users", UserList); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "AddUsersToProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "AddUsersToProject"); + +EndProcedure + +Procedure ReportPortal_ExcludeUsersFromProject(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ProjectName = "TestProject"; + + ArrayOfUsers = New Array; + ArrayOfUsers.Add("default"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", ProjectName); + Options.Insert("users", ArrayOfUsers); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "ExcludeUsersFromProject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "ExcludeUsersFromProject"); + +EndProcedure + +Procedure ReportPortal_GetLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchUUID = FunctionParameters["RPortal_TestLaunch"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", LaunchUUID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunch", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetLaunchItems(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchItems", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchItems"); + +EndProcedure + +Procedure ReportPortal_GetItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ItemUUID = FunctionParameters["RPortal_TestItem"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("uuid", ItemUUID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItem", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_GetItemLogs(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItemId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("item", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetItemLogs", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetItemLogs"); + +EndProcedure + +Procedure ReportPortal_UpdateLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + LaunchStructure = New Structure; + LaunchStructure.Insert("description", "New description"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + Options.Insert("params", LaunchStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "UpdateLaunch"); + +EndProcedure + +Procedure ReportPortal_UpdateItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItemId"]; + Project = "Test"; + + LaunchStructure = New Structure; + LaunchStructure.Insert("description", "New description"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", ElementID); + Options.Insert("params", LaunchStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "UpdateItem"); + +EndProcedure + +Procedure ReportPortal_DeleteLaunch(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteLaunch", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteLaunch"); + +EndProcedure + +Procedure ReportPortal_DeleteItem(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + ElementID = FunctionParameters["RPortal_TestItemId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", ElementID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteItem", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteItem"); + +EndProcedure + +Procedure ReportPortal_GetLaunchReport(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + LaunchID = FunctionParameters["RPortal_TestLaunchId"]; + Project = "Test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("proj", Project); + Options.Insert("id", LaunchID); + Options.Insert("format", "html"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetLaunchReport", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetLaunchReport"); + +EndProcedure + +Procedure ReportPortal_CreateUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Name = "testproject"; + + UserStructure = New Structure; + UserStructure.Insert("active" , True); + UserStructure.Insert("login" , "test"); + UserStructure.Insert("password" , "G00d_Pass"); + UserStructure.Insert("fullName" , "Test User"); + UserStructure.Insert("email" , "test@example.com"); + UserStructure.Insert("accountRole" , "USER"); + UserStructure.Insert("projectRole" , "MEMBER"); + UserStructure.Insert("defaultProject", "test"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("params", UserStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "CreateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "CreateUser", , FunctionParameters); + +EndProcedure + +Procedure ReportPortal_DeleteUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + UserID = FunctionParameters["RPortal_TestUser"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("id", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "DeleteUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "DeleteUser"); + +EndProcedure + +Procedure ReportPortal_GetUserFieldsStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserFieldsStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserFieldsStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserFieldsStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserFieldsStructure", "Clear"); + +EndProcedure + +Procedure ReportPortal_UpdateUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Login = "test"; + + UserStructure = New Structure; + UserStructure.Insert("fullName", "Updated Test User"); + UserStructure.Insert("email" , "updated@example.com"); + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("login", Login); + Options.Insert("params", UserStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "UpdateUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "UpdateUser"); + +EndProcedure + +Procedure ReportPortal_GetCurrentUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetCurrentUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetCurrentUser"); + +EndProcedure + +Procedure ReportPortal_GetUser(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Login = "test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("login", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUser"); + +EndProcedure + +Procedure ReportPortal_GetUsers(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUsers"); + +EndProcedure + +Procedure ReportPortal_GetUserProjects(FunctionParameters) + + URL = FunctionParameters["RPortal_URL"]; + Token = FunctionParameters["RPortal_TempToken"]; + Login = "test"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("token", Token); + Options.Insert("login", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("rportal", "GetUserProjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "ReportPortal", "GetUserProjects"); + +EndProcedure + +#EndRegion // ReportPortal + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure RPortal_Авторизация() Export + RPortal_Authorization(); +EndProcedure + +Procedure RPortal_УправлениеТестами() Export + RPortal_TestManagement(); +EndProcedure + +Procedure RPortal_ЗаписьЛогов() Export + RPortal_LogRecording(); +EndProcedure + +Procedure RPortal_УправлениеПроектами() Export + RPortal_ProjectManagement(); +EndProcedure + +Procedure RPortal_УправлениеПользователями() Export + RPortal_UserManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_S3.os b/src/en/OInt/tests/Modules/OPItc_S3.os new file mode 100644 index 0000000000..97d8355fe3 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_S3.os @@ -0,0 +1,1628 @@ +// OneScript: ./OInt/tests/Modules/OPItc_S3.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("S3"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("S3"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region S3 + +Procedure AWS_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); + + For Each TestParameters In OptionArray Do + + S3_GetBasicDataStructure(TestParameters); + S3_SendRequestWithoutBody(TestParameters); + S3_SendRequestWithBody(TestParameters); + + EndDo; + +EndProcedure + +Procedure AWS_BucketsManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); + + For Each TestParameters In OptionArray Do + + S3_CreateBucket(TestParameters); + S3_ListBuckets(TestParameters); + S3_HeadBucket(TestParameters); + S3_PutBucketTagging(TestParameters); + S3_GetBucketTagging(TestParameters); + S3_DeleteBucketTagging(TestParameters); + S3_PutBucketEncryption(TestParameters); + S3_GetBucketEncryption(TestParameters); + S3_DeleteBucketEncryption(TestParameters); + S3_PutBucketVersioning(TestParameters); + S3_GetBucketVersioning(TestParameters); + S3_DeleteBucket(TestParameters); + + EndDo; + +EndProcedure + +Procedure AWS_ObjectsManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetS3ParameterOptions(); + + For Each TestParameters In OptionArray Do + + S3_CreateBucket(TestParameters); + S3_PutObject(TestParameters); + S3_UploadFullObject(TestParameters); + S3_InitPartsUpload(TestParameters); + S3_UploadObjectPart(TestParameters); + S3_FinishPartsUpload(TestParameters); + S3_AbortMultipartUpload(TestParameters); + S3_HeadObject(TestParameters); + S3_CopyObject(TestParameters); + S3_PutObjectTagging(TestParameters); + S3_GetObjectTagging(TestParameters); + S3_DeleteObjectTagging(TestParameters); + S3_ListObjects(TestParameters); + S3_ListObjectVersions(TestParameters); + S3_GetObject(TestParameters); + S3_GetObjectDownloadLink(TestParameters); + S3_DeleteObject(TestParameters); + S3_DeleteBucket(TestParameters); + S3_GetObjectUploadLink(TestParameters); + + EndDo; + +EndProcedure + +#EndRegion // S3 + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region S3 + +Procedure S3_GetBasicDataStructure(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBasicDataStructure"); + +EndProcedure + +Procedure S3_SendRequestWithoutBody(FunctionParameters) + + URL = FunctionParameters["S3_URL"] + "/opi-newbucket2"; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + Method = "GET"; + + Options = New Structure; + Options.Insert("method", Method); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "SendRequestWithoutBody", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "SendRequestWithoutBody"); + +EndProcedure + +Procedure S3_SendRequestWithBody(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Method = "PUT"; + Body = "C:\test_data\document.docx"; // URL, Path or Binary Data + + Options = New Structure; + Options.Insert("method", Method); + Options.Insert("basic", BasicData); + Options.Insert("body", Body); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "SendRequestWithBody", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "SendRequestWithBody"); + +EndProcedure + +Procedure S3_CreateBucket(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Result = OPI_S3.DeleteBucket(Name, BasicData, Directory); // SKIP + OPI_TestDataRetrieval.Process(Result, "S3", "CreateBucket", "Deletion"); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "CreateBucket", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "CreateBucket"); + +EndProcedure + +Procedure S3_DeleteBucket(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucket", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteBucket"); + +EndProcedure + +Procedure S3_ListBuckets(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + Options = New Structure; + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListBuckets", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "ListBuckets"); + +EndProcedure + +Procedure S3_HeadBucket(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadBucket", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "HeadBucket"); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + Options.Insert("account", "1234"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadBucket", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "HeadBucket", "Account"); + +EndProcedure + +Procedure S3_GetBucketEncryption(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketEncryption", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBucketEncryption"); + +EndProcedure + +Procedure S3_DeleteBucketEncryption(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucketEncryption", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteBucketEncryption"); + +EndProcedure + +Procedure S3_PutBucketEncryption(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + XmlConfig = " + | + | + | AES256 + | + | + |"; + + TFN = GetTempFileName("xml"); // SKIP + GetBinaryDataFromString(XmlConfig).Write(TFN); // SKIP + XmlConfig = TFN; // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("conf", XmlConfig); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketEncryption", Options); + + // END + + OPI_Tools.RemoveFileWithTry(XmlConfig, "Error deleting file after test"); + + OPI_TestDataRetrieval.Process(Result, "S3", "PutBucketEncryption"); + +EndProcedure + +Procedure S3_GetBucketTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBucketTagging"); + +EndProcedure + +Procedure S3_PutBucketTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + TagStructure = New Structure; + TagStructure.Insert("MyTag1", "SomeValue"); + TagStructure.Insert("MyTag2", "AnotherOne"); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("tagset", TagStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutBucketTagging"); + +EndProcedure + +Procedure S3_DeleteBucketTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteBucketTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteBucketTagging"); + +EndProcedure + +Procedure S3_GetBucketVersioning(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBucketVersioning", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetBucketVersioning"); + +EndProcedure + +Procedure S3_PutBucketVersioning(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + Status = True; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Name = FunctionParameters["S3_DB"]; + Name = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("basic", BasicData); + Options.Insert("status", Status); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutBucketVersioning", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutBucketVersioning"); + +EndProcedure + +Procedure S3_PutObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Name = "picture.jpg"; + Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("data", Entity); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "PutObject"); // SKIP + + Name = "fileChunked.mp3"; + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + + BasicData.Insert("ChunkSize", 5242880); // Size parts for upload in multiple of requests + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("data", Entity); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutObject", "ByParts"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData, , , Directory); + +EndProcedure + +Procedure S3_UploadFullObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "pictureSmall.jpg"; + Entity = FunctionParameters["Picture"]; // URL, Path or Binary Data + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("data", Entity); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "UploadFullObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadFullObject"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData, , , Directory); + +EndProcedure + +Procedure S3_DeleteObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteObject"); + +EndProcedure + +Procedure S3_HeadObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "HeadObject"); + +EndProcedure + +Procedure S3_CopyObject(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + SourcePath = "picture.jpg"; + DestinationBucket = "newbucket2"; + + DestinationPath = "new_picture.jpg"; + SourceBucket = FunctionParameters["S3_DB"]; + SourceBucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("sname", SourcePath); + Options.Insert("sbucket", DestinationBucket); + Options.Insert("name", DestinationPath); + Options.Insert("bucket", SourceBucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "CopyObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "CopyObject"); + + OPI_S3.DeleteObject(DestinationPath, SourceBucket, BasicData, , , Directory); + +EndProcedure + +Procedure S3_PutObjectTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + TagStructure = New Structure; + + TagStructure.Insert("MyTag1", "SomeValue"); + TagStructure.Insert("MyTag2", "AnotherOne"); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("tagset", TagStructure); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "PutObjectTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "PutObjectTagging"); + +EndProcedure + +Procedure S3_GetObjectTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectTagging"); + +EndProcedure + +Procedure S3_DeleteObjectTagging(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "DeleteObjectTagging", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "DeleteObjectTagging"); + +EndProcedure + +Procedure S3_ListObjects(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListObjects", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "ListObjects"); + +EndProcedure + +Procedure S3_ListObjectVersions(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Prefix = "pic"; + Options = New Structure; + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("prefix", Prefix); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "ListObjectVersions", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "ListObjectVersions"); + +EndProcedure + +Procedure S3_GetObject(FunctionParameters) + + Image = FunctionParameters["Picture"]; // SKIP + OPI_TypeConversion.GetBinaryData(Image); // SKIP + RequiredSize = Image.Size(); // SKIP + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", , RequiredSize); // SKIP + + TempFile = GetTempFileName(); + BasicData.Insert("ChunkSize", 200000); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("out", TempFile); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", "File", RequiredSize); + + Name = "bigfile.exe"; + Bucket = "newbucket2"; + + BigTempFile = GetTempFileName(); + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("out", BigTempFile); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", "Big file", 34432400); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObject", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObject", "Big BD", 34432400); + + OPI_Tools.RemoveFileWithTry(BigTempFile, "Failed to delete the temporary file after the test!!"); + OPI_Tools.RemoveFileWithTry(TempFile , "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure S3_InitPartsUpload(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + Entity = OPI_HTTPRequests.Get(Entity); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TestDataRetrieval.Process(Result, "S3", "InitPartsUpload"); // SKIP + + UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; + TotalSize = Entity.Size(); + ChunkSize = 5242880; + BytesRead = 0; + PartNumber = 1; + + DataReader = New DataReader(Entity); + SourceStream = DataReader.SourceStream(); + TagsArray = New Array; + + While BytesRead < TotalSize Do + + CurrentReading = DataReader.Read(ChunkSize); + CurrentData = CurrentReading.GetBinaryData(); + + If CurrentData.Size() = 0 Then + Break; + EndIf; + + Result = OPI_S3.UploadObjectPart(Name + , Bucket + , BasicData + , UploadID + , PartNumber + , CurrentData + , Directory); + + OPI_TestDataRetrieval.Process(Result, "S3", "InitPartsUpload", "Part"); // SKIP + + BytesRead = SourceStream.CurrentPosition(); + + ETag = Result["headers"]["Etag"]; + ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); + + TagsArray.Add(ETag); + + PartNumber = PartNumber + 1; + + EndDo; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("tags", TagsArray); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "InitPartsUpload", "Completion"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +Procedure S3_FinishPartsUpload(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + Entity = OPI_HTTPRequests.Get(Entity); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "FinishPartsUpload", "Start"); // SKIP + + UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; + TotalSize = Entity.Size(); + ChunkSize = 5242880; + BytesRead = 0; + PartNumber = 1; + + DataReader = New DataReader(Entity); + SourceStream = DataReader.SourceStream(); + TagsArray = New Array; + + While BytesRead < TotalSize Do + + CurrentReading = DataReader.Read(ChunkSize); + CurrentData = CurrentReading.GetBinaryData(); + + If CurrentData.Size() = 0 Then + Break; + EndIf; + + Result = OPI_S3.UploadObjectPart(Name + , Bucket + , BasicData + , UploadID + , PartNumber + , CurrentData + , Directory); + + OPI_TestDataRetrieval.Process(Result, "S3", "FinishPartsUpload", "Part"); // SKIP + + BytesRead = SourceStream.CurrentPosition(); + + ETag = Result["headers"]["Etag"]; + ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); + + TagsArray.Add(ETag); + + PartNumber = PartNumber + 1; + + EndDo; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("tags", TagsArray); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "FinishPartsUpload"); + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +Procedure S3_UploadObjectPart(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Entity = FunctionParameters["Audio"]; // URL, Path or Binary Data + Entity = OPI_HTTPRequests.Get(Entity); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadObjectPart", "Start"); // SKIP + + UploadID = Result["response"]["InitiateMultipartUploadResult"]["UploadId"]; + TotalSize = Entity.Size(); + ChunkSize = 5242880; + BytesRead = 0; + PartNumber = 1; + + DataReader = New DataReader(Entity); + SourceStream = DataReader.SourceStream(); + TagsArray = New Array; + + While BytesRead < TotalSize Do + + CurrentReading = DataReader.Read(ChunkSize); + CurrentData = CurrentReading.GetBinaryData(); + + If CurrentData.Size() = 0 Then + Break; + EndIf; + + Result = OPI_S3.UploadObjectPart(Name + , Bucket + , BasicData + , UploadID + , PartNumber + , CurrentData + , Directory); + + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadObjectPart"); // SKIP + + BytesRead = SourceStream.CurrentPosition(); + + ETag = Result["headers"]["Etag"]; + ETag = ?(ETag = Undefined, Result["headers"]["ETag"], ETag); + + TagsArray.Add(ETag); + + PartNumber = PartNumber + 1; + + EndDo; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("tags", TagsArray); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "FinishPartsUpload", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "UploadObjectPart", "Completion"); // SKIP + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +Procedure S3_AbortMultipartUpload(FunctionParameters) + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "fileChunked.mp3"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("dir", Directory); + + Start = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "InitPartsUpload", Options); + UploadID = Start["response"]["InitiateMultipartUploadResult"]["UploadId"]; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("upload", UploadID); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "AbortMultipartUpload", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "AbortMultipartUpload"); + +EndProcedure + +Procedure S3_GetObjectDownloadLink(FunctionParameters) + + Image = FunctionParameters["Picture"]; // SKIP + OPI_TypeConversion.GetBinaryData(Image); // SKIP + RequiredSize = Image.Size(); // SKIP + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "picture.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = FunctionParameters["S3_DB"]; + Bucket = ?(Directory, FunctionParameters["S3_DB"], FunctionParameters["S3_GPB"]); // SKIP + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("expires", 7200); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectDownloadLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectDownloadLink"); + + Result = OPI_HTTPRequests.Get(Result); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectDownloadLink", "Check", RequiredSize); + +EndProcedure + +Procedure S3_GetObjectUploadLink(FunctionParameters) + + Image = FunctionParameters["Picture"]; // SKIP + OPI_TypeConversion.GetBinaryData(Image); // SKIP + RequiredSize = Image.Size(); // SKIP + + URL = FunctionParameters["S3_URL"]; + AccessKey = FunctionParameters["S3_AccessKey"]; + SecretKey = FunctionParameters["S3_SecretKey"]; + Region = "BTC"; + + Options = New Structure; + Options.Insert("url", URL); + Options.Insert("access", AccessKey); + Options.Insert("secret", SecretKey); + Options.Insert("region", Region); + + BasicData = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetBasicDataStructure", Options); + + Name = "pictureU.jpg"; + + Directory = True; // Formation URL in path-style + Directory = FunctionParameters["Directory"]; // SKIP + + Bucket = "newbucket2"; + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + Options.Insert("expires", 7200); + Options.Insert("dir", Directory); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "GetObjectUploadLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectUploadLink"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize(Result) + .SetBinaryBody(Image) + .ProcessRequest("PUT"); + + OPI_TestDataRetrieval.Process(Result, "S3", "GetObjectUploadLink", "Upload"); + + Options = New Structure; + Options.Insert("name", Name); + Options.Insert("bucket", Bucket); + Options.Insert("basic", BasicData); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("s3", "HeadObject", Options); + + OPI_TestDataRetrieval.Process(Check, "S3", "GetObjectUploadLink", "Check", RequiredSize); + + OPI_S3.DeleteObject(Name, Bucket, BasicData); + +EndProcedure + +#EndRegion // S3 + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure AWS_ОбщиеМетоды() Export + AWS_CommonMethods(); +EndProcedure + +Procedure AWS_РаботаСБакетами() Export + AWS_BucketsManagement(); +EndProcedure + +Procedure AWS_РаботаСОбъектами() Export + AWS_ObjectsManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_SFTP.os b/src/en/OInt/tests/Modules/OPItc_SFTP.os new file mode 100644 index 0000000000..deae2e99ef --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_SFTP.os @@ -0,0 +1,1782 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SFTP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("SFTP"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("SFTP"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region SFTP + +Procedure SF_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SFTP_CreateConnection(TestParameters); + SFTP_GetConnectionConfiguration(TestParameters); + SFTP_IsConnector(TestParameters); + SFTP_CloseConnection(TestParameters); + SFTP_GetSettingsLoginPassword(TestParameters); + SFTP_GetSettingsPrivateKey(TestParameters); + SFTP_GetSettingsViaAgent(TestParameters); + SFTP_GetSettingsKI(TestParameters); + SFTP_GetProxySettings(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +Procedure SF_DirectoryManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SFTP_GetCurrentDirectory(TestParameters); + SFTP_ListObjects(TestParameters); + SFTP_CreateNewDirectory(TestParameters); + SFTP_DeleteDirectory(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +Procedure SF_FileManagement() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SFTP_UploadFile(TestParameters); + SFTP_GetFileInformation(TestParameters); + SFTP_GetFileData(TestParameters); + SFTP_SaveFile(TestParameters); + SFTP_UpdatePath(TestParameters); + SFTP_DeleteFile(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +#EndRegion // SFTP + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region SFTP + +Procedure SFTP_CreateConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Result = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "CreateConnection", Postfix); + +EndProcedure + +Procedure SFTP_CreateNewDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "CreateNewDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "CreateNewDirectory", Postfix); + +EndProcedure + +Procedure SFTP_DeleteDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "new_dir"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "DeleteDirectory", Postfix); + +EndProcedure + +Procedure SFTP_GetCurrentDirectory(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetCurrentDirectory", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetCurrentDirectory", Postfix); + +EndProcedure + +Procedure SFTP_ListObjects(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "test_folder"); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "ListObjects", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "test_folder"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result, "SFTP", "ListObjects", Postfix + ", No recursion"); + +EndProcedure + +Procedure SFTP_UploadFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Image = "C:\pic.png"; + + Image = FunctionParameters["Picture"]; // SKIP + TFN = GetTempFileName("png"); // SKIP + CopyFile(Image, TFN); // SKIP + Image = TFN; // SKIP + + ImageDD = New BinaryData(Image); + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("file", Image); + Options.Insert("path", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UploadFile", Options); + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("file", ImageDD); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result2 = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UploadFile", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + UploadedFile = New File(Image); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UploadFile", Postfix , UploadedFile.Size()); + OPI_TestDataRetrieval.Process(Result2, "SFTP", "UploadFile", "Binary, " + Postfix, ImageDD.Size()); + + FileSizeLocal = UploadedFile.Size(); + FileSizeLocalBD = ImageDD.Size(); + + FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, "pic_from_disk.png")["data"]["size"]; + FileSizeRemoteBD = OPI_SFTP.GetFileInformation(Connection, "files_folder/pic_from_binary.png")["data"]["size"]; + + OPI_TestDataRetrieval.Process(FileSizeLocal , "SFTP", "SaveFile", "File size, " + Postfix , FileSizeRemote); + OPI_TestDataRetrieval.Process(FileSizeLocalBD, "SFTP", "SaveFile", "File size, BD, " + Postfix, FileSizeRemoteBD); + + For N = 1 To 7 Do + + Result = OPI_SFTP.UploadFile(Connection, Image, "pic_from_disk.png"); + Result2 = OPI_SFTP.UploadFile(Connection, ImageDD, "files_folder/pic_from_binary.png"); + + If Not Result["result"] Then + OPI_TestDataRetrieval.Process(Result, "SFTP", "UploadFile", "Multiple, " + Postfix, ImageDD.Size()); + EndIf; + + If Not Result2["result"] Then + OPI_TestDataRetrieval.Process(Result2, "SFTP", "UploadFile", "Multiple, binary, " + Postfix, ImageDD.Size()); + EndIf; + + EndDo; + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure SFTP_DeleteFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteFile", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "SFTP", "DeleteFile", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "DeleteFile", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "DeleteFile", "Nonexistent, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder"); + Options.Insert("rcv", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "ListObjects", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "DeleteFile", "Check, " + Postfix); + +EndProcedure + +Procedure SFTP_IsConnector(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + Result = OPI_SFTP.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "IsConnector", Postfix); + + Result = OPI_SFTP.IsConnector("a"); + + OPI_TestDataRetrieval.Process(Result, "SFTP", "IsConnector", "Error, " + Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsLoginPassword(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsLoginPassword", Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsPrivateKey(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("key", PrivateKey); + Options.Insert("pub", PublicKey); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsPrivateKey", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsPrivateKey", Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsViaAgent(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsViaAgent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsViaAgent", Postfix); + +EndProcedure + +Procedure SFTP_GetSettingsKI(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add("yes"); + AnswersArray.Add(Password); + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("prompts", AnswersArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsKI", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetSettingsKI", Postfix); + +EndProcedure + +Procedure SFTP_GetProxySettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetProxySettings", Postfix); + +EndProcedure + +Procedure SFTP_GetConnectionConfiguration(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Options = New Structure; + Options.Insert("set", SFTPSettings); + Options.Insert("proxy", ProxySettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetConnectionConfiguration", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetConnectionConfiguration", Postfix); + + Options = New Structure; + Options.Insert("conn", Result); + Options.Insert("comm", "whoami"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetConnectionConfiguration", "Check, " + Postfix); + +EndProcedure + +Procedure SFTP_CloseConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Result = OPI_SFTP.CloseConnection(Connection); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "CloseConnection", Postfix); + +EndProcedure + +Procedure SFTP_SaveFile(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + + Path = "pic_from_disk.png"; + FileName = GetTempFileName("bin"); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", Path); + Options.Insert("file", FileName); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "SaveFile", Options); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "SaveFile", Postfix); + + UploadedFile = New File(FileName); + FileSizeLocal = UploadedFile.Size(); + FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, Path)["data"]["size"]; + + OPI_TestDataRetrieval.Process(FileSizeLocal, "SFTP", "SaveFile", "File size, " + Postfix, FileSizeRemote); + + Path = "files_folder/pic_from_binary.png"; + + For N = 1 To 20 Do + + Result = OPI_SFTP.SaveFile(Connection, Path, FileName); + + If Not Result["result"] Then + OPI_TestDataRetrieval.Process(Result, "SFTP", "SaveFile", "Multiple, " + Postfix); + EndIf; + + EndDo; + + OPI_Tools.RemoveFileWithTry(FileName, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure SFTP_GetFileData(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + + Path = "pic_from_disk.png"; + Result = OPI_SFTP.GetFileData(Connection, Path); + + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetFileData", Postfix); + + FileSizeLocal = Result.Size(); + FileSizeRemote = OPI_SFTP.GetFileInformation(Connection, Path)["data"]["size"]; + + OPI_TestDataRetrieval.Process(FileSizeLocal, "SFTP", "GetFileData", "File size, " + Postfix, FileSizeRemote); + + Path = "files_folder/pic_from_binary.png"; + + For N = 1 To 20 Do + + Result = OPI_SFTP.GetFileData(Connection, Path); + + If Not TypeOf(Result) = Type("BinaryData") Then + OPI_TestDataRetrieval.Process(Result, "SFTP", "GetFileData", "Multiple, " + Postfix); + EndIf; + + EndDo; + +EndProcedure + +Procedure SFTP_UpdatePath(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "pic_from_disk.png"); + Options.Insert("new", "files_folder/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UpdatePath", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, Old, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, New, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("old", "files_folder/pic_from_disk.png"); + Options.Insert("new", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "UpdatePath", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, Old, Back, " + Postfix); + + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "pic_from_disk.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + + OPI_TestDataRetrieval.Process(Result , "SFTP", "UpdatePath", "Check, New, Back, " + Postfix); + +EndProcedure + +Procedure SFTP_GetFileInformation(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SFTPSettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SFTPSettings = OPI_SFTP.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SFTPSettings = OPI_SFTP.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SFTP.CreateConnection(SFTPSettings, ProxySettings); + + If OPI_SFTP.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("path", "files_folder/pic_from_binary.png"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sftp", "GetFileInformation", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result , "SFTP", "GetFileInformation", Postfix); + +EndProcedure + +#EndRegion // SFTP + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure SF_ОсновныеМетоды() Export + SF_CommonMethods(); +EndProcedure + +Procedure SF_РаботаСДиректориями() Export + SF_DirectoryManagement(); +EndProcedure + +Procedure SF_РаботаСФайлами() Export + SF_FileManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_SQLite.os b/src/en/OInt/tests/Modules/OPItc_SQLite.os new file mode 100644 index 0000000000..ed8e792271 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_SQLite.os @@ -0,0 +1,993 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SQLite.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("SQLite"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("SQLite"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region SQLite + +Procedure SQLL_CommonMethods() Export + + TestParameters = New Structure; + + Base = GetTempFileName("sqlite"); + OPI_TestDataRetrieval.WriteParameter("SQLite_DB", Base); + OPI_Tools.AddField("SQLite_DB", Base, "String", TestParameters); + + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("SQLite_Ext" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("SQLite_ExtLinux", TestParameters); + + SQLite_CreateConnection(TestParameters); + SQLite_CloseConnection(TestParameters); + SQLite_ExecuteSQLQuery(TestParameters); + SQLite_IsConnector(TestParameters); + SQLite_ConnectExtension(TestParameters); + + OPI_Tools.RemoveFileWithTry(Base, "Database file deletion error"); + +EndProcedure + +Procedure SQLL_ORM() Export + + TestParameters = New Structure; + + Base = GetTempFileName("sqlite"); + + Connection = OPI_SQLite.CreateConnection(Base); + TestParameters.Insert("SQLite_DB", Connection); + + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + SQLite_CreateTable(TestParameters); + SQLite_AddRecords(TestParameters); + SQLite_EnsureRecords(TestParameters); + SQLite_GetRecords(TestParameters); + SQLite_UpdateRecords(TestParameters); + SQLite_DeleteRecords(TestParameters); + SQLite_GetTableInformation(TestParameters); + SQLite_AddTableColumn(TestParameters); + SQLite_DeleteTableColumn(TestParameters); + SQLite_EnsureTable(TestParameters); + SQLite_ClearTable(TestParameters); + SQLite_DeleteTable(TestParameters); + SQLite_GetRecordsFilterStructure(TestParameters); + + OPI_TestDataRetrieval.WriteParameter("SQLite_DB", Base); + OPI_Tools.AddField("SQLite_DB", Base, "String", TestParameters); + + SQLite_CreateTable(TestParameters); + SQLite_AddRecords(TestParameters); + SQLite_EnsureRecords(TestParameters); + SQLite_GetRecords(TestParameters); + SQLite_UpdateRecords(TestParameters); + SQLite_DeleteRecords(TestParameters); + SQLite_GetTableInformation(TestParameters); + SQLite_AddTableColumn(TestParameters); + SQLite_DeleteTableColumn(TestParameters); + SQLite_EnsureTable(TestParameters); + SQLite_ClearTable(TestParameters); + SQLite_DeleteTable(TestParameters); + SQLite_GetRecordsFilterStructure(TestParameters); + + OPI_Tools.RemoveFileWithTry(Base, "Database file deletion error"); + +EndProcedure + +#EndRegion // SQLite + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region SQLite + +Procedure SQLite_CreateConnection(FunctionParameters) + + TFN = GetTempFileName("sqlite"); + + LocalBase = OPI_SQLite.CreateConnection(TFN); + InMemoryBase = OPI_SQLite.CreateConnection(); + + // END + + OPI_TestDataRetrieval.Process(LocalBase , "SQLite", "CreateConnection"); + OPI_TestDataRetrieval.Process(InMemoryBase, "SQLite", "CreateConnection", "IM"); + + Closing = OPI_SQLite.CloseConnection(LocalBase); + + OPI_TestDataRetrieval.Process(Closing, "SQLite", "CreateConnection", "Closing"); + + OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); + +EndProcedure + +Procedure SQLite_CloseConnection(FunctionParameters) + + TFN = GetTempFileName("sqlite"); + + Connection = OPI_SQLite.CreateConnection(TFN); + + OPI_TestDataRetrieval.Process(Connection, "SQLite", "CloseConnection", "Openning"); // SKIP + + Closing = OPI_SQLite.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Closing, "SQLite", "CloseConnection"); + + OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); + +EndProcedure + +Procedure SQLite_ExecuteSQLQuery(FunctionParameters) + + TFN = GetTempFileName("sqlite"); + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + Connection = OPI_SQLite.CreateConnection(TFN); + + OPI_TestDataRetrieval.Process(Connection, "SQLite", "ExecuteSQLQuery", "Openning"); // SKIP + + // CREATE + + QueryText = " + |CREATE TABLE test_table ( + |id INTEGER PRIMARY KEY, + |name TEXT, + |age INTEGER, + |salary REAL, + |is_active BOOLEAN, + |created_at DATETIME, + |data BLOB + |);"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Create"); // SKIP + + // INSERT with parameters + + QueryText = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; + + ParameterArray = New Array; + ParameterArray.Add("Vitaly"); // TEXT + ParameterArray.Add(25); // INTEGER + ParameterArray.Add(1000.12); // REAL + ParameterArray.Add(True); // BOOL + ParameterArray.Add(OPI_Tools.GetCurrentDate()); // DATETIME + ParameterArray.Add(New Structure("blob", Image)); // BLOB + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("params", ParameterArray); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Insert"); // SKIP + + // SELECT (The result of this query is shown in the Result block) + + QueryText = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", , Image); // SKIP + + // Transaction + + QueryText = "BEGIN TRANSACTION; + | CREATE TABLE IF NOT EXISTS users ( + | id INTEGER PRIMARY KEY AUTOINCREMENT, + | name TEXT NOT NULL, + | age INTEGER NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + | COMMIT;"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Transaction"); // SKIP + + // With extension + + If OPI_Tools.IsWindows() Then + Extension = FunctionParameters["SQLite_Ext"]; // URL, Path or Binary Data + Else + Extension = FunctionParameters["SQLite_ExtLinux"]; // URL, Path or Binary Data + EndIf; + + EntryPoint = "sqlite3_uuid_init"; + + ExtensionMap = New Map; + ExtensionMap.Insert(Extension, EntryPoint); + + QueryText = "SELECT uuid4();"; + + Options = New Structure; + Options.Insert("sql", QueryText); + Options.Insert("db", Connection); + Options.Insert("exts", ExtensionMap); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ExecuteSQLQuery", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Extension"); // SKIP + + Closing = OPI_SQLite.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ExecuteSQLQuery", "Closing"); + + OPI_Tools.RemoveFileWithTry(TFN, "Database file deletion error"); + +EndProcedure + +Procedure SQLite_IsConnector(FunctionParameters) + + Connection = OPI_SQLite.CreateConnection(); + Result = OPI_SQLite.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "IsConnector"); + +EndProcedure + +Procedure SQLite_CreateTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "INTEGER PRIMARY KEY"); + ColoumnsStruct.Insert("name" , "TEXT"); + ColoumnsStruct.Insert("age" , "INTEGER"); + ColoumnsStruct.Insert("salary" , "REAL"); + ColoumnsStruct.Insert("is_active" , "BOOLEAN"); + ColoumnsStruct.Insert("created_at", "DATETIME"); + ColoumnsStruct.Insert("data" , "BLOB"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "CreateTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "CreateTable"); + + ColoumnsMap = New Map; + ColoumnsMap.Insert("id" , "INTEGER PRIMARY KEY"); + ColoumnsMap.Insert("[An obscure column]", "TEXT"); + + Options = New Structure; + Options.Insert("table", "test1"); + Options.Insert("cols", ColoumnsMap); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "CreateTable", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "CreateTable", "An obscure column"); + +EndProcedure + +Procedure SQLite_AddRecords(FunctionParameters) + + Image = FunctionParameters["Picture"]; + OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData + + PictureFile = GetTempFileName("png"); + Image.Write(PictureFile); // PictureFile - File to disk + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("name" , "Vitaly"); // TEXT + RowStructure2.Insert("age" , 25); // INTEGER + RowStructure2.Insert("salary" , 1000.12); // REAL + RowStructure2.Insert("is_active" , True); // BOOL + RowStructure2.Insert("created_at", OPI_Tools.GetCurrentDate()); // DATETIME + RowStructure2.Insert("data" , New Structure("blob", Image)); // BLOB + + RowStructure1 = New Structure; + RowStructure1.Insert("name" , "Lesha"); // TEXT + RowStructure1.Insert("age" , 20); // INTEGER + RowStructure1.Insert("salary" , 200.20); // REAL + RowStructure1.Insert("is_active" , False); // BOOL + RowStructure1.Insert("created_at", OPI_Tools.GetCurrentDate()); // DATETIME + RowStructure1.Insert("data" , New Structure("blob", PictureFile)); // BLOB + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("trn", Ложь); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "No transaction"); + + RowStructure1.Insert("error", "Lesha"); + DataArray.Add(RowStructure1); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "Field error"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("trn", Ложь); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "Error without transaction"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", "not valid json"); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "JSON Error"); + + RowMap = New Map; + RowMap.Insert("[An obscure column]", "yo"); + + Options = New Structure; + Options.Insert("table", "test1"); + Options.Insert("rows", RowMap); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddRecords", Options); + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddRecords", "An obscure column"); + + OPI_Tools.RemoveFileWithTry(PictureFile, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure SQLite_GetRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Fields = New Array; + Fields.Add("name"); + Fields.Add("salary"); + + Filters = New Array; + + FilterStructure1 = New Structure; + + FilterStructure1.Insert("field", "name"); + FilterStructure1.Insert("type" , "="); + FilterStructure1.Insert("value", "Vitaly"); + FilterStructure1.Insert("union", "AND"); + FilterStructure1.Insert("raw" , False); + + FilterStructure2 = New Structure; + + FilterStructure2.Insert("field", "age"); + FilterStructure2.Insert("type" , "BETWEEN"); + FilterStructure2.Insert("value", "20 AND 30"); + FilterStructure2.Insert("raw" , True); + + Filters.Add(FilterStructure1); + Filters.Add(FilterStructure2); + + Sort = New Structure("created_at", "DESC"); + Count = 1; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", Fields); + Options.Insert("filter", Filters); + Options.Insert("order", Sort); + Options.Insert("limit", Count); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','age','salary','is_active','created_at']"); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords", "No parameters"); + + FilterStructure2.Insert("type", "SOMETHING"); + Filters.Add(FilterStructure2); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','age','salary','is_active','created_at']"); + Options.Insert("filter", Filters); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords", "Error"); + + Options = New Structure; + Options.Insert("table", "test1"); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecords", "An obscure column"); + +EndProcedure + +Procedure SQLite_UpdateRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + FieldsStructure = New Structure; + FieldsStructure.Insert("name" , "Vitaly A."); + FieldsStructure.Insert("salary", "999999"); + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "name"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", "Vitaly"); + FilterStructure.Insert("union", "AND"); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("values", FieldsStructure); + Options.Insert("filter", FilterStructure); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "UpdateRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "UpdateRecords"); + + FilterStructure.Insert("value", "Vitaly A."); + + Filters = New Array; + Filters.Add(FilterStructure); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','salary']"); + Options.Insert("filter", Filters); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "UpdateRecords", "Check", FieldsStructure); + +EndProcedure + +Procedure SQLite_DeleteRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Filters = New Array; + + FilterStructure = New Structure; + + FilterStructure.Insert("field", "name"); + FilterStructure.Insert("type" , "="); + FilterStructure.Insert("value", "Vitaly A."); + FilterStructure.Insert("union", "AND"); + FilterStructure.Insert("raw" , False); + + Filters.Add(FilterStructure); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("filter", FilterStructure); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteRecords"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "['name','salary']"); + Options.Insert("filter", Filters); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "DeleteRecords", "Check"); + +EndProcedure + +Procedure SQLite_GetTableInformation(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetTableInformation"); + +EndProcedure + +Procedure SQLite_EnsureRecords(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test_merge"; + + ColoumnsStruct = New Structure; // SKIP + ColoumnsStruct.Insert("id" , "INTEGER PRIMARY KEY"); // SKIP + ColoumnsStruct.Insert("name" , "TEXT"); // SKIP + ColoumnsStruct.Insert("age" , "INTEGER"); // SKIP + ColoumnsStruct.Insert("salary" , "REAL"); // SKIP + OPI_SQLite.CreateTable(Table, ColoumnsStruct, Base); // SKIP + + DataArray = New Array; + + RowStructure2 = New Structure; + RowStructure2.Insert("id" , 1); + RowStructure2.Insert("name" , "Vitaly"); + RowStructure2.Insert("age" , 25); + RowStructure2.Insert("salary", 1000.12); + + RowStructure1 = New Structure; + RowStructure1.Insert("id" , 2); + RowStructure1.Insert("name" , "Lesha"); + RowStructure1.Insert("age" , 20); + RowStructure1.Insert("salary", 200.20); + + DataArray.Add(RowStructure2); + DataArray.Add(RowStructure1); + + KeyFields = New Array; + KeyFields.Add("id"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureRecords", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureRecords", "Insertion"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureRecords", "Insertion check"); + + RowStructure2.Insert("name" , "Vitaly Updated"); + RowStructure2.Insert("salary", 1500.50); + + StringStructure3 = New Structure; + StringStructure3.Insert("id" , 3); + StringStructure3.Insert("name" , "Anton"); + StringStructure3.Insert("age" , 30); + StringStructure3.Insert("salary", 3000.00); + + DataArray = New Array; + DataArray.Add(RowStructure2); + DataArray.Add(StringStructure3); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("rows", DataArray); + Options.Insert("unique", KeyFields); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureRecords", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureRecords", "Updating"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("fields", "*"); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureRecords", "Updating check"); + + OPI_SQLite.DeleteTable(Table, Base); + +EndProcedure + +Procedure SQLite_GetRecordsFilterStructure(FunctionParameters) + + Options = New Structure; + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecordsFilterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecordsFilterStructure"); + + Options = New Structure; + Options.Insert("empty", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecordsFilterStructure", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "GetRecordsFilterStructure", "Clear"); + +EndProcedure + +Procedure SQLite_DeleteTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "DeleteTable", "Check"); + + OPI_SQLite.DeleteTable("test1", Base); + +EndProcedure + +Procedure SQLite_ClearTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "ClearTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ClearTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "ClearTable", "Table"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetRecords", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "ClearTable", "Check"); + +EndProcedure + +Procedure SQLite_ConnectExtension(FunctionParameters) + + If OPI_Tools.IsWindows() Then + Extension = FunctionParameters["SQLite_Ext"]; // URL, Path or Binary Data + Else + Extension = FunctionParameters["SQLite_ExtLinux"]; // URL, Path or Binary Data + EndIf; + + Base = FunctionParameters["SQLite_DB"]; + EntryPoint = "sqlite3_uuid_init"; + + Connection = OPI_SQLite.CreateConnection(Base); + Result = OPI_SQLite.ConnectExtension(Extension, EntryPoint, Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ConnectExtension"); + + TFN = GetTempFileName("dll"); + CopyFile(Extension, TFN); + + Result = OPI_SQLite.ConnectExtension(TFN, EntryPoint, Connection); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ConnectExtension", "Path"); + + Result = OPI_SQLite.ConnectExtension(New BinaryData(TFN), EntryPoint, Connection); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "ConnectExtension", "Binary"); + + Result = OPI_SQLite.CloseConnection(Connection); + + OPI_Tools.RemoveFileWithTry(TFN, "Error deleting extension file"); + +EndProcedure + +Procedure SQLite_AddTableColumn(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + Name = "new_col"; + DataType = "TEXT"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("type", DataType); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "AddTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "AddTableColumn", "Check"); + +EndProcedure + +Procedure SQLite_DeleteTableColumn(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + Table = "test"; + Name = "new_col"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("name", Name); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "DeleteTableColumn", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteTableColumn"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "DeleteTableColumn", "Check"); + +EndProcedure + +Procedure SQLite_EnsureTable(FunctionParameters) + + Base = FunctionParameters["SQLite_DB"]; + + Table = "test"; + + ColoumnsStruct = New Structure; + ColoumnsStruct.Insert("id" , "INTEGER"); + ColoumnsStruct.Insert("code" , "INTEGER"); + ColoumnsStruct.Insert("name" , "TEXT"); + ColoumnsStruct.Insert("age" , "INTEGER"); + ColoumnsStruct.Insert("info" , "TEXT"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureTable", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureTable"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureTable", "Check", ColoumnsStruct); + + Table = "test_new"; + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("cols", ColoumnsStruct); + Options.Insert("db", Base); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "EnsureTable", Options); + + OPI_TestDataRetrieval.Process(Result, "SQLite", "EnsureTable", "New"); + + Options = New Structure; + Options.Insert("table", Table); + Options.Insert("db", Base); + + Check = OPI_TestDataRetrieval.ExecuteTestCLI("sqlite", "GetTableInformation", Options); + + OPI_TestDataRetrieval.Process(Check, "SQLite", "EnsureTable", "Check 2", ColoumnsStruct); + +EndProcedure + +#EndRegion // SQLite + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure SQLL_ОсновныеМетоды() Export + SQLL_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_SSH.os b/src/en/OInt/tests/Modules/OPItc_SSH.os new file mode 100644 index 0000000000..fe0e2299db --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_SSH.os @@ -0,0 +1,728 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SSH.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("SSH"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("SSH"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region SSH + +Procedure SShell_CommonMethods() Export + + OptionArray = OPI_TestDataRetrieval.GetSSHParameterOptions(); + + For Each TestParameters In OptionArray Do + + SSH_CreateConnection(TestParameters); + SSH_GetConnectionConfiguration(TestParameters); + SSH_ExecuteCommand(TestParameters); + SSH_CloseConnection(TestParameters); + SSH_IsConnector(TestParameters); + SSH_GetSettingsLoginPassword(TestParameters); + SSH_GetSettingsPrivateKey(TestParameters); + SSH_GetSettingsViaAgent(TestParameters); + SSH_GetSettingsKI(TestParameters); + SSH_GetProxySettings(TestParameters); + + EndDo; + + OPI_Tools.RemoveFileWithTry(OptionArray[0]["SSH_Key"], "Error deleting file after test"); + +EndProcedure + +#EndRegion // SSH + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region SSH + +Procedure SSH_CreateConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Result = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "CreateConnection", Postfix); + +EndProcedure + +Procedure SSH_ExecuteCommand(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + + If OPI_SSH.IsConnector(Connection) Then + Options = New Structure; + Options.Insert("conn", Connection); + Options.Insert("comm", "whoami"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "ExecuteCommand", Postfix); + +EndProcedure + +Procedure SSH_GetConnectionConfiguration(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Options = New Structure; + Options.Insert("set", SSHSettings); + Options.Insert("proxy", ProxySettings); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetConnectionConfiguration", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetConnectionConfiguration", Postfix); + + Options = New Structure; + Options.Insert("conn", Result); + Options.Insert("comm", "whoami"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "ExecuteCommand", Options); + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetConnectionConfiguration", "Check, " + Postfix); + +EndProcedure + +Procedure SSH_CloseConnection(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = FunctionParameters["SSH_PortKI"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + + If OPI_SSH.IsConnector(Connection) Then + Result = OPI_SSH.CloseConnection(Connection); + Else + Result = Connection; // Error of connection + EndIf; + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "CloseConnection", Postfix); + +EndProcedure + +Procedure SSH_IsConnector(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + + UseProxy = True; + ProxySettings = Undefined; + AuthorizationType = "By login and password"; + + UseProxy = FunctionParameters["Proxy"]; // SKIP + AuthorizationType = FunctionParameters["AuthType"]; // SKIP + + If AuthorizationType = "By login and password" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + ElsIf AuthorizationType = "By key" Then + + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + SSHSettings = OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, PrivateKey, PublicKey); + + ElsIf AuthorizationType = "Keyboard interactive" Then + + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add(Password); + + Port = 2223; // SKIP + + SSHSettings = OPI_SSH.GetSettingsKI(Host, Port, Login, AnswersArray); + + Else + + Login = FunctionParameters["SSH_User"]; + SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login); + + EndIf; + + If UseProxy Then + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + ProxySettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + EndIf; + + Connection = OPI_SSH.CreateConnection(SSHSettings, ProxySettings); + Result = OPI_SSH.IsConnector(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "IsConnector", Postfix); + + Result = OPI_SSH.IsConnector("a"); + + OPI_TestDataRetrieval.Process(Result, "SSH", "IsConnector", "Error, " + Postfix); + +EndProcedure + +Procedure SSH_GetSettingsLoginPassword(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("pass", Password); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsLoginPassword", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsLoginPassword", Postfix); + +EndProcedure + +Procedure SSH_GetSettingsPrivateKey(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + PrivateKey = "./ssh_key"; + PublicKey = "./ssh_key.pub"; + + PrivateKey = FunctionParameters["SSH_Key"]; // SKIP + PublicKey = FunctionParameters["SSH_Pub"]; // SKIP + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("key", PrivateKey); + Options.Insert("pub", PublicKey); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsPrivateKey", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsPrivateKey", Postfix); + +EndProcedure + +Procedure SSH_GetSettingsViaAgent(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsViaAgent", Postfix); + +EndProcedure + +Procedure SSH_GetSettingsKI(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + Host = FunctionParameters["SSH_Host"]; + Port = FunctionParameters["SSH_Port"]; + Login = FunctionParameters["SSH_User"]; + Password = FunctionParameters["SSH_Password"]; + + AnswersArray = New Array; + AnswersArray.Add("yes"); + AnswersArray.Add(Password); + + Options = New Structure; + Options.Insert("host", Host); + Options.Insert("port", Port); + Options.Insert("user", Login); + Options.Insert("prompts", AnswersArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsKI", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetSettingsKI", Postfix); + +EndProcedure + +Procedure SSH_GetProxySettings(FunctionParameters) + + Postfix = FunctionParameters["Postfix"]; // SKIP + + ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Proxy_IP"]; + ProxyPort = FunctionParameters["Proxy_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "SSH", "GetProxySettings", Postfix); + +EndProcedure + +#EndRegion // SSH + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure SShell_ОсновныеМетоды() Export + SShell_CommonMethods(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Slack.os b/src/en/OInt/tests/Modules/OPItc_Slack.os new file mode 100644 index 0000000000..a47209d0ab --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Slack.os @@ -0,0 +1,984 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Slack.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Slack"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Slack"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Slack + +Procedure SlackGetData() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); + + Slack_GetBotInformation(TestParameters); + Slack_GetUserList(TestParameters); + Slack_GetWorkspaceList(TestParameters); + +EndProcedure + +Procedure Slack_SendDeleteMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); + + Slack_SendMessage(TestParameters); + Slack_EditMessage(TestParameters); + Slack_GetMessageReplyList(TestParameters); + Slack_GetMessageLink(TestParameters); + Slack_DeleteMessage(TestParameters); + Slack_SendEphemeralMessage(TestParameters); + Slack_GetDelayedMessageList(TestParameters); + Slack_GenerateImageBlock(TestParameters); + +EndProcedure + +Procedure Slack_CreateArchiveChannel() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); + + Slack_CreateChannel(TestParameters); + Slack_SetChannelTopic(TestParameters); + Slack_SetChannelGoal(TestParameters); + Slack_GetChannel(TestParameters); + Slack_InviteUsersToChannel(TestParameters); + Slack_KickUserFromChannel(TestParameters); + Slack_GetChannelHistory(TestParameters); + Slack_GetChannelUserList(TestParameters); + Slack_LeaveChannel(TestParameters); + Slack_JoinChannel(TestParameters); + Slack_RenameChannel(TestParameters); + Slack_ArchiveChannel(TestParameters); + Slack_GetChannelList(TestParameters); + +EndProcedure + +Procedure Slack_OpenCloseDialog() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_User" , TestParameters); + + Slack_OpenDialog(TestParameters); + Slack_CloseDialog(TestParameters); + +EndProcedure + +Procedure Slack_UploadDeleteFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Slack_GetFilesList(TestParameters); + Slack_UploadFile(TestParameters); + Slack_MakeFilePublic(TestParameters); + Slack_MakeFilePrivate(TestParameters); + Slack_GetFileData(TestParameters); + Slack_DeleteFile(TestParameters); + +EndProcedure + +Procedure Slack_UploadDeleteExternalFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Slack_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Slack_Channel", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Slack_GetExternalFileList(TestParameters); + Slack_AddExternalFile(TestParameters); + Slack_GetExternalFile(TestParameters); + Slack_SendExternalFile(TestParameters); + Slack_DeleteExternalFile(TestParameters); + +EndProcedure + +#EndRegion // Slack + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Slack + +Procedure Slack_GetBotInformation(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetBotInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetBotInformation"); + +EndProcedure + +Procedure Slack_GetUserList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetUserList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetUserList"); + +EndProcedure + +Procedure Slack_GetWorkspaceList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetWorkspaceList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetWorkspaceList"); + +EndProcedure + +Procedure Slack_SendMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + // Text + + Text = "TestMessage1"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendMessage", , FunctionParameters, Text, Channel); // SKIP + + // With attachments (picture block in the example) + + Text = "Message with picture"; + Image = FunctionParameters["Picture"]; + BlockArray = New Array; + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("alt", "Image"); + + Block = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); + BlockArray.Add(Block); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + Options.Insert("blocks", BlockArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendMessage", "Image", FunctionParameters, Text, Channel); // SKIP + + // Sheduled + + Text = "Sheduled message"; + Hour = 3600; + Day = 24; + + SendingDate = OPI_Tools.GetCurrentDate() + (Day * Hour); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + Options.Insert("date", SendingDate); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendMessage", "Sheduled", FunctionParameters, Text, Channel); + + Token = FunctionParameters["Slack_Token"]; + Timestamp = Result["scheduled_message_id"]; + + OPI_Slack.DeleteMessage(Token, Channel, Timestamp, True); + +EndProcedure + +Procedure Slack_GenerateImageBlock(FunctionParameters) + + Image = FunctionParameters["Picture"]; + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("alt", "Image"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GenerateImageBlock"); + +EndProcedure + +Procedure Slack_EditMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Text = "TestMessage2"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "EditMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "EditMessage", , Text, Channel); + +EndProcedure + +Procedure Slack_GetMessageReplyList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetMessageReplyList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetMessageReplyList"); + +EndProcedure + +Procedure Slack_GetMessageLink(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetMessageLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetMessageLink", , Channel); + +EndProcedure + +Procedure Slack_DeleteMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + Timestamp = FunctionParameters["Slack_MessageTS"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("stamp", Timestamp); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "DeleteMessage"); + +EndProcedure + +Procedure Slack_SendEphemeralMessage(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + User = FunctionParameters["Slack_User"]; + Image = FunctionParameters["Picture"]; + Text = "Ephemeral message"; + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("alt", "Image"); + + Block = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GenerateImageBlock", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", Text); + Options.Insert("user", User); + Options.Insert("blocks", Block); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendEphemeralMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendEphemeralMessage"); + +EndProcedure + +Procedure Slack_GetDelayedMessageList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetDelayedMessageList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetDelayedMessageList"); + +EndProcedure + +Procedure Slack_CreateChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Name = "testconv" + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "CreateChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "CreateChannel", , FunctionParameters, Name); + +EndProcedure + +Procedure Slack_SetChannelTopic(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + Topic = "TestTopic"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("theme", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SetChannelTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SetChannelTopic", , Topic); + +EndProcedure + +Procedure Slack_SetChannelGoal(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + Purpose = "TestGoal"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("purpose", Purpose); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SetChannelGoal", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SetChannelGoal"); + +EndProcedure + +Procedure Slack_GetChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannel", , FunctionParameters["Slack_NewChannelName"]); + +EndProcedure + +Procedure Slack_InviteUsersToChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + User = FunctionParameters["Slack_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("users", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "InviteUsersToChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "InviteUsersToChannel", , FunctionParameters["Slack_NewChannelName"]); + +EndProcedure + +Procedure Slack_KickUserFromChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + User = FunctionParameters["Slack_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("user", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "KickUserFromChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "KickUserFromChannel"); + +EndProcedure + +Procedure Slack_GetChannelHistory(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelHistory", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannelHistory"); + +EndProcedure + +Procedure Slack_GetChannelUserList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelUserList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannelUserList"); + +EndProcedure + +Procedure Slack_LeaveChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "LeaveChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "LeaveChannel"); + +EndProcedure + +Procedure Slack_JoinChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "JoinChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "JoinChannel", , FunctionParameters["Slack_NewChannelName"]); + +EndProcedure + +Procedure Slack_RenameChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + Name = "testconv" + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "RenameChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "RenameChannel", , Name); + +EndProcedure + +Procedure Slack_ArchiveChannel(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_NewChannel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "ArchiveChannel", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "ArchiveChannel"); + +EndProcedure + +Procedure Slack_GetChannelList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetChannelList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetChannelList"); + +EndProcedure + +Procedure Slack_OpenDialog(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + User = FunctionParameters["Slack_User"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("users", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "OpenDialog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "OpenDialog", , FunctionParameters); + + Channel = Result["channel"]["id"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + Options.Insert("text", "Test dialog"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "OpenDialog", "Message", FunctionParameters); + +EndProcedure + +Procedure Slack_CloseDialog(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Dialog = FunctionParameters["Slack_Dialog"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("conv", Dialog); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "CloseDialog", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "CloseDialog"); + +EndProcedure + +Procedure Slack_GetFilesList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetFilesList"); + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFilesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetFilesList", "All"); + +EndProcedure + +Procedure Slack_UploadFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + File = FunctionParameters["Document"]; // URL, Binary Data or File path + + FileName = "megadoc.docx"; + Title = "NewFile"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "UploadFile", , FunctionParameters, FileName); // SKIP + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePublic"); // SKIP + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePrivate"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", File); + Options.Insert("filename", FileName); + Options.Insert("title", Title); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "UploadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "UploadFile", "Channel", FunctionParameters, FileName); + OPI_Slack.DeleteFile(FunctionParameters["Slack_Token"], Result["files"][0]["id"]); + +EndProcedure + +Procedure Slack_MakeFilePublic(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "MakeFilePublic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePublic", "No record"); + +EndProcedure + +Procedure Slack_MakeFilePrivate(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "MakeFilePrivate", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "MakeFilePrivate", "No record"); + +EndProcedure + +Procedure Slack_GetFileData(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetFileData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetFileData", , "megadoc.docx"); + +EndProcedure + +Procedure Slack_DeleteFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "DeleteFile"); + +EndProcedure + +Procedure Slack_GetExternalFileList(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("channel", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFileList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetExternalFileList"); + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFileList", Options); + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetExternalFileList", "All"); + +EndProcedure + +Procedure Slack_AddExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Title = "NewFile"; + File = FunctionParameters["Document"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", File); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "AddExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "AddExternalFile", , FunctionParameters, Title); + +EndProcedure + +Procedure Slack_GetExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_ExtFileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "GetExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "GetExternalFile"); + +EndProcedure + +Procedure Slack_SendExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + Channel = FunctionParameters["Slack_Channel"]; + FileID = FunctionParameters["Slack_ExtFileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + Options.Insert("channels", Channel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "SendExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "SendExternalFile"); + +EndProcedure + +Procedure Slack_DeleteExternalFile(FunctionParameters) + + Token = FunctionParameters["Slack_Token"]; + FileID = FunctionParameters["Slack_ExtFileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("slack", "DeleteExternalFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Slack", "DeleteExternalFile"); + +EndProcedure + +#EndRegion // Slack + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Слак_ПолучитьИнформацию() Export + SlackGetData(); +EndProcedure + +Procedure Слак_ОтправитьУдалитьСообщение() Export + Slack_SendDeleteMessage(); +EndProcedure + +Procedure Слак_СоздатьАрхивироватьКанал() Export + Slack_CreateArchiveChannel(); +EndProcedure + +Procedure Слак_ОткрытьЗакрытьДиалог() Export + Slack_OpenCloseDialog(); +EndProcedure + +Procedure Слак_ЗагрузитьУдалитьФайл() Export + Slack_UploadDeleteFile(); +EndProcedure + +Procedure Слак_ЗагрузитьУдалитьВФ() Export + Slack_UploadDeleteExternalFile(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_TCP.os b/src/en/OInt/tests/Modules/OPItc_TCP.os new file mode 100644 index 0000000000..a066d7dd74 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_TCP.os @@ -0,0 +1,839 @@ +// OneScript: ./OInt/tests/Modules/OPItc_TCP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("TCP"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("TCP"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region TCP + +Procedure TC_Client() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("TCP_Address" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("TCP_AddressTLS", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Proxy_User" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Proxy_Password", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Socks5_IP" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Socks5_Port" , TestParameters); + + TCP_CreateConnection(TestParameters); + TCP_CloseConnection(TestParameters); + TCP_ReadBinaryData(TestParameters); + TCP_SendBinaryData(TestParameters); + TCP_ReadLine(TestParameters); + TCP_SendLine(TestParameters); + TCP_ProcessRequest(TestParameters); + TCP_GetTLSSettings(TestParameters); + TCP_GetLastError(TestParameters); + TCP_GetProxySettings(TestParameters); + +EndProcedure + +Procedure TC_Server() Export + + TestParameters = New Structure; + + TCP_StartServer(TestParameters); + TCP_StopServer(TestParameters); + TCP_GetNextConnectionData(TestParameters); + TCP_GetConnectionData(TestParameters); + TCP_SendData(TestParameters); + TCP_CloseIncomingConnection(TestParameters); + TCP_CompleteSend(TestParameters); + TCP_FinishReceiving(TestParameters); + TCP_GetConnectionList(TestParameters); + TCP_IsServerObject(TestParameters); + TCP_GetLog(TestParameters); + TCP_GetLoggingSettings(TestParameters); + +EndProcedure + +#EndRegion // TCP + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region TCP + +Procedure TCP_CreateConnection(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TestDataRetrieval.Process(Connection, "TCP", "CreateConnection"); // SKIP + + OPI_TCP.CloseConnection(Connection); + + Address = "tcpbin.com:4243"; + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + ProxtUser = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + ProxyAddress = FunctionParameters["Socks5_IP"]; + ProxyPort = FunctionParameters["Socks5_Port"]; + + ProxyAddress = ?(ProxyAddress = "127.0.0.1", OPI_TestDataRetrieval.GetLocalhost(), ProxyAddress); // SKIP + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", "socks5"); + Options.Insert("login", ProxtUser); + Options.Insert("pass", ProxyPassword); + + Proxy = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + Connection = OPI_TCP.CreateConnection(Address, TLS, Proxy); + + // END + + OPI_TestDataRetrieval.Process(Connection, "TCP", "CreateConnection", "TLS"); + +EndProcedure + +Procedure TCP_CloseConnection(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + + Result = OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseConnection"); + +EndProcedure + +Procedure TCP_ReadBinaryData(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Message = "Hello server!" + Chars.LF; + Data = GetBinaryDataFromString(Message); + + OPI_TCP.SendBinaryData(Connection, Data); + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Result = OPI_TCP.ReadBinaryData(Connection, , Marker); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadBinaryData", , Message); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendBinaryData(Connection, Data); + Result = OPI_TCP.ReadBinaryData(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadBinaryData", "Timeout", Message); + +EndProcedure + +Procedure TCP_SendBinaryData(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Message = "Hello server!" + Chars.LF; + Data = GetBinaryDataFromString(Message); + + Result = OPI_TCP.SendBinaryData(Connection, Data); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Response = OPI_TCP.ReadBinaryData(Connection, , Marker); + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Response, "TCP", "SendBinaryData", , Message); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendBinaryData(Connection, Data); + Result = OPI_TCP.ReadBinaryData(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "SendBinaryData", "Timeout", Message); + +EndProcedure + +Procedure TCP_ProcessRequest(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Data = "Echo this!" + Chars.LF; + + Options = New Structure; + Options.Insert("address", Address); + Options.Insert("data", Data); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "ProcessRequest", Options); + + OPI_TestDataRetrieval.Process(Result, "TCP", "ProcessRequest", , "Echo this!" + Chars.LF); // SKIP + + Address = FunctionParameters["TCP_AddressTLS"]; + + ProxtUser = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + ProxyAddress = FunctionParameters["Socks5_IP"]; + ProxyPort = FunctionParameters["Socks5_Port"]; + + ProxyAddress = ?(ProxyAddress = "127.0.0.1", OPI_TestDataRetrieval.GetLocalhost(), ProxyAddress); // SKIP + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", "socks5"); + Options.Insert("login", ProxtUser); + Options.Insert("pass", ProxyPassword); + + Proxy = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); + Options = New Structure; + Options.Insert("trust", Истина); + + Tls = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + Options = New Structure; + Options.Insert("address", Address); + Options.Insert("data", Data); + Options.Insert("tls", Tls); + Options.Insert("proxy", Proxy); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "ProcessRequest", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "ProcessRequest", "TLS", "Echo this!" + Chars.LF); + +EndProcedure + +Procedure TCP_ReadLine(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Data = "Hello server!" + Chars.LF; + + OPI_TCP.SendLine(Connection, Data); + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Result = OPI_TCP.ReadLine(Connection, , Marker); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadLine", , Data); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendLine(Connection, Data); + Result = OPI_TCP.ReadLine(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "ReadLine", "Timeout", Data); + +EndProcedure + +Procedure TCP_SendLine(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Data = "Hello server!" + Chars.LF; + + Result = OPI_TCP.SendLine(Connection, Data); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // End of message marker to avoid waiting for the end of timeout + Marker = Chars.LF; + Response = OPI_TCP.ReadLine(Connection, , Marker); + + OPI_TCP.CloseConnection(Connection); + + // END + + OPI_TestDataRetrieval.Process(Response, "TCP", "SendLine", , Data); + + Connection = OPI_TCP.CreateConnection(Address); + + OPI_TCP.SendLine(Connection, Data); + Result = OPI_TCP.ReadLine(Connection, , , 50000); + + OPI_TCP.CloseConnection(Connection); + + OPI_TestDataRetrieval.Process(Result, "TCP", "SendLine", "Timeout", Data); + +EndProcedure + +Procedure TCP_GetTLSSettings(FunctionParameters) + + Options = New Structure; + Options.Insert("trust", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetTLSSettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetTLSSettings"); + +EndProcedure + +Procedure TCP_GetLastError(FunctionParameters) + + Address = FunctionParameters["TCP_Address"]; + Connection = OPI_TCP.CreateConnection(Address); + Data = "Hello server!" + Chars.LF; + + Sending = OPI_TCP.SendLine(Connection, Data); + Result = OPI_TCP.GetLastError(Connection); // SKIP + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLastError"); + +EndProcedure + +Procedure TCP_GetProxySettings(FunctionParameters) + + ProxyType = "socks5"; // http, socks5, socks4 + + ProxyAddress = FunctionParameters["Socks5_IP"]; + ProxyPort = FunctionParameters["Socks5_Port"]; + ProxyLogin = FunctionParameters["Proxy_User"]; + ProxyPassword = FunctionParameters["Proxy_Password"]; + + Options = New Structure; + Options.Insert("addr", ProxyAddress); + Options.Insert("port", ProxyPort); + Options.Insert("type", ProxyType); + Options.Insert("login", ProxyLogin); + Options.Insert("pass", ProxyPassword); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("tcp", "GetProxySettings", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetProxySettings"); + +EndProcedure + +Procedure TCP_StartServer(FunctionParameters) + + Port = 9876; + PoolSize = 10; + + Host = OPI_TCP.StartServer(Port, PoolSize); + + // END + + OPI_TestDataRetrieval.Process(Host, "TCP", "StartServer"); + + OPI_TCP.StopServer(Host); + +EndProcedure + +Procedure TCP_StopServer(FunctionParameters) + + Port = 9877; + Host = OPI_TCP.StartServer(Port); + + Result = OPI_TCP.StopServer(Host); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "StopServer"); + + ListResult = OPI_TCP.GetConnectionList(Host); + + OPI_TestDataRetrieval.Process(ListResult, "TCP", "StopServer", "List"); + + OPI_TypeConversion.GetLine(Port); + + Address = StrTemplate("127.0.0.1:%1", Port); + Client = OPI_TCP.CreateConnection(Address); + + OPI_TestDataRetrieval.Process(Client, "TCP", "StopServer", "Connection"); + +EndProcedure + +Procedure TCP_GetNextConnectionData(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Send message from client + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + Else + Message = "Hello from client!" + Chars.LF; + OPI_TCP.SendLine(ClientObject, Message); + EndIf; + + // Receive message on server + Result = OPI_TCP.GetNextConnectionData(ServerObject, 5000, 8192); + + // END + + OPI_TCP.CloseConnection(ClientObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetNextConnectionData", , Message); + + OPI_TCP.SendLine(ClientObject, Message); + OPI_TCP.CloseConnection(ClientObject); + + Result = OPI_TCP.GetNextConnectionData(ServerObject, 5000, 8192); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetNextConnectionData", "Closed", Message); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_GetConnectionData(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + OPI_Tools.Pause(1); // SKIP + + // Receive the list of server connections + ConnectionList = OPI_TCP.GetConnectionList(ServerObject); + + If Not ConnectionList["result"] Then + Raise OPI_Tools.JSONString(ConnectionList); + EndIf; + + If ConnectionList["connections"].Count() = 0 Then + Raise "Connection list is empty"; + Else + ConnectionID = ConnectionList["connections"][0]["connectionId"]; + EndIf; + + EmptyResult = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); // SKIP + OPI_TestDataRetrieval.Process(EmptyResult, "TCP", "GetConnectionData", "Empty"); // SKIP + + For N = 0 To 5 Do + + // Send from client + CurrentMessage = StrTemplate("Message no. %1%2", N, Chars.LF); + OPI_TCP.SendLine(ClientObject, CurrentMessage); + + // Recieve on server + Result = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionData", , CurrentMessage); // SKIP + + EndDo; + + // END + + OPI_TCP.CloseConnection(ClientObject); + + Result = OPI_TCP.GetConnectionData(ServerObject, ConnectionID, 5000, 8192); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionData", "Closed"); + + Result = OPI_TCP.GetConnectionList(ServerObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionData", "EmptyList"); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_SendData(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + Message = "Hello!" + Chars.LF; + + OPI_TCP.SendLine(ClientObject, Message); + + // Receive message and connection ID + NextMessage = OPI_TCP.GetNextConnectionData(ServerObject, 5000); + ConnectionID = NextMessage["connectionId"]; + + // Send response from server + ServerResponse = "Response from server!" + Chars.LF; + Result = OPI_TCP.SendData(ServerObject, ConnectionID, ServerResponse); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "SendData"); + + // Check receiving on client + ClientResponse = OPI_TCP.ReadLine(ClientObject, , Chars.LF); + + OPI_TestDataRetrieval.Process(ClientResponse, "TCP", "SendData", "Check", ServerResponse); + + OPI_TCP.CloseConnection(ClientObject); + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_CloseIncomingConnection(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + Message = "Hello!" + Chars.LF; + + OPI_TCP.SendLine(ClientObject, Message); + + // Get connection ID + FirstMessage = OPI_TCP.GetNextConnectionData(ServerObject, 5000); + ConnectionID = FirstMessage["connectionId"]; + + // Close connection from server side + Result = OPI_TCP.CloseIncomingConnection(ServerObject, ConnectionID); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseIncomingConnection"); + + Result = OPI_TCP.GetConnectionList(ServerObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseIncomingConnection", "EmptyList"); + + OPI_TCP.SendLine(ClientObject, Message); + Result = OPI_TCP.SendLine(ClientObject, Message); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CloseIncomingConnection", "SendingToClosed"); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_CompleteSend(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + OPI_Tools.Pause(1); // SKIP + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + ActiveConnections = OPI_TCP.GetConnectionList(ServerObject); + ConnectionID = ActiveConnections["connections"][0]["connectionId"]; + + // Finish sending from server + Result = OPI_TCP.CompleteSend(ServerObject, ConnectionID); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "CompleteSend"); + + Message = "Hello" + Chars.LF; + + OPI_TCP.SendLine(ClientObject, Message); + Result = OPI_TCP.SendLine(ClientObject, Message); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CompleteSend", "SendingClient"); + + ServerResponse = "Response from server!" + Chars.LF; + Result = OPI_TCP.SendData(ServerObject, ConnectionID, ServerResponse); + + OPI_TestDataRetrieval.Process(Result, "TCP", "CompleteSend", "SendingServer"); + + OPI_TCP.CloseConnection(ClientObject); + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_GetConnectionList(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + + Client1 = OPI_TCP.CreateConnection(ConnectionAddress); + Client2 = OPI_TCP.CreateConnection(ConnectionAddress); + + If Not OPI_TCP.IsClientObject(Client1) Then + Raise OPI_Tools.JSONString(Client1); + EndIf; + + If Not OPI_TCP.IsClientObject(Client2) Then + Raise OPI_Tools.JSONString(Client2); + EndIf; + + Result = OPI_TCP.GetConnectionList(ServerObject); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionList"); + + OPI_TCP.CloseConnection(Client1); + OPI_TCP.CloseConnection(Client2); + + Client3 = OPI_TCP.CreateConnection(ConnectionAddress); + Client4 = OPI_TCP.CreateConnection(ConnectionAddress); + + OPI_TCP.SendLine(Client3, "Yo" + Chars.LF); + + OPI_TCP.CloseConnection(Client3); + OPI_TCP.CloseConnection(Client4); + + Result = OPI_TCP.GetConnectionList(ServerObject); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetConnectionList", "Closing"); + + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_FinishReceiving(FunctionParameters) + + LaunchPort = 9877; + ServerObject = OPI_TCP.StartServer(LaunchPort); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + OPI_Tools.Pause(1); // SKIP + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + ActiveConnections = OPI_TCP.GetConnectionList(ServerObject); + ConnectionID = ActiveConnections["connections"][0]["connectionId"]; + + // Completing server-side reception + Result = OPI_TCP.FinishReceiving(ServerObject, ConnectionID); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "FinishReceiving"); + + OPI_TCP.CloseConnection(ClientObject); + OPI_TCP.StopServer(ServerObject); + +EndProcedure + +Procedure TCP_IsServerObject(FunctionParameters) + + Port = 9884; + Host = OPI_TCP.StartServer(Port); + + Result = OPI_TCP.IsServerObject(Host); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "IsServerObject"); + + OPI_TCP.StopServer(Host); + + // Check with wrong object + Result = OPI_TCP.IsServerObject("Not a server"); + + OPI_TestDataRetrieval.Process(Result, "TCP", "IsServerObject", "False"); + +EndProcedure + +Procedure TCP_GetLog(FunctionParameters) + + LaunchPort = 9877; + LogFile = GetTempFileName("txt"); + LoggingSettings = OPI_TCP.GetLoggingSettings(True, 100, LogFile); + ServerObject = OPI_TCP.StartServer(LaunchPort, , LoggingSettings); + + // Connect to running server + ConnectionAddress = "127.0.0.1:9877"; + ClientObject = OPI_TCP.CreateConnection(ConnectionAddress); + OPI_Tools.Pause(1); // SKIP + + If Not OPI_TCP.IsClientObject(ClientObject) Then + Raise OPI_Tools.JSONString(ClientObject); + EndIf; + + Result = OPI_TCP.GetLog(ServerObject); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLog", , LogFile); + +EndProcedure + +Procedure TCP_GetLoggingSettings(FunctionParameters) + + Result = OPI_TCP.GetLoggingSettings(True, 100, GetTempFileName()); + + // END + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLoggingSettings"); + + Result = OPI_TCP.GetLoggingSettings(False, , GetTempFileName()); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLoggingSettings", "File"); + + Result = OPI_TCP.GetLoggingSettings(True); + + OPI_TestDataRetrieval.Process(Result, "TCP", "GetLoggingSettings", "Memory"); + +EndProcedure + +#EndRegion // TCP + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure TC_Клиент() Export + TC_Client(); +EndProcedure + +Procedure TC_Сервер() Export + TC_Server(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Telegram.os b/src/en/OInt/tests/Modules/OPItc_Telegram.os new file mode 100644 index 0000000000..6437ba8ec1 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Telegram.os @@ -0,0 +1,1662 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Telegram.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Telegram"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Telegram"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Telegram + +Procedure TelegramAPI_GetBotInfo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + + Telegram_GetBotInformation(TestParameters); + +EndProcedure + +Procedure TelegramAPI_GetUpdates() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + + Telegram_DeleteWebhook(TestParameters); + Telegram_GetUpdates(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SetWebhook() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_URL" , TestParameters); + + Telegram_SetWebhook(TestParameters); + Telegram_DeleteWebhook(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendTextMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + + Telegram_SendTextMessage(TestParameters); + Telegram_ReplaceMessageText(TestParameters); + Telegram_ReplaceMessageKeyboard(TestParameters); + Telegram_FormKeyboardFromButtonArray(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendImage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Telegram_SendImage(TestParameters); + Telegram_ReplaceMessageCaption(TestParameters); + Telegram_DownloadFile(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendVideo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + Telegram_SendVideo(TestParameters); + Telegram_DownloadFile(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendAudio() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters); + + Telegram_SendAudio(TestParameters); + Telegram_DownloadFile(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendDocument() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Telegram_SendDocument(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendGIF() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GIF" , TestParameters); + + Telegram_SendGif(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendMediaGroup() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Telegram_SendMediaGroup(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendLocation() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Long" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Lat" , TestParameters); + + Telegram_SendLocation(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendContact() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Name" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Surname" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Phone" , TestParameters); + + Telegram_SendContact(TestParameters); + +EndProcedure + +Procedure TelegramAPI_SendPoll() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_SendPoll(TestParameters); + +EndProcedure + +Procedure TelegramAPI_ForwardMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelMessageID", TestParameters); + + Telegram_ForwardMessage(TestParameters); + +EndProcedure + +Procedure TelegramAPI_BanUnban() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_Ban(TestParameters); + Telegram_Unban(TestParameters); + +EndProcedure + +Procedure TelegramAPI_CreateInvitationLink() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_CreateInvitationLink(TestParameters); + +EndProcedure + +Procedure TelegramAPI_PinUnpinMessage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelMessageID", TestParameters); + + Telegram_PinMessage(TestParameters); + Telegram_UnpinMessage(TestParameters); + Telegram_DeleteMessage(TestParameters); + +EndProcedure + +Procedure TelegramAPI_GetMemberCount() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ChannelID", TestParameters); + + Telegram_GetParticipantCount(TestParameters); + +EndProcedure + +Procedure TelegramAPI_GetForumAvatarsList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token", TestParameters); + + Telegram_GetAvatarIconList(TestParameters); + +EndProcedure + +Procedure TelegramAPI_CreateDeleteForumTopic() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("String" , TestParameters); + + Telegram_CreateForumTopic(TestParameters); + Telegram_EditForumTopic(TestParameters); + Telegram_CloseForumTopic(TestParameters); + Telegram_OpenForumTopic(TestParameters); + Telegram_ClearTopicPinnedMessagesList(TestParameters); + Telegram_DeleteForumTopic(TestParameters); + +EndProcedure + +Procedure TelegramAPI_HideShowMainTopic() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); + + Telegram_HideMainForumTopic(TestParameters); + Telegram_ShowMainForumTopic(TestParameters); + +EndProcedure + +Procedure TelegramAPI_ChangeMainTopicName() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Telegram_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Telegram_ForumID", TestParameters); + + Telegram_EditMainForumTopicName(TestParameters); + +EndProcedure + +#EndRegion // Telegram + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Telegram + +Procedure Telegram_GetBotInformation(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetBotInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetBotInformation"); + +EndProcedure + +Procedure Telegram_GetUpdates(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetUpdates", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetUpdates"); + +EndProcedure + +Procedure Telegram_SetWebhook(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + URL = FunctionParameters["Telegram_URL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SetWebhook", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SetWebhook"); + +EndProcedure + +Procedure Telegram_DeleteWebhook(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteWebhook", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DeleteWebhook"); + +EndProcedure + +Procedure Telegram_SendTextMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + + KeyboardButtonsArray = New Array; + KeyboardButtonsArray.Add("Button1"); + KeyboardButtonsArray.Add("Button2"); + + // With keyboard, in chat + Options = New Structure; + Options.Insert("buttons", KeyboardButtonsArray); + Options.Insert("under", Истина); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", , FunctionParameters, Text); // SKIP + + // Simple, to channel + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Channel", FunctionParameters, Text); + + Text = "Text html %F0%9F%93%9E 10%"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("parsemode", "HTML"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "HTML"); + + Text = "%F0%9F%A4%BC"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Emoji"); + + Text = "Text %F0%9F%A5%9D and emoji \(10%\)"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Text + Emoji"); + + Keyboard = OPI_Tools.JsonToStructure(Keyboard, False); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Keyboard structure"); + + Text = "%F0%9F%94%A5 *New release\!* + | + |%F0%9F%8F%B0 *Repository*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Version*: \{0.6.0} + |%F0%9F%93%85 *Date release*: 6 december 2025 y. + | + |>*AI summary* + |>Devtools - this tool for automation work with configurations\extensions 1C:Enterprise and integration with Git. Application allows dump and upload objects, a also synchronize change between Git and repository 1C. In release 0.6.0 realized optimization logic work and added logging, that contributes stability and simplifies analysis work applications. + | + | + |_Not forget put %E2%AD%90 liked projects_"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendTextMessage", "Complex"); + +EndProcedure + +Procedure Telegram_FormKeyboardFromButtonArray(FunctionParameters) + + ButtonArray = New Array; + ButtonArray.Add("Button1"); + ButtonArray.Add("Button2"); + ButtonArray.Add("Button3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "FormKeyboardFromButtonArray"); + +EndProcedure + +Procedure Telegram_SendImage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Image = FunctionParameters["Picture"]; + + ImagePath = GetTempFileName("png"); + CopyFile(Image, ImagePath); + + ImageDD = New BinaryData(ImagePath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", ImagePath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", ImageDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Binary", FunctionParameters, Text); + + ButtonArray = New Array; + ButtonArray.Add("Button1"); + ButtonArray.Add("Button2"); + ButtonArray.Add("Button3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + Options.Insert("under", Истина); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Keyboard", FunctionParameters, Text); + + Keyboard = OPI_Tools.JsonToStructure(Keyboard); + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Keyboard collection", FunctionParameters, Text); + + Text = "Text %F0%9F%A5%9D and emoji \(10%\)"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Text + Emoji"); + + Text = "%F0%9F%94%A5 *New release\!* + | + |%F0%9F%8F%B0 *Repository*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Version*: \{0.6.0} + |%F0%9F%93%85 *Date release*: 6 december 2025 y. + | + |>*AI summary* + |>Devtools - this tool for automation work with configurations\extensions 1C:Enterprise and integration with Git. Application allows dump and upload objects, a also synchronize change between Git and repository 1C. In release 0.6.0 realized optimization logic work and added logging, that contributes stability and simplifies analysis work applications. + | + | + |_Not forget put %E2%AD%90 liked projects_"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("picture", Image); + Options.Insert("parsemode", "MarkdownV2"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendImage", "Complex"); + + OPI_Tools.RemoveFileWithTry(ImagePath, "Failed to delete the temporary file after the test!!"); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendVideo(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Video = FunctionParameters["Video"]; + + VideoPath = GetTempFileName("mp4"); + CopyFile(Video, VideoPath); + + VideoDD = New BinaryData(VideoPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("video", Video); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendVideo", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("video", VideoPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendVideo", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("video", VideoDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendVideo", Options); + + // END + + OPI_Tools.RemoveFileWithTry(VideoPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendVideo", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendAudio(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Audio = FunctionParameters["Audio"]; + + AudioPath = GetTempFileName("mp3"); + CopyFile(Audio, AudioPath); + + AudioDD = New BinaryData(AudioPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("audio", Audio); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendAudio", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("audio", AudioPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendAudio", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("audio", AudioDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendAudio", Options); + + // END + + OPI_Tools.RemoveFileWithTry(AudioPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendAudio", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendDocument(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + Document = FunctionParameters["Document"]; + + DocumentPath = GetTempFileName("docx"); + CopyFile(Document, DocumentPath); + + DocumentDD = New BinaryData(DocumentPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("doc", Document); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", , FunctionParameters, Text); // SKIP + + // In chat, by URL, with file name + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("doc", Document); + Options.Insert("filename", "customname.docx"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", "With name", FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("doc", DocumentPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data, with file name + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("doc", DocumentDD); + Options.Insert("filename", "customname.docx"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendDocument", Options); + + // END + + OPI_Tools.RemoveFileWithTry(DocumentPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendDocument", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendGif(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Text = FunctionParameters["String"]; + GIF = FunctionParameters["GIF"]; + + GifPath = GetTempFileName("gif"); + CopyFile(GIF, GifPath); + + GifDD = New BinaryData(GifPath); + + // In chat, by URL + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("gif", GIF); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendGif", , FunctionParameters, Text); // SKIP + + // To channel, on disk + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("gif", GifPath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendGif", "Path", FunctionParameters, Text); // SKIP + + // To channel, from binary data + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("gif", GifDD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendGif", Options); + + // END + + OPI_Tools.RemoveFileWithTry(GifPath, "Failed to delete the temporary file after the test!!"); + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendGif", "Binary", FunctionParameters, Text); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendMediaGroup(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + Text = FunctionParameters["String"]; + Image = FunctionParameters["Picture"]; + Video = FunctionParameters["Video"]; + + ImagePath = GetTempFileName("png"); + CopyFile(Image, ImagePath); + + VideoPath = GetTempFileName("mp4"); + CopyFile(Video, VideoPath); + + VideoDD = New BinaryData(VideoPath); + + MediaGroup = New Map; + MediaGroup.Insert(ImagePath, "photo"); + MediaGroup.Insert(VideoDD , "video"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("text", Text); + Options.Insert("media", MediaGroup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendMediaGroup", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendMediaGroup"); + + DocumentURL = FunctionParameters["Document"]; + DocumentPath = GetTempFileName("docx"); + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + CopyFile(DocumentURL, DocumentPath); + + MediaGroup = New Map; + MediaGroup.Insert(DocumentURL , "document"); + MediaGroup.Insert(DocumentPath, "document"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("text", Text); + Options.Insert("media", MediaGroup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendMediaGroup", Options); + + OPI_Tools.RemoveFileWithTry(VideoPath , "Failed to delete the temporary file after the test!!"); + OPI_Tools.RemoveFileWithTry(ImagePath , "Failed to delete the temporary file after the test!!"); + OPI_Tools.RemoveFileWithTry(DocumentPath, "Failed to delete the temporary file after the test!!"); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendMediaGroup", "Documents"); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendLocation(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Width = FunctionParameters["Lat"]; + Longitude = FunctionParameters["Long"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("lat", Width); + Options.Insert("long", Longitude); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendLocation", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendLocation"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("lat", Width); + Options.Insert("long", Longitude); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendLocation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendLocation", "Channel"); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_SendContact(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Name = FunctionParameters["Name"]; + LastName = FunctionParameters["Surname"]; + Phone = FunctionParameters["Phone"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("name", Name); + Options.Insert("surname", LastName); + Options.Insert("phone", Phone); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendContact", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendContact", , Name); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("name", Name); + Options.Insert("surname", LastName); + Options.Insert("phone", Phone); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendContact", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendContact", "Channel", Name); + +EndProcedure + +Procedure Telegram_SendPoll(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Question = "What's your favorite color??"; + + AnswersArray = New Array; + AnswersArray.Add("Red"); + AnswersArray.Add("Yellow"); + AnswersArray.Add("Green"); + AnswersArray.Add("Blue"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("question", Question); + Options.Insert("options", AnswersArray); + Options.Insert("anonymous", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendPoll", , Question); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("question", Question); + Options.Insert("options", AnswersArray); + Options.Insert("anonymous", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendPoll", "Channel", Question); // SKIP + + // END + + StringArray = "['Red', 'Yellow', 'Green', 'Blue']"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("question", Question); + Options.Insert("options", StringArray); + Options.Insert("anonymous", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendPoll", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "SendPoll", "Questions as string", Question); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure Telegram_DownloadFile(FunctionParameters) + + FileID = FunctionParameters["Telegram_FileID"]; + Token = FunctionParameters["Telegram_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DownloadFile"); + +EndProcedure + +Procedure Telegram_ForwardMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("message", MessageID); + Options.Insert("from", ChannelID); + Options.Insert("to", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ForwardMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ForwardMessage", , MessageID); + +EndProcedure + +Procedure Telegram_Ban(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + UserID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "Ban", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "Ban"); + +EndProcedure + +Procedure Telegram_Unban(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + UserID = FunctionParameters["Telegram_ChatID"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "Unban", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "Unban"); + +EndProcedure + +Procedure Telegram_CreateInvitationLink(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + Day = 86400; + CurrentDate = OPI_Tools.GetCurrentDate(); + + Title = "Link " + String(CurrentDate); + Expiration = CurrentDate + Day; + UnixExpiration = OPI_Tools.UNIXTime(Expiration); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("title", Title); + Options.Insert("expire", Expiration); + Options.Insert("limit", 200); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CreateInvitationLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CreateInvitationLink", , Title, UnixExpiration); + +EndProcedure + +Procedure Telegram_PinMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "PinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "PinMessage"); + +EndProcedure + +Procedure Telegram_UnpinMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "UnpinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "UnpinMessage"); + +EndProcedure + +Procedure Telegram_GetParticipantCount(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChannelID = FunctionParameters["Telegram_ChannelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChannelID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetParticipantCount", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetParticipantCount"); + +EndProcedure + +Procedure Telegram_GetAvatarIconList(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "GetAvatarIconList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "GetAvatarIconList"); + +EndProcedure + +Procedure Telegram_CreateForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Icon = "5357419403325481346"; + Name = "TestTopic " + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("title", Name); + Options.Insert("icon", Icon); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CreateForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CreateForumTopic", , FunctionParameters, Name, Icon); + + ChatTopic = Chat + "*" + FunctionParameters["Telegram_TopicID"]; + Text = FunctionParameters["String"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatTopic); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CreateForumTopic", "Message", FunctionParameters, Text); + +EndProcedure + +Procedure Telegram_EditForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + NewName = "NewTestTitle"; + NewIcon = "5310132165583840589"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + Options.Insert("title", NewName); + Options.Insert("icon", NewIcon); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "EditForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "EditForumTopic"); + +EndProcedure + +Procedure Telegram_CloseForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + OPI_Telegram.OpenForumTopic(Token, Chat); // SKIP + + Result = OPI_Telegram.CloseForumTopic(Token, Chat); // Closes main topic + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CloseForumTopic", "Main"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "CloseForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "CloseForumTopic"); + +EndProcedure + +Procedure Telegram_OpenForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + Result = OPI_Telegram.OpenForumTopic(Token, Chat); // Opens main topic + + OPI_TestDataRetrieval.Process(Result, "Telegram", "OpenForumTopic", "Main"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "OpenForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "OpenForumTopic"); + +EndProcedure + +Procedure Telegram_DeleteForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("topic", Topic); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DeleteForumTopic"); + +EndProcedure + +Procedure Telegram_ClearTopicPinnedMessagesList(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + Topic = FunctionParameters["Telegram_TopicID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ClearTopicPinnedMessagesList", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ClearTopicPinnedMessagesList", "Main"); // SKIP + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ClearTopicPinnedMessagesList"); + +EndProcedure + +Procedure Telegram_HideMainForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "HideMainForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "HideMainForumTopic"); + +EndProcedure + +Procedure Telegram_ShowMainForumTopic(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ShowMainForumTopic", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ShowMainForumTopic"); + +EndProcedure + +Procedure Telegram_EditMainForumTopicName(FunctionParameters) + + Title = "New main topic name " + String(New UUID); + Token = FunctionParameters["Telegram_Token"]; + Chat = FunctionParameters["Telegram_ForumID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("forum", Chat); + Options.Insert("title", Title); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "EditMainForumTopicName", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "EditMainForumTopicName"); + +EndProcedure + +Procedure Telegram_DeleteMessage(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "DeleteMessage"); + +EndProcedure + +Procedure Telegram_ReplaceMessageText(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChannelID"]; + MessageID = FunctionParameters["Telegram_ChannelMessageID"]; + Text = "New message text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageText", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageText", , Text); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("text", "Bold text"); + Options.Insert("parsemode", "HTML"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageText", Options); + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageText", "Markup", "Bold text"); + +EndProcedure + +Procedure Telegram_ReplaceMessageKeyboard(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + MessageID = FunctionParameters["Telegram_MessageID"]; + + ButtonArray = New Array; + ButtonArray.Add("New button 3"); + ButtonArray.Add("New button 2"); + ButtonArray.Add("New button 1"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + Options.Insert("under", Истина); + Options.Insert("column", Ложь); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "FormKeyboardFromButtonArray", Options); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageKeyboard", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageKeyboard", , Keyboard); + +EndProcedure + +Procedure Telegram_ReplaceMessageCaption(FunctionParameters) + + Token = FunctionParameters["Telegram_Token"]; + ChatID = FunctionParameters["Telegram_ChatID"]; + MessageID = FunctionParameters["Telegram_PicMessageID"]; + + Description = "New picture description"; + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chat", ChatID); + Options.Insert("message", MessageID); + Options.Insert("caption", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("telegram", "ReplaceMessageCaption", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Telegram", "ReplaceMessageCaption", , Description); + +EndProcedure + +#EndRegion // Telegram + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Телеграм_ПолучитьИнформациюБота() Export + TelegramAPI_GetBotInfo(); +EndProcedure + +Procedure Телеграм_ПолучитьОбновления() Export + TelegramAPI_GetUpdates(); +EndProcedure + +Procedure Телеграм_УстановитьWebhook() Export + TelegramAPI_SetWebhook(); +EndProcedure + +Procedure Телеграм_ОтправитьТекстовоеСообщение() Export + TelegramAPI_SendTextMessage(); +EndProcedure + +Procedure Телеграм_ОтправитьКартинку() Export + TelegramAPI_SendImage(); +EndProcedure + +Procedure Телеграм_ОтправитьВидео() Export + TelegramAPI_SendVideo(); +EndProcedure + +Procedure Телеграм_ОтправитьАудио() Export + TelegramAPI_SendAudio(); +EndProcedure + +Procedure Телеграм_ОтправитьДокумент() Export + TelegramAPI_SendDocument(); +EndProcedure + +Procedure Телеграм_ОтправитьГифку() Export + TelegramAPI_SendGIF(); +EndProcedure + +Procedure Телеграм_ОтправитьМедиагруппу() Export + TelegramAPI_SendMediaGroup(); +EndProcedure + +Procedure Телеграм_ОтправитьМестоположение() Export + TelegramAPI_SendLocation(); +EndProcedure + +Procedure Телеграм_ОтправитьКонтакт() Export + TelegramAPI_SendContact(); +EndProcedure + +Procedure Телеграм_ОтправитьОпрос() Export + TelegramAPI_SendPoll(); +EndProcedure + +Procedure Телеграм_ПереслатьСообщение() Export + TelegramAPI_ForwardMessage(); +EndProcedure + +Procedure Телеграм_БанРазбан() Export + TelegramAPI_BanUnban(); +EndProcedure + +Procedure Телеграм_СоздатьСсылкуПриглашение() Export + TelegramAPI_CreateInvitationLink(); +EndProcedure + +Procedure Телеграм_ЗакрепитьОткрепитьСообщение() Export + TelegramAPI_PinUnpinMessage(); +EndProcedure + +Procedure Телеграм_ПолучитьЧислоУчастников() Export + TelegramAPI_GetMemberCount(); +EndProcedure + +Procedure Телеграм_ПолучитьСписокАватаровФорума() Export + TelegramAPI_GetForumAvatarsList(); +EndProcedure + +Procedure Телеграм_СоздатьУдалитьТемуФорума() Export + TelegramAPI_CreateDeleteForumTopic(); +EndProcedure + +Procedure Телеграм_СкрытьПоказатьГлавнуюТему() Export + TelegramAPI_HideShowMainTopic(); +EndProcedure + +Procedure Телеграм_ИзменитьИмяГлавнойТемы() Export + TelegramAPI_ChangeMainTopicName(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Twitter.os b/src/en/OInt/tests/Modules/OPItc_Twitter.os new file mode 100644 index 0000000000..32f2bdc758 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Twitter.os @@ -0,0 +1,469 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Twitter.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Twitter"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Twitter"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Twitter + +Procedure TwitterAPI_AccountData() Export + + TestParameters = New Structure; + + Twitter_GetToken(TestParameters); + Twitter_GetAuthorizationLink(TestParameters); + // !DISABLED! Twitter_UpdateToken(TestParameters); + +EndProcedure + +Procedure TwitterAPI_Tweets() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("GIF" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + Twitter_CreateTextTweet(TestParameters); + Twitter_UploadAttachmentsArray(TestParameters); + Twitter_CreateVideoTweet(TestParameters); + Twitter_CreateImageTweet(TestParameters); + Twitter_CreateGifTweet(TestParameters); + Twitter_CreatePollTweet(TestParameters); + Twitter_CreateCustomTweet(TestParameters); + +EndProcedure + +#EndRegion // Twitter + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +Function GetTwitterAuthData() + + Parameters = New Map; + + ServerToken = OPI_TestDataRetrieval.GetParameter("Access_Token"); + + URL = OPI_TestDataRetrieval.GetParameter("Twitter_TokenURL"); + + Result = OPI_HTTPRequests.NewRequest() + .Initialize() + .SetURL(URL) + .AddBearerAuthorization(ServerToken) // <--- + .ProcessRequest("GET") + .ReturnResponseAsJSONObject(); + + Token = Result["data"]; + + Parameters.Insert("redirect_uri" , OPI_TestDataRetrieval.GetParameter("Twitter_Redirect")); + Parameters.Insert("client_id" , OPI_TestDataRetrieval.GetParameter("Twitter_ClientID")); + Parameters.Insert("client_secret" , OPI_TestDataRetrieval.GetParameter("Twitter_ClientSecret")); + Parameters.Insert("access_token" , Token); + Parameters.Insert("refresh_token" , OPI_TestDataRetrieval.GetParameter("Twitter_Refresh")); + Parameters.Insert("oauth_token" , OPI_TestDataRetrieval.GetParameter("Twitter_OAuthToken")); + Parameters.Insert("oauth_token_secret", OPI_TestDataRetrieval.GetParameter("Twitter_OAuthSecret")); + + Parameters.Insert("oauth_consumer_key" , OPI_TestDataRetrieval.GetParameter("Twitter_OAuthConsumerKey")); + Parameters.Insert("oauth_consumer_secret", OPI_TestDataRetrieval.GetParameter( + "Twitter_OAuthConsumerSecret")); + + Return Parameters; + +EndFunction + +#Region AtomicTests + +#Region Twitter + +Procedure Twitter_GetToken(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Code = "123456"; + + Options = New Structure; + Options.Insert("code", Code); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "GetToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "GetToken"); + +EndProcedure + +Procedure Twitter_GetAuthorizationLink(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "GetAuthorizationLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "GetAuthorizationLink"); + +EndProcedure + +Procedure Twitter_RefreshToken(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "RefreshToken"); + +EndProcedure + +Procedure Twitter_CreateTextTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateTextTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateTextTweet", , Text); + +EndProcedure + +Procedure Twitter_CreateImageTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Image = FunctionParameters["Picture"]; // URL, Binary or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path + + ImageArray = New Array; + ImageArray.Add(Image); + ImageArray.Add(Image2); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", ImageArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateImageTweet", , Text); // SKIP + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", Image); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateImageTweet", "Single", Text); + + Image = OPI_HTTPRequests.Get(Image); + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", Image); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateImageTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateImageTweet", "Binary", Text); + +EndProcedure + +Procedure Twitter_CreateVideoTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Video = FunctionParameters["Video"]; // URL, Binary or File path + Video2 = FunctionParameters["Video"]; // URL, Binary or File path + + VideosArray = New Array; + VideosArray.Add(Video); + VideosArray.Add(Video2); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("videos", VideosArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateVideoTweet", , Text); // SKIP + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("videos", Video); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateVideoTweet", "Single", Text); + + Video = OPI_HTTPRequests.Get(Video); + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("videos", Video); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateVideoTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateVideoTweet", "Binary", Text); + +EndProcedure + +Procedure Twitter_CreateGifTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + GIF = FunctionParameters["GIF"]; // URL, Binary or File path + Gif2 = FunctionParameters["GIF"]; // URL, Binary or File path + + GifsArray = New Array; + GifsArray.Add(GIF); + GifsArray.Add(Gif2); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("gifs", GifsArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateGifTweet", , Text); // SKIP + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("gifs", GIF); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateGifTweet", "Single", Text); + + GIF = OPI_HTTPRequests.Get(GIF); + + Text = "TestTweet" + String(New UUID); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("gifs", GIF); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateGifTweet", Options); + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateGifTweet", "Binary", Text); + +EndProcedure + +Procedure Twitter_CreatePollTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + AnswersArray = New Array; + AnswersArray.Add("Option 1"); + AnswersArray.Add("Option 2"); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("options", AnswersArray); + Options.Insert("duration", 60); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreatePollTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreatePollTweet", , Text); + +EndProcedure + +Procedure Twitter_CreateCustomTweet(FunctionParameters) + + Parameters = GetTwitterAuthData(); + Text = "TestTweet" + String(New UUID); + + Image1 = FunctionParameters["Picture"]; // URL, Binary Data or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary Data or File path + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + Options = New Structure; + Options.Insert("files", ImageArray); + Options.Insert("type", "tweet_image"); + Options.Insert("auth", Parameters); + + MediaArray = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "UploadAttachmentsArray", Options); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("media", MediaArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "CreateCustomTweet", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "CreateCustomTweet", , Text); + +EndProcedure + +Procedure Twitter_UploadAttachmentsArray(FunctionParameters) + + Parameters = GetTwitterAuthData(); + + Image1 = FunctionParameters["Picture"]; // URL, Binary Data or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary Data or File path + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + Options = New Structure; + Options.Insert("files", ImageArray); + Options.Insert("type", "tweet_image"); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("twitter", "UploadAttachmentsArray", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Twitter", "UploadAttachmentsArray"); + +EndProcedure + +#EndRegion // Twitter + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Твиттер_ДанныеАккаунта() Export + TwitterAPI_AccountData(); +EndProcedure + +Procedure Твиттер_Твиты() Export + TwitterAPI_Tweets(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_VK.os b/src/en/OInt/tests/Modules/OPItc_VK.os new file mode 100644 index 0000000000..f94db712b8 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_VK.os @@ -0,0 +1,1531 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VK.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("VK"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("VK"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region VK + +Procedure VKAPI_CreateTokenLink() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VK_AppID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_GroupID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_Token" , TestParameters); + + VK_CreateTokenRetrievalLink(TestParameters); + VK_GetAuthParameters(TestParameters); + +EndProcedure + +Procedure VKAPI_CreateDeletePost() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + + VK_CreatePost(TestParameters); + VK_DeletePost(TestParameters); + +EndProcedure + +Procedure VKAPI_CreateCompositePost() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Video" , TestParameters); + + VK_CreateCompositePost(TestParameters); + +EndProcedure + +Procedure VKAPI_CreatePoll() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + VK_CreatePoll(TestParameters); + +EndProcedure + +Procedure VKAPI_SaveDeleteImage() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + VK_CreateAlbum(TestParameters); + VK_SaveImageToAlbum(TestParameters); + VK_DeleteImage(TestParameters); + VK_DeleteAlbum(TestParameters); + VK_UploadPhotoToServer(TestParameters); + +EndProcedure + +Procedure VKAPI_CreateStory() Export + + TestParameters = New Map; + OPI_TestDataRetrieval.ParameterToCollection("Picture", TestParameters); + + VK_CreateStory(TestParameters); + +EndProcedure + +Procedure VKAPI_LikeRepostComment() Export + + TestParameters = New Structure; + Parameters = GetVKParameters(); + Text = "Post from autotest"; + + Result = OPI_VK.CreatePost(Text, New Array, , , Parameters); + PostID = Result["response"]["post_id"]; + + OPI_TestDataRetrieval.WriteParameter("VK_PostID", PostID); + OPI_TestDataRetrieval.ParameterToCollection("VK_PostID", TestParameters); + + VK_MakeRepost(TestParameters); + VK_WriteComment(TestParameters); + VK_ShortenLink(TestParameters); + + OPI_VK.DeletePost(PostID , Parameters); + OPI_VK.DeletePost(TestParameters["Repost"], Parameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_GetStatistics() Export + + TestParameters = New Structure; + + VK_GetStatistics(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_GetPostStatistics() Export + + TestParameters = New Structure; + + VK_GetPostStatistics(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_CreateAdCampaign() Export + + Parameters = GetVKParameters(); + Text = "Post from autotest"; + + Result = OPI_VK.CreatePost(Text, New Array, , , Parameters); + PostID = Result["response"]["post_id"]; + + OPI_TestDataRetrieval.WriteParameter("VK_PostID", PostID); + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VK_AdsCabinetID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_PostID" , TestParameters); + + // !DISABLED! VK_CreateAdvertisingCampaign(TestParameters); + // !DISABLED! VK_CreateAd(TestParameters); + // !DISABLED! VK_PauseAdvertising(TestParameters); + VK_GetAdvertisingCategoryList(TestParameters); + + OPI_VK.DeletePost(PostID, Parameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_SendMessage() Export + + TestParameters = New Structure; + + OPI_TestDataRetrieval.ParameterToCollection("VK_UserID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VK_CommunityToken", TestParameters); + + VK_FormKeyboard(TestParameters); + VK_WriteMessage(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_GetProductCategories() Export + + TestParameters = New Structure; + + VK_GetProductCategoryList(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_CreateProductSelection() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + + VK_CreateProductCollection(TestParameters); + VK_EditProductCollection(TestParameters); + VK_GetSelectionsByID(TestParameters); + VK_AddProduct(TestParameters); + VK_EditProduct(TestParameters); + VK_AddProductToCollection(TestParameters); + VK_RemoveProductFromSelection(TestParameters); + VK_DeleteProduct(TestParameters); + VK_DeleteSelection(TestParameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VKAPI_CreateProductWithProperties() Export + + Parameters = GetVKParameters(); + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture2", TestParameters); + + VK_GetProductDescription(TestParameters); + VK_CreateProductProperty(TestParameters); + VK_EditProductProperty(TestParameters); + VK_AddProductPropertyVariant(TestParameters); + VK_EditProductPropertyVariant(TestParameters); + VK_CreateProductWithProp(TestParameters); + VK_GetProductsByID(TestParameters); + VK_GroupProducts(TestParameters); + + OPI_VK.DeleteProduct(TestParameters["VK_MarketItemID2"], Parameters); + OPI_VK.DeleteProduct(TestParameters["VK_MarketItemID3"], Parameters); + + VK_DeleteProductPropertyVariant(TestParameters); + VK_DeleteProductProperty(TestParameters); + +EndProcedure + +Procedure VKAPI_GetProductList() Export + + TestParameters = New Structure; + + VK_GetProductList(TestParameters); + +EndProcedure + +Procedure VKAPI_GetSelectionList() Export + + TestParameters = New Structure; + + VK_GetSelectionList(TestParameters); + +EndProcedure + +Procedure VKAPI_GetPropertyList() Export + + TestParameters = New Structure; + + VK_GetPropertyList(TestParameters); + +EndProcedure + +Procedure VKAPI_GetOrderList() Export + + TestParameters = New Structure; + + VK_GetOrderList(TestParameters); + +EndProcedure + +Procedure VKAPI_UploadVideo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Video", TestParameters); + + VK_UploadVideoToServer(TestParameters); + +EndProcedure + +#EndRegion // VK + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +Function GetVKParameters() + + Parameters = New Structure; + GroupNumber = OPI_TestDataRetrieval.GetParameter("VK_GroupID"); + + Parameters.Insert("access_token", OPI_TestDataRetrieval.GetParameter("VK_Token")); + Parameters.Insert("owner_id" , "-" + GroupNumber); + Parameters.Insert("app_id" , OPI_TestDataRetrieval.GetParameter("VK_AppID")); + Parameters.Insert("group_id" , GroupNumber); + + Return Parameters; + +EndFunction + +#Region AtomicTests + +#Region VK + +Procedure VK_CreateTokenRetrievalLink(FunctionParameters) + + Application = FunctionParameters["VK_AppID"]; + Options = New Structure; + Options.Insert("app", Application); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateTokenRetrievalLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateTokenRetrievalLink"); + +EndProcedure + +Procedure VK_GetAuthParameters(FunctionParameters) + + GroupID = FunctionParameters["VK_GroupID"]; + AppID = FunctionParameters["VK_AppID"]; + Token = FunctionParameters["VK_Token"]; + + Options = New Structure; + Options.Insert("group", GroupID); + Options.Insert("app", AppID); + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetAuthParameters", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetAuthParameters"); + +EndProcedure + +Procedure VK_CreatePost(FunctionParameters) + + Parameters = GetVKParameters(); + Text = "Post from autotest"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + Image2 = FunctionParameters["Picture2"]; // URL, Path or Binary Data + + TFN = GetTempFileName("png"); + CopyFile(Image2, TFN); + + ImageArray = New Array; + ImageArray.Add(Image); + ImageArray.Add(TFN); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", ImageArray); + Options.Insert("ad", Истина); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePost", , Parameters); // SKIP + + PostID = Result["response"]["post_id"]; // SKIP + OPI_VK.DeletePost(PostID, Parameters); // SKIP + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", Image); + Options.Insert("ad", Ложь); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePost", "Image", Parameters); + + PostID = Result["response"]["post_id"]; + OPI_VK.DeletePost(PostID, Parameters); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("pictures", TFN); + Options.Insert("ad", Истина); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePost", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePost", "Path", FunctionParameters); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VK_DeletePost(FunctionParameters) + + Parameters = GetVKParameters(); + PostID = FunctionParameters["VK_PostID"]; + + Options = New Structure; + Options.Insert("post", PostID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeletePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeletePost"); + +EndProcedure + +Procedure VK_CreateCompositePost(FunctionParameters) + + Parameters = GetVKParameters(); + Text = "Post from autotest"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Image = FunctionParameters["Picture"]; // URL, Path or Binary Data + Video = FunctionParameters["Video"]; // URL, Path or Binary Data + + TFN = GetTempFileName("png"); + CopyFile(Image, TFN); + + ImageUpload = OPI_VK.UploadPhotoToServer(TFN, Parameters)["response"][0]; + Options = New Structure; + Options.Insert("file", Video); + Options.Insert("title", "NewVideo"); + Options.Insert("auth", Parameters); + + VideoUpload = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadVideoToServer", Options); + + ImageOwner = OPI_Tools.NumberToString(ImageUpload["owner_id"]); + VideoOwner = OPI_Tools.NumberToString(VideoUpload["owner_id"]); + + ImageID = OPI_Tools.NumberToString(ImageUpload["id"]); + VideoID = OPI_Tools.NumberToString(VideoUpload["video_id"]); + + AttachmentsArray = New Array; + AttachmentsArray.Add("photo" + ImageOwner + "_" + ImageID); + AttachmentsArray.Add("video" + VideoOwner + "_" + VideoID); + + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("objects", AttachmentsArray); + Options.Insert("ad", Ложь); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateCompositePost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateCompositePost"); + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VK_CreatePoll(FunctionParameters) + + Parameters = GetVKParameters(); + Question = "What's your favorite color??"; + + OptionArray = New Array; + OptionArray.Add("Red"); + OptionArray.Add("Yellow"); + OptionArray.Add("Green"); + + Options = New Structure; + Options.Insert("question", Question); + Options.Insert("options", OptionArray); + Options.Insert("text", "Post text"); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePoll", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePoll", "Text"); // SKIP + + // With picture + + Image = FunctionParameters["Picture"]; // URL, File path or Binary Data + + Options = New Structure; + Options.Insert("question", Question); + Options.Insert("options", OptionArray); + Options.Insert("picture", Image); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreatePoll", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreatePoll"); + + PostID = Result["response"]["post_id"]; + OPI_VK.DeletePost(PostID, Parameters); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VK_CreateAlbum(FunctionParameters) + + Parameters = GetVKParameters(); + Name = "AlbumFromAutoTest"; + Description = "NewAlbumFromAutoTest"; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("description", Description); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAlbum", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateAlbum", , FunctionParameters, Description); + +EndProcedure + +Procedure VK_SaveImageToAlbum(FunctionParameters) + + Parameters = GetVKParameters(); + ImageDescription = "AutoTestImage"; + AlbumID = FunctionParameters["VK_AlbumID"]; + + Image = FunctionParameters["Picture"]; // URL, File path or Binary Data + + Options = New Structure; + Options.Insert("album", AlbumID); + Options.Insert("picture", Image); + Options.Insert("description", ImageDescription); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "SaveImageToAlbum", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "SaveImageToAlbum", , FunctionParameters, ImageDescription, AlbumID); + +EndProcedure + +Procedure VK_DeleteImage(FunctionParameters) + + Parameters = GetVKParameters(); + ImageID = FunctionParameters["VK_PictureID"]; + + Options = New Structure; + Options.Insert("pictureid", ImageID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteImage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteImage"); + +EndProcedure + +Procedure VK_DeleteAlbum(FunctionParameters) + + Parameters = GetVKParameters(); + AlbumID = FunctionParameters["VK_AlbumID"]; + + Options = New Structure; + Options.Insert("album", AlbumID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteAlbum", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteAlbum"); + +EndProcedure + +Procedure VK_CreateStory(FunctionParameters) + + Parameters = GetVKParameters(); + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Image = FunctionParameters["Picture"]; // URL, File path or Binary Data + TFN = GetTempFileName("png"); + CopyFile(Image, TFN); + Image = New BinaryData(TFN); + + Options = New Structure; + Options.Insert("picture", Image); + Options.Insert("url", URL); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateStory", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateStory"); // SKIP + + // END + + Options = New Structure; + Options.Insert("picture", TFN); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateStory", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateStory", "Path"); + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VK_MakeRepost(FunctionParameters) + + Parameters = GetVKParameters(); + PostID = 2571; + WallID = -218704372; + + Options = New Structure; + Options.Insert("post", PostID); + Options.Insert("from", WallID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "MakeRepost", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "MakeRepost", , FunctionParameters); + +EndProcedure + +Procedure VK_WriteComment(FunctionParameters) + + Parameters = GetVKParameters(); + Text = "NewComment"; + PostID = FunctionParameters["VK_PostID"]; + WallID = Parameters["owner_id"]; + + Options = New Structure; + Options.Insert("post", PostID); + Options.Insert("wall", WallID); + Options.Insert("text", Text); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "WriteComment", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "WriteComment"); + +EndProcedure + +Procedure VK_GetStatistics(FunctionParameters) + + Parameters = GetVKParameters(); + + CurrentDate = OPI_Tools.GetCurrentDate(); + StartDate = BegOfDay(CurrentDate); + EndDate = EndOfDay(StartDate); + + Options = New Structure; + Options.Insert("datefrom", StartDate); + Options.Insert("dateto", EndDate); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetStatistics", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetStatistics"); + +EndProcedure + +Procedure VK_GetPostStatistics(FunctionParameters) + + Parameters = GetVKParameters(); + + ArrayOfPosts = New Array; + ArrayOfPosts.Add(214); + ArrayOfPosts.Add(215); + + Options = New Structure; + Options.Insert("posts", ArrayOfPosts); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetPostStatistics", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetPostStatistics"); + +EndProcedure + +Procedure VK_CreateAdvertisingCampaign(FunctionParameters) + + Parameters = GetVKParameters(); + + AccountID = FunctionParameters["VK_AdsCabinetID"]; + Name = "New campaign"; + + Options = New Structure; + Options.Insert("cabinet", AccountID); + Options.Insert("title", Name); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAdvertisingCampaign", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateAdvertisingCampaign", , FunctionParameters); + +EndProcedure + +Procedure VK_CreateAd(FunctionParameters) + + Parameters = GetVKParameters(); + + CampaignNumber = FunctionParameters["VK_AdsCampaignID"]; + DailyLimit = 150; + CategoryNumber = 126; + PostID = FunctionParameters["VK_PostID"]; + AccountID = FunctionParameters["VK_AdsCabinetID"]; + + Options = New Structure; + Options.Insert("campaign", CampaignNumber); + Options.Insert("limit", DailyLimit); + Options.Insert("category", CategoryNumber); + Options.Insert("post", PostID); + Options.Insert("cabinet", AccountID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateAd", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateAd", , FunctionParameters); + +EndProcedure + +Procedure VK_PauseAdvertising(FunctionParameters) + + Parameters = GetVKParameters(); + + AccountID = FunctionParameters["VK_AdsCabinetID"]; + AdID = FunctionParameters["VK_AdsPostID"]; + + Options = New Structure; + Options.Insert("cabinet", AccountID); + Options.Insert("adv", AdID); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "PauseAdvertising", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "PauseAdvertising"); + +EndProcedure + +Procedure VK_FormKeyboard(FunctionParameters) + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "FormKeyboard", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "FormKeyboard"); + +EndProcedure + +Procedure VK_WriteMessage(FunctionParameters) + + Parameters = GetVKParameters(); + + Text = "Message from autotest"; + UserID = FunctionParameters["VK_UserID"]; + Communitytoken = FunctionParameters["VK_CommunityToken"]; + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "FormKeyboard", Options); + Options = New Structure; + Options.Insert("text", Text); + Options.Insert("user", UserID); + Options.Insert("ct", Communitytoken); + Options.Insert("keyboard", Keyboard); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "WriteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "WriteMessage"); + +EndProcedure + +Procedure VK_GetProductCategoryList(FunctionParameters) + + Parameters = GetVKParameters(); + + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductCategoryList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductCategoryList"); + +EndProcedure + +Procedure VK_CreateProductCollection(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "TestCollection"; + Image = FunctionParameters["Picture"]; + Main = True; + Hidden = False; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("picture", Image); + Options.Insert("main", Main); + Options.Insert("hidden", Hidden); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateProductCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductCollection", , FunctionParameters); + +EndProcedure + +Procedure VK_EditProductCollection(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "EditedCollection"; + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProductCollection"); + +EndProcedure + +Procedure VK_GetSelectionsByID(FunctionParameters) + + Parameters = GetVKParameters(); + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("sels", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetSelectionsByID", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetSelectionsByID"); + +EndProcedure + +Procedure VK_AddProduct(FunctionParameters) + + Parameters = GetVKParameters(); + + Image1 = FunctionParameters["Picture"]; // URL, Binary or File path + Image2 = FunctionParameters["Picture2"]; // URL, Binary or File path + Selection = FunctionParameters["VK_MarketAlbumID"]; + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + ProductDescription = New Map; + ProductDescription.Insert("Name" , "TestProduct"); + ProductDescription.Insert("Description" , "Product description"); + ProductDescription.Insert("Category" , "20173"); + ProductDescription.Insert("Price" , 1); + ProductDescription.Insert("OldPrice" , 15); + ProductDescription.Insert("MainPhoto" , Image1); + ProductDescription.Insert("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + ProductDescription.Insert("AdditionalPhotos" , ImageArray); + ProductDescription.Insert("MainInGroup" , True); + ProductDescription.Insert("Width" , 20); + ProductDescription.Insert("Height" , 30); + ProductDescription.Insert("Depth" , 40); + ProductDescription.Insert("Weight" , 100); + ProductDescription.Insert("SKU" , "12345"); + ProductDescription.Insert("AvailableBalance" , "10"); + + Options = New Structure; + Options.Insert("product", ProductDescription); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "AddProduct", , FunctionParameters); + +EndProcedure + +Procedure VK_EditProduct(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + + ProductDescription = New Map; + ProductDescription.Insert("Name", "EditedTestProduct"); + + Options = New Structure; + Options.Insert("item", Product); + Options.Insert("product", ProductDescription); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProduct"); + +EndProcedure + +Procedure VK_AddProductToCollection(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("items", Product); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProductToCollection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "AddProductToCollection"); + +EndProcedure + +Procedure VK_RemoveProductFromSelection(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("item", Product); + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "RemoveProductFromSelection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "RemoveProductFromSelection"); + +EndProcedure + +Procedure VK_DeleteProduct(FunctionParameters) + + Parameters = GetVKParameters(); + + Product = FunctionParameters["VK_MarketItemID"]; + + Options = New Structure; + Options.Insert("item", Product); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteProduct"); + +EndProcedure + +Procedure VK_DeleteSelection(FunctionParameters) + + Parameters = GetVKParameters(); + + Selection = FunctionParameters["VK_MarketAlbumID"]; + + Options = New Structure; + Options.Insert("sel", Selection); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteSelection", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteSelection"); + +EndProcedure + +Procedure VK_CreateProductProperty(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "Color"; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "CreateProductProperty", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductProperty", , FunctionParameters); + +EndProcedure + +Procedure VK_EditProductProperty(FunctionParameters) + + Parameters = GetVKParameters(); + + Name = "Color (change.)"; + Property = FunctionParameters["VK_PropID"]; + + Options = New Structure; + Options.Insert("title", Name); + Options.Insert("prop", Property); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductProperty", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProductProperty"); + +EndProcedure + +Procedure VK_AddProductPropertyVariant(FunctionParameters) + + Counter = 1; // SKIP + Parameters = GetVKParameters(); + + Property = FunctionParameters["VK_PropID"]; + OptionArray = New Array; + OptionArray.Add("Yellow"); + OptionArray.Add("Blue"); + OptionArray.Add("Red"); + + For Each Value In OptionArray Do + + Result = OPI_VK.AddProductPropertyVariant(Value, Property, Parameters); + + OPI_TestDataRetrieval.Process(Result, "VK", "AddProductPropertyVariant", , FunctionParameters, Counter); // SKIP + + Counter = Counter + 1; // SKIP + + EndDo; + + // END + +EndProcedure + +Procedure VK_EditProductPropertyVariant(FunctionParameters) + + Parameters = GetVKParameters(); + + Property = FunctionParameters["VK_PropID"]; + Option = FunctionParameters["VK_PropVarID1"]; + Value = "New variant name"; + + Options = New Structure; + Options.Insert("value", Value); + Options.Insert("prop", Property); + Options.Insert("option", Option); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "EditProductPropertyVariant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "EditProductPropertyVariant"); + +EndProcedure + +Procedure VK_CreateProductWithProp(FunctionParameters) + + Parameters = GetVKParameters(); + + Image1 = FunctionParameters["Picture"]; + Image2 = FunctionParameters["Picture2"]; + PropVariant1 = FunctionParameters["VK_PropVarID1"]; + PropVariant2 = FunctionParameters["VK_PropVarID2"]; + + ImageArray = New Array; + ImageArray.Add(Image1); + ImageArray.Add(Image2); + + Product = New Map; + Product.Insert("Name" , "Test product (with prop)"); + Product.Insert("Description" , "Product description"); + Product.Insert("Category" , "20173"); + Product.Insert("Price" , 1); + Product.Insert("OldPrice" , 15); + Product.Insert("MainPhoto" , Image1); + Product.Insert("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + Product.Insert("AdditionalPhotos" , ImageArray); + Product.Insert("MainInGroup" , True); + Product.Insert("Width" , 20); + Product.Insert("Height" , 30); + Product.Insert("Depth" , 40); + Product.Insert("Weight" , 100); + Product.Insert("SKU" , 12345); + Product.Insert("AvailableBalance" , "10"); + Product.Insert("PropertyValues" , PropVariant1); + + Options = New Structure; + Options.Insert("product", Product); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductWithProp", "First", FunctionParameters, 2); + + Product.Insert("Name" , "Test product (another)"); + Product.Insert("PropertyValues", PropVariant2); + + Options = New Structure; + Options.Insert("product", Product); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "AddProduct", Options); + + OPI_TestDataRetrieval.Process(Result, "VK", "CreateProductWithProp", "Second", FunctionParameters, 3); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure VK_GetProductsByID(FunctionParameters) + + Parameters = GetVKParameters(); + + Item1 = FunctionParameters["VK_MarketItemID2"]; + Item2 = FunctionParameters["VK_MarketItemID3"]; + + ProductsArray = New Array; + ProductsArray.Add(Item1); + ProductsArray.Add(Item2); + + Options = New Structure; + Options.Insert("items", ProductsArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductsByID", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductsByID"); + +EndProcedure + +Procedure VK_GroupProducts(FunctionParameters) + + Parameters = GetVKParameters(); + + Item1 = FunctionParameters["VK_MarketItemID2"]; + Item2 = FunctionParameters["VK_MarketItemID3"]; + + ProductsArray = New Array; + ProductsArray.Add(Item1); + ProductsArray.Add(Item2); + + Options = New Structure; + Options.Insert("items", ProductsArray); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GroupProducts", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GroupProducts"); + +EndProcedure + +Procedure VK_DeleteProductPropertyVariant(FunctionParameters) + + Parameters = GetVKParameters(); + + Option = FunctionParameters["VK_PropVarID1"]; + + Options = New Structure; + Options.Insert("option", Option); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProductPropertyVariant", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteProductPropertyVariant"); + +EndProcedure + +Procedure VK_DeleteProductProperty(FunctionParameters) + + Parameters = GetVKParameters(); + + Property = FunctionParameters["VK_PropID"]; + + Options = New Structure; + Options.Insert("prop", Property); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "DeleteProductProperty", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "DeleteProductProperty"); + +EndProcedure + +Procedure VK_GetProductList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductList"); + +EndProcedure + +Procedure VK_GetSelectionList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetSelectionList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetSelectionList"); + +EndProcedure + +Procedure VK_GetPropertyList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetPropertyList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetPropertyList"); + +EndProcedure + +Procedure VK_GetOrderList(FunctionParameters) + + Parameters = GetVKParameters(); + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetOrderList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetOrderList"); + +EndProcedure + +Procedure VK_UploadVideoToServer(FunctionParameters) + + Parameters = GetVKParameters(); + + Video = FunctionParameters["Video"]; // URL, Binary Data or File path + Name = "NewVideo"; + Description = "Video description"; + + Options = New Structure; + Options.Insert("file", Video); + Options.Insert("title", Name); + Options.Insert("description", Description); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadVideoToServer", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "UploadVideoToServer"); + +EndProcedure + +Procedure VK_UploadPhotoToServer(FunctionParameters) + + Parameters = GetVKParameters(); + + Image = FunctionParameters["Picture"]; // URL, Binary Data or File path + View = "Post"; + + Options = New Structure; + Options.Insert("file", Image); + Options.Insert("auth", Parameters); + Options.Insert("type", View); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "UploadPhotoToServer", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "UploadPhotoToServer"); + +EndProcedure + +Procedure VK_ShortenLink(FunctionParameters) + + Parameters = GetVKParameters(); + + Options = New Structure; + Options.Insert("url", "https://github.com/Bayselonarrend/OpenIntegrations"); + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "ShortenLink", Options); + +EndProcedure + +Procedure VK_GetAdvertisingCategoryList(FunctionParameters) + + Parameters = GetVKParameters(); + + Options = New Structure; + Options.Insert("auth", Parameters); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetAdvertisingCategoryList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetAdvertisingCategoryList"); + +EndProcedure + +Procedure VK_GetProductDescription(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vk", "GetProductDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VK", "GetProductDescription"); + +EndProcedure + +#EndRegion // VK + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ВК_СоздатьСсылкуТокена() Export + VKAPI_CreateTokenLink(); +EndProcedure + +Procedure ВК_СоздатьУдалитьПост() Export + VKAPI_CreateDeletePost(); +EndProcedure + +Procedure ВК_СоздатьСоставнойПост() Export + VKAPI_CreateCompositePost(); +EndProcedure + +Procedure ВК_СоздатьОпрос() Export + VKAPI_CreatePoll(); +EndProcedure + +Procedure ВК_СохранитьУдалитьКартинку() Export + VKAPI_SaveDeleteImage(); +EndProcedure + +Procedure ВК_СоздатьИсторию() Export + VKAPI_CreateStory(); +EndProcedure + +Procedure ВК_ЛайкРепостКоммент() Export + VKAPI_LikeRepostComment(); +EndProcedure + +Procedure ВК_ПолучитьСтатистику() Export + VKAPI_GetStatistics(); +EndProcedure + +Procedure ВК_ПолучитьСтатистикуПостов() Export + VKAPI_GetPostStatistics(); +EndProcedure + +Procedure ВК_СоздатьРекламнуюКампанию() Export + VKAPI_CreateAdCampaign(); +EndProcedure + +Procedure ВК_ОтправитьСообщение() Export + VKAPI_SendMessage(); +EndProcedure + +Procedure ВК_ПолучитьКатегорииТоваров() Export + VKAPI_GetProductCategories(); +EndProcedure + +Procedure ВК_СоздатьТоварПодборку() Export + VKAPI_CreateProductSelection(); +EndProcedure + +Procedure ВК_СоздатьТоварСоСвойствами() Export + VKAPI_CreateProductWithProperties(); +EndProcedure + +Procedure ВК_ПолучитьСписокТоваров() Export + VKAPI_GetProductList(); +EndProcedure + +Procedure ВК_ПолучитьСписокПодборок() Export + VKAPI_GetSelectionList(); +EndProcedure + +Procedure ВК_ПолучитьСписокСвойств() Export + VKAPI_GetPropertyList(); +EndProcedure + +Procedure ВК_ПолучитьСписокЗаказов() Export + VKAPI_GetOrderList(); +EndProcedure + +Procedure ВК_ЗагрузитьВидео() Export + VKAPI_UploadVideo(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_VKTeams.os b/src/en/OInt/tests/Modules/OPItc_VKTeams.os new file mode 100644 index 0000000000..a7830a5fee --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_VKTeams.os @@ -0,0 +1,921 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VKTeams.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("VKTeams"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("VKTeams"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region VkTeams + +Procedure VKT_CommonMethods() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_FileID", TestParameters); + + VkTeams_CheckToken(TestParameters); + VkTeams_GetEvents(TestParameters); + VKTeams_GetFileInformation(TestParameters); + +EndProcedure + +Procedure VKT_MessagesSending() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID2" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_MessageID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Audio2" , TestParameters); + + VkTeams_SendTextMessage(TestParameters); + OPI_Tools.Pause(60); + + VKTeams_AnswerButtonEvent(TestParameters); + VKTeams_ForwardMessage(TestParameters); + VKTeams_SendFile(TestParameters); + VKTeams_ResendFile(TestParameters); + VKTeams_EditMessageText(TestParameters); + VKTeams_PinMessage(TestParameters); + VKTeams_UnpinMessage(TestParameters); + VKTeams_DeleteMessage(TestParameters); + VKTeams_SendVoice(TestParameters); + VKTeams_ResendVoice(TestParameters); + VKTeams_MakeActionButton(TestParameters); + +EndProcedure + +Procedure VKT_ChatManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("VkTeams_ChatID2", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture3" , TestParameters); + + VKTeams_RemoveChatMembers(TestParameters); + VKTeams_ChangeChatPicture(TestParameters); + VKTeams_GetChatInfo(TestParameters); + VKTeams_GetChatAdmins(TestParameters); + VKTeams_GetChatMembers(TestParameters); + VKTeams_GetChatBlockedUsers(TestParameters); + VKTeams_GetChatJoinRequests(TestParameters); + VKTeams_BlockChatUser(TestParameters); + VKTeams_UnblockChatUser(TestParameters); + VKTeams_ApprovePending(TestParameters); + VKTeams_DisapprovePending(TestParameters); + VKTeams_SetChatTitle(TestParameters); + VKTeams_SetChatDescription(TestParameters); + VKTeams_SetChatRules(TestParameters); + +EndProcedure + +#EndRegion // VkTeams + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region VKTeams + +Procedure VKTeams_CheckToken(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "CheckToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "CheckToken"); + +EndProcedure + +Procedure VKTeams_GetEvents(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + LastID = 0; + + For N = 1 To 5 Do // In real work - endless loop + + Result = OPI_VKTeams.GetEvents(Token, LastID, 3); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetEvents"); // SKIP + + Events = Result["events"]; + + // Event handling... + + If Not Events.Count() = 0 Then + + LastID = Events[Events.UBound()]["eventId"]; + + EndIf; + + EndDo; + + // END + + OPI_Tools.Pause(3); + +EndProcedure + +Procedure VKTeams_SendTextMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + Text = "Message text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendTextMessage", "Simple", FunctionParameters); // SKIP + + ChatID = FunctionParameters["VkTeams_ChatID2"]; + ReplyID = FunctionParameters["VkTeams_MessageID"]; + Text = "Bold text"; + Markup = "HTML"; + + Keyboard = New Array; + ButtonsLineArray = New Array; + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button1", "ButtonEvent1", , "attention")); + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Keyboard.Add(ButtonsLineArray); + Keyboard.Add(ButtonsLineArray); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + Options.Insert("reply", ReplyID); + Options.Insert("keyboard", Keyboard); + Options.Insert("parsemod", Markup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendTextMessage", , FunctionParameters); + +EndProcedure + +Procedure VKTeams_ForwardMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + FromChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("messageid", MessageID); + Options.Insert("fromid", FromChatID); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ForwardMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ForwardMessage", "Simple"); // SKIP + + Text = "Additional text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("messageid", MessageID); + Options.Insert("fromid", FromChatID); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ForwardMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ForwardMessage"); + +EndProcedure + +Procedure VKTeams_SendFile(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + Text = "File caption"; + + File = FunctionParameters["Document"]; // URL + FilePath = GetTempFileName("docx"); // Path + + CopyFile(File, FilePath); + + FileBD = New BinaryData(FilePath); // Binary + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendFile", "URL", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FilePath); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendFile", "Path", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FileBD); + Options.Insert("text", Text); + Options.Insert("filename", "ImportantDocument.docx"); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendFile", , FunctionParameters); + + OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VKTeams_ResendFile(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + FileID = FunctionParameters["VkTeams_FileID"]; + Text = "File caption"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("fileid", FileID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ResendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ResendFile"); + +EndProcedure + +Procedure VKTeams_GetFileInformation(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + FileID = FunctionParameters["VkTeams_FileID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetFileInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetFileInformation"); + +EndProcedure + +Procedure VKTeams_EditMessageText(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + Text = "New message text"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "EditMessageText", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "EditMessageText", "Path"); // SKIP + + Text = "New bold message text"; + Markup = "HTML"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + Options.Insert("text", Text); + Options.Insert("parsemod", Markup); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "EditMessageText", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "EditMessageText"); + +EndProcedure + +Procedure VKTeams_DeleteMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DeleteMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "DeleteMessage"); + +EndProcedure + +Procedure VKTeams_SendVoice(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + ReplyID = FunctionParameters["VkTeams_MessageID"]; + + File = FunctionParameters["Audio2"]; // URL + FilePath = GetTempFileName("m4a"); // Path + + CopyFile(File, FilePath); + + FileBD = New BinaryData(FilePath); // Binary + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendVoice", "URL", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FilePath); + Options.Insert("reply", ReplyID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendVoice", "Path", FunctionParameters); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FileBD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SendVoice", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SendVoice", , FunctionParameters); + + OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VKTeams_ResendVoice(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + FileID = FunctionParameters["VkTeams_VoiceID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("fileid", FileID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ResendVoice", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ResendVoice"); + +EndProcedure + +Procedure VKTeams_RemoveChatMembers(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("members", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "RemoveChatMembers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "RemoveChatMembers"); + +EndProcedure + +Procedure VKTeams_ChangeChatPicture(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + File = FunctionParameters["Picture3"]; // URL + FilePath = GetTempFileName("png"); // Path + + CopyFile(File, FilePath); + + FileBD = New BinaryData(FilePath); // Binary + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", File); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ChangeChatPicture", "URL"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FilePath); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ChangeChatPicture", "Path"); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("file", FileBD); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ChangeChatPicture", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ChangeChatPicture"); + + OPI_Tools.RemoveFileWithTry(FilePath, "Failed to delete the temporary file after the test!!"); + +EndProcedure + +Procedure VKTeams_GetChatInfo(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatInfo", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatInfo"); + +EndProcedure + +Procedure VKTeams_GetChatAdmins(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatAdmins", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatAdmins"); + +EndProcedure + +Procedure VKTeams_GetChatMembers(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatMembers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatMembers"); + +EndProcedure + +Procedure VKTeams_GetChatBlockedUsers(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatBlockedUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatBlockedUsers"); + +EndProcedure + +Procedure VKTeams_GetChatJoinRequests(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "GetChatJoinRequests", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "GetChatJoinRequests"); + +EndProcedure + +Procedure VKTeams_BlockChatUser(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + Options.Insert("dellast", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "BlockChatUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "BlockChatUser"); + +EndProcedure + +Procedure VKTeams_UnblockChatUser(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "UnblockChatUser", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "UnblockChatUser"); + +EndProcedure + +Procedure VKTeams_PinMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "PinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "PinMessage"); + +EndProcedure + +Procedure VKTeams_UnpinMessage(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + MessageID = FunctionParameters["VkTeams_MessageID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("messageid", MessageID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "UnpinMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "UnpinMessage"); + +EndProcedure + +Procedure VKTeams_ApprovePending(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ApprovePending", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ApprovePending", "One"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "ApprovePending", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "ApprovePending"); + +EndProcedure + +Procedure VKTeams_DisapprovePending(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + User = 1011987091; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("userid", User); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DisapprovePending", Options); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "DisapprovePending", "One"); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "DisapprovePending", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "DisapprovePending"); + +EndProcedure + +Procedure VKTeams_SetChatTitle(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + Text = "New title"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatTitle", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SetChatTitle"); + +EndProcedure + +Procedure VKTeams_SetChatDescription(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + Text = "New description"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatDescription", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SetChatDescription"); + +EndProcedure + +Procedure VKTeams_SetChatRules(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + ChatID = FunctionParameters["VkTeams_ChatID2"]; + Text = "Text of the new rules"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("chatid", ChatID); + Options.Insert("text", Text); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("vkteams", "SetChatRules", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "SetChatRules"); + +EndProcedure + +Procedure VKTeams_AnswerButtonEvent(FunctionParameters) + + Token = FunctionParameters["VkTeams_Token"]; + LastID = 0; + + For N = 1 To 5 Do + + Result = OPI_VKTeams.GetEvents(Token, LastID, 3); + Events = Result["events"]; + + If Not Events.Count() = 0 Then + + For Each Event In Events Do + + callbackData = Event["payload"]; + + If callbackData["callbackData"] = "ButtonEvent1" Then + + EventID = callbackData["queryId"]; + Result = OPI_VKTeams.AnswerButtonEvent(Token, EventID, "Get it!!"); + + OPI_TestDataRetrieval.Process(Result, "VKTeams", "AnswerButtonEvent"); // SKIP + + EndIf; + + EndDo; + + LastID = Events[Events.UBound()]["eventId"]; + + EndIf; + + EndDo; + + // END + + OPI_Tools.Pause(3); + +EndProcedure + +Procedure VKTeams_MakeActionButton(FunctionParameters) + + Keyboard = New Array; + ButtonsLineArray = New Array; + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button1", "ButtonEvent1", , "attention")); + + ButtonsLineArray.Add(OPI_VKTeams.MakeActionButton("Button2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Keyboard.Add(ButtonsLineArray); + Keyboard.Add(ButtonsLineArray); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + // END + +EndProcedure + +#EndRegion // VKTeams + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ВКТ_ОбщиеМетоды() Export + VKT_CommonMethods(); +EndProcedure + +Procedure ВКТ_ОтправкаСообщений() Export + VKT_MessagesSending(); +EndProcedure + +Procedure ВКТ_УправлениеЧатами() Export + VKT_ChatManagement(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_Viber.os b/src/en/OInt/tests/Modules/OPItc_Viber.os new file mode 100644 index 0000000000..0330e5b43c --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_Viber.os @@ -0,0 +1,498 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Viber.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("Viber"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("Viber"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region Viber + +Procedure Viber_DataRetrieval() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelToken" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelAdminID", TestParameters); + + Return; + + //@skip-check unreachable-statements + // BSLLS:UnreachableCode-off + + Viber_GetChannelInformation(TestParameters); + Viber_GetUserData(TestParameters); + Viber_GetOnlineUsers(TestParameters); + Viber_SetWebhook(TestParameters); + + // BSLLS:UnreachableCode-on + +EndProcedure + +Procedure Viber_MessagesSending() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelToken" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_ChannelAdminID", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Viber_UserID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Document" , TestParameters); + + Viber_CreateKeyboardFromArrayButton(TestParameters); + + Return; + + //@skip-check unreachable-statement + // BSLLS:UnreachableCode-off + + Viber_SendTextMessage(TestParameters); + Viber_SendImage(TestParameters); + Viber_SendFile(TestParameters); + Viber_SendContact(TestParameters); + Viber_SendLocation(TestParameters); + Viber_SendLink(TestParameters); + + // BSLLS:UnreachableCode-on + +EndProcedure + +#EndRegion // Viber + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region Viber + +Procedure Viber_SetWebhook(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + URL = "http://api.athenaeum.digital/hs/viber"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SetWebhook", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SetWebhook"); + +EndProcedure + +Procedure Viber_GetChannelInformation(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetChannelInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "GetChannelInformation"); + +EndProcedure + +Procedure Viber_GetUserData(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + UserID = FunctionParameters["Viber_ChannelAdminID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("user", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetUserData", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "GetUserData"); + +EndProcedure + +Procedure Viber_GetOnlineUsers(FunctionParameters) + + Token = FunctionParameters["Viber_ChannelToken"]; + UserID = FunctionParameters["Viber_ChannelAdminID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("users", UserID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "GetOnlineUsers", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "GetOnlineUsers"); + +EndProcedure + +Procedure Viber_CreateKeyboardFromArrayButton(FunctionParameters) + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + ButtonArray.Add("Button 3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "CreateKeyboardFromArrayButton", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "CreateKeyboardFromArrayButton"); + +EndProcedure + +Procedure Viber_SendTextMessage(FunctionParameters) + + Text = "TestMessage"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + ButtonArray = New Array; + ButtonArray.Add("Button 1"); + ButtonArray.Add("Button 2"); + ButtonArray.Add("Button 3"); + + Options = New Structure; + Options.Insert("buttons", ButtonArray); + + Keyboard = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "CreateKeyboardFromArrayButton", Options); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("text", Text); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendTextMessage", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendTextMessage"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("text", Text); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("keyboard", Keyboard); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendTextMessage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendTextMessage", "Channel"); + +EndProcedure + +Procedure Viber_SendImage(FunctionParameters) + + Description = "TestMessage"; + URL = FunctionParameters["Picture"]; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("picture", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendImage", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendImage"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("picture", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("description", Description); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendImage", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendImage", "Channel"); + +EndProcedure + +Procedure Viber_SendFile(FunctionParameters) + + Extension = "docx"; + URL = FunctionParameters["Document"]; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("ext", Extension); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendFile", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendFile"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("file", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + Options.Insert("ext", Extension); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendFile", "Channel"); + +EndProcedure + +Procedure Viber_SendContact(FunctionParameters) + + Name = "Petr Petrov"; + Phone = "+123456789"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("name", Name); + Options.Insert("phone", Phone); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendContact", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendContact"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("name", Name); + Options.Insert("phone", Phone); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendContact", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendContact", "Channel"); + +EndProcedure + +Procedure Viber_SendLocation(FunctionParameters) + + Latitude = "48.87373649724122"; + Longitude = "2.2954639195323967"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLocation", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLocation"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("lat", Latitude); + Options.Insert("long", Longitude); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLocation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLocation", "Channel"); + +EndProcedure + +Procedure Viber_SendLink(FunctionParameters) + + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + UserID = FunctionParameters["Viber_UserID"]; + Token = FunctionParameters["Viber_Token"]; + SendingToChannel = False; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLink", Options); + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLink"); // SKIP + + UserID = FunctionParameters["Viber_ChannelAdminID"]; + Token = FunctionParameters["Viber_ChannelToken"]; + SendingToChannel = True; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + Options.Insert("user", UserID); + Options.Insert("ischannel", SendingToChannel); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("viber", "SendLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "Viber", "SendLink", "Channel"); + +EndProcedure + +#EndRegion // Viber + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure Вайбер_ПолучениеИнформации() Export + Viber_DataRetrieval(); +EndProcedure + +Procedure Вайбер_ОтправкаСообщений() Export + Viber_MessagesSending(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_WebSocket.os b/src/en/OInt/tests/Modules/OPItc_WebSocket.os new file mode 100644 index 0000000000..a6c44dbaf3 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_WebSocket.os @@ -0,0 +1,95 @@ +// OneScript: ./OInt/tests/Modules/OPItc_WebSocket.os + +// MIT License + +// Copyright (c) 2023-2026 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:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("WebSocket"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("WebSocket"); + +EndFunction + + +#Region Alternate + + + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_YandexDisk.os b/src/en/OInt/tests/Modules/OPItc_YandexDisk.os new file mode 100644 index 0000000000..85943e35b7 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_YandexDisk.os @@ -0,0 +1,767 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexDisk.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("YandexDisk"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("YandexDisk"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region YandexDisk + +Procedure YDisk_Authorization() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_ClientID" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_ClientSecret", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_RefreshToken", TestParameters); + + YandexDisk_GetConfirmationCode(TestParameters); + YandexDisk_ConvertCodeToToken(TestParameters); + YandexDisk_RefreshToken(TestParameters); + +EndProcedure + +Procedure YDisk_GetDiskInfo() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_GetDiskInformation(TestParameters); + +EndProcedure + +Procedure YDisk_CreateFolder() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_CreateFolder(TestParameters); + +EndProcedure + +Procedure YDisk_UploadByUrlAndGetObject() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + YandexDisk_UploadFileByURL(TestParameters); + YandexDisk_GetObject(TestParameters); + YandexDisk_DeleteObject(TestParameters); + +EndProcedure + +Procedure YDisk_UploadDeleteFile() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Audio" , TestParameters); + + YandexDisk_UploadFileInParts(TestParameters); + YandexDisk_UploadFile(TestParameters); + +EndProcedure + +Procedure YDisk_CreateObjectCopy() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + OriginalPath = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); + TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); + + YandexDisk_CreateObjectCopy(TestParameters); + + CopyPath = TestParameters["YandexDisk_CopyFilePath"]; + + OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); + OPI_YandexDisk.DeleteObject(Token, CopyPath , False); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure YDisk_GetDownloadLink() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + Path = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, Path, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_PathForLink", Path); + TestParameters.Insert("YandexDisk_PathForLink", Path); + + YandexDisk_GetDownloadLink(TestParameters); + YandexDisk_DownloadFile(TestParameters); + + OPI_YandexDisk.DeleteObject(Token, Path, False); + +EndProcedure + +Procedure YDisk_GetFileList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_GetFilesList(TestParameters); + +EndProcedure + +Procedure YDisk_MoveObject() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + OriginalPath = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); + TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); + + YandexDisk_MoveObject(TestParameters); + + NewPath = TestParameters["YandexDisk_NewFilePath"]; + + OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); + OPI_YandexDisk.DeleteObject(Token, NewPath , False); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure YDisk_PublicObjectActions() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters); + + Token = TestParameters["YandexDisk_Token"]; + URL = TestParameters["Picture"]; + + OriginalPath = "/" + String(New UUID) + ".png"; + + OPI_YandexDisk.UploadFileByURL(Token, OriginalPath, URL); + OPI_Tools.Pause(35); + + OPI_TestDataRetrieval.WriteParameter("YandexDisk_OriginalFilePath", OriginalPath); + TestParameters.Insert("YandexDisk_OriginalFilePath", OriginalPath); + + YandexDisk_PublishObject(TestParameters); + YandexDisk_GetDownloadLinkForPublicObject(TestParameters); + YandexDisk_GetPublicObject(TestParameters); + YandexDisk_SavePublicObjectToDisk(TestParameters); + YandexDisk_CancelObjectPublication(TestParameters); + + OPI_YandexDisk.DeleteObject(Token, OriginalPath, False); + + OPI_Tools.Pause(5); + +EndProcedure + +Procedure YDisk_GetPublishedList() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("YandexDisk_Token", TestParameters); + + YandexDisk_GetPublishedObjectsList(TestParameters); + +EndProcedure + +#EndRegion // YandexDisk + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region YandexDisk + +Procedure YandexDisk_GetConfirmationCode(FunctionParameters) + + ClientID = FunctionParameters["YandexDisk_ClientID"]; + + Options = New Structure; + Options.Insert("id", ClientID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetConfirmationCode", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetConfirmationCode"); + +EndProcedure + +Procedure YandexDisk_ConvertCodeToToken(FunctionParameters) + + ClientID = FunctionParameters["YandexDisk_ClientID"]; + ClientSecret = FunctionParameters["YandexDisk_ClientSecret"]; + DeviceCode = "12345678"; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("device", DeviceCode); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "ConvertCodeToToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "ConvertCodeToToken", , FunctionParameters); + +EndProcedure + +Procedure YandexDisk_RefreshToken(FunctionParameters) + + ClientID = FunctionParameters["YandexDisk_ClientID"]; + ClientSecret = FunctionParameters["YandexDisk_ClientSecret"]; + RefreshToken = FunctionParameters["YandexDisk_RefreshToken"]; + + Options = New Structure; + Options.Insert("id", ClientID); + Options.Insert("secret", ClientSecret); + Options.Insert("refresh", RefreshToken); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "RefreshToken", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "RefreshToken", , FunctionParameters); + +EndProcedure + +Procedure YandexDisk_GetDiskInformation(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDiskInformation", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetDiskInformation"); + +EndProcedure + +Procedure YandexDisk_CreateFolder(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = "/" + String(New UUID); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CreateFolder", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "CreateFolder", , Token, Path); + + OPI_YandexDisk.DeleteObject(Token, Path, False); + +EndProcedure + +Procedure YandexDisk_UploadFileByURL(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Address = FunctionParameters["Picture"]; + Path = "/" + String(New UUID) + ".png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("url", Address); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFileByURL", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileByURL", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_FileByURLPath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetObject", , Path); + +EndProcedure + +Procedure YandexDisk_DeleteObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_FileByURLPath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("can", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DeleteObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "DeleteObject"); + +EndProcedure + +Procedure YandexDisk_UploadFile(FunctionParameters) + + Path1 = "/" + String(New UUID) + ".png"; + Path2 = "/" + String(New UUID) + ".png"; + + Token = FunctionParameters["YandexDisk_Token"]; + Image = FunctionParameters["Picture"]; // URL + + TFN = GetTempFileName("png"); // Path + CopyFile(Image, TFN); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path1); + Options.Insert("file", Image); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFile", "URL"); // SKIP + + OPI_YandexDisk.DeleteObject(Token, Path1, False); // SKIP + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path2); + Options.Insert("file", TFN); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFile", Options); + + // END + + OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete the temporary file after the test!!"); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFile"); + + OPI_YandexDisk.DeleteObject(Token, Path2, False); // SKIP + +EndProcedure + +Procedure YandexDisk_CreateObjectCopy(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Original = FunctionParameters["YandexDisk_OriginalFilePath"]; + Path = "/" + String(New UUID) + ".png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", Original); + Options.Insert("to", Path); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CreateObjectCopy", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "CreateObjectCopy", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetDownloadLink(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_PathForLink"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDownloadLink", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetDownloadLink"); + +EndProcedure + +Procedure YandexDisk_DownloadFile(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_PathForLink"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DownloadFile", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "DownloadFile"); + +EndProcedure + +Procedure YandexDisk_GetFilesList(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Count = 2; + OffsetFromStart = 1; + FilterByType = "image"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("amount", Count); + Options.Insert("offset", OffsetFromStart); + Options.Insert("type", FilterByType); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetFilesList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetFilesList", , Count, OffsetFromStart); + +EndProcedure + +Procedure YandexDisk_MoveObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Original = FunctionParameters["YandexDisk_OriginalFilePath"]; + Path = "/" + String(New UUID) + ".png"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("from", Original); + Options.Insert("to", Path); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "MoveObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "MoveObject", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetPublishedObjectsList(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Count = 2; + OffsetFromStart = 1; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("amount", Count); + Options.Insert("offset", OffsetFromStart); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetPublishedObjectsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetPublishedObjectsList", , Count, OffsetFromStart); + +EndProcedure + +Procedure YandexDisk_PublishObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_OriginalFilePath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "PublishObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "PublishObject", , FunctionParameters, Path); + +EndProcedure + +Procedure YandexDisk_GetDownloadLinkForPublicObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + URL = FunctionParameters["YandexDisk_PublicURL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetDownloadLinkForPublicObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetDownloadLinkForPublicObject"); + +EndProcedure + +Procedure YandexDisk_GetPublicObject(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + URL = FunctionParameters["YandexDisk_PublicURL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "GetPublicObject", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "GetPublicObject"); + +EndProcedure + +Procedure YandexDisk_SavePublicObjectToDisk(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + URL = FunctionParameters["YandexDisk_PublicURL"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("url", URL); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "SavePublicObjectToDisk", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "SavePublicObjectToDisk"); + +EndProcedure + +Procedure YandexDisk_CancelObjectPublication(FunctionParameters) + + Token = FunctionParameters["YandexDisk_Token"]; + Path = FunctionParameters["YandexDisk_OriginalFilePath"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "CancelObjectPublication", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "CancelObjectPublication", , Path); + +EndProcedure + +Procedure YandexDisk_UploadFileInParts(FunctionParameters) + + Path = "/song.mp3"; + + Token = FunctionParameters["YandexDisk_Token"]; + File = FunctionParameters["Audio"]; // URL, Binary or File path + + ChunkSize = 1048576; // 1 MB + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("file", File); + Options.Insert("psize", ChunkSize); + Options.Insert("rewrite", Истина); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "UploadFileInParts", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileInParts", , File); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DownloadFile", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileInParts", "Downloading", File); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("path", Path); + Options.Insert("can", Ложь); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("yadisk", "DeleteObject", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexDisk", "UploadFileInParts", "Deletion"); + +EndProcedure + +#EndRegion // YandexDisk + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ЯДиск_Авторизация() Export + YDisk_Authorization(); +EndProcedure + +Procedure ЯДиск_ПолучитьИнформациюОДиске() Export + YDisk_GetDiskInfo(); +EndProcedure + +Procedure ЯДиск_СоздатьПапку() Export + YDisk_CreateFolder(); +EndProcedure + +Procedure ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Export + YDisk_UploadByUrlAndGetObject(); +EndProcedure + +Procedure ЯДиск_ЗагрузитьУдалитьФайл() Export + YDisk_UploadDeleteFile(); +EndProcedure + +Procedure ЯДиск_СоздатьКопиюОбъекта() Export + YDisk_CreateObjectCopy(); +EndProcedure + +Procedure ЯДиск_ПолучитьСсылкуНаСкачивание() Export + YDisk_GetDownloadLink(); +EndProcedure + +Procedure ЯДиск_ПолучитьСписокФайлов() Export + YDisk_GetFileList(); +EndProcedure + +Procedure ЯДиск_ПереместитьОбъект() Export + YDisk_MoveObject(); +EndProcedure + +Procedure ЯДиск_ДействияПубличныхОбъектов() Export + YDisk_PublicObjectActions(); +EndProcedure + +Procedure ЯДиск_ПолучитьСписокОпубликованных() Export + YDisk_GetPublishedList(); +EndProcedure + +#EndRegion diff --git a/src/en/OInt/tests/Modules/OPItc_YandexMetrika.os b/src/en/OInt/tests/Modules/OPItc_YandexMetrika.os new file mode 100644 index 0000000000..3991d11d79 --- /dev/null +++ b/src/en/OInt/tests/Modules/OPItc_YandexMetrika.os @@ -0,0 +1,461 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexMetrika.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Test suite for YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Use "../../tools/main" +#Use "../../tools/http" +#Use "../../api" +#Use asserts +#Use "internal" + + +// For YAxUnit + +Procedure ИсполняемыеСценарии() Export + + OPI_TestDataRetrieval.FormYAXTests("YandexMetrika"); + +EndProcedure + +// For Asserts + +Function ПолучитьСписокТестов(UnitTesting) Export + + Return OPI_TestDataRetrieval.FormAssertsTests("YandexMetrika"); + +EndFunction + +#Region Internal + +#Region RunnableTests + +#Region YandexMetrika + +Procedure YaMetrika_TagsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); + + YandexMetrika_CreateTag(TestParameters); + YandexMetrika_GetTagsList(TestParameters); + YandexMetrika_UpdateTag(TestParameters); + YandexMetrika_GetTag(TestParameters); + YandexMetrika_DeleteTag(TestParameters); + +EndProcedure + +Procedure YaMetrika_CountersManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); + + YandexMetrika_GetCounterStructure(TestParameters); + YandexMetrika_CreateCounter(TestParameters); + YandexMetrika_GetCounter(TestParameters); + YandexMetrika_UpdateCounter(TestParameters); + YandexMetrika_DeleteCounter(TestParameters); + YandexMetrika_RestoreCounter(TestParameters); + YandexMetrika_GetCountersList(TestParameters); + YandexMetrika_DeleteCounter(TestParameters); + +EndProcedure + +Procedure YaMetrika_ActionsManagement() Export + + TestParameters = New Structure; + OPI_TestDataRetrieval.ParameterToCollection("Metrika_Token", TestParameters); + + YandexMetrika_CreateCounter(TestParameters); + YandexMetrika_GetActionsList(TestParameters); + YandexMetrika_DeleteCounter(TestParameters); + +EndProcedure + +#EndRegion // YandexMetrika + +#EndRegion // RunnableTests + +#EndRegion // Internal + +#Region Private + +#Region AtomicTests + +#Region YandexMetrika + +Procedure YandexMetrika_GetTagsList(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetTagsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetTagsList"); + +EndProcedure + +Procedure YandexMetrika_CreateTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + Name = "New tag"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "CreateTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "CreateTag", , FunctionParameters, Name); + +EndProcedure + +Procedure YandexMetrika_DeleteTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + TagID = FunctionParameters["Metrika_LabelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("label", TagID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "DeleteTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "DeleteTag"); + +EndProcedure + +Procedure YandexMetrika_UpdateTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + TagID = FunctionParameters["Metrika_LabelID"]; + Name = "New tag title"; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("label", TagID); + Options.Insert("title", Name); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "UpdateTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "UpdateTag", , Name); + +EndProcedure + +Procedure YandexMetrika_GetTag(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + TagID = FunctionParameters["Metrika_LabelID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("label", TagID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetTag", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetTag"); + +EndProcedure + +Procedure YandexMetrika_GetCounterStructure(FunctionParameters) + + Clear = False; + Options = New Structure; + Options.Insert("empty", Clear); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCounterStructure", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCounterStructure"); + +EndProcedure + +Procedure YandexMetrika_CreateCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + + CounterStructure = New Structure; + CounterStructure.Insert("autogoals_enabled", True); + + CodeSettingsStructure = New Structure; + CodeSettingsStructure.Insert("async" , 0); + CodeSettingsStructure.Insert("clickmap" , 1); + CodeSettingsStructure.Insert("ecommerce" , 1); + CodeSettingsStructure.Insert("in_one_line" , 0); + CodeSettingsStructure.Insert("track_hash" , 1); + CodeSettingsStructure.Insert("visor" , 1); + CodeSettingsStructure.Insert("xml_site" , 0); + CodeSettingsStructure.Insert("ytm" , 0); + CodeSettingsStructure.Insert("alternative_cdn", 1); + + InformerStructure = New Structure; + InformerStructure.Insert("color_arrow", 1); + InformerStructure.Insert("color_end" , "EFEFEFFE"); + InformerStructure.Insert("color_start", "EEEEEEEE"); + InformerStructure.Insert("color_text" , 0); + InformerStructure.Insert("enabled" , 1); + InformerStructure.Insert("indicator" , "uniques"); + InformerStructure.Insert("size" , 2); + InformerStructure.Insert("type" , "ext"); + + CodeSettingsStructure.Insert("informer", InformerStructure); + + CounterStructure.Insert("code_options", CodeSettingsStructure); + + FlagsStructure = New Structure; + FlagsStructure.Insert("collect_first_party_data" , True); + FlagsStructure.Insert("measurement_enabled" , True); + FlagsStructure.Insert("use_in_benchmarks" , True); + FlagsStructure.Insert("direct_allow_use_goals_without_access", True); + + CounterStructure.Insert("counter_flags" , FlagsStructure); + CounterStructure.Insert("favorite" , 1); + CounterStructure.Insert("filter_robots" , 2); + CounterStructure.Insert("gdpr_agreement_accepted", 1); + + DomainStructure = New Structure("site", "openintegrations.dev"); + + CounterStructure.Insert("site2", DomainStructure); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("fields", CounterStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "CreateCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "CreateCounter", , FunctionParameters); + +EndProcedure + +Procedure YandexMetrika_DeleteCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "DeleteCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "DeleteCounter"); + +EndProcedure + +Procedure YandexMetrika_UpdateCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + CounterStructure = New Structure; + CounterStructure.Insert("autogoals_enabled", True); + + FlagsStructure = New Structure; + FlagsStructure.Insert("collect_first_party_data" , False); + FlagsStructure.Insert("measurement_enabled" , False); + FlagsStructure.Insert("use_in_benchmarks" , False); + FlagsStructure.Insert("direct_allow_use_goals_without_access", False); + + CounterStructure.Insert("counter_flags", FlagsStructure); + CounterStructure.Insert("favorite" , 0); + CounterStructure.Insert("filter_robots", 1); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + Options.Insert("fields", CounterStructure); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "UpdateCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "UpdateCounter"); + +EndProcedure + +Procedure YandexMetrika_GetCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCounter"); + +EndProcedure + +Procedure YandexMetrika_RestoreCounter(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "RestoreCounter", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "RestoreCounter"); + +EndProcedure + +Procedure YandexMetrika_GetCountersList(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCountersList", Options); + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCountersList"); // SKIP + + // filter by IDs list + + Filter = New Structure; + + CountersArray = New Array; + CountersArray.Add(CounterID); + + Filter.Insert("counter_ids", CountersArray); + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("filter", Filter); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetCountersList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetCountersList", "Filter"); + +EndProcedure + +Procedure YandexMetrika_GetActionsList(FunctionParameters) + + Token = FunctionParameters["Metrika_Token"]; + CounterID = FunctionParameters["Metrika_CounterID"]; + + Options = New Structure; + Options.Insert("token", Token); + Options.Insert("counter", CounterID); + + Result = OPI_TestDataRetrieval.ExecuteTestCLI("metrika", "GetActionsList", Options); + + // END + + OPI_TestDataRetrieval.Process(Result, "YandexMetrika", "GetActionsList"); + +EndProcedure + +#EndRegion // YandexMetrika + +#EndRegion // AtomicTests + +#EndRegion // Private + +#Region Alternate + +Procedure ЯМетрика_УправлениеМетками() Export + YaMetrika_TagsManagement(); +EndProcedure + +Procedure ЯМетрика_УправлениеСчетчиками() Export + YaMetrika_CountersManagement(); +EndProcedure + +Procedure ЯМетрика_УправлениеОперациями() Export + YaMetrika_ActionsManagement(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/TestIB/src/CommonModules/ТестовыйМодуль1/Module.bsl b/src/ru/BSL/TestIB/src/CommonModules/ТестовыйМодуль1/Module.bsl index 54136a6634..22f2a08c1a 100644 --- a/src/ru/BSL/TestIB/src/CommonModules/ТестовыйМодуль1/Module.bsl +++ b/src/ru/BSL/TestIB/src/CommonModules/ТестовыйМодуль1/Module.bsl @@ -1,9 +1,9 @@ Процедура ЗапуститьЭхоСервер() Экспорт - Порт = 9876; + Порт = 9876; РазмерПула = 10; - НастройкиЛога = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 500, "D:\SERVER_LOG.txt"); + НастройкиЛога = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 500, "D:\SERVER_LOG.txt"); ОбъектСервера = OPI_TCP.ЗапуститьСервер(Порт, РазмерПула, НастройкиЛога); Если Не OPI_TCP.ЭтоОбъектСервера(ОбъектСервера) Тогда diff --git a/src/ru/BSL/TestIB/src/DataProcessors/Mustela/ObjectModule.bsl b/src/ru/BSL/TestIB/src/DataProcessors/Mustela/ObjectModule.bsl index 3ed826e208..a508b3a508 100644 --- a/src/ru/BSL/TestIB/src/DataProcessors/Mustela/ObjectModule.bsl +++ b/src/ru/BSL/TestIB/src/DataProcessors/Mustela/ObjectModule.bsl @@ -220,7 +220,7 @@ ТипРезультата = ТипЗнч(Результат); Если ТипРезультата = Тип("ДвоичныеДанные") Тогда - Результат = Новый Структура("result,data", Истина, Результат); + Результат = Новый Структура("result,data", Истина, Результат); ИначеЕсли Не Тип("Структура") Тогда Результат = JsonВСтруктуру(Результат, Ложь); КонецЕсли; diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Airtable/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Airtable/Module.bsl index 7e7c5975df..cfedb1af82 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Airtable/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Airtable/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Airtable.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,607 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + +#Область СлужебныйПрограммныйИнтерфейс + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Airtable"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Airtable"); + +КонецФункции + +#Область ЗапускаемыеТесты + +#Область Airtable + +Процедура АТ_СоздатьБазу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Workspace", ПараметрыТеста); + + Airtable_СоздатьБазу(ПараметрыТеста); + Airtable_ПолучитьТаблицыБазы(ПараметрыТеста); + Airtable_ПолучитьСписокБаз(ПараметрыТеста); + +КонецПроцедуры + +Процедура АТ_СоздатьТаблицу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + + Airtable_ПолучитьПолеНомера(ПараметрыТеста); + Airtable_ПолучитьПолеСтроковое(ПараметрыТеста); + Airtable_ПолучитьПолеВложения(ПараметрыТеста); + Airtable_ПолучитьПолеФлажка(ПараметрыТеста); + Airtable_ПолучитьПолеДаты(ПараметрыТеста); + Airtable_ПолучитьПолеТелефона(ПараметрыТеста); + Airtable_ПолучитьПолеПочты(ПараметрыТеста); + Airtable_ПолучитьПолеСсылки(ПараметрыТеста); + Airtable_СоздатьТаблицу(ПараметрыТеста); + Airtable_ИзменитьТаблицу(ПараметрыТеста); + +КонецПроцедуры + +Процедура АТ_СоздатьПоле() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); + + Airtable_СоздатьПоле(ПараметрыТеста); + Airtable_ИзменитьПоле(ПараметрыТеста); + +КонецПроцедуры + +Процедура АТ_СоздатьУдалитьЗаписи() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); + + Airtable_СоздатьЗаписи(ПараметрыТеста); + Airtable_ПолучитьЗапись(ПараметрыТеста); + Airtable_СоздатьКомментарий(ПараметрыТеста); + Airtable_ИзменитьКомментарий(ПараметрыТеста); + Airtable_ПолучитьКомментарии(ПараметрыТеста); + Airtable_УдалитьКомментарий(ПараметрыТеста); + Airtable_ПолучитьСписокЗаписей(ПараметрыТеста); + Airtable_УдалитьЗаписи(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Airtable + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Airtable + +Процедура Airtable_СоздатьБазу(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + Область = ПараметрыФункции["Airtable_Workspace"]; + Наименование = "Тестовая база"; + + МассивПолей = Новый Массив; + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); + + ИмяТаблицы = "Тестовая таблица"; + + СоответствиеТаблиц = Новый Соответствие; + СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("ws", Область); + Опции.Вставить("title", Наименование); + Опции.Вставить("tablesdata", СоответствиеТаблиц); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьБазу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьБазу", , ПараметрыФункции, ИмяТаблицы); + +КонецПроцедуры + +Процедура Airtable_ПолучитьТаблицыБазы(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьТаблицыБазы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьТаблицыБазы"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьСписокБаз(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокБаз", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьСписокБаз"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеНомера(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Номер"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеНомера"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеСтроковое(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Строковое"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСтроковое", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеСтроковое"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеВложения(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Вложение"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеВложения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеВложения"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеФлажка(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Флажок"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеФлажка", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеФлажка"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеДаты(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Дата"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеДаты", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеДаты"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеТелефона(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Телефон"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеТелефона", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеТелефона"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеПочты(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Почта"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеПочты", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеПочты"); + +КонецПроцедуры + +Процедура Airtable_ПолучитьПолеСсылки(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("title", "Ссылка"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСсылки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеСсылки"); + +КонецПроцедуры + +Процедура Airtable_СоздатьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + + МассивПолей = Новый Массив; + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеВложения("Вложение")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеФлажка("Флажок")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеДаты("Дата")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеТелефона("Телефон")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеПочты("Почта")); + МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСсылки("Ссылка")); + + Наименование = "Тестовая таблица 2"; + Описание = "Новая таблица"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("title", Наименование); + Опции.Вставить("fieldsdata", МассивПолей); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьТаблицу", , ПараметрыФункции, Наименование, Описание); + +КонецПроцедуры + +Процедура Airtable_ИзменитьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Наименование = "Тестовая таблица 2 (изм.)"; + Описание = "Новая таблица (изм.)"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("title", Наименование); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ИзменитьТаблицу", , Наименование, Описание); + +КонецПроцедуры + +Процедура Airtable_СоздатьПоле(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Имя = Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("title", Имя); + + Поле = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("fielddata", Поле); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьПоле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьПоле", , ПараметрыФункции, Имя); + +КонецПроцедуры + +Процедура Airtable_ИзменитьПоле(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Поле = ПараметрыФункции["Airtable_Field"]; + + Имя = Строка(Новый УникальныйИдентификатор) + "(изм.)"; + Описание = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("field", Поле); + Опции.Вставить("title", Имя); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьПоле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ИзменитьПоле", , Имя, Описание); + +КонецПроцедуры + +Процедура Airtable_СоздатьЗаписи(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + + Номер = 10; + Строковое = "Привет"; + + ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Номер, Строковое); + ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Номер, Строковое); + + МассивОписаний = Новый Массив; + МассивОписаний.Добавить(ОписаниеСтроки1); + МассивОписаний.Добавить(ОписаниеСтроки2); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("data", МассивОписаний); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьЗаписи", , ПараметрыФункции); + + МассивУдаляемых = Новый Массив; + + Для Каждого Запись Из Результат["records"] Цикл + + ТекущаяЗапись = Запись["id"]; + МассивУдаляемых.Добавить(ТекущаяЗапись); + + КонецЦикла; + + OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых); + + // Одиночное + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("data", ОписаниеСтроки1); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьЗаписи", "Одиночная", ПараметрыФункции, Номер, Строковое); + +КонецПроцедуры + +Процедура Airtable_ПолучитьЗапись(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьЗапись", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьЗапись", , Запись); + +КонецПроцедуры + +Процедура Airtable_СоздатьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + Текст = "Тестовый комментарий"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьКомментарий", , ПараметрыФункции, Текст); + +КонецПроцедуры + +Процедура Airtable_ИзменитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + Комментарий = ПараметрыФункции["Airtable_Comment"]; + + Текст = "Тестовый комментарий (изм.)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("comment", Комментарий); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ИзменитьКомментарий", , Текст); + +КонецПроцедуры + +Процедура Airtable_ПолучитьКомментарии(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьКомментарии", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьКомментарии"); + +КонецПроцедуры + +Процедура Airtable_УдалитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + Комментарий = ПараметрыФункции["Airtable_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("comment", Комментарий); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "УдалитьКомментарий", , Комментарий); + +КонецПроцедуры + +Процедура Airtable_ПолучитьСписокЗаписей(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьСписокЗаписей"); + +КонецПроцедуры + +Процедура Airtable_УдалитьЗаписи(ПараметрыФункции) + + Токен = ПараметрыФункции["Airtable_Token"]; + База = ПараметрыФункции["Airtable_Base"]; + Таблица = ПараметрыФункции["Airtable_Table"]; + Запись = ПараметрыФункции["Airtable_Record"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("records", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "УдалитьЗаписи"); + +КонецПроцедуры + +#КонецОбласти // Airtable + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure AT_CreateDatabase() Export + АТ_СоздатьБазу(); +EndProcedure + +Procedure AT_CreateTable() Export + АТ_СоздатьТаблицу(); +EndProcedure + +Procedure AT_CreateField() Export + АТ_СоздатьПоле(); +EndProcedure + +Procedure AT_CreateDeleteRecords() Export + АТ_СоздатьУдалитьЗаписи(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Bitrix24/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Bitrix24/Module.bsl index 7e7c5975df..7f875362ea 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Bitrix24/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Bitrix24/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Bitrix24.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,6336 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Bitrix24"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Bitrix24"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Bitrix24 + +Процедура Б24_РаботаСТокеном() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientSecret", ПараметрыТеста); + + Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Code", ПараметрыТеста); + + Bitrix24_ПолучитьТокен(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Refresh", ПараметрыТеста); + + Bitrix24_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_СерверноеВремя() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_СерверноеВремя(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСНовостями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + Bitrix24_СоздатьНовость(ПараметрыТеста); + Bitrix24_ИзменитьНовость(ПараметрыТеста); + Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыТеста); + Bitrix24_ПолучитьНовости(ПараметрыТеста); + Bitrix24_ДобавитьКомментарийНовости(ПараметрыТеста); + Bitrix24_ДобавитьПолучателейКНовости(ПараметрыТеста); + Bitrix24_УдалитьНовость(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСЗадачами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_UserID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыТеста); + Bitrix24_СоздатьЗадачу(ПараметрыТеста); + Bitrix24_СоздатьЗависимостьЗадач(ПараметрыТеста); + Bitrix24_УдалитьЗависимостьЗадач(ПараметрыТеста); + Bitrix24_ИзменитьЗадачу(ПараметрыТеста); + Bitrix24_ПолучитьЗадачу(ПараметрыТеста); + Bitrix24_ОтключитьЗвукЗадачи(ПараметрыТеста); + Bitrix24_ВключитьЗвукЗадачи(ПараметрыТеста); + Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыТеста); + Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыТеста); + Bitrix24_ДелегироватьЗадачу(ПараметрыТеста); + Bitrix24_ОтложитьЗадачу(ПараметрыТеста); + Bitrix24_ЗавершитьЗадачу(ПараметрыТеста); + Bitrix24_ОтклонитьЗадачу(ПараметрыТеста); + Bitrix24_ПринятьЗадачу(ПараметрыТеста); + Bitrix24_ВозобновитьЗадачу(ПараметрыТеста); + Bitrix24_НачатьВыполнениеЗадачи(ПараметрыТеста); + Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыТеста); + Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыТеста); + Bitrix24_ПриостановитьЗадачу(ПараметрыТеста); + Bitrix24_ПолучитьИсториюЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСписокЗадач(ПараметрыТеста); + Bitrix24_ПроверитьДоступКЗадаче(ПараметрыТеста); + Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыТеста); + + Наименование = "Картинка задачи.jpg"; + Картинка = ПараметрыТеста["Picture"]; + IDПриемника = 3; + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование, Картинка, IDПриемника); + IDФайла = Результат["result"]["ID"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskFileID", IDФайла); + ПараметрыТеста.Вставить("Bitrix24_TaskFileID", IDФайла); + + Bitrix24_ДобавитьФайлВЗадачу(ПараметрыТеста); + + OPI_Bitrix24.УдалитьФайл(URL, IDФайла); + + Bitrix24_УдалитьЗадачу(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСДиском() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + Bitrix24_ПолучитьСписокХранилищ(ПараметрыТеста); + Bitrix24_ПолучитьХранилищеПриложения(ПараметрыТеста); + Bitrix24_ПереименоватьХранилище(ПараметрыТеста); + Bitrix24_ПолучитьХранилище(ПараметрыТеста); + Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыТеста); + Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыТеста); + Bitrix24_ПолучитьИнформациюОФайле(ПараметрыТеста); + Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыТеста); + Bitrix24_ПереименоватьФайл(ПараметрыТеста); + Bitrix24_ПоместитьФайлВКорзину(ПараметрыТеста); + Bitrix24_ВосстановитьФайл(ПараметрыТеста); + Bitrix24_СоздатьКаталогВХранилище(ПараметрыТеста); + Bitrix24_ПереименоватьКаталог(ПараметрыТеста); + Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыТеста); + Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста); + Bitrix24_СоздатьПодкаталог(ПараметрыТеста); + Bitrix24_ПереместитьФайлВКаталог(ПараметрыТеста); + Bitrix24_СкопироватьКаталог(ПараметрыТеста); + Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста); + Bitrix24_СкопироватьФайл(ПараметрыТеста); + Bitrix24_УдалитьФайл(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста); + Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста); + Bitrix24_ПереместитьКаталог(ПараметрыТеста); + Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста); + Bitrix24_ВосстановитьКаталог(ПараметрыТеста); + Bitrix24_УдалитьКаталог(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСКомментариями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи); + + Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыТеста); + // !DISABLED! Bitrix24_СоздатьРезультатИзКомментария(ПараметрыТеста); + // !DISABLED! Bitrix24_ПолучитьСписокРезультатов(ПараметрыТеста); + // !DISABLED! Bitrix24_УдалитьРезультатИзКомментария(ПараметрыТеста); + // !DISABLED! Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыТеста); + // !DISABLED! Bitrix24_ПолучитьКомментарийЗадачи(ПараметрыТеста); + // !DISABLED! Bitrix24_УдалитьКомментарийЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + +КонецПроцедуры + +Процедура Б24_УчетРабочегоВремени() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ElapsedTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_ElapsedTaskID", IDЗадачи); + + Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_НачатьУчетВремени(ПараметрыТеста); + Bitrix24_ПриостановитьУчетВремени(ПараметрыТеста); + Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыТеста); + Bitrix24_ЗавершитьУчетВремени(ПараметрыТеста); + Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + +КонецПроцедуры + +Процедура Б24_Канбан() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_KanbanTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_KanbanTaskID", IDЗадачи); + + Bitrix24_ДобавитьСтадиюКанбана(ПараметрыТеста); + Bitrix24_ПолучитьСтадииКанбана(ПараметрыТеста); + Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыТеста); + Bitrix24_ИзменитьСтадиюКанбана(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + + Bitrix24_УдалитьСтадиюКанбана(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСЧатами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Bitrix24_ПолучитьСтатусПользователя(ПараметрыТеста); + Bitrix24_УстановитьСтатусПользователя(ПараметрыТеста); + Bitrix24_ПолучитьПользователей(ПараметрыТеста); + Bitrix24_СоздатьЧат(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыТеста); + Bitrix24_ИсключитьПользователяИзЧата(ПараметрыТеста); + Bitrix24_ДобавитьПользователейВЧат(ПараметрыТеста); + Bitrix24_ИзменитьЗаголовокЧата(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ИзменитьЦветЧата(ПараметрыТеста); + Bitrix24_ИзменитьКартинкуЧата(ПараметрыТеста); + Bitrix24_ОтключитьУведомленияЧата(ПараметрыТеста); + Bitrix24_ВключитьУведомленияЧата(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыТеста); + Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыТеста); + Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыТеста); + Bitrix24_ПолучитьДиалог(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыТеста); + Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыТеста); + Bitrix24_ОтправитьСообщение(ПараметрыТеста); + Bitrix24_ИзменитьСообщение(ПараметрыТеста); + Bitrix24_ПолучитьБлокКартинки(ПараметрыТеста); + Bitrix24_ПолучитьБлокФайла(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыТеста); + Bitrix24_УдалитьСообщение(ПараметрыТеста); + Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыТеста); + Bitrix24_ОтправитьФайл(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПрочитатьВсе(ПараметрыТеста); + Bitrix24_СменитьВладельцаЧата(ПараметрыТеста); + Bitrix24_ПокинутьЧат(ПараметрыТеста); + + Bitrix24_ПолучитьСтруктуруЧата(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСУведомлениями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Bitrix24_СоздатьПерсональноеУведомление(ПараметрыТеста); + Bitrix24_СоздатьСистемноеУведомление(ПараметрыТеста); + Bitrix24_УдалитьУведомление(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСПолямиЗадач() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_HookTaskFieldID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_TaskFieldID" , ПараметрыТеста); + + Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыТеста); + Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_УправлениеПодразделениями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_СоздатьПодразделение(ПараметрыТеста); + Bitrix24_ПолучитьПодразделения(ПараметрыТеста); + Bitrix24_ИзменитьПодразделение(ПараметрыТеста); + Bitrix24_УдалитьПодразделение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_ПолучитьТекущегоПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруПользователя(ПараметрыТеста); + Bitrix24_СоздатьПользователя(ПараметрыТеста); + Bitrix24_НайтиПользователей(ПараметрыТеста); + Bitrix24_ИзменитьПользователя(ПараметрыТеста); + Bitrix24_ПолучитьПользователя(ПараметрыТеста); + Bitrix24_ИзменитьСтатусПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСЛидами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_ПолучитьСписокЛидов(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруЛида(ПараметрыТеста); + Bitrix24_СоздатьЛид(ПараметрыТеста); + Bitrix24_ПолучитьЛид(ПараметрыТеста); + Bitrix24_ИзменитьЛид(ПараметрыТеста); + Bitrix24_УдалитьЛид(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСоСделками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруСделки(ПараметрыТеста); + Bitrix24_СоздатьСделку(ПараметрыТеста); + Bitrix24_ПолучитьСделку(ПараметрыТеста); + Bitrix24_ИзменитьСделку(ПараметрыТеста); + Bitrix24_УдалитьСделку(ПараметрыТеста); + Bitrix24_ПолучитьСписокСделок(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСКалендарями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_СоздатьКалендарь(ПараметрыТеста); + Bitrix24_ИзменитьКалендарь(ПараметрыТеста); + Bitrix24_ПолучитьСписокКалендарей(ПараметрыТеста); + Bitrix24_СоздатьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСобытияКалендарей(ПараметрыТеста); + Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыТеста); + Bitrix24_УдалитьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_УдалитьКалендарь(ПараметрыТеста); + Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); + Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Bitrix24 + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Bitrix24 + +Процедура Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыФункции) + + Домен = ПараметрыФункции["Bitrix24_Domain"]; + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + + Опции = Новый Структура; + Опции.Вставить("domain", Домен); + Опции.Вставить("clientid", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСсылкуАвторизацииПриложения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСсылкуАвторизацииПриложения"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; + Code = ПараметрыФункции["Bitrix24_Code"]; + + Опции = Новый Структура; + Опции.Вставить("clientid", ClientID); + Опции.Вставить("clientsecret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Bitrix24_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; + Refresh = ПараметрыФункции["Bitrix24_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("clientid", ClientID); + Опции.Вставить("clientsecret", ClientSecret); + Опции.Вставить("refresh", Refresh); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура Bitrix24_СерверноеВремя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СерверноеВремя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СерверноеВремя"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьНовость(ПараметрыФункции) + + Текст = "Текст новости"; + Заголовок = "Заголовок новости"; + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + + Файлы = Новый Соответствие; + Файлы.Вставить("1.png", Картинка1); + Файлы.Вставить("2.png", Картинка2); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + Опции.Вставить("important", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьНовость", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьНовость", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьНовость(ПараметрыФункции) + + Текст = "Новый текст новости"; + Заголовок = "Новый заголовок новости"; + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + + Файлы = Новый Соответствие; + Файлы.Вставить("1.png", Картинка1); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьНовость", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьНовость"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьНовость(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьНовость", "Хук"); // SKIP + + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьНовость"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПросмотревшихВажное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПросмотревшихВажное"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьНовости(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьНовости", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьНовости"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьКомментарийНовости(ПараметрыФункции) + + Текст = "Комментарий к новости"; + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийНовости", "Хук"); // SKIP + + Текст = "Другой комментарий к новости"; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийНовости"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьПолучателейКНовости(ПараметрыФункции) + + Видимость = "UA"; + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("vision", Видимость); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПолучателейКНовости", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("vision", Видимость); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПолучателейКНовости"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЗадачу(ПараметрыФункции) + + // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗадачу", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗадачу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЗадачу(ПараметрыФункции) + + // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Другой заголовок задачи"); + СтруктураЗадачи.Вставить("DESCRIPTION", "Другое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "1"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fields", СтруктураЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fields", СтруктураЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ПринятьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПринятьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПринятьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ОтклонитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтклонитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтклонитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ЗавершитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗавершитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗавершитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ВозобновитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ОтложитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтложитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтложитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_НачатьВыполнениеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьВыполнениеЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьВыполнениеЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьНаблюдатьЗаЗадачей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьНаблюдатьЗаЗадачей"); + +КонецПроцедуры + +Процедура Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрекратитьНаблюдатьЗаЗадачей"); + +КонецПроцедуры + +Процедура Bitrix24_ПриостановитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПриостановитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПриостановитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ДелегироватьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДелегироватьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДелегироватьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЗадачуВИзбранное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЗадачуВИзбранное"); + +КонецПроцедуры + +Процедура Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УбратьЗадачуИзИзбранного", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УбратьЗадачуИзИзбранного"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьИсториюЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИсториюЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИсториюЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокЗадач(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + // Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач + Фильтр = Новый Соответствие; + Фильтр.Вставить("CREATED_BY", 1); // Постановщик с ID 1 + Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10 + Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера + + Поля = Новый Массив; + Поля.Добавить("UF_CRM_TASK"); + Поля.Добавить("CREATED_BY"); + + Отступ = 1; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("select", Поля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЗадач", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("offset", Отступ); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЗадач"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокХранилищ(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокХранилищ", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокХранилищ"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьХранилищеПриложения(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилищеПриложения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьХранилищеПриложения", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыФункции) + + Наименование2 = "Картинка2.jpg"; + Наименование = "Картинка1.jpg"; + + Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные + Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные + + IDПриемника = 3; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование2); + Опции.Вставить("file", Картинка2); + Опции.Вставить("storageid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВХранилище", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("file", Картинка); + Опции.Вставить("storageid", IDПриемника); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВХранилище", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_HookFileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьФайл", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьКаталогВХранилище(ПараметрыФункции) + + IDХранилища = 3; + Наименование = "Новый каталог"; + Наименование2 = "Новый каталог 2"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКаталогВХранилище", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКаталогВХранилище", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьКаталог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКаталог", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьХранилище(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDХранилища = 3; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьХранилище", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьХранилище"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDХранилища = 3; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСодержимоеХранилища", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСодержимоеХранилища"); + +КонецПроцедуры + +Процедура Bitrix24_ПереименоватьХранилище(ПараметрыФункции) + + Наименование = "Новое имя хранилища"; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDХранилища = ПараметрыФункции["Bitrix24_StorageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьХранилище"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОКаталоге", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОКаталоге"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПодкаталог(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + Наименование = "Новый подкаталог"; + Наименование2 = "Новый подкаталог 2"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодкаталог", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодкаталог", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_СкопироватьКаталог(ПараметрыФункции) + + IDПриемника = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("tagetid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьКаталог", "Хук"); // SKIP + + IDПриемника = ПараметрыФункции["Bitrix24_SubfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуКаталога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуКаталога"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраКаталога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("empty", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраКаталога"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДочерниеЭлементыКаталога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДочерниеЭлементыКаталога"); + +КонецПроцедуры + +Процедура Bitrix24_ПоместитьКаталогВКорзину(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьКаталогВКорзину", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьКаталогВКорзину"); + +КонецПроцедуры + +Процедура Bitrix24_ВосстановитьКаталог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьКаталог", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПереместитьКаталог(ПараметрыФункции) + + IDПриемника = ПараметрыФункции["Bitrix24_HookfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("tagetid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьКаталог", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("tagetid", IDПриемника); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПереименоватьКаталог(ПараметрыФункции) + + Наименование = "Новый каталог"; + Наименование2 = "Новый каталог 2"; + + IDКаталога2 = ПараметрыФункции["Bitrix24_HookFolderID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога2); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьКаталог", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции) + + Наименование2 = "Картинка2.jpg"; + Наименование = "Картинка1.jpg"; + + Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные + Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные + + IDПриемника = ПараметрыФункции["Bitrix24_FolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование2); + Опции.Вставить("file", Картинка2); + Опции.Вставить("folderid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВКаталог", "Хук", URL); // SKIP + + IDФайла = Результат["result"]["ID"]; // SKIP + OPI_Bitrix24.УдалитьФайл(URL, IDФайла); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("file", Картинка); + Опции.Вставить("folderid", IDПриемника); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВКаталог", , URL, Токен); + + IDФайла = Результат["result"]["ID"]; + + OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен); + +КонецПроцедуры + +Процедура Bitrix24_СкопироватьФайл(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьФайл", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьИнформациюОФайле(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОФайле", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОФайле"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыФункции) + + OPI_Инструменты.Пауза(20); // SKIP + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуФайла", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуФайла"); + +КонецПроцедуры + +Процедура Bitrix24_ПоместитьФайлВКорзину(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьФайлВКорзину", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьФайлВКорзину"); + +КонецПроцедуры + +Процедура Bitrix24_ВосстановитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьФайл", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПереименоватьФайл(ПараметрыФункции) + + Наименование = "Новое имя файла.jpg"; + Наименование2 = "Новое имя файла 2.jpg"; + + IDФайла2 = ПараметрыФункции["Bitrix24_HookFileID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла2); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьФайл", "Хук"); // SKIP + + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПереместитьФайлВКаталог(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_HookSubFolderID"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьФайлВКаталог", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_SubFolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьФайлВКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьФайлВЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDФайла = ПараметрыФункции["Bitrix24_TaskFileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьФайлВЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьФайлВЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ПроверитьДоступКЗадаче(ПараметрыФункции) + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить("1"); + МассивПользователей.Добавить("10"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("users", МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПроверитьДоступКЗадаче", "Хук", МассивПользователей.Количество()); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("users", МассивПользователей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПроверитьДоступКЗадаче", , МассивПользователей.Количество()); + +КонецПроцедуры + +Процедура Bitrix24_ОтключитьЗвукЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьЗвукЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьЗвукЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ВключитьЗвукЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьЗвукЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьЗвукЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Текст = "Задача невыполнима, расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийЗадачи", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Текст = "Задача выполнима, не расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийЗадачи", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКомментарийЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКомментарийЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьРезультатИзКомментария(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьРезультатИзКомментария", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьРезультатИзКомментария"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьРезультатИзКомментария(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьРезультатИзКомментария", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьРезультатИзКомментария"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокРезультатов(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокРезультатов", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокРезультатов"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКомментариевЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКомментариевЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКомментарийЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКомментарийЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Текст = "Задача изменена, не расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКомментарийЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Текст = "Задача изменена, расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКомментарийЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЗависимостьЗадач(ПараметрыФункции) + + IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; + ТипСвязи = 0; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗависимостьЗадач", "Хук"); // SKIP + + OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); // SKIP + + IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; + ТипСвязи = 2; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗависимостьЗадач"); + + OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЗависимостьЗадач(ПараметрыФункции) + + IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; + ТипСвязи = 0; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); // SKIP + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗависимостьЗадач", "Хук"); // SKIP + + IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; + ТипСвязи = 2; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); // SKIP + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗависимостьЗадач"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьСтадиюКанбана(ПараметрыФункции) + + Наименование = "Новая стадия"; + Цвет = "0026FF"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("color", Цвет); + Опции.Вставить("prevstage", 6); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьСтадиюКанбана", "Хук", ПараметрыФункции); // SKIP + + Наименование = "Новая стадия 2"; + Цвет = "0026FF"; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПредыдущей = Результат["result"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("color", Цвет); + Опции.Вставить("prevstage", IDПредыдущей); + Опции.Вставить("admin", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьСтадиюКанбана", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСтадиюКанбана(ПараметрыФункции) + + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("admin", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСтадиюКанбана", "Хук"); // SKIP + + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСтадиюКанбана"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтадииКанбана(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("admin", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтадииКанбана", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтадииКанбана"); + +КонецПроцедуры + +Процедура Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыФункции) + + IDЗадачи = ПараметрыФункции["Bitrix24_KanbanTaskID"]; + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("stage", IDСтадии); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПеренестиЗадачуВСтадиюКанбана", "Хук"); // SKIP + + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПеренестиЗадачуВСтадиюКанбана"); + + OPI_Bitrix24.ПеренестиЗадачуВСтадиюКанбана(URL, IDЗадачи, 2, , , Токен); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСтадиюКанбана(ПараметрыФункции) + + Наименование = "Новое имя стадии стадии"; + Цвет = "000000"; + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("color", Цвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтадиюКанбана", "Хук"); // SKIP + + Наименование = "Новое имя стадии стадии 2"; + Цвет = "000000"; + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("color", Цвет); + Опции.Вставить("prevstage", 6); + Опции.Вставить("admin", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтадиюКанбана"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Текст = "Пункт чек-листа"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + Опции.Вставить("complete", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЭлементЧеклистаЗадачи", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЭлементЧеклистаЗадачи", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Текст = "Новый текст пункта чек-листа"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЧеклистЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЧеклистЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВыполнитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + + Время = 3600; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("amount", Время); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьТрудозатратыЗадачи", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Текст = "Трудозатраты по обработке"; + IDПользователя = 10; + Время = 7200; + ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("amount", Время); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("date", ДатаУстановки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьТрудозатратыЗадачи", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Текст = "Забытый в прошлый раз текст"; + Время = 4800; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("amount", Время); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьТрудозатратыЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Текст = "Новые трудозатраты по обработке"; + Время = 4800; + ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("amount", Время); + Опции.Вставить("text", Текст); + Опции.Вставить("date", ДатаУстановки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьТрудозатратыЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьТрудозатратыЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьТрудозатратыЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТрудозатратыЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТрудозатратыЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокТрудозатратЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокТрудозатратЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПланЗадачНаДень", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПланЗадачНаДень"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЧат(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + + B64Картинка = ПолучитьBase64СтрокуИзДвоичныхДанных(Картинка); + + МассивУчастников = Новый Массив; + МассивУчастников.Добавить(10); + МассивУчастников.Добавить(1); + + СтруктураЧата = Новый Структура; + СтруктураЧата.Вставить("TYPE" , "OPEN"); + СтруктураЧата.Вставить("TITLE" , "Новый чат"); + СтруктураЧата.Вставить("DESCRIPTION", "Это новый чат"); + СтруктураЧата.Вставить("COLOR" , "GREEN"); + СтруктураЧата.Вставить("MESSAGE" , "Добро пожаловать в новый чат"); + СтруктураЧата.Вставить("USERS" , МассивУчастников); + СтруктураЧата.Вставить("AVATAR" , B64Картинка); + СтруктураЧата.Вставить("OWNER_ID" , 1); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЧат", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + СтруктураЧата = Новый Структура; + СтруктураЧата.Вставить("TYPE" , "CHAT"); + СтруктураЧата.Вставить("TITLE", "Закрытый чат"); + СтруктураЧата.Вставить("USERS", МассивУчастников); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЧат", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ПокинутьЧат(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПокинутьЧат", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПокинутьЧат"); + +КонецПроцедуры + +Процедура Bitrix24_ИсключитьПользователяИзЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИсключитьПользователяИзЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИсключитьПользователяИзЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьПользователейВЧат(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователей = Новый Массив; + IDПользователей.Добавить(10); + IDПользователей.Добавить(12); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("users", IDПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПользователейВЧат", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("users", IDПользователя); + Опции.Вставить("hide", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПользователейВЧат"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЗаголовокЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Заголовок = "Новый заголовок чата"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗаголовокЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Заголовок = "Другой заголовок чата"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("title", Заголовок); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗаголовокЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЦветЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Цвет = "AZURE"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("color", Цвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЦветЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Цвет = "PURPLE"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("color", Цвет); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЦветЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьКартинкуЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Картинка = ПараметрыФункции["Picture2"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКартинкуЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("picture", Картинка); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКартинкуЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ОтключитьУведомленияЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьУведомленияЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьУведомленияЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ВключитьУведомленияЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьУведомленияЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьУведомленияЧата"); + +КонецПроцедуры + +Процедура Bitrix24_СменитьВладельцаЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СменитьВладельцаЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СменитьВладельцаЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat4"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСообщенийЧата", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("first", 0); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСообщенийЧата", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + СтрокаЧата = "chat" + IDЧата; + + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакПрочитанное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакПрочитанное"); + +КонецПроцедуры + +Процедура Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакНепрочитанное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакНепрочитанное"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьДиалог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДиалог", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДиалог"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейДиалога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейДиалога"); + +КонецПроцедуры + +Процедура Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьУведомлениеОВводе", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьУведомлениеОВводе"); + +КонецПроцедуры + +Процедура Bitrix24_ПрочитатьВсе(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрочитатьВсе", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрочитатьВсе"); + +КонецПроцедуры + +Процедура Bitrix24_ОтправитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьСообщение", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСообщение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСообщение"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСообщение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьРеакциюНаСообщение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьРеакциюНаСообщение"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКаталогФайловЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКаталогФайловЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ОтправитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + Файл = ПараметрыФункции["Document"]; // Двоичные данные, URL или путь к файлу + Описание = "Очень важный файл"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + IDКаталога = Каталог["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", "Важный документ.docx"); + Опции.Вставить("file", Файл); + Опции.Вставить("folderid", IDКаталога); + + ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + IDФайла = ЗагруженныйФайл["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьФайл", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + IDКаталога = Каталог["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", "Важный документ.docx"); + Опции.Вставить("file", Файл); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + IDФайла = ЗагруженныйФайл["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("description", Описание); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + МассивПользователей = Новый Массив; + + МассивПользователей.Добавить(1); + МассивПользователей.Добавить(10); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователей = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", IDПользователей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Статус = "dnd"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Статус = "away"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("status", Статус); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПерсональноеУведомление(ПараметрыФункции) + + IDПользователя = 1; + + URL = ПараметрыФункции["Bitrix24_URL"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПерсональноеУведомление", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Тег = "Новый"; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("tag", Тег); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПерсональноеУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьСистемноеУведомление(ПараметрыФункции) + + IDПользователя = 1; + + URL = ПараметрыФункции["Bitrix24_URL"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСистемноеУведомление", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Тег = "Новый"; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("tag", Тег); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСистемноеУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьУведомление(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDУведомления = ПараметрыФункции["Bitrix24_PersonalHookNotifyID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("notif", IDУведомления); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьУведомление", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDУведомления = ПараметрыФункции["Bitrix24_PersonalNotifyID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("notif", IDУведомления); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьУведомление"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Тип = "date"; + Имя = "BIRTHDAY_FIELD"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("type", Тип); + Опции.Вставить("fieldname", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Тип = "string"; + Имя = "TEXT_FIELD"; + ВнешнийКод = "BITRIX_TEXT_FIELD"; + Заголовок = "Поле для текста"; + Подпись = Новый Структура("en,ru", "Some field", "Некоторое поле"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("type", Тип); + Опции.Вставить("fieldname", Имя); + Опции.Вставить("externalid", ВнешнийКод); + Опции.Вставить("title", Заголовок); + Опции.Вставить("label", Подпись); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + Заголовок = "Новый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + ВнешнийКод = "NEW_TEXT_FIELD"; + Подпись = Новый Структура("en,ru", "Updated field", "Измененное поле"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("externalid", ВнешнийКод); + Опции.Вставить("label", Подпись); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Наименование = "Главное подразделение"; + IDРодителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("parentid", IDРодителя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодразделение", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Наименование = "Подчиненное подразделение"; + IDРодителя = ПараметрыФункции["Bitrix24_HookDepID"]; + IDРуководителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("parentid", IDРодителя); + Опции.Вставить("headid", IDРуководителя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодразделение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; + IDРодителя = 7; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + Опции.Вставить("parentid", IDРодителя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПодразделение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + Наименование = "Новое подразделение"; + IDРодителя = 1; + IDРуководителя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + Опции.Вставить("title", Наименование); + Опции.Вставить("parentid", IDРодителя); + Опции.Вставить("headid", IDРуководителя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПодразделение"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьПодразделение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьПодразделение"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПодразделения(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПодразделения", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDРуководителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headid", IDРуководителя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПодразделения"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьТекущегоПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТекущегоПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТекущегоПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + // Полную структуру можно получить функцией ПолучитьСтруктуруПользователя + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПользователя", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("NAME" , "Виталий"); + СтруктураПользователя.Вставить("LAST_NAME" , "Альпака"); + СтруктураПользователя.Вставить("PERSONAL_MOBILE", "88003553535"); + СтруктураПользователя.Вставить("UF_DEPARTMENT" , 1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПользователя", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + // Полную структуру можно получить функцией ПолучитьСтруктуруПользователя + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fields", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("NAME" , "Олег"); + СтруктураПользователя.Вставить("LAST_NAME" , "Лама"); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fields", СтруктураПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fire", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтатусПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fire", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтатусПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_НайтиПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("NAME" , "Виталий"); + СтруктураФильтра.Вставить("LAST_NAME" , "Альпака"); + СтруктураФильтра.Вставить("WORK_POSITION" , "DevOps инженер"); + СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Отдел маркетинга"); + СтруктураФильтра.Вставить("USER_TYPE" , "employee"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", СтруктураФильтра); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НайтиПользователей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Битрикс"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НайтиПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_НачатьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); + + Час = 3600; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + Время = OPI_Инструменты.ПолучитьТекущуюДату() - Час; + Отчет = "Опоздание"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("time", Время); + Опции.Вставить("report", Отчет); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ЗавершитьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + Время = OPI_Инструменты.ПолучитьТекущуюДату(); + Отчет = "Отгул"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("time", Время); + Опции.Вставить("report", Отчет); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); + +КонецПроцедуры + +Процедура Bitrix24_ПриостановитьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЛидов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраЛидов"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруЛида(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЛида", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЛида"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЛид(ПараметрыФункции) + + МассивПочт = Новый Массив; + МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); + МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); + + МассивНомеров = Новый Массив; + МассивНомеров.Добавить(Новый Структура("VALUE,VALUE_TYPE", "88005553535", "WORK")); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ADDRESS" , "ул. Пушкина, д. 10"); + СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Россия"); + СтруктураПолей.Вставить("EMAIL" , МассивПочт); + СтруктураПолей.Вставить("NAME" , "Петр"); + СтруктураПолей.Вставить("LAST_NAME" , "Петров"); + СтруктураПолей.Вставить("PHONE" , МассивНомеров); + СтруктураПолей.Вставить("TITLE" , "Мегаклиент"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЛид", "Хук", ПараметрыФункции); // SKIP + + СтруктураПолей.Вставить("NAME" , "Иван"); + СтруктураПолей.Вставить("LAST_NAME", "Иванов"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЛид", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЛид(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ADDRESS" , "ул. Лермонтова, д. 20"); + СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Беларусь"); + СтруктураПолей.Вставить("TITLE" , "Суперклиент"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЛид", "Хук"); // SKIP + + СтруктураПолей.Вставить("NAME" , "Евгений"); + СтруктураПолей.Вставить("LAST_NAME", "Евгеньев"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЛид"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЛид(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЛид", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЛид"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЛид(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЛид", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЛид"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокЛидов(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЛидов", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Фильтр = Новый Структура; + Фильтр.Вставить("TITLE" , "Мегаклиент"); + Фильтр.Вставить("HAS_EMAIL", "Y"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЛидов"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСделок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСделок"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруСделки(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСделки", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСделки"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьСделку(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("TITLE" , "Плановая продажа"); + СтруктураПолей.Вставить("TYPE_ID" , "GOODS"); + СтруктураПолей.Вставить("STAGE_ID" , "NEW"); + СтруктураПолей.Вставить("COMPANY_ID" , 1); + СтруктураПолей.Вставить("CONTACT_ID" , 3); + СтруктураПолей.Вставить("OPENED" , "Y"); + СтруктураПолей.Вставить("ASSIGNED_BY_ID", 1); + СтруктураПолей.Вставить("PROBABILITY" , 30); + СтруктураПолей.Вставить("CURRENCY_ID" , "USD"); + СтруктураПолей.Вставить("OPPORTUNITY" , 5000); + СтруктураПолей.Вставить("CATEGORY_ID" , 5); + СтруктураПолей.Вставить("BEGINDATE" , "2024-01-01"); + СтруктураПолей.Вставить("CLOSEDATE" , "2030-01-01"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСделку", "Хук", ПараметрыФункции); // SKIP + + СтруктураПолей.Вставить("TITLE" , "Другая сделка"); + СтруктураПолей.Вставить("CLOSEDATE", "2031-01-01"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСделку", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСделку(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("TITLE" , "Продажа в RUB"); + СтруктураПолей.Вставить("CURRENCY_ID", "RUB"); + СтруктураПолей.Вставить("OPPORTUNITY", 50000); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСделку", "Хук"); // SKIP + + СтруктураПолей.Вставить("TITLE" , "Будущая сделка в RUB"); + СтруктураПолей.Вставить("BEGINDATE", "2025-01-01"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_DealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСделку"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСделку(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСделку", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСделку"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСделку(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСделку", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_DealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСделку"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокСделок(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСделок", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Фильтр = Новый Структура; + Фильтр.Вставить("TITLE" , "Продажа в RUB"); + Фильтр.Вставить("CURRENCY_ID", "RUB"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСделок"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраЗадач"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКомментария", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКомментария"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруЧата(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьБлокКартинки(ПараметрыФункции) + + Наименование = "Картинка"; + URL = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("title", Наименование); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьБлокКартинки"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьБлокФайла(ПараметрыФункции) + + Наименование = "Картинка"; + URL = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("title", Наименование); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьБлокФайла"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьКалендарь(ПараметрыФункции) + + IDПользователя = 1; + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("type" , "user"); + СтруктураКалендаря.Вставить("ownerId" , IDПользователя); + СтруктураКалендаря.Вставить("name" , "Новый календарь"); + СтруктураКалендаря.Вставить("description", "Мой новый календарь"); + СтруктураКалендаря.Вставить("color" , "#FFFFFF"); + СтруктураКалендаря.Вставить("text_color" , "#000000"); + + СтруктураЭкспорта = Новый Структура; + СтруктураЭкспорта.Вставить("ALLOW", "Истина"); + СтруктураЭкспорта.Вставить("SET" , "all"); + + СтруктураКалендаря.Вставить("export", СтруктураЭкспорта); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКалендарь", "Хук", ПараметрыФункции); // SKIP + + СтруктураКалендаря.Вставить("name" , "Другой календарь"); + СтруктураКалендаря.Вставить("description", "Мой другой новый календарь"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураКалендаря); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКалендарь", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьКалендарь(ПараметрыФункции) + + IDПользователя = 1; + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("type" , "user"); + СтруктураКалендаря.Вставить("ownerId" , IDПользователя); + СтруктураКалендаря.Вставить("name" , "Новое имя календаря"); + СтруктураКалендаря.Вставить("description", "Этот календарь был изменен"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("fields", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКалендарь", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("fields", СтруктураКалендаря); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКалендарь"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьКалендарь(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКалендарь", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКалендарь"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКалендаря"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКалендаря", "Пустая"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокКалендарей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКалендарей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКалендарей"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруНастроекКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруНастроекКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", "Пустая"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("view" , "month"); + СтруктураКалендаря.Вставить("showDeclined" , "Y"); + СтруктураКалендаря.Вставить("collapseOffHours" , "N"); + СтруктураКалендаря.Вставить("showCompletedTasks", "N"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("settings", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("settings", СтруктураКалендаря); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьПользовательскиеНастройкиКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Пользователь = 1; + + Неделя = 604800; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + ДатаНачала = ТекущаяДата; + ДатаОкончания = ТекущаяДата + Неделя; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", Пользователь); + Опции.Вставить("from", ДатаНачала); + Опции.Вставить("to", ДатаОкончания); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗанятостьПользователей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", Пользователь); + Опции.Вставить("from", ДатаНачала); + Опции.Вставить("to", ДатаОкончания); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗанятостьПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; + Час = 3600; + + СтруктураСобытия = Новый Структура; + + СтруктураСобытия.Вставить("type" , "user"); + СтруктураСобытия.Вставить("ownerId" , 1); + СтруктураСобытия.Вставить("from" , XMLСтрока(Завтра)); + СтруктураСобытия.Вставить("to" , XMLСтрока(Завтра + Час)); + СтруктураСобытия.Вставить("section" , IDКалендаря); + СтруктураСобытия.Вставить("name" , "Новое событие"); + СтруктураСобытия.Вставить("skip_time" , "N"); + СтруктураСобытия.Вставить("timezone_from", "Europe/Minsk"); + СтруктураСобытия.Вставить("timezone_to" , "Europe/Minsk"); + СтруктураСобытия.Вставить("description" , "Описание события"); + СтруктураСобытия.Вставить("color" , "%23000000>"); + СтруктураСобытия.Вставить("text_color" , "%23FFFFFF"); + СтруктураСобытия.Вставить("accessibility", "quest"); + СтруктураСобытия.Вставить("importance" , "normal"); + СтруктураСобытия.Вставить("private_event", "Y"); + + СтруктураПовторяемости = Новый Структура; + СтруктураПовторяемости.Вставить("FREQ" , "DAILY"); + СтруктураПовторяемости.Вставить("COUNT" , 3); + СтруктураПовторяемости.Вставить("INTERVAL", 10); + + МассивДней = Новый Массив; + МассивДней.Добавить("SA"); + МассивДней.Добавить("MO"); + + СтруктураПовторяемости.Вставить("BYDAY", МассивДней); + СтруктураПовторяемости.Вставить("UNTIL", XMLСтрока(Завтра + Час * 24 * 10)); + + СтруктураСобытия.Вставить("rrule" , СтруктураПовторяемости); + СтруктураСобытия.Вставить("is_meeting", "Y"); + СтруктураСобытия.Вставить("location" , "Офис"); + + МассивНапоминаний = Новый Массив; + + СтруктураНапоминания = Новый Структура; + СтруктураНапоминания.Вставить("type" , "day"); + СтруктураНапоминания.Вставить("count", 1); + + МассивНапоминаний.Добавить(СтруктураНапоминания); + + СтруктураСобытия.Вставить("remind" , МассивНапоминаний); + СтруктураСобытия.Вставить("attendees", СтрРазделить("1,10", ",")); + СтруктураСобытия.Вставить("host" , 1); + + СтруктураВстречи = Новый Структура; + СтруктураВстречи.Вставить("notify" , "Y"); + СтруктураВстречи.Вставить("reinvite" , "Y"); + СтруктураВстречи.Вставить("allow_invite", "N"); + СтруктураВстречи.Вставить("hide_guests" , "N"); + + СтруктураСобытия.Вставить("meeting", СтруктураВстречи); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСобытиеКалендаря", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + СтруктураСобытия.Вставить("section", IDКалендаря); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСобытиеКалендаря", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + СтруктураСобытия = Новый Структура; + + СтруктураСобытия.Вставить("ownerId" , 1); + СтруктураСобытия.Вставить("type" , "user"); + СтруктураСобытия.Вставить("name" , "Измененное событие"); + СтруктураСобытия.Вставить("description" , "Новое описание события"); + СтруктураСобытия.Вставить("importance" , "low"); + СтруктураСобытия.Вставить("private_event", "Y"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("fields", СтруктураСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСобытиеКалендаря", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("fields", СтруктураСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСобытиеКалендаря", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСобытиеКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСобытиеКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытиеКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытиеКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСобытияКалендарей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытияКалендарей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + IDКалендаря1 = ПараметрыФункции["Bitrix24_HookCalendarID"]; + IDКалендаря2 = ПараметрыФункции["Bitrix24_CalendarID"]; + + Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; + Послезавтра = Завтра + 86400; + + МассивКалендарей = Новый Массив; + МассивКалендарей.Добавить(IDКалендаря1); + МассивКалендарей.Добавить(IDКалендаря2); + + Фильтр = Новый Структура; + Фильтр.Вставить("from" , Завтра); + Фильтр.Вставить("to" , Послезавтра); + Фильтр.Вставить("section", МассивКалендарей); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытияКалендарей"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + Статус = "Y"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусУчастияПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("status", Статус); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусУчастияПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусУчастияПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусУчастияПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСобытияКалендаря"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСобытияКалендаря", "Пустая"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", "Пустая"); + +КонецПроцедуры + +#КонецОбласти // Bitrix24 + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure B24_TokenManagement() Export + Б24_РаботаСТокеном(); +EndProcedure + +Procedure B24_ServerTime() Export + Б24_СерверноеВремя(); +EndProcedure + +Procedure B24_PostsManagement() Export + Б24_РаботаСНовостями(); +EndProcedure + +Procedure B24_TaskManagement() Export + Б24_РаботаСЗадачами(); +EndProcedure + +Procedure B24_WorkingWithDrive() Export + Б24_РаботаСДиском(); +EndProcedure + +Procedure B24_CommentsManagement() Export + Б24_РаботаСКомментариями(); +EndProcedure + +Procedure B24_Timekeeping() Export + Б24_УчетРабочегоВремени(); +EndProcedure + +Procedure B24_Kanban() Export + Б24_Канбан(); +EndProcedure + +Procedure B24_ChatManagement() Export + Б24_РаботаСЧатами(); +EndProcedure + +Procedure B24_NotificationsManagement() Export + Б24_РаботаСУведомлениями(); +EndProcedure + +Procedure B24_TasksFieldsManagement() Export + Б24_РаботаСПолямиЗадач(); +EndProcedure + +Procedure B24_DepartmentsManagement() Export + Б24_УправлениеПодразделениями(); +EndProcedure + +Procedure B2_UsersManagement() Export + Б24_УправлениеПользователями(); +EndProcedure + +Procedure B24_LeadsManagement() Export + Б24_РаботаСЛидами(); +EndProcedure + +Procedure B24_DealsManagement() Export + Б24_РаботаСоСделками(); +EndProcedure + +Procedure B24_CalendarsManagement() Export + Б24_РаботаСКалендарями(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_CDEK/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_CDEK/Module.bsl index 7e7c5975df..9d804725ea 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_CDEK/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_CDEK/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_CDEK.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,853 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("CDEK"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("CDEK"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область CDEK + +Процедура СдэкАПИ_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Account" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Password", ПараметрыТеста); + + CDEK_ПолучитьТокен(ПараметрыТеста); + CDEK_ПолучитьЧекиНаДату(ПараметрыТеста); + CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыТеста); + CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыТеста); + CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыТеста); + CDEK_ПолучитьСписокОфисов(ПараметрыТеста); + CDEK_ПолучитьСписокРегионов(ПараметрыТеста); + +КонецПроцедуры + +Процедура СдэкАПИ_РаботаСЗаказами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); + + CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста); + CDEK_СоздатьЗаказ(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьЗаказ(ПараметрыТеста); + CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста); + CDEK_СформироватьКвитанцию(ПараметрыТеста); + CDEK_СформироватьШтрихкод(ПараметрыТеста); + CDEK_СоздатьПреалерт(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьКвитанцию(ПараметрыТеста); + CDEK_ПолучитьШтрихкод(ПараметрыТеста); + CDEK_ПолучитьПреалерт(ПараметрыТеста); + CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыТеста); + CDEK_ПолучитьЧекЗаказа(ПараметрыТеста); + CDEK_ИзменитьЗаказ(ПараметрыТеста); + CDEK_ОформитьКлиентскийВозврат(ПараметрыТеста); + CDEK_СоздатьОтказ(ПараметрыТеста); + CDEK_УдалитьЗаказ(ПараметрыТеста); + +КонецПроцедуры + +Процедура СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); + + CDEK_СоздатьЗаказ(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыТеста); + CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыТеста); + CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыТеста); + CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыТеста); + CDEK_ПолучитьОписаниеДоговоренности(ПараметрыТеста); + + CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыТеста); + CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыТеста); + CDEK_УдалитьЗаказ(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // CDEK + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область CDEK + +Процедура CDEK_ПолучитьТокен(ПараметрыФункции) + + Аккаунт = ПараметрыФункции["CDEK_Account"]; + Пароль = ПараметрыФункции["CDEK_Password"]; + + Опции = Новый Структура; + Опции.Вставить("account", Аккаунт); + Опции.Вставить("pass", Пароль); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаказа"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаказа", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_СоздатьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + ОписаниеЗаказа = Новый Структура; + + ЛокацияОтправления = Новый Структура; + ЛокацияОтправления.Вставить("code" , "44"); + ЛокацияОтправления.Вставить("city" , "Москва"); + ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4"); + + ЛокацияНазначения = Новый Структура; + ЛокацияНазначения.Вставить("code" , "270"); + ЛокацияНазначения.Вставить("city" , "Новосибирск"); + ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32"); + + Получатель = Новый Структура; + + Телефоны = Новый Массив; + Телефоны.Добавить(Новый Структура("number", "+79134637228")); + + Получатель.Вставить("phones", Телефоны); + Получатель.Вставить("name" , "Иванов Иван"); + + Отправитель = Новый Структура("name", "Петров Петр"); + + Услуги = Новый Массив; + + Услуга = Новый Структура; + Услуга.Вставить("code" , "SECURE_PACKAGE_A2"); + Услуга.Вставить("parameter", 10); + + Услуги.Добавить(Услуга); + + Пакеты = Новый Массив; + + Пакет = Новый Структура; + + Позиции = Новый Массив; + + Позиция = Новый Структура; + + Оплата = Новый Структура; + Оплата.Вставить("value", 3000); + + Позиция.Вставить("payment" , Оплата); + Позиция.Вставить("ware_key", "00055"); + Позиция.Вставить("name" , "Товар"); + Позиция.Вставить("cost" , 300); + Позиция.Вставить("amount" , 2); + Позиция.Вставить("weight" , 700); + Позиция.Вставить("url" , "www.item.ru"); + + Позиции.Добавить(Позиция); + + Пакет.Вставить("items" , Позиции); + Пакет.Вставить("number" , "bar-001"); + Пакет.Вставить("comment", "Упаковка"); + Пакет.Вставить("height" , 10); + Пакет.Вставить("length" , 10); + Пакет.Вставить("weight" , "4000"); + Пакет.Вставить("width" , 10); + + Пакеты.Добавить(Пакет); + + ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления); + ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения); + ОписаниеЗаказа.Вставить("packages" , Пакеты); + ОписаниеЗаказа.Вставить("recipient" , Получатель); + ОписаниеЗаказа.Вставить("sender" , Отправитель); + ОписаниеЗаказа.Вставить("services" , Услуги); + + ОписаниеЗаказа.Вставить("number" , Строка(Новый УникальныйИдентификатор)); + ОписаниеЗаказа.Вставить("comment" , "Новый заказ"); + ОписаниеЗаказа.Вставить("tariff_code", 139); + + ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value" , 50)); + ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200)); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("order", ОписаниеЗаказа); + Опции.Вставить("ostore", Истина); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьЗаказ", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЗаказ", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("number", НомерЗаказа); + Опции.Вставить("internal", Истина); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказПоНомеру", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЗаказПоНомеру"); + +КонецПроцедуры + +Процедура CDEK_ИзменитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + ОписаниеЗаказа = Новый Структура("comment", "Новый комментарий"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("order", ОписаниеЗаказа); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ИзменитьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ИзменитьЗаказ"); + +КонецПроцедуры + +Процедура CDEK_УдалитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "УдалитьЗаказ"); + +КонецПроцедуры + +Процедура CDEK_ОформитьКлиентскийВозврат(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Тариф = 139; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("tariff", Тариф); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ОформитьКлиентскийВозврат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ОформитьКлиентскийВозврат"); + +КонецПроцедуры + +Процедура CDEK_СоздатьОтказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьОтказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьОтказ"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаявкиКурьера"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаявкиКурьера", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + ОписаниеЗаявки = Новый Структура; + ОписаниеЗаявки.Вставить("intake_date" , Формат(ТекущаяДата + 60 * 60 * 24, "ДФ=yyyy-MM-dd")); + ОписаниеЗаявки.Вставить("intake_time_from", "10:00"); + ОписаниеЗаявки.Вставить("intake_time_to" , "17:00"); + ОписаниеЗаявки.Вставить("name" , "Консолидированный груз"); + ОписаниеЗаявки.Вставить("weight" , 1000); + ОписаниеЗаявки.Вставить("length" , 10); + ОписаниеЗаявки.Вставить("width" , 10); + ОписаниеЗаявки.Вставить("height" , 10); + ОписаниеЗаявки.Вставить("comment" , "Комментарий курьеру"); + ОписаниеЗаявки.Вставить("need_call" , Ложь); + + Отправитель = Новый Структура; + Отправитель.Вставить("company", "Компания"); + Отправитель.Вставить("name" , "Иванов Иван"); + + Телефоны = Новый Массив; + Телефон = Новый Структура("number", "+79589441654"); + Телефоны.Добавить(Телефон); + + Отправитель.Вставить("phones", Телефоны); + + ОписаниеЗаявки.Вставить("sender", Отправитель); + + ТочкаОтправления = Новый Структура; + ТочкаОтправления.Вставить("code" , "44"); + ТочкаОтправления.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + ТочкаОтправления.Вставить("postal_code" , "109004"); + ТочкаОтправления.Вставить("longitude" , 37.6204); + ТочкаОтправления.Вставить("latitude" , 55.754); + ТочкаОтправления.Вставить("country_code", "RU"); + ТочкаОтправления.Вставить("region" , "Москва"); + ТочкаОтправления.Вставить("sub_region" , "Москва"); + ТочкаОтправления.Вставить("city" , "Москва"); + ТочкаОтправления.Вставить("kladr_code" , "7700000000000"); + ТочкаОтправления.Вставить("address" , "ул. Блюхера, 32"); + + ОписаниеЗаявки.Вставить("from_location", ТочкаОтправления); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("intake", ОписаниеЗаявки); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаявкуНаВызовКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьЗаявкуНаВызовКурьера", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_IntakeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаявкуНаВызовКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЗаявкуНаВызовКурьера"); + +КонецПроцедуры + +Процедура CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_IntakeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаявкуНаВызовКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "УдалитьЗаявкуНаВызовКурьера"); + +КонецПроцедуры + +Процедура CDEK_СформироватьКвитанцию(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Тип = "tpl_russia"; + Копий = 1; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuids", UUID); + Опции.Вставить("type", Тип); + Опции.Вставить("count", Копий); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьКвитанцию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СформироватьКвитанцию", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьКвитанцию(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_PrintUUID"]; + + Результат = OPI_CDEK.ПолучитьКвитанцию(Токен, UUID, , Истина); // Ответ сервера с ссылкой + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьКвитанцию"); + +КонецПроцедуры + +Процедура CDEK_СформироватьШтрихкод(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Формат = "A5"; + Копий = 1; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuids", UUID); + Опции.Вставить("count", Копий); + Опции.Вставить("format", Формат); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьШтрихкод", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СформироватьШтрихкод", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьШтрихкод(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_BarcodeUUID"]; + + Результат = OPI_CDEK.ПолучитьШтрихкод(Токен, UUID, , Истина); // Ответ сервера с ссылкой + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьШтрихкод"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоступныеИнтервалыДоставки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьДоступныеИнтервалыДоставки"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеДоговоренности(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеДоговоренности"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеДоговоренности", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUIDЗаказа = ПараметрыФункции["CDEK_OrderUUID"]; + + Сутки = 60 * 60 * 24; + ТекущаяДата = НачалоДня(OPI_Инструменты.ПолучитьТекущуюДату()); + ДатаДоставки = ТекущаяДата + Сутки * 14; + + Пока ДеньНедели(ДатаДоставки) > 5 Цикл + ДатаДоставки = ДатаДоставки + Сутки; + КонецЦикла; + + Договоренность = Новый Структура; + + Договоренность.Вставить("cdek_number", "1106207236"); + Договоренность.Вставить("order_uuid" , UUIDЗаказа); + Договоренность.Вставить("date" , Формат(ДатаДоставки, "ДФ=yyyy-MM-dd")); + Договоренность.Вставить("time_from" , "10:00"); + Договоренность.Вставить("time_to" , "17:00"); + Договоренность.Вставить("comment" , "Офис группы компаний"); + + МестоДоставки = Новый Структура; + МестоДоставки.Вставить("code" , "270"); + МестоДоставки.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + МестоДоставки.Вставить("postal_code" , "109004"); + МестоДоставки.Вставить("longitude" , 37.6204); + МестоДоставки.Вставить("latitude" , 55.754); + МестоДоставки.Вставить("country_code", "RU"); + МестоДоставки.Вставить("region" , "Новосибирск"); + МестоДоставки.Вставить("sub_region" , "Новосибирск"); + МестоДоставки.Вставить("city" , "Новосибирск"); + МестоДоставки.Вставить("kladr_code" , "7700000000000"); + МестоДоставки.Вставить("address" , "ул. Блюхера, 33"); + + Договоренность.Вставить("to_location", МестоДоставки); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("appt", Договоренность); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ЗафиксироватьДоговоренностьОДоставке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ЗафиксироватьДоговоренностьОДоставке", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_ApptUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоговоренностьОДоставке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьДоговоренностьОДоставке"); + +КонецПроцедуры + +Процедура CDEK_СоздатьПреалерт(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + ПВЗ = "NSK27"; + ДатаПередачи = OPI_Инструменты.ПолучитьТекущуюДату() + 60 * 60 * 24; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuids", UUID); + Опции.Вставить("date", ДатаПередачи); + Опции.Вставить("point", ПВЗ); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьПреалерт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьПреалерт", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьПреалерт(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_PrealertUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПреалерт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьПреалерт"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСтатусПаспортныхДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьСтатусПаспортныхДанных"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЧекЗаказа(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекЗаказа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЧекЗаказа"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЧекиНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("date", ДатаПолучения); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекиНаДату", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЧекиНаДату"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("date", ДатаПолучения); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьРеестрыПлатежейНаДату", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьРеестрыПлатежейНаДату"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("date", ДатаПолучения); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПереводыПлатежейНаДату", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьПереводыПлатежейНаДату"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеФильтраОфисов"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеФильтраОфисов", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьСписокОфисов(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + Фильтр = Новый Структура; + Фильтр.Вставить("weight_max" , 50); + Фильтр.Вставить("city_code" , 270); + Фильтр.Вставить("allowed_cod", Истина); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокОфисов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьСписокОфисов"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьСписокРегионов(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокРегионов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьСписокРегионов"); + +КонецПроцедуры + +#КонецОбласти // CDEK + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure CdekAPI_CommonMethods() Export + СдэкАПИ_ОбщиеМетоды(); +EndProcedure + +Procedure CDEKAPI_OrdersManagement() Export + СдэкАПИ_РаботаСЗаказами(); +EndProcedure + +Procedure CdekAPI_CourierInvitationsManagement() Export + СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_ClickHouse/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_ClickHouse/Module.bsl index 7e7c5975df..e484f8dbd7 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_ClickHouse/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_ClickHouse/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ClickHouse.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1276 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("ClickHouse"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("ClickHouse"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область ClickHouse + +Процедура CH_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_PortGRPC" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста); + + ClickHouse_ВыполнитьЗапрос(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыТеста); + ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиСессии(ПараметрыТеста); + +КонецПроцедуры + +Процедура CH_GRPC() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_PortGRPC" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста); + + ClickHouse_ОткрытьСоединениеGRPC(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиTls(ПараметрыТеста); + + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыТеста["ClickHouse_PortGRPC"]); + + Логин = ПараметрыТеста["ClickHouse_User"]; + Пароль = ПараметрыТеста["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстСозданияТаблицы = "CREATE TABLE IF NOT EXISTS events_stream_test ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_stream_test"); + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстСозданияТаблицы); + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); + + ClickHouse_ОткрытьПотокGRPC(ПараметрыТеста); + ClickHouse_ОтправитьСообщениеGRPC(ПараметрыТеста); + ClickHouse_ОтправитьДанныеGRPC(ПараметрыТеста); + ClickHouse_ПолучитьСообщениеGRPC(ПараметрыТеста); + ClickHouse_ЗавершитьОтправкуGRPC(ПараметрыТеста); + ClickHouse_ЗакрытьПотокGRPC(ПараметрыТеста); + ClickHouse_ОбработатьОтправкуGRPC(ПараметрыТеста); + ClickHouse_ОбработатьПолучениеGRPC(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // ClickHouse + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область ClickHouse + +Процедура ClickHouse_ВыполнитьЗапрос(ПараметрыФункции) + + // Настройки соединения + + URL = "http://localhost:8123"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_Port"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + Соединение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + // Запрос (создание таблицы) + + ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СозданиеТаблицы"); // SKIP + + // Запрос (вставка данных) + + ТекстЗапроса = "INSERT INTO events FORMAT JSON"; + + ФорматДанных = "JSON"; + МассивДанных = Новый Массив; + + ТекущаяДата = Дата("20260101100000"); + + Запись1 = Новый Структура; + Запись1.Вставить("id" , 1); + Запись1.Вставить("timestamp" , ТекущаяДата); + Запись1.Вставить("user_id" , 100); + Запись1.Вставить("event_type", "click"); + Запись1.Вставить("payload" , "{}"); + + Запись2 = Новый Структура; + Запись2.Вставить("id" , 2); + Запись2.Вставить("timestamp" , ТекущаяДата); + Запись2.Вставить("user_id" , 200); + Запись2.Вставить("event_type", "hover"); + Запись2.Вставить("payload" , "{}"); + + МассивДанных.Добавить(Запись1); + МассивДанных.Добавить(Запись2); + + Мета = Новый Массив; + Мета.Добавить(Новый Структура("name,type", "id" , "UInt64")); + Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime")); + Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32")); + Мета.Добавить(Новый Структура("name,type", "event_type", "String")); + Мета.Добавить(Новый Структура("name,type", "payload" , "String")); + + Данные = Новый Структура("meta,data", Мета, МассивДанных); + БазаДанных = "default"; + IDЗапроса = Строка(Новый УникальныйИдентификатор()); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("db", БазаДанных); + Опции.Вставить("id", IDЗапроса); + Опции.Вставить("data", Данные); + Опции.Вставить("format", ФорматДанных); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP + + // Запрос с внешней таблицей + + ИмяТаблицы = "ext_users"; + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "UInt64"); + СтруктураКолонок.Вставить("name", "String"); + + Таб = Символы.Таб; + ДанныеТаблицы = "1" + Таб + "John + |2" + Таб + "Jane + |3" + Таб + "Bob"; + + Опции = Новый Структура; + Опции.Вставить("name", ИмяТаблицы); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("data", ДанныеТаблицы); + Опции.Вставить("format", "TSV"); + + ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + МассивВнешнихТаблиц = Новый Массив; + МассивВнешнихТаблиц.Добавить(ВнешняяТаблица); + + ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + Опции.Вставить("ext", МассивВнешнихТаблиц); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВнешняяТаблица"); // SKIP + + // Выборка + + ТекстВыборки = "SELECT * FROM events"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "CSV"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаCSV"); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "TSV"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаTSV"); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSONCompact"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаJSONCompact"); + + ТекстЗапроса = "SELECT 1 AS result"; + + ДопНастройки = Новый Соответствие; + ДопНастройки.Вставить("max_threads", "4"); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + Опции.Вставить("settings", ДопНастройки); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ДопНастройки"); + + UUID = Строка(Новый УникальныйИдентификатор()); + Опции = Новый Структура; + Опции.Вставить("id", UUID); + + Сессия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции); + + ТекстЗапроса = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("session", Сессия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияСоздание"); + + ТекстЗапроса = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("session", Сессия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияВставка"); + + ТекстЗапроса = "SELECT * FROM temp_session_test"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("session", Сессия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); + +КонецПроцедуры + +Процедура ClickHouse_ОткрытьСоединениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + // Открытие соединения + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC", "Открытие"); // SKIP + + // Запрос через открытое соединение (создание таблицы) + + ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "СозданиеТаблицы"); // SKIP + + // Вставка данных + + ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON"; + + ФорматДанных = "JSON"; + МассивДанных = Новый Массив; + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + Запись1 = Новый Структура; + Запись1.Вставить("id" , 1); + Запись1.Вставить("timestamp" , ТекущаяДата); + Запись1.Вставить("user_id" , 100); + Запись1.Вставить("event_type", "click"); + Запись1.Вставить("payload" , "{}"); + + МассивДанных.Добавить(Запись1); + + Мета = Новый Массив; + Мета.Добавить(Новый Структура("name,type", "id" , "UInt64")); + Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime")); + Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32")); + Мета.Добавить(Новый Структура("name,type", "event_type", "String")); + Мета.Добавить(Новый Структура("name,type", "payload" , "String")); + + Данные = Новый Структура("meta,data", Мета, МассивДанных); + IDЗапроса = Строка(Новый УникальныйИдентификатор()); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("db", "default"); + Опции.Вставить("id", IDЗапроса); + Опции.Вставить("data", Данные); + Опции.Вставить("format", ФорматДанных); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "ВставкаДанных"); // SKIP + + // Выборка + + ТекстВыборки = "SELECT * FROM events_grpc"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Выборка"); // SKIP + + // Запрос с внешней таблицей через gRPC + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "UInt64"); + СтруктураКолонок.Вставить("name", "String"); + + Таб = Символы.Таб; + ДанныеТаблицы = "1" + Таб + "John + |2" + Таб + "Jane"; + + Опции = Новый Структура; + Опции.Вставить("name", "ext_grpc"); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("data", ДанныеТаблицы); + Опции.Вставить("format", "TSV"); + + ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + МассивВнешнихТаблиц = Новый Массив; + МассивВнешнихТаблиц.Добавить(ВнешняяТаблица); + + ТекстЗапроса = "SELECT * FROM ext_grpc"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + Опции.Вставить("ext", МассивВнешнихТаблиц); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыФункции) + + URL = "http://localhost:8123"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_Port"]); // SKIP + + // Без авторизации + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "БезАвторизации"); // SKIP + + // С basic авторизацией + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "BasicАвторизация"); // SKIP + + // С JWT авторизацией + + JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", JWT); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "JWTАвторизация"); // SKIP + + // С дополнительными заголовками + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + // Без авторизации + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "БезАвторизации"); // SKIP + + // С basic авторизацией + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "BasicАвторизация"); // SKIP + + // С JWT авторизацией + + JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", JWT); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "JWTАвторизация"); // SKIP + + // С метаданными + + Meta = Новый Соответствие; + Meta.Вставить("custom-meta", "value"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + Опции.Вставить("meta", Meta); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "СМетаданными"); // SKIP + + // С TLS настройками + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыФункции) + + // Минимальный запрос + + ТекстЗапроса = "SELECT 1"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса", "Минимальный"); // SKIP + + // Полный запрос + + IDЗапроса = Строка(Новый УникальныйИдентификатор()); + Данные = Новый Структура("meta,data", Новый Массив, Новый Массив); + БазаДанных = "default"; + ФорматОтвета = "CSV"; + + ДопНастройки = Новый Соответствие; + ДопНастройки.Вставить("max_threads", "4"); + + СтруктураКолонок = Новый Структура("id,name", "UInt64", "String"); + Опции = Новый Структура; + Опции.Вставить("name", "ext"); + Опции.Вставить("cols", СтруктураКолонок); + + ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + МассивТаблиц = Новый Массив; + МассивТаблиц.Добавить(ВнешняяТаблица); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("db", БазаДанных); + Опции.Вставить("id", IDЗапроса); + Опции.Вставить("data", Данные); + Опции.Вставить("format", ФорматОтвета); + Опции.Вставить("ext", МассивТаблиц); + Опции.Вставить("settings", ДопНастройки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыФункции) + + // Минимальная структура + + ИмяТаблицы = "external_data"; + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "UInt64"); + СтруктураКолонок.Вставить("name", "String"); + + Опции = Новый Структура; + Опции.Вставить("name", ИмяТаблицы); + Опции.Вставить("cols", СтруктураКолонок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы", "Минимальная"); // SKIP + + // С данными TSV + + ДанныеТаблицы = СтрШаблон("1%1Test + |2%1Test2", Символы.Таб); + + Опции = Новый Структура; + Опции.Вставить("name", ИмяТаблицы); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("data", ДанныеТаблицы); + Опции.Вставить("format", "TSV"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции) + + IDСессии = Строка(Новый УникальныйИдентификатор); + Проверять = Истина; + Таймаут = 120; + + Опции = Новый Структура; + Опции.Вставить("id", IDСессии); + Опции.Вставить("check", Проверять); + Опции.Вставить("timeout", Таймаут); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСессии"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиTls"); + +КонецПроцедуры + +Процедура ClickHouse_ОткрытьПотокGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type" , "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Последнее = Счетчик = 4; + + Если Счетчик = 0 Тогда + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); + Иначе + ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); + КонецЕсли; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка <> "Timeout" Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); + КонецЕсли; + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "ClickHouse", "ОткрытьПотокGRPC"); + OPI_ПолучениеДанныхТестов.Обработать(ФинальноеСообщение , "ClickHouse", "ОткрытьПотокGRPC", "Финал"); + + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстВыборки = "SELECT * FROM events_stream_test ORDER BY id"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + РезультатВыборки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(РезультатВыборки, "ClickHouse", "ОткрытьПотокGRPC", "Выборка"); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ОтправитьСообщениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type" , "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Последнее = Счетчик = 4; + + Если Счетчик = 0 Тогда + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); // <--- + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОтправитьСообщениеGRPC"); // SKIP + Иначе + ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); + КонецЕсли; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка <> "Timeout" Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); + КонецЕсли; + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + // END + + Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ОтправитьДанныеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type" , "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Последнее = Счетчик = 4; + + Если Счетчик = 0 Тогда + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); + Иначе + ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); // <--- + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОтправитьДанныеGRPC"); // SKIP + КонецЕсли; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка <> "Timeout" Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); + КонецЕсли; + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + // END + + Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьСообщениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + Таймаут = 10000; + + РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); + + Если Не РезультатОткрытия["result"] Тогда + ВызватьИсключение РезультатОткрытия["error"]; + Иначе + IDПотока = РезультатОткрытия["streamId"]; + КонецЕсли; + + ТекстЗапроса = "SELECT number FROM system.numbers LIMIT 1"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + Результат = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); + OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + + Данные = ""; + + Если Результат["result"] Тогда + + Пока Истина Цикл + + Результат = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока, "JSON"); + + Если Не Результат["result"] Тогда + Прервать; + КонецЕсли; + + ЧастьТекста = Результат["message"]["output"]; + Данные = Данные + ЧастьТекста; + + КонецЦикла; + + OPI_GRPC.ЗакрытьСоединение(Соединение); + + Иначе + ВызватьИсключение Результат["error"]; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Данные, "ClickHouse", "ПолучитьСообщениеGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ЗавершитьОтправкуGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + Таймаут = 10000; + + РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); + + Если Не РезультатОткрытия["result"] Тогда + ВызватьИсключение РезультатОткрытия["error"]; + Иначе + IDПотока = РезультатОткрытия["streamId"]; + КонецЕсли; + + ТекстЗапроса = "SELECT number FROM system.numbers LIMIT 1"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + Отправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); + Результат = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ЗавершитьОтправкуGRPC"); + + Результат = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ЗавершитьОтправкуGRPC", "Отправка"); + +КонецПроцедуры + +Процедура ClickHouse_ЗакрытьПотокGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + Таймаут = 10000; + + РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); + + Если Не РезультатОткрытия["result"] Тогда + ВызватьИсключение РезультатОткрытия["error"]; + Иначе + IDПотока = РезультатОткрытия["streamId"]; + КонецЕсли; + + Результат = OPI_ClickHouse.ЗакрытьПотокGRPC(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ЗакрытьПотокGRPC"); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ОбработатьОтправкуGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Запрос = Неопределено; + МассивДанных = Новый Массив; + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type", "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Если Счетчик = 0 Тогда + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + Иначе + МассивДанных.Добавить(Запись); + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("data", МассивДанных); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ОбработатьОтправкуGRPC", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОбработатьОтправкуGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ОбработатьПолучениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстВыборки = "SELECT * FROM events_stream_test ORDER BY id"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ОбработатьПолучениеGRPC", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОбработатьПолучениеGRPC"); + +КонецПроцедуры + +#КонецОбласти // ClickHouse + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure CH_CommonMethods() Export + CH_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Dropbox/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Dropbox/Module.bsl index 7e7c5975df..65f76a1774 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Dropbox/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Dropbox/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Dropbox.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,792 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Dropbox"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Dropbox"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Dropbox + +Процедура ДропБокс_ПолучитьОбновитьТокен() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appkey" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appsecret", ПараметрыТеста); + + Dropbox_ПолучитьСсылкуАвторизации(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Code", ПараметрыТеста); + + Dropbox_ПолучитьТокен(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Refresh", ПараметрыТеста); + + Dropbox_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ЗагрузитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста); + + Dropbox_ЗагрузитьФайл(ПараметрыТеста); + Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); + Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыТеста); + Dropbox_ВосстановитьОбъектКВерсии(ПараметрыТеста); + Dropbox_ПолучитьПревью(ПараметрыТеста); + Dropbox_СкачатьФайл(ПараметрыТеста); + Dropbox_ПереместитьОбъект(ПараметрыТеста); + Dropbox_КопироватьОбъект(ПараметрыТеста); + Dropbox_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_СоздатьКаталог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_СоздатьПапку(ПараметрыТеста); + Dropbox_СкачатьПапку(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ПолучитьСписокФайловПапки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_ПолучитьСписокФайловПапки(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ЗагрузитьФайлПоURL() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Dropbox_ЗагрузитьФайлПоURL(ПараметрыТеста); + Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_СоздатьУдалитьТег() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_ДобавитьТег(ПараметрыТеста); + Dropbox_ПолучитьСписокТегов(ПараметрыТеста); + Dropbox_УдалитьТег(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ПолучитьАккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_РаботаСДоступами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_OtherUser", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_FileID" , ПараметрыТеста); + + Dropbox_ДобавитьПользователейКФайлу(ПараметрыТеста); + Dropbox_ОпубликоватьПапку(ПараметрыТеста); + Dropbox_ДобавитьПользователейКПапке(ПараметрыТеста); + Dropbox_ОтменитьПубликациюПапки(ПараметрыТеста); + Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыТеста); + Dropbox_ОтменитьПубликациюФайла(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Dropbox + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Dropbox + +Процедура Dropbox_ПолучитьСсылкуАвторизации(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСсылкуАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСсылкуАвторизации"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьТокен(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; + Код = ПараметрыФункции["Dropbox_Code"]; + + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + Опции.Вставить("appsecret", СекретПриложения); + Опции.Вставить("code", Код); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Dropbox_ОбновитьТокен(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; + РефрешТокен = ПараметрыФункции["Dropbox_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + Опции.Вставить("appsecret", СекретПриложения); + Опции.Вставить("refresh", РефрешТокен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("detail", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбОбъекте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбОбъекте", , Путь); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьПревью(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьПревью", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьПревью"); + +КонецПроцедуры + +Процедура Dropbox_ЗагрузитьФайл(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Картинка = ПараметрыФункции["Picture"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", КартинкаПуть); + Опции.Вставить("path", Путь); + Опции.Вставить("overwrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ЗагрузитьФайл", , Путь); + + OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); + + Если Не OPI_Инструменты.ЭтоOneScript() И ПараметрыФункции.Свойство("Big") Тогда + + БольшойФайл = ПараметрыФункции["Big"]; + + Путь = "/giant.tmp"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", БольшойФайл); + Опции.Вставить("path", Путь); + Опции.Вставить("overwrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ЗагрузитьФайл", "Большой", Путь); + + КонецЕсли; + +КонецПроцедуры + +Процедура Dropbox_ЗагрузитьФайлПоURL(ПараметрыФункции) + + Путь = "/New/url_doc.docx"; + Токен = ПараметрыФункции["Dropbox_Token"]; + URL = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ЗагрузитьФайлПоURL", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + ИДРаботы = ПараметрыФункции["Dropbox_Job"]; + Статус = "in_progress"; + + Пока Статус = "in_progress" Цикл + + Результат = OPI_Dropbox.ПолучитьСтатусЗагрузкиПоURL(Токен, ИДРаботы); + Статус = Результат[".tag"]; + + OPI_Инструменты.Пауза(5); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL", "Прогресс"); // SKIP + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL"); + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/url_doc.docx"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL", "Удаление", Путь); + +КонецПроцедуры + +Процедура Dropbox_УдалитьОбъект(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "УдалитьОбъект", , Путь); + +КонецПроцедуры + +Процедура Dropbox_КопироватьОбъект(ПараметрыФункции) + + Оригинал = "/New/pic.png"; + Копия = "/New/pic_copy.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Оригинал); + Опции.Вставить("to", Копия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "КопироватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "КопироватьОбъект", , Копия); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Копия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "КопироватьОбъект", "Удаление", Копия); + +КонецПроцедуры + +Процедура Dropbox_ПереместитьОбъект(ПараметрыФункции) + + ОригинальныйПуть = "/New/pic.png"; + ЦелевойПуть = "/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", ОригинальныйПуть); + Опции.Вставить("to", ЦелевойПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПереместитьОбъект", , ЦелевойПуть); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", ЦелевойПуть); + Опции.Вставить("to", ОригинальныйПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПереместитьОбъект", "Удаление", ОригинальныйПуть); + +КонецПроцедуры + +Процедура Dropbox_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/Новый каталог"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СоздатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "СоздатьПапку", , Путь); + + OPI_Dropbox.УдалитьОбъект(Токен, Путь); + +КонецПроцедуры + +Процедура Dropbox_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "СкачатьФайл"); + +КонецПроцедуры + +Процедура Dropbox_СкачатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "СкачатьПапку"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСписокФайловПапки(ПараметрыФункции) + + Путь = "/New"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("detail", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокФайловПапки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСписокФайловПапки"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("amount", 1); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокВерсийОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСписокВерсийОбъекта", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Dropbox_ВосстановитьОбъектКВерсии(ПараметрыФункции) + + Версия = ПараметрыФункции["Dropbox_FileRevision"]; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("rev", Версия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ВосстановитьОбъектКВерсии", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ВосстановитьОбъектКВерсии", , Путь); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСписокТегов(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + МассивПутей = Новый Массив; + МассивПутей.Добавить("/New/Dogs.mp3"); + МассивПутей.Добавить("/New/mydoc.docx"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", МассивПутей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСписокТегов", , ПараметрыФункции, МассивПутей); + +КонецПроцедуры + +Процедура Dropbox_ДобавитьТег(ПараметрыФункции) + + Тег = "Important"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("tag", Тег); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьТег"); + +КонецПроцедуры + +Процедура Dropbox_УдалитьТег(ПараметрыФункции) + + Тег = "Important"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("tag", Тег); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьТег", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "УдалитьТег"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбАккаунте"); + + IDАккаунта = Результат["account_id"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("account", IDАккаунта); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбАккаунте", "По ID"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьДанныеИспользованияПространства", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьДанныеИспользованияПространства"); + +КонецПроцедуры + +Процедура Dropbox_ДобавитьПользователейКФайлу(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Почта = ПараметрыФункции["Dropbox_OtherUser"]; + Файл = ПараметрыФункции["Dropbox_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", Файл); + Опции.Вставить("emails", Почта); + Опции.Вставить("readonly", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКФайлу", , Почта, Ложь); + + Почты = Новый Массив; + Почты.Добавить(Почта); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", Файл); + Опции.Вставить("emails", Почты); + Опции.Вставить("readonly", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКФайлу", , Почта, Истина); + +КонецПроцедуры + +Процедура Dropbox_ОпубликоватьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОпубликоватьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОпубликоватьПапку", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Dropbox_ОтменитьПубликациюПапки(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Папка = ПараметрыФункции["Dropbox_SharedFolder"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("folder", Папка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюПапки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОтменитьПубликациюПапки"); // SKIP + + ТекущийСтатус = "in_progress"; + IDРаботы = Результат["async_job_id"]; + + Пока ТекущийСтатус = "in_progress" Цикл + Результат = OPI_Dropbox.ПолучитьСтатусАсинхронногоИзменения(Токен, IDРаботы); + ТекущийСтатус = Результат[".tag"]; + OPI_Инструменты.Пауза(3); + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОтменитьПубликациюПапки", "Окончание", ПараметрыФункции, IDРаботы); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + IDРаботы = ПараметрыФункции["Dropbox_NewJobID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("job", IDРаботы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусАсинхронногоИзменения"); + +КонецПроцедуры + +Процедура Dropbox_ДобавитьПользователейКПапке(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Почта = ПараметрыФункции["Dropbox_OtherUser"]; + Папка = ПараметрыФункции["Dropbox_SharedFolder"]; // shared_folder_id + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("folder", Папка); + Опции.Вставить("emails", Почта); + Опции.Вставить("readonly", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКПапке"); + + Почты = Новый Массив; + Почты.Добавить(Почта); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("folder", Папка); + Опции.Вставить("emails", Почты); + Опции.Вставить("readonly", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКПапке", "Дополнительный"); + +КонецПроцедуры + +Процедура Dropbox_ОтменитьПубликациюФайла(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Файл = ПараметрыФункции["Dropbox_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОтменитьПубликациюФайла"); + +КонецПроцедуры + +#КонецОбласти // Dropbox + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure DropboxAPI_GetUpdateToken() Export + ДропБокс_ПолучитьОбновитьТокен(); +EndProcedure + +Procedure DropboxAPI_UploadFile() Export + ДропБокс_ЗагрузитьФайл(); +EndProcedure + +Procedure DropboxAPI_CreateFolder() Export + ДропБокс_СоздатьКаталог(); +EndProcedure + +Procedure DropboxAPI_GetFolderFileList() Export + ДропБокс_ПолучитьСписокФайловПапки(); +EndProcedure + +Procedure DropboxAPI_UploadFileByURL() Export + ДропБокс_ЗагрузитьФайлПоURL(); +EndProcedure + +Procedure DropboxAPI_CreateDeleteTag() Export + ДропБокс_СоздатьУдалитьТег(); +EndProcedure + +Procedure DropboxAPI_GetAccount() Export + ДропБокс_ПолучитьАккаунт(); +EndProcedure + +Procedure DropboxAPI_AccessManagement() Export + ДропБокс_РаботаСДоступами(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_FTP/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_FTP/Module.bsl index 7e7c5975df..aa3dae264e 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_FTP/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_FTP/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_FTP.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1934 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("FTP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("FTP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область FTP + +Процедура FT_РаботаСДиректориями() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + FTP_ОчиститьДиректорию(ПараметрыТеста); + FTP_СоздатьНовуюДиректорию(ПараметрыТеста); + FTP_ПолучитьТекущийКаталог(ПараметрыТеста); + FTP_ИзменитьТекущийКаталог(ПараметрыТеста); + FTP_ПолучитьСписокОбъектов(ПараметрыТеста); + FTP_УдалитьДиректорию(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура FT_РаботаСФайлами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + FTP_ЗагрузитьФайл(ПараметрыТеста); + FTP_СохранитьФайл(ПараметрыТеста); + FTP_ПолучитьДанныеФайла(ПараметрыТеста); + FTP_УдалитьФайл(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура FT_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + FTP_ОткрытьСоединение(ПараметрыТеста); + FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста); + FTP_ПолучитьСписокРасширенийПротокола(ПараметрыТеста); + FTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста); + FTP_ЗакрытьСоединение(ПараметрыТеста); + FTP_ЭтоКоннектор(ПараметрыТеста); + FTP_ПолучитьНастройкиСоединения(ПараметрыТеста); + FTP_ПолучитьНастройкиПрокси(ПараметрыТеста); + FTP_ПолучитьНастройкиTLS(ПараметрыТеста); + FTP_ПолучитьРазмерОбъекта(ПараметрыТеста); + FTP_ИзменитьПуть(ПараметрыТеста); + FTP_ВыполнитьНестандартнуюКоманду(ПараметрыТеста); + FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыТеста); + FTP_Пинг(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // FTP + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область FTP + +Процедура FTP_ОткрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ОткрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьПриветственноеСообщение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьПриветственноеСообщение", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьПриветственноеСообщение", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьКонфигурациюСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("set", НастройкиFTP); + Опции.Вставить("proxy", НастройкиПрокси); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьКонфигурациюСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьКонфигурациюСоединения", Постфикс, ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("conn", Результат); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьПриветственноеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "FTP", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ЗакрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "FTP", "ЗакрытьСоединение", "Открытие, " + Постфикс); // SKIP + + Результат = OPI_FTP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ЗакрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура FTP_ЭтоКоннектор(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "FTP", "ЭтоКоннектор", "Открытие, " + Постфикс); // SKIP + + Результат = OPI_FTP.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ЭтоКоннектор", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьНастройкиСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьНастройкиСоединения", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьНастройкиПрокси(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьНастройкиПрокси", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьНастройкиTLS(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьНастройкиTLS", Постфикс); + +КонецПроцедуры + +Процедура FTP_СоздатьНовуюДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Удаление = OPI_FTP.УдалитьДиректорию(Соединение, "new_dir"); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Удаление, "FTP", "СоздатьНовуюДиректорию", "Удаление, " + Постфикс); // SKIP + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", Постфикс, Истина); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/another_one"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", "Вложенная, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "second_dir/another_one"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", "Двойная, " + Постфикс); + + OPI_Инструменты.Пауза(5); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + Опции.Вставить("rcv", Истина); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "FTP", "СоздатьНовуюДиректорию", "Проверка 1, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", ""); + Опции.Вставить("rcv", Истина); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "FTP", "СоздатьНовуюДиректорию", "Проверка 2, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьСписокОбъектов(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", ""); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьСписокОбъектов", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "Dir1/Dir3/Git-2.50.0-64-bit.exe"); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьСписокОбъектов", "Файл, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ЗагрузитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + КартинкаПуть = "C:\pic.png"; + + Картинка = ПараметрыФункции["Picture"]; // SKIP + ИВФ = ПолучитьИмяВременногоФайла("png"); // SKIP + КопироватьФайл(Картинка, ИВФ); // SKIP + Картинка = ИВФ; // SKIP + + КартинкаДД = Новый ДвоичныеДанные(Картинка); + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", 1000); + Опции.Вставить("wtout", 1000); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", Картинка); + Опции.Вставить("path", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ЗагрузитьФайл", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", КартинкаДД); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ЗагрузитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ЗагрузитьФайл", Постфикс , КартинкаДД.Размер()); + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Двоичные, " + Постфикс, КартинкаДД.Размер()); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ЗагрузитьФайл", "Размер 1, " + Постфикс, КартинкаДД.Размер()); + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Размер 2, " + Постфикс, КартинкаДД.Размер()); + + Для Н = 1 По 5 Цикл + + Результат = OPI_FTP.ЗагрузитьФайл(Соединение, Картинка, "new_dir/pic_from_disk.png"); + Результат2 = OPI_FTP.ЗагрузитьФайл(Соединение, КартинкаДД, "pic_from_binary.png"); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ЗагрузитьФайл", "Множественный, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + Если Не Результат2["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Множественный, двоичные, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура FTP_УдалитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьФайл", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьФайл", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьФайл", "Несуществующий, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", ""); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьФайл", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_УдалитьДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/another_one"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьДиректорию", Постфикс); + +КонецПроцедуры + +Процедура FTP_ОчиститьДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ОчиститьДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ОчиститьДиректорию", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ОчиститьДиректорию", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьРазмерОбъекта(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ПолучитьРазмерОбъекта", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/another.bin"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ПолучитьРазмерОбъекта", "Несуществующий, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ИзменитьПуть(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "new_dir/pic_from_disk.png"); + Опции.Вставить("new", "new_dir/pic_copy.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_copy.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Проверка, новый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Проверка, старый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "new_dir"); + Опции.Вставить("new", "brand_new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Каталог, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Список, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "brand_new_dir"); + Опции.Вставить("new", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Каталог, обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "new_dir/pic_copy.png"); + Опции.Вставить("new", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Список, обратно, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_СохранитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "new_dir/pic_from_disk.png"; + ИмяФайла = ПолучитьИмяВременногоФайла("bin"); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + Опции.Вставить("file", ИмяФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СохранитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СохранитьФайл", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + + Размер = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Размер, "FTP", "СохранитьФайл", "Размер, " + Постфикс); + + ФайлОбъект = Новый Файл(ИмяФайла); + + РазмерФайла = ФайлОбъект.Размер(); + РазмерРезультата = Результат["bytes"]; + РазмерПроверки = Размер["bytes"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайла, "FTP", "СохранитьФайл", "Размер файла, " + Постфикс, РазмерРезультата, РазмерПроверки); + + Путь = "new_dir/pic_from_disk.png"; + + Для Н = 1 По 5 Цикл + + Результат = OPI_FTP.СохранитьФайл(Соединение, Путь, ИмяФайла); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СохранитьФайл", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИмяФайла, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура FTP_ПолучитьДанныеФайла(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "new_dir/pic_from_disk.png"; + Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьДанныеФайла", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + + Размер = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Размер, "FTP", "ПолучитьДанныеФайла", "Размер, " + Постфикс); + + РазмерФайла = Результат.Размер(); + РазмерПроверки = Размер["bytes"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайла, "FTP", "ПолучитьДанныеФайла", "Размер файла, " + Постфикс, РазмерПроверки); + + Путь = "new_dir/pic_from_disk.png"; + + Для Н = 1 По 5 Цикл + + Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь); + + Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьДанныеФайла", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура FTP_Пинг(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "Пинг", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "Пинг", Постфикс); + +КонецПроцедуры + +Процедура FTP_ВыполнитьНестандартнуюКоманду(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + ТекстКоманды = "UMASK"; + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("cmd", ТекстКоманды); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ВыполнитьНестандартнуюКоманду", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ВыполнитьНестандартнуюКоманду", Постфикс); + +КонецПроцедуры + +Процедура FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + ТекстКоманды = "PWD"; + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("cmd", ТекстКоманды); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ВыполнитьПроизвольнуюКоманду", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ВыполнитьПроизвольнуюКоманду", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьТекущийКаталог(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьТекущийКаталог", Постфикс, ПараметрыФункции); + +КонецПроцедуры + +Процедура FTP_ИзменитьТекущийКаталог(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Путь = "new_dir"; + Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, " + Постфикс, Путь); + + Путь = ПараметрыФункции["FTP_RootPath"]; + Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, обратно, " + Постфикс, Путь); + +КонецПроцедуры + +Процедура FTP_ПолучитьСписокРасширенийПротокола(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокРасширенийПротокола", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьСписокРасширенийПротокола", Постфикс); + +КонецПроцедуры + +#КонецОбласти // FTP + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure FT_DirecotryManagement() Export + FT_РаботаСДиректориями(); +EndProcedure + +Procedure FT_FileOperations() Export + FT_РаботаСФайлами(); +EndProcedure + +Procedure FT_CommonMethods() Export + FT_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GRPC/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GRPC/Module.bsl index 7e7c5975df..7d4cc8a352 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GRPC/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GRPC/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GRPC.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1216 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GRPC"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GRPC"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GRPC + +Процедура GR_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_AddressNoTls", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoTS" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + GRPC_ОткрытьСоединение(ПараметрыТеста); + GRPC_ЗакрытьСоединение(ПараметрыТеста); + GRPC_ЭтоКоннектор(ПараметрыТеста); + GRPC_УстановитьМетаданные(ПараметрыТеста); + GRPC_ВызватьМетод(ПараметрыТеста); + GRPC_ПолучитьНастройкиTls(ПараметрыТеста); + GRPC_ПолучитьПараметрыСоединения(ПараметрыТеста); + +КонецПроцедуры + +Процедура GR_Интроспекция() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport", ПараметрыТеста); + + GRPC_ПолучитьСписокСервисов(ПараметрыТеста); + GRPC_ПолучитьСписокМетодов(ПараметрыТеста); + GRPC_ПолучитьМетод(ПараметрыТеста); + +КонецПроцедуры + +Процедура GR_Стриминг() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_AddressNoTls", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoTS" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + GRPC_ИнициализироватьСерверныйПоток(ПараметрыТеста); + GRPC_ИнициализироватьКлиентскийПоток(ПараметрыТеста); + GRPC_ИнициализироватьДвунаправленныйПоток(ПараметрыТеста); + GRPC_ОтправитьСообщение(ПараметрыТеста); + GRPC_ПолучитьСообщение(ПараметрыТеста); + GRPC_ЗакрытьПоток(ПараметрыТеста); + GRPC_ОбработатьСерверныйПоток(ПараметрыТеста); + GRPC_ОбработатьКлиентскийПоток(ПараметрыТеста); + GRPC_ОбработатьДвунаправленныйПоток(ПараметрыТеста); + GRPC_ЗавершитьОтправку(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GRPC + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GRPC + +Процедура GRPC_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Результат = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение"); + + Результат = OPI_GRPC.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение", "Закрытие"); + + Адрес = ПараметрыФункции["GRPC_AddressNoTls"]; + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Результат = OPI_GRPC.ОткрытьСоединение(Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение", "Без TLS"); + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto", Proto1); + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Результат = OPI_GRPC.ОткрытьСоединение(Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение", "Ошибка"); + +КонецПроцедуры + +Процедура GRPC_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Результат = OPI_GRPC.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура GRPC_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Результат = OPI_GRPC.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьПараметрыСоединения(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьПараметрыСоединения"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьНастройкиTls"); + +КонецПроцедуры + +Процедура GRPC_УстановитьМетаданные(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Мета = Новый Структура("somekey", "somevalue"); + Результат = OPI_GRPC.УстановитьМетаданные(Соединение, Мета); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "УстановитьМетаданные"); + + Если Не OPI_ПолучениеДанныхТестов.ЭтоТестCLI() Тогда + + Сервис = "grpcbin.GRPCBin"; + Метод = "HeadersUnary"; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Неопределено); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "УстановитьМетаданные", "Проверка"); + + КонецЕсли; + +КонецПроцедуры + +Процедура GRPC_ВызватьМетод(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyUnary"; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + МассивЧисел = Новый Массив; + МассивЧисел.Добавить(1); + МассивЧисел.Добавить(10); + МассивЧисел.Добавить(100); + + МассивСтруктур = Новый Массив; + МассивСтруктур.Добавить(Новый Структура("f_string", "Nested value 1")); + МассивСтруктур.Добавить(Новый Структура("f_string", "Nested value 2")); + + МассивБулево = Новый Массив; + МассивБулево.Добавить(Истина); + МассивБулево.Добавить(Ложь); + + Файл = ПараметрыФункции["Document"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + + ИВФ = ПолучитьИмяВременногоФайла(); + Файл.Записать(ИВФ); + + МассивДвоичныхДанных = Новый Массив; + МассивДвоичныхДанных.Добавить(Файл); // Как данные + МассивДвоичныхДанных.Добавить(ИВФ); // Как путь к файлу + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_int64" , 123); + Данные.Вставить("f_float" , 123.22000122070312); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_enum" , "ENUM_1"); + Данные.Вставить("f_bytes" , Файл); + Данные.Вставить("f_sub" , Новый Структура("f_string" , "Nested value")); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_int32s" , МассивЧисел); + Данные.Вставить("f_int64s" , МассивЧисел); + Данные.Вставить("f_floats" , МассивЧисел); + Данные.Вставить("f_bytess" , МассивДвоичныхДанных); + Данные.Вставить("f_subs" , МассивСтруктур); + Данные.Вставить("f_bools" , МассивБулево); + Данные.Вставить("f_enums" , СтрРазделить("ENUM_1,ENUM_2", ",")); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Данные); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ВызватьМетод"); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Неопределено); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ВызватьМетод", "Пустой"); + + Метод = "HeadersUnary"; + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Неопределено); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ВызватьМетод", "Мета"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьСписокСервисов(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схема); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьСписокСервисов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьСписокСервисов"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьСписокМетодов(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схема); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Сервис = "grpcbin.GRPCBin"; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("service", Сервис); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьСписокМетодов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьСписокМетодов"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьМетод(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схема); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Сервис = "grpcbin.GRPCBin"; + Метод = "Index"; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьМетод", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьМетод"); + +КонецПроцедуры + +Процедура GRPC_ИнициализироватьСерверныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + МассивСообщений = Новый Массив; + + Пока Истина Цикл + + ТекущееСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + + Если Не ТекущееСообщение["result"] Тогда + + Ошибка = ТекущееСообщение["error"]; + + Если Ошибка = "Timeout" Тогда + Продолжить; + ИначеЕсли Ошибка = "Closed" Тогда + Прервать; + Иначе + ВызватьИсключение Ошибка; + КонецЕсли; + + Иначе + + ДанныеСообщения = ТекущееСообщение["message"]; + + Если ЗначениеЗаполнено(ДанныеСообщения) Тогда + МассивСообщений.Добавить(ДанныеСообщения); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "GRPC", "ИнициализироватьСерверныйПоток"); + OPI_ПолучениеДанныхТестов.Обработать(МассивСообщений, "GRPC", "ИнициализироватьСерверныйПоток", "Массив"); + +КонецПроцедуры + +Процедура GRPC_ИнициализироватьКлиентскийПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ФинальноеСообщение = Неопределено; + + Счетчик = 0; + Пока Истина Цикл + + ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); + Счетчик = Счетчик + 1; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка = "Timeout" Тогда + Продолжить; + ИначеЕсли Ошибка = "Closed" Тогда + ФинальноеСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + Прервать; + Иначе + ВызватьИсключение СтрШаблон("%1 (отправлено сообщений %2)", Ошибка, Счетчик); + КонецЕсли; + + Иначе + + Если Счетчик = 10 Тогда + Завершение = OPI_GRPC.ЗавершитьОтправку(Соединение, IDПотока); + ФинальноеСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + Прервать; + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(ФинальноеСообщение, "GRPC", "ИнициализироватьКлиентскийПоток", , Счетчик); + +КонецПроцедуры + +Процедура GRPC_ИнициализироватьДвунаправленныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyBidirectionalStreamStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьДвунаправленныйПоток(Соединение, Сервис, Метод); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + МассивРезультата = Новый Массив; + Счетчик = 0; + + Пока Счетчик < 10 Цикл + + Данные.Вставить("f_int32", Счетчик + 1); + + ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка = "Timeout" Тогда + Продолжить; + Иначе + ВызватьИсключение СтрШаблон("Ошибка отправки: %1 (обработано сообщений %2)", Ошибка, Счетчик); + КонецЕсли; + + КонецЕсли; + + ТекущееПолучение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + + Если Не ТекущееПолучение["result"] Тогда + ВызватьИсключение СтрШаблон("Ошибка получения: %1 (обработано сообщений %2)", Ошибка, Счетчик); + КонецЕсли; + + МассивРезультата.Добавить(ТекущееПолучение["message"]); + Счетчик = Счетчик + 1; + + КонецЦикла; + + OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ИнициализироватьДвунаправленныйПоток", , МассивРезультата); + +КонецПроцедуры + +Процедура GRPC_ОтправитьСообщение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); // <--- + Закрытие = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОтправитьСообщение", , Закрытие); + +КонецПроцедуры + +Процедура GRPC_ПолучитьСообщение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + МассивЧисел = Новый Массив; + МассивЧисел.Добавить(1); + МассивЧисел.Добавить(10); + МассивЧисел.Добавить(100); + + Файл = ПараметрыФункции["Document"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + + ИВФ = ПолучитьИмяВременногоФайла(); + Файл.Записать(ИВФ); + + МассивДвоичныхДанных = Новый Массив; + МассивДвоичныхДанных.Добавить(Файл); // Как данные + МассивДвоичныхДанных.Добавить(ИВФ); // Как путь к файлу + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_int64" , 123); + Данные.Вставить("f_float" , 123.22000122070312); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_enum" , "ENUM_1"); + Данные.Вставить("f_bytes" , Файл); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_int32s" , МассивЧисел); + Данные.Вставить("f_bytess" , МассивДвоичныхДанных); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); // <--- + Закрытие = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); + + // END + + Данные.Вставить("f_int64s", Новый Массив); + Данные.Вставить("f_enums" , Новый Массив); + Данные.Вставить("f_floats", Новый Массив); + Данные.Вставить("f_bools" , Новый Массив); + Данные.Вставить("f_subs" , Новый Массив); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьСообщение", , Закрытие, Данные); + +КонецПроцедуры + +Процедура GRPC_ЗакрытьПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗакрытьПоток"); + + Результат = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗакрытьПоток", "Отправка"); + +КонецПроцедуры + +Процедура GRPC_ОбработатьСерверныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Данные); + Опции.Вставить("tls", Tls); + Опции.Вставить("count", 3); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьСерверныйПоток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьСерверныйПоток"); + +КонецПроцедуры + +Процедура GRPC_ОбработатьКлиентскийПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + МассивЗапросов = Новый Массив; + + Для Н = 1 По 10 Цикл + МассивЗапросов.Добавить(Данные); + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", МассивЗапросов); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьКлиентскийПоток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьКлиентскийПоток"); + + МассивЗапросов.Удалить(МассивЗапросов.ВГраница()); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", МассивЗапросов); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьКлиентскийПоток", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьКлиентскийПоток", "Ошибка"); + +КонецПроцедуры + +Процедура GRPC_ОбработатьДвунаправленныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyBidirectionalStreamStream"; + + ПорядокОбмена = Новый Массив; + + Для Н = 1 По 10 Цикл + + ПорядокОбмена.Добавить(Данные); // Одно отправляем + ПорядокОбмена.Добавить(Неопределено); // Одно получаем + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("exch", ПорядокОбмена); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьДвунаправленныйПоток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьДвунаправленныйПоток"); + +КонецПроцедуры + +Процедура GRPC_ЗавершитьОтправку(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ЗавершитьОтправку(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗавершитьОтправку"); + +КонецПроцедуры + +#КонецОбласти // GRPC + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GR_CommonMethods() Export + GR_ОсновныеМетоды(); +EndProcedure + +Procedure GR_Introspection() Export + GR_Интроспекция(); +EndProcedure + +Procedure GR_Streaming() Export + GR_Стриминг(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleCalendar/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleCalendar/Module.bsl index 7e7c5975df..d2b077060b 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleCalendar/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleCalendar/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleCalendar.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,565 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleCalendar"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleCalendar"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleCalendar + +Процедура ГК_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleCalendar_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleCalendar_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleCalendar_ОбновитьТокен(ПараметрыТеста); + GoogleCalendar_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГК_ПолучитьСписокКалендарей() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГК_СоздатьУдалитьКалендарь() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); + GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыТеста); + GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыТеста); + GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыТеста); + GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыТеста); + GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыТеста); + GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыТеста); + // !DISABLED! GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыТеста); + GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ГК_СоздатьУдалитьСобытие() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_NewCalendarID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_CalendarID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); + GoogleCalendar_СоздатьСобытие(ПараметрыТеста); + GoogleCalendar_ИзменитьСобытие(ПараметрыТеста); + GoogleCalendar_ПолучитьСобытие(ПараметрыТеста); + GoogleCalendar_ПереместитьСобытие(ПараметрыТеста); + GoogleCalendar_ПолучитьСписокСобытий(ПараметрыТеста); + GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыТеста); + GoogleCalendar_УдалитьСобытие(ПараметрыТеста); + GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти // GoogleCalendar + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleCalendar + +Процедура GoogleCalendar_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleCalendar_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьСписокКалендарей"); + +КонецПроцедуры + +Процедура GoogleCalendar_СоздатьКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Наименование = "Тестовый календарь"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "СоздатьКалендарь", , ПараметрыФункции, Наименование); + +КонецПроцедуры + +Процедура GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("title", Наименование); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьМетаданныеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ИзменитьМетаданныеКалендаря", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьМетаданныеКалендаря", Опции); + + // END + + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьМетаданныеКалендаря", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ДобавитьКалендарьВСписок", Опции); + + // END + + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ДобавитьКалендарьВСписок", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + ОсновнойЦвет = "#000000"; + ДополнительныйЦвет = "#ffd800"; + Скрытый = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("primary", ОсновнойЦвет); + Опции.Вставить("secondary", ДополнительныйЦвет); + Опции.Вставить("hidden", Скрытый); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьКалендарьСписка", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ИзменитьКалендарьСписка", , ОсновнойЦвет, ДополнительныйЦвет); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьКалендарьСписка", Опции); + + // END + + ОсновнойЦвет = "#000000"; + ДополнительныйЦвет = "#ffd800"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьКалендарьСписка", , ОсновнойЦвет, ДополнительныйЦвет); + +КонецПроцедуры + +Процедура GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОчиститьОсновнойКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ОчиститьОсновнойКалендарь"); + +КонецПроцедуры + +Процедура GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарьИзСписка", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "УдалитьКалендарьИзСписка"); + +КонецПроцедуры + +Процедура GoogleCalendar_УдалитьКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "УдалитьКалендарь"); + +КонецПроцедуры + +Процедура GoogleCalendar_СоздатьСобытие(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Наименование = "Новое событие"; + Описание = "Описание тестового события"; + Час = 3600; + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + Вложения = Новый Соответствие; + + Вложения.Вставить("Картинка1", Картинка1); + Вложения.Вставить("Картинка2", Картинка2); + + ОписаниеСобытия = Новый Соответствие; + ОписаниеСобытия.Вставить("Описание" , Описание); + ОписаниеСобытия.Вставить("Заголовок" , Наименование); + ОписаниеСобытия.Вставить("МестоПроведения" , "В офисе"); + ОписаниеСобытия.Вставить("ДатаНачала" , ТекущаяДата); + ОписаниеСобытия.Вставить("ДатаОкончания" , ОписаниеСобытия["ДатаНачала"] + Час); + ОписаниеСобытия.Вставить("МассивURLФайловВложений", Вложения); + ОписаниеСобытия.Вставить("ОтправлятьУведомления" , Истина); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("props", ОписаниеСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьСобытие", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "СоздатьСобытие", , ПараметрыФункции, Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ИзменитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + Описание = "Новое описание события"; + + ОписаниеСобытия = Новый Соответствие; + ОписаниеСобытия.Вставить("Описание", Описание); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("props", ОписаниеСобытия); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьСобытие", Опции); + + // END + + Наименование = "Новое событие"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ИзменитьСобытие", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСобытие", Опции); + + // END + + Наименование = "Новое событие"; + Описание = "Новое описание события"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьСобытие", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ПереместитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Событие = ПараметрыФункции["Google_EventID"]; + + КалендарьИсточник = ПараметрыФункции["Google_NewCalendarID"]; + КалендарьПриемник = ПараметрыФункции["Google_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", КалендарьИсточник); + Опции.Вставить("to", КалендарьПриемник); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПереместитьСобытие", Опции); + + // END + + Наименование = "Новое событие"; + Описание = "Новое описание события"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПереместитьСобытие", , Наименование, Описание); + + OPI_GoogleCalendar.ПереместитьСобытие(Токен, КалендарьПриемник, КалендарьИсточник, Событие); + +КонецПроцедуры + +Процедура GoogleCalendar_УдалитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьСобытие", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "УдалитьСобытие"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьСписокСобытий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокСобытий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьСписокСобытий"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьОписаниеСобытия", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьОписаниеСобытия"); + +КонецПроцедуры + +#КонецОбласти // GoogleCalendar + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GC_Authorization() Export + ГК_Авторизация(); +EndProcedure + +Procedure GC_GetCalendarList() Export + ГК_ПолучитьСписокКалендарей(); +EndProcedure + +Procedure GC_CreateDeleteCalendar() Export + ГК_СоздатьУдалитьКалендарь(); +EndProcedure + +Procedure GC_CreateDeleteEvent() Export + ГК_СоздатьУдалитьСобытие(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleDrive/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleDrive/Module.bsl index 7e7c5975df..25dda7ece1 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleDrive/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleDrive/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleDrive.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,543 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleDrive"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleDrive"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleDrive + +Процедура ГД_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleDrive_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleDrive_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleDrive_ОбновитьТокен(ПараметрыТеста); + GoogleDrive_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГД_ПолучитьСписокКаталогов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleDrive_ПолучитьСписокКаталогов(ПараметрыТеста); + GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГД_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста); + + ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); + + GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); + GoogleDrive_СкопироватьОбъект(ПараметрыТеста); + GoogleDrive_СкачатьФайл(ПараметрыТеста); + GoogleDrive_ОбновитьФайл(ПараметрыТеста); + GoogleDrive_ПолучитьСписокФайлов(ПараметрыТеста); + GoogleDrive_УдалитьОбъект(ПараметрыТеста); + GoogleDrive_ПолучитьОписаниеФайла(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ГД_СоздатьУдалитьКомментарий() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); + + GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); + + GoogleDrive_СоздатьКомментарий(ПараметрыТеста); + GoogleDrive_ПолучитьКомментарий(ПараметрыТеста); + GoogleDrive_ПолучитьСписокКомментариев(ПараметрыТеста); + GoogleDrive_УдалитьКомментарий(ПараметрыТеста); + + GoogleDrive_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГД_СоздатьКаталог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + + GoogleDrive_СоздатьПапку(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GoogleDrive + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleDrive + +Процедура GoogleDrive_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleDrive_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьСписокКаталогов(ПараметрыФункции) + + Имя = "Тестовая папка"; + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("query", Имя); + Опции.Вставить("depth", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКаталогов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьСписокКаталогов", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_Catalog"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьИнформациюОбОбъекте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьИнформациюОбОбъекте"); + +КонецПроцедуры + +Процедура GoogleDrive_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = ПараметрыФункции["GD_Catalog"]; + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); + + Описание.Вставить("Родитель", Каталог); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", Картинка); + Опции.Вставить("props", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", , ПараметрыФункции, Описание); + + Если Не OPI_Инструменты.ЭтоOneScript() И ПараметрыФункции.Свойство("Big") Тогда + + БольшойФайл = ПараметрыФункции["Big"]; + Описание.Вставить("Имя", "big.rar"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", БольшойФайл); + Опции.Вставить("props", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", "Большой", ПараметрыФункции, Описание); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Результат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", "Проверка", ПараметрыФункции, Описание); + + КонецЕсли; + +КонецПроцедуры + +Процедура GoogleDrive_СкопироватьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + НовоеИмя = "Скопированный файл.jpeg"; + НовыйРодитель = "root"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("title", НовоеИмя); + Опции.Вставить("catalog", НовыйРодитель); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкопироватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СкопироватьОбъект", , ПараметрыФункции, НовоеИмя); + +КонецПроцедуры + +Процедура GoogleDrive_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СкачатьФайл", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GoogleDrive_ОбновитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + НовоеИмя = "Обновленный файл.jpg"; + Идентификатор = ПараметрыФункции["GD_File"]; + Файл = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("file", Файл); + Опции.Вставить("title", НовоеИмя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ОбновитьФайл", , НовоеИмя); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = "root"; + ИмяСодержит = "data"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("query", ИмяСодержит); + Опции.Вставить("catalog", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьСписокФайлов"); + +КонецПроцедуры + +Процедура GoogleDrive_УдалитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "УдалитьОбъект"); + + Для Каждого Удаляемый Из ПараметрыФункции["МассивУдаляемых"] Цикл + + Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "УдалитьОбъект", "Дополнительный"); + + OPI_Инструменты.Пауза(2); + + КонецЦикла; + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьОписаниеФайла(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьОписаниеФайла"); + +КонецПроцедуры + +Процедура GoogleDrive_СоздатьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + Комментарий = "Текст комментария"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("text", Комментарий); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СоздатьКомментарий", , ПараметрыФункции, Комментарий); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + ИДКомментария = ПараметрыФункции["GD_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("comment", ИДКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьКомментарий"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьСписокКомментариев(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКомментариев", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьСписокКомментариев"); + +КонецПроцедуры + +Процедура GoogleDrive_УдалитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + ИДКомментария = ПараметрыФункции["GD_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("comment", ИДКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "УдалитьКомментарий"); + +КонецПроцедуры + +Процедура GoogleDrive_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = ПараметрыФункции["GD_Catalog"]; + Имя = "Тестовая папка"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Имя); + Опции.Вставить("catalog", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СоздатьПапку"); + + ИДКаталога = Результат["id"]; + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СоздатьПапку", "Корень"); + + ИДКаталога = Результат["id"]; + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + +КонецПроцедуры + +#КонецОбласти // GoogleDrive + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GD_Authorization() Export + ГД_Авторизация(); +EndProcedure + +Procedure GD_GetCatalogList() Export + ГД_ПолучитьСписокКаталогов(); +EndProcedure + +Procedure GD_UploadDeleteFile() Export + ГД_ЗагрузитьУдалитьФайл(); +EndProcedure + +Procedure GD_CreateDeleteComment() Export + ГД_СоздатьУдалитьКомментарий(); +EndProcedure + +Procedure GD_CreateCatalog() Export + ГД_СоздатьКаталог(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleSheets/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleSheets/Module.bsl index 7e7c5975df..516f396f9c 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleSheets/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleSheets/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleSheets.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,428 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleSheets"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleSheets"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleSheets + +Процедура ГТ_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleSheets_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleSheets_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleSheets_ОбновитьТокен(ПараметрыТеста); + GoogleSheets_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГТ_СоздатьТаблицу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleSheets_СоздатьКнигу(ПараметрыТеста); + GoogleSheets_ПолучитьКнигу(ПараметрыТеста); + GoogleSheets_КопироватьЛист(ПараметрыТеста); + GoogleSheets_ДобавитьЛист(ПараметрыТеста); + GoogleSheets_УдалитьЛист(ПараметрыТеста); + GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыТеста); + GoogleSheets_ПолучитьТаблицу(ПараметрыТеста); + + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); + +КонецПроцедуры + +Процедура ГТ_ЗаполнитьОчиститьЯчейки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleSheets_СоздатьКнигу(ПараметрыТеста); + GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыТеста); + GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыТеста); + GoogleSheets_ОчиститьЯчейки(ПараметрыТеста); + + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); + +КонецПроцедуры + +#КонецОбласти // GoogleSheets + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleSheets + +Процедура GoogleSheets_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleSheets_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +Процедура GoogleSheets_СоздатьКнигу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Наименование = "Тестовая таблица"; + + МассивЛистов = Новый Массив; + МассивЛистов.Добавить("Лист1"); + МассивЛистов.Добавить("Лист2"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + Опции.Вставить("sheets", МассивЛистов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "СоздатьКнигу", , ПараметрыФункции, Наименование, МассивЛистов); + + Наименование = "Тестовая таблица (доп.)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + Опции.Вставить("sheets", МассивЛистов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "СоздатьКнигу", "Дополнительно", ПараметрыФункции, Наименование); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьКнигу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GS_Spreadsheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьКнигу"); + +КонецПроцедуры + +Процедура GoogleSheets_КопироватьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Откуда = ПараметрыФункции["GS_Spreadsheet"]; + Куда = ПараметрыФункции["GS_Spreadsheet2"]; + Лист = ПараметрыФункции["GS_Sheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Откуда); + Опции.Вставить("to", Куда); + Опции.Вставить("sheet", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "КопироватьЛист", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "КопироватьЛист"); + +КонецПроцедуры + +Процедура GoogleSheets_ДобавитьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Наименование = "Тестовый лист"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ДобавитьЛист", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ДобавитьЛист"); + +КонецПроцедуры + +Процедура GoogleSheets_УдалитьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = ПараметрыФункции["GS_Sheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("sheet", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УдалитьЛист", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "УдалитьЛист", , Книга); + +КонецПроцедуры + +Процедура GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Наименование = "Тестовая таблица (изм.)"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ИзменитьНаименованиеКниги", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ИзменитьНаименованиеКниги", , Книга); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьТаблицу"); + +КонецПроцедуры + +Процедура GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + СоответствиеЗначений = Новый Соответствие; + СоответствиеЗначений.Вставить("A1", "Это A1"); + СоответствиеЗначений.Вставить("A2", "Это A2"); + СоответствиеЗначений.Вставить("B2", "Это B2"); + СоответствиеЗначений.Вставить("B3", "Это B3"); + СоответствиеЗначений.Вставить("A3", "Это A3"); + СоответствиеЗначений.Вставить("A4", "Это A4"); + СоответствиеЗначений.Вставить("B1", "Это B1"); + СоответствиеЗначений.Вставить("B4", "Это B4"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("data", СоответствиеЗначений); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УстановитьЗначенияЯчеек", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "УстановитьЗначенияЯчеек", , СоответствиеЗначений.Количество()); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + МассивЯчеек = Новый Массив; + МассивЯчеек.Добавить("B2"); + МассивЯчеек.Добавить("A3"); + МассивЯчеек.Добавить("B4"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("cells", МассивЯчеек); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьЗначенияЯчеек", , МассивЯчеек.Количество()); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьЗначенияЯчеек", "Все", Книга); + +КонецПроцедуры + +Процедура GoogleSheets_ОчиститьЯчейки(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + МассивЯчеек = Новый Массив; + МассивЯчеек.Добавить("B2"); + МассивЯчеек.Добавить("A3"); + МассивЯчеек.Добавить("B4"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("cells", МассивЯчеек); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОчиститьЯчейки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ОчиститьЯчейки", , МассивЯчеек.Количество()); + +КонецПроцедуры + +#КонецОбласти // GoogleSheets + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GT_Authorization() Export + ГТ_Авторизация(); +EndProcedure + +Procedure GT_CreateTable() Export + ГТ_СоздатьТаблицу(); +EndProcedure + +Procedure GT_FillClearCells() Export + ГТ_ЗаполнитьОчиститьЯчейки(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleWorkspace/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleWorkspace/Module.bsl index 7e7c5975df..2d5e1bd25a 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleWorkspace/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GoogleWorkspace/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleWorkspace.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,155 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleWorkspace"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleWorkspace"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleWorkspace + +Процедура ГВ_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleWorkspace_ОбновитьТокен(ПараметрыТеста); + GoogleWorkspace_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GoogleWorkspace + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleWorkspace + +Процедура GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleWorkspace_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleWorkspace_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +#КонецОбласти // GoogleWorkspace + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GW_Auth() Export + ГВ_Авторизация(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenAPI/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenAPI/Module.bsl index 7e7c5975df..5cd0c9b18c 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenAPI/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenAPI/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GreenAPI.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1526 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GreenAPI"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GreenAPI"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GreenAPI + +Процедура GAPI_Аккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + GreenAPI_АрхивироватьЧат(ПараметрыТеста); + GreenAPI_РазархивироватьЧат(ПараметрыТеста); + GreenAPI_СформироватьПараметрыДоступа(ПараметрыТеста); + GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыТеста); + GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); + GreenAPI_УстановитьНастройкиИнстанса(ПараметрыТеста); + GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыТеста); + GreenAPI_УстановитьКартинкуПрофиля(ПараметрыТеста); + // !DISABLED! GreenAPI_ПерезапуститьИнстанс(ПараметрыТеста); + // !DISABLED! GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста); + // !DISABLED! GreenAPI_РазлогинитьИнстанс(ПараметрыТеста); + // !DISABLED! GreenAPI_ПолучитьQR(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_УправлениеГруппами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + GreenAPI_СоздатьГруппу(ПараметрыТеста); + GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыТеста); + GreenAPI_ИзменитьИмяГруппы(ПараметрыТеста); + GreenAPI_УстановитьКартинкуГруппы(ПараметрыТеста); + GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыТеста); + GreenAPI_ИсключитьУчастникаГруппы(ПараметрыТеста); + GreenAPI_НазначитьПраваАдминистратора(ПараметрыТеста); + GreenAPI_ОтозватьПраваАдминистратора(ПараметрыТеста); + GreenAPI_ПокинутьГруппу(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыТеста); + GreenAPI_ОтправитьФайл(ПараметрыТеста); + GreenAPI_ОтправитьФайлПоURL(ПараметрыТеста); + GreenAPI_ОтправитьОпрос(ПараметрыТеста); + GreenAPI_ОтправитьЛокацию(ПараметрыТеста); + GreenAPI_ОтправитьКонтакт(ПараметрыТеста); + GreenAPI_ПереслатьСообщения(ПараметрыТеста); + GreenAPI_ПолучитьОписаниеЛокации(ПараметрыТеста); + GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыТеста); + GreenAPI_ИзменитьТекстСообщения(ПараметрыТеста); + GreenAPI_УдалитьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ПолучениеУведомлений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_FileMessageID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_DownloadMessageID", ПараметрыТеста); + + GreenAPI_ПолучитьУведомление(ПараметрыТеста); + GreenAPI_УстановитьОтметкуПрочтения(ПараметрыТеста); + // !DISABLED! GreenAPI_СкачатьФайлСообщения(ПараметрыТеста); + GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ОчередьСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + + GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста); + GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ЖурналыСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MessageID" , ПараметрыТеста); + + GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста); + GreenAPI_ПолучитьСообщение(ПараметрыТеста); + GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); + GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GreenAPI + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GreenAPI + +Процедура GreenAPI_СформироватьПараметрыДоступа(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "СформироватьПараметрыДоступа"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьНастройкиИнстанса", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОбАккаунте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьИнформациюОбАккаунте"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСтруктуруНастроекИнстанса"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСтруктуруНастроекИнстанса", "Пустая"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + СтруктураНастроек = Новый Структура; + СтруктураНастроек.Вставить("pollMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("incomingBlockWebhook" , "no"); + СтруктураНастроек.Вставить("incomingCallWebhook" , "no"); + СтруктураНастроек.Вставить("editedMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("deletedMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("outgoingAPIMessageWebhook", "yes"); + + Опции = Новый Структура; + Опции.Вставить("settings", СтруктураНастроек); + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьНастройкиИнстанса"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСостояниеИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСостояниеИнстанса"); + +КонецПроцедуры + +Процедура GreenAPI_ПерезапуститьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПерезапуститьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПерезапуститьИнстанс"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьQR(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьQR", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьQR"); + +КонецПроцедуры + +Процедура GreenAPI_РазлогинитьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазлогинитьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "РазлогинитьИнстанс"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + НомерТелефона = 441234567890; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone", НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьКодАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьКодАвторизации"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьКартинкуПрофиля(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуПрофиля", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьКартинкуПрофиля"); + +КонецПроцедуры + +Процедура GreenAPI_СоздатьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Имя = "New group"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СоздатьГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "СоздатьГруппу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПокинутьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПокинутьГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПокинутьГруппу"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОГруппе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьИнформациюОГруппе"); + +КонецПроцедуры + +Процедура GreenAPI_ИзменитьИмяГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + Имя = "New name"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьИмяГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ИзменитьИмяГруппы"); + +КонецПроцедуры + +Процедура GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ДобавитьУчастникаВГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ДобавитьУчастникаВГруппу"); + +КонецПроцедуры + +Процедура GreenAPI_ИсключитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИсключитьУчастникаГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ИсключитьУчастникаГруппы"); + +КонецПроцедуры + +Процедура GreenAPI_НазначитьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "НазначитьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "НазначитьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenAPI_ОтозватьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтозватьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтозватьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьКартинкуГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьКартинкуГруппы"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Текст = "Новое сообщение"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьТекстовоеСообщение", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_УдалитьСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура GreenAPI_ИзменитьТекстСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьТекстСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ИзменитьТекстСообщения"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьФайл(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = "photo.jpg"; + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Описание = "Описание файла"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайл", , ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайл", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьФайлПоURL(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Файл = ПараметрыФункции["Picture"]; + ИмяФайла = "photo.jpg"; + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Описание = "Описание файла"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайлПоURL", , ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайлПоURL", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьОпрос(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Текст = "Какой ваш любимый цвет?"; + + Варианты = Новый Массив; + Варианты.Добавить("Красный"); + Варианты.Добавить("Желтый"); + Варианты.Добавить("Зеленый"); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("options", Варианты); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьОпрос", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("options", Варианты); + Опции.Вставить("multi", Истина); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьОпрос", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьОписаниеЛокации(ПараметрыФункции) + + Широта = 53.908522; + Долгота = 27.574821; + Адрес = "Площадь Победы, Минск"; + Название = "пл. Победы"; + + Опции = Новый Структура; + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("addr", Адрес); + Опции.Вставить("name", Название); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьОписаниеЛокации"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьЛокацию(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Широта = 53.908522; + Долгота = 27.574821; + Адрес = "Площадь Победы, Минск"; + Название = "пл. Победы"; + + Опции = Новый Структура; + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("addr", Адрес); + Опции.Вставить("name", Название); + + Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("loc", Локация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьЛокацию", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + + Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("loc", Локация); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьЛокацию", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыФункции) + + Телефон = 79001234568; + Имя = "Артем"; + Фамилия = "Евпаторийский"; + Отчество = "Петрович"; + Компания = "Велосипед"; + + Опции = Новый Структура; + Опции.Вставить("phone", Телефон); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("midname", Отчество); + Опции.Вставить("company", Компания); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьОписаниеКонтакта"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьКонтакт(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Телефон = 79001234568; + Имя = "Артем"; + Фамилия = "Евпаторийский"; + Отчество = "Петрович"; + Компания = "Велосипед"; + + Опции = Новый Структура; + Опции.Вставить("phone", Телефон); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("midname", Отчество); + Опции.Вставить("company", Компания); + + Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("contact", Контакт); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьКонтакт", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("phone", Телефон); + Опции.Вставить("company", Компания); + + Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("contact", Контакт); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьКонтакт", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ПереслатьСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Откуда = "11001234567@c.us"; + Откуда = ПараметрыФункции["GreenAPI_TestGroupID"]; // SKIP + Куда = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Сообщение = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("from", Откуда); + Опции.Вставить("to", Куда); + Опции.Вставить("msgs", Сообщение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПереслатьСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПереслатьСообщения"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDДоставки = ПараметрыФункции["GreenAPI_ReceiptID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("receipt", IDДоставки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьУведомлениеИзОчереди", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УдалитьУведомлениеИзОчереди"); + +КонецПроцедуры + +Процедура GreenAPI_СкачатьФайлСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_FileMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СкачатьФайлСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "СкачатьФайлСообщения"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьОтметкуПрочтения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_FileMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьОтметкуПрочтения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьОтметкуПрочтения"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьОчередьСообщений"); + +КонецПроцедуры + +Процедура GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОчиститьОчередьСообщений"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИсториюЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьИсториюЧата", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("msg", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьЖурналВходящихСообщений", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьЖурналИсходящихСообщений", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_АрхивироватьЧат(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + OPI_GreenAPI.РазархивироватьЧат(ПараметрыДоступа, IDЧата); // SKIP + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "АрхивироватьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "АрхивироватьЧат"); + +КонецПроцедуры + +Процедура GreenAPI_РазархивироватьЧат(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазархивироватьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "РазархивироватьЧат"); + +КонецПроцедуры + +#КонецОбласти // GreenAPI + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GAPI_Account() Export + GAPI_Аккаунт(); +EndProcedure + +Procedure GAPI_GroupManagement() Export + GAPI_УправлениеГруппами(); +EndProcedure + +Procedure GAPI_MessageSending() Export + GAPI_ОтправкаСообщений(); +EndProcedure + +Procedure GAPI_NotificationsReceiving() Export + GAPI_ПолучениеУведомлений(); +EndProcedure + +Procedure GAPI_MessageQueue() Export + GAPI_ОчередьСообщений(); +EndProcedure + +Procedure GAPI_MessageLogs() Export + GAPI_ЖурналыСообщений(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenMax/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenMax/Module.bsl index 7e7c5975df..0fef7eddb1 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenMax/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_GreenMax/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GreenMax.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1466 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GreenMax"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GreenMax"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GreenMax + +Процедура GMax_Аккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + //OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + GreenMax_СформироватьПараметрыДоступа(ПараметрыТеста); + // !DISABLED! GreenMax_РазлогинитьИнстанс(ПараметрыТеста); + // !DISABLED! GreenMax_ПолучитьКодАвторизации(ПараметрыТеста); + // !DISABLED! GreenMax_ОтправитьКодАвторизации(ПараметрыТеста); + GreenMax_ПолучитьСостояниеИнстанса(ПараметрыТеста); + GreenMax_ПолучитьНастройкиИнстанса(ПараметрыТеста); + GreenMax_УстановитьНастройкиИнстанса(ПараметрыТеста); + GreenMax_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); + GreenMax_УстановитьКартинкуПрофиля(ПараметрыТеста); + GreenMax_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + GreenMax_ПроверитьАккаунт(ПараметрыТеста); + GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); + GreenMax_ПолучитьИнформациюОКонтакте(ПараметрыТеста); + GreenMax_ПолучитьСписокЧатов(ПараметрыТеста); + GreenMax_ПолучитьАватарЧата(ПараметрыТеста); + GreenMax_ПерезапуститьИнстанс(ПараметрыТеста); + +КонецПроцедуры + +Процедура GMax_РаботаСГруппами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); + + GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_СоздатьГруппу(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьИнформациюОГруппе(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ИзменитьИмяГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ИзменитьНастройкиГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_НазначитьПраваАдминистратора(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтозватьПраваАдминистратора(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_УдалитьУчастникаГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ДобавитьУчастникаГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_УстановитьКартинкуГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ВыйтиИзГруппы(ПараметрыТеста); + GreenMax_ПолучитьСтруктуруНастроекГруппы(ПараметрыТеста); + +КонецПроцедуры + +Процедура GMax_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_СоздатьГруппу(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтправитьТекстовоеСообщение(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтправитьФайл(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтправитьФайлПоURL(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_УдалитьУчастникаГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ВыйтиИзГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + +КонецПроцедуры + +Процедура GMax_Уведомления() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + + GreenMax_ПолучитьУведомление(ПараметрыТеста); + GreenMax_УдалитьУведомление(ПараметрыТеста); + +КонецПроцедуры + +Процедура GMax_ИсторияСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); + + GreenMax_ОтметитьСообщенияКакПрочитанные(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьИсториюСообщенийЧата(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьСообщениеЧата(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + +КонецПроцедуры + +Процедура GMax_Очереди() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); + + GreenMax_ПолучитьКоличествоСообщенийКОтправке(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьОчередьСообщенийКОтправке(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОчиститьОчередьСообщенийКОтправке(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьКоличествоВходящихУведомлений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОчиститьОчередьВходящихУведомлений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + +КонецПроцедуры + +#КонецОбласти // GreenMax + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GreenMax + +Процедура GreenMax_СформироватьПараметрыДоступа(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "СформироватьПараметрыДоступа"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + НомерТелефона = 441234567890; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone", НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКодАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьКодАвторизации"); + +КонецПроцедуры + +Процедура GreenMax_РазлогинитьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "РазлогинитьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "РазлогинитьИнстанс"); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + КодАвторизации = 123456; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("code", КодАвторизации); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьКодАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьКодАвторизации"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСостояниеИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСостояниеИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСостояниеИнстанса"); + +КонецПроцедуры + +Процедура GreenMax_ПерезапуститьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПерезапуститьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПерезапуститьИнстанс"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекИнстанса"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMAx", "ПолучитьСтруктуруНастроекИнстанса", "Пустая"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьНастройкиИнстанса", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_УстановитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + + СтруктураНастроек = Новый Структура; + СтруктураНастроек.Вставить("markIncomingMessagesReaded" , "no"); + СтруктураНастроек.Вставить("outgoingWebhook" , "no"); + СтруктураНастроек.Вставить("outgoingAPIMessageWebhook" , "yes"); + + Опции = Новый Структура; + Опции.Вставить("settings", СтруктураНастроек); + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УстановитьНастройкиИнстанса"); + +КонецПроцедуры + +Процедура GreenMax_УстановитьКартинкуПрофиля(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьКартинкуПрофиля", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УстановитьКартинкуПрофиля"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОбАккаунте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИнформациюОбАккаунте"); + +КонецПроцедуры + +Процедура GreenMax_ПроверитьАккаунт(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + НомерТелефона = 441234567890; + НомерТелефона = ПараметрыФункции["GreenMax_Phone"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone", НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПроверитьАккаунт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПроверитьАккаунт", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСписокКонтактов(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Количество = 1; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("count", Количество); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСписокКонтактов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСписокКонтактов", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИнформациюОКонтакте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDКонтакта = 87654321; + IDКонтакта = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDКонтакта); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОКонтакте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИнформациюОКонтакте"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСписокЧатов(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСписокЧатов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСписокЧатов"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьАватарЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 87654321; + IDЧата = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьАватарЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьАватарЧата"); + +КонецПроцедуры + +Процедура GreenMax_СоздатьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDПользователя = 87654321; + Наименование = "Новая группа"; + + IDПользователя = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("name", Наименование); + Опции.Вставить("members", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СоздатьГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "СоздатьГруппу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ДобавитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ДобавитьУчастникаГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ДобавитьУчастникаГруппы"); + + GreenMax_УдалитьУчастникаГруппы(ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_УдалитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УдалитьУчастникаГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УдалитьУчастникаГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ВыйтиИзГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ВыйтиИзГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ВыйтиИзГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ИзменитьИмяГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Наименование = "Новое имя группы"; + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("name", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ИзменитьИмяГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ИзменитьИмяГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИнформациюОГруппе(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОГруппе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИнформациюОГруппе"); + +КонецПроцедуры + +Процедура GreenMax_ИзменитьНастройкиГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Настройки = Новый Структура; + Настройки.Вставить("allowParticipantsEditGroupSettings" , Истина); + Настройки.Вставить("allowParticipantsPinMessages" , Ложь); + Настройки.Вставить("allowParticipantsAddMembers" , Ложь); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("set", Настройки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ИзменитьНастройкиГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ИзменитьНастройкиГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСтруктуруНастроекГруппы(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекГруппы"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекГруппы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекГруппы", "Пустая"); + +КонецПроцедуры + +Процедура GreenMax_НазначитьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "НазначитьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "НазначитьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenMax_ОтозватьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтозватьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтозватьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenMax_УстановитьКартинкуГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Картинка = ПараметрыФункции["Picture3"]; // URL, Путь или Двоичные данные + IDЧата = 12345678; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьКартинкуГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УстановитьКартинкуГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Текст = "Текст сообщения"; + IDЧата = 12345678; + Набор = 2000; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("typing", Набор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьФайл(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = "photo.jpg"; + IDЧата = 12345678; + Описание = "Описание файла"; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайл", , ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("typing", 1000); + Опции.Вставить("ttype", "video"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайл", "Видео"); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьФайлПоURL(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Файл = ПараметрыФункции["Picture"]; + ИмяФайла = "photo.jpg"; + IDЧата = 12345678; + Описание = "Описание файла"; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайлПоURL"); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("typing", 1000); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайлПоURL", "Ввод"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_УдалитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDУведомления = ПараметрыФункции["GreenMax_ReceiptID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("id", IDУведомления); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УдалитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УдалитьУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ОтметитьСообщенияКакПрочитанные(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтметитьСообщенияКакПрочитанные", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтметитьСообщенияКакПрочитанные"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИсториюСообщенийЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + Количество = 3; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("count", Количество); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИсториюСообщенийЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИсториюСообщенийЧата", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСообщениеЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDСообщения = ПараметрыФункции["GreenMax_MainMessageID"]; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСообщениеЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСообщениеЧата", , IDСообщения); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Период = 30; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("span", Период); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьЖурналВходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьЖурналВходящихСообщений"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Период = 30; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("span", Период); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьЖурналИсходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьЖурналИсходящихСообщений"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьКоличествоСообщенийКОтправке(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКоличествоСообщенийКОтправке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьКоличествоСообщенийКОтправке"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьОчередьСообщенийКОтправке(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьОчередьСообщенийКОтправке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьОчередьСообщенийКОтправке"); + +КонецПроцедуры + +Процедура GreenMax_ОчиститьОчередьСообщенийКОтправке(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОчиститьОчередьСообщенийКОтправке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОчиститьОчередьСообщенийКОтправке"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьКоличествоВходящихУведомлений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКоличествоВходящихУведомлений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьКоличествоВходящихУведомлений"); + +КонецПроцедуры + +Процедура GreenMax_ОчиститьОчередьВходящихУведомлений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОчиститьОчередьВходящихУведомлений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОчиститьОчередьВходящихУведомлений"); + +КонецПроцедуры + +#КонецОбласти // GreenMax + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GMax_Account() Export + GMax_Аккаунт(); +EndProcedure + +Procedure GMax_GroupManagement() Export + GMax_РаботаСГруппами(); +EndProcedure + +Procedure GMax_MessageSending() Export + GMax_ОтправкаСообщений(); +EndProcedure + +Procedure GMax_Notifications() Export + GMax_Уведомления(); +EndProcedure + +Procedure GMax_MessageHistory() Export + GMax_ИсторияСообщений(); +EndProcedure + +Procedure GMax_Queues() Export + GMax_Очереди(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_HTTP/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_HTTP/Module.bsl index c0322fbc39..f71df7b710 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_HTTP/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_HTTP/Module.bsl @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tests/Modules/OPIt_HTTP.os +// OneScript: ./OInt/tests/Modules/OPItc_HTTP.os // MIT License @@ -67,11 +67,12 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" -#Область СлужебныйПрограммныйИнтерфейс // Для YaxUnit @@ -89,72 +90,115 @@ КонецФункции +#Область СлужебныйПрограммныйИнтерфейс + #Область ЗапускаемыеТесты -#Область Airtable +#Область HTTP -Процедура АТ_СоздатьБазу() Экспорт +Процедура HTTP_Инициализация() Экспорт ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Workspace", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL" , ПараметрыТеста); - Airtable_СоздатьБазу(ПараметрыТеста); - Airtable_ПолучитьТаблицыБазы(ПараметрыТеста); - Airtable_ПолучитьСписокБаз(ПараметрыТеста); + HTTP_Инициализировать(ПараметрыТеста); + HTTP_УстановитьURL(ПараметрыТеста); + HTTP_УстановитьПараметрыURL(ПараметрыТеста); + HTTP_УстановитьФайлОтвета(ПараметрыТеста); + HTTP_УстановитьТипДанных(ПараметрыТеста); + HTTP_ПолучитьЛог(ПараметрыТеста); + HTTP_УстановитьПрокси(ПараметрыТеста); + HTTP_УстановитьТаймаут(ПараметрыТеста); КонецПроцедуры -Процедура АТ_СоздатьТаблицу() Экспорт +Процедура HTTP_УстановкаТела() Экспорт ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - Airtable_ПолучитьПолеНомера(ПараметрыТеста); - Airtable_ПолучитьПолеСтроковое(ПараметрыТеста); - Airtable_ПолучитьПолеВложения(ПараметрыТеста); - Airtable_ПолучитьПолеФлажка(ПараметрыТеста); - Airtable_ПолучитьПолеДаты(ПараметрыТеста); - Airtable_ПолучитьПолеТелефона(ПараметрыТеста); - Airtable_ПолучитьПолеПочты(ПараметрыТеста); - Airtable_ПолучитьПолеСсылки(ПараметрыТеста); - Airtable_СоздатьТаблицу(ПараметрыТеста); - Airtable_ИзменитьТаблицу(ПараметрыТеста); + HTTP_УстановитьДвоичноеТело(ПараметрыТеста); + HTTP_УстановитьСтроковоеТело(ПараметрыТеста); + HTTP_УстановитьJsonТело(ПараметрыТеста); + HTTP_УстановитьFormТело(ПараметрыТеста); + HTTP_НачатьЗаписьТелаMultipart(ПараметрыТеста); + HTTP_ДобавитьПолеMultipartFormData(ПараметрыТеста); + HTTP_ДобавитьФайлMultipartFormData(ПараметрыТеста); + HTTP_ДобавитьДанныеRelated(ПараметрыТеста); КонецПроцедуры -Процедура АТ_СоздатьПоле() Экспорт +Процедура HTTP_Настройки() Экспорт ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - Airtable_СоздатьПоле(ПараметрыТеста); - Airtable_ИзменитьПоле(ПараметрыТеста); + HTTP_ИспользоватьКодировку(ПараметрыТеста); + HTTP_ИспользоватьСжатиеGzip(ПараметрыТеста); + HTTP_ИспользоватьПоляТелаВOAuth(ПараметрыТеста); + HTTP_ИспользоватьКодированиеURL(ПараметрыТеста); + HTTP_РазделятьМассивыВURL(ПараметрыТеста); + HTTP_МаксимумПереадресаций(ПараметрыТеста); + HTTP_МаксимумПопыток(ПараметрыТеста); + HTTP_ВернутьНастройки(ПараметрыТеста); КонецПроцедуры -Процедура АТ_СоздатьУдалитьЗаписи() Экспорт +Процедура HTTP_УстановкаЗаголовков() Экспорт ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - Airtable_СоздатьЗаписи(ПараметрыТеста); - Airtable_ПолучитьЗапись(ПараметрыТеста); - Airtable_СоздатьКомментарий(ПараметрыТеста); - Airtable_ИзменитьКомментарий(ПараметрыТеста); - Airtable_ПолучитьКомментарии(ПараметрыТеста); - Airtable_УдалитьКомментарий(ПараметрыТеста); - Airtable_ПолучитьСписокЗаписей(ПараметрыТеста); - Airtable_УдалитьЗаписи(ПараметрыТеста); + HTTP_УстановитьЗаголовки(ПараметрыТеста); + HTTP_ДобавитьЗаголовок(ПараметрыТеста); КонецПроцедуры -#КонецОбласти // Airtable +Процедура HTTP_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + + HTTP_ДобавитьBasicАвторизацию(ПараметрыТеста); + HTTP_ДобавитьBearerАвторизацию(ПараметрыТеста); + HTTP_ДобавитьAWS4Авторизацию(ПараметрыТеста); + HTTP_ДобавитьOAuthV1Авторизацию(ПараметрыТеста); + HTTP_УстановитьАлгоритмOAuthV1(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_ОбработкаЗапроса() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + HTTP_ОбработатьЗапрос(ПараметрыТеста); + HTTP_ВыполнитьЗапрос(ПараметрыТеста); + HTTP_ВернутьЗапрос(ПараметрыТеста); + HTTP_ВернутьСоединение(ПараметрыТеста); + HTTP_ОтправитьДанныеЧастями(ПараметрыТеста); + HTTP_ОтправитьЧасть(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_ПолучениеОтвета() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + HTTP_ВернутьОтвет(ПараметрыТеста); + HTTP_ВернутьОтветКакJSONКоллекцию(ПараметрыТеста); + HTTP_ВернутьОтветКакДвоичныеДанные(ПараметрыТеста); + HTTP_ВернутьОтветКакСтроку(ПараметрыТеста); + HTTP_ВернутьИмяФайлаТелаОтвета(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти #КонецОбласти // ЗапускаемыеТесты @@ -164,363 +208,1185 @@ #Область АтомарныеТесты -#Область Airtable +#Область HTTP -Процедура Airtable_СоздатьБазу(ПараметрыФункции) +Процедура HTTP_Инициализировать(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - Область = ПараметрыФункции["Airtable_Workspace"]; - Наименование = "Тестовая база"; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - МассивПолей = Новый Массив; - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); - - ИмяТаблицы = "Тестовая таблица"; - - СоответствиеТаблиц = Новый Соответствие; - СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей); - - Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц); + Результат = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьБазу", , ПараметрыФункции, ИмяТаблицы); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "Инициализировать"); + + HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ОбработатьЗапрос("POST", Ложь); + + OPI_ПолучениеДанныхТестов.Обработать(HTTPКлиент, "HTTP", "Инициализировать", "Проверка 1", ПараметрыФункции); + + ДругойЗапрос = HTTPКлиент.УстановитьURL(ПараметрыФункции["HTTP_URL"] + "/post") + .ОбработатьЗапрос("POST", Ложь) + .ВернутьЗапрос(); + + OPI_ПолучениеДанныхТестов.Обработать(ДругойЗапрос, "HTTP", "Инициализировать", "Проверка 2"); КонецПроцедуры -Процедура Airtable_ПолучитьТаблицыБазы(ПараметрыФункции) +Процедура HTTP_УстановитьURL(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.ПолучитьТаблицыБазы(Токен, База); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьТаблицыБазы"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьURL"); + + HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("POST", Ложь); + + OPI_ПолучениеДанныхТестов.Обработать(HTTPКлиент, "HTTP", "УстановитьURL", "Проверка", ПараметрыФункции); КонецПроцедуры -Процедура Airtable_ПолучитьСписокБаз(ПараметрыФункции) +Процедура HTTP_УстановитьПараметрыURL(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.ПолучитьСписокБаз(Токен); + СтруктураПараметров = Новый Структура("param1,param2", "text", 10); + + Результат = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(СтруктураПараметров) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьСписокБаз"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьПараметрыURL", , ПараметрыФункции); + + HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("POST", Ложь); + + HTTPЗапрос = HTTPКлиент.ВернутьЗапрос(); + + OPI_ПолучениеДанныхТестов.Обработать(HTTPЗапрос, "HTTP", "УстановитьПараметрыURL", "Проверка"); + + // Проверка кодировки + + // Комплексная + + СтруктураПараметров1 = Новый Структура; + СтруктураПараметров1.Вставить("param1", "search?text"); + СтруктураПараметров1.Вставить("param2", "John Doe"); + СтруктураПараметров1.Вставить("param3", "value&another"); + СтруктураПараметров1.Вставить("param4", "кириллица"); + СтруктураПараметров1.Вставить("param5", ""); + + АдресРесурса1 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров1) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса1, "HTTP", "УстановитьПараметрыURL", "Вариант 1"); + + СтруктураПараметров2 = Новый Структура; + СтруктураПараметров2.Вставить("param1", "search?text"); + СтруктураПараметров2.Вставить("param2", "John Doe"); + + // Параметры в оригинальном URL + + АдресРесурса2 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page?existing=value") + .УстановитьПараметрыURL(СтруктураПараметров2) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса2, "HTTP", "УстановитьПараметрыURL", "Вариант 2"); + + // Пустая строка параметров + + СтруктураПараметров3 = Новый Структура; + СтруктураПараметров3.Вставить("param1", "search?text"); + СтруктураПараметров3.Вставить("param2", "John Doe"); + + АдресРесурса3 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page?") + .УстановитьПараметрыURL(СтруктураПараметров3) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса3, "HTTP", "УстановитьПараметрыURL", "Вариант 3"); + + // Спец. символы в пути + + СтруктураПараметров4 = Новый Структура; + СтруктураПараметров4.Вставить("param1", "search?text"); + СтруктураПараметров4.Вставить("param2", "John Doe"); + + АдресРесурса4 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/path with spaces") + .УстановитьПараметрыURL(СтруктураПараметров4) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса4, "HTTP", "УстановитьПараметрыURL", "Вариант 4"); + + // URL с фрагментом + + СтруктураПараметров5 = Новый Структура; + СтруктураПараметров5.Вставить("param1", "search?text"); + СтруктураПараметров5.Вставить("param2", "John Doe"); + + АдресРесурса5 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page#section") + .УстановитьПараметрыURL(СтруктураПараметров5) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса5, "HTTP", "УстановитьПараметрыURL", "Вариант 5"); + + // Кириллица в пути + + СтруктураПараметров6 = Новый Структура; + СтруктураПараметров6.Вставить("param1", "search?text"); + СтруктураПараметров6.Вставить("param2", "John Doe"); + + АдресРесурса6 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/путь") + .УстановитьПараметрыURL(СтруктураПараметров6) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса6, "HTTP", "УстановитьПараметрыURL", "Вариант 6"); + + // Несколько параметров и кодировка + + СтруктураПараметров7 = Новый Структура; + СтруктураПараметров7.Вставить("param1", "value1"); + СтруктураПараметров7.Вставить("param2", "value two"); + СтруктураПараметров7.Вставить("param3", "value"); + + АдресРесурса7 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров7) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса7, "HTTP", "УстановитьПараметрыURL", "Вариант 7"); КонецПроцедуры -Процедура Airtable_ПолучитьПолеНомера(ПараметрыФункции) +Процедура HTTP_УстановитьФайлОтвета(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеНомера("Номер"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + ИВФ = ПолучитьИмяВременногоФайла(); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьФайлОтвета(ИВФ) // <--- + .ОбработатьЗапрос("GET") + .ВернутьИмяФайлаТелаОтвета(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеНомера"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьФайлОтвета", , ИВФ); + + РезультатПроверки = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьФайлОтвета(ИВФ) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакДвоичныеДанные(); + + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "HTTP", "УстановитьФайлОтвета", "Тело", ИВФ); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); КонецПроцедуры -Процедура Airtable_ПолучитьПолеСтроковое(ПараметрыФункции) +Процедура HTTP_УстановитьТипДанных(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеСтроковое("Строковое"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + ТипMIME = "text/markdown"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьСтроковоеТело("# Привет мир!") + .УстановитьТипДанных(ТипMIME) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеСтроковое"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьТипДанных"); КонецПроцедуры -Процедура Airtable_ПолучитьПолеВложения(ПараметрыФункции) +Процедура HTTP_ПолучитьЛог(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеВложения("Вложение"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + СтруктураПараметров = Новый Структура("param1,param2", "text", 10); + + HTTPКлиент = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("GET"); + + Ответ = HTTPКлиент.ВернутьОтветКакJSONКоллекцию(); + Лог = HTTPКлиент.ПолучитьЛог(Истина); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеВложения"); + OPI_ПолучениеДанныхТестов.Обработать(Лог, "HTTP", "ПолучитьЛог"); КонецПроцедуры -Процедура Airtable_ПолучитьПолеФлажка(ПараметрыФункции) +Процедура HTTP_УстановитьДвоичноеТело(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеФлажка("Флажок"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеФлажка"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьДвоичноеТело", , Картинка); КонецПроцедуры -Процедура Airtable_ПолучитьПолеДаты(ПараметрыФункции) +Процедура HTTP_УстановитьСтроковоеТело(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеДаты("Дата"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Текст = "Привет мир!"; + Кодировка = "Windows-1251"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ИспользоватьКодировку(Кодировка) + .УстановитьСтроковоеТело(Текст) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеДаты"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьСтроковоеТело"); КонецПроцедуры -Процедура Airtable_ПолучитьПолеТелефона(ПараметрыФункции) +Процедура HTTP_УстановитьJsonТело(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеТелефона("Телефон"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + СлучайныйМассив = Новый Массив; + СлучайныйМассив.Добавить("A"); + СлучайныйМассив.Добавить("B"); + СлучайныйМассив.Добавить("C"); + + Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьJsonТело(Данные) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеТелефона"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьJsonТело", , Данные); КонецПроцедуры -Процедура Airtable_ПолучитьПолеПочты(ПараметрыФункции) +Процедура HTTP_УстановитьFormТело(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеПочты("Почта"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Данные = Новый Структура("Поле1,Поле2", "10", "Текст"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьFormТело(Данные) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеПочты"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьFormТело", , Данные); КонецПроцедуры -Процедура Airtable_ПолучитьПолеСсылки(ПараметрыФункции) +Процедура HTTP_НачатьЗаписьТелаMultipart(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеСсылки("Ссылка"); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() // <--- + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("Поле1", "Текст") + .ДобавитьПолеMultipartFormData("Поле2", "10") + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьПолеСсылки"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "НачатьЗаписьТелаMultipart", , Картинка); КонецПроцедуры -Процедура Airtable_СоздатьТаблицу(ПараметрыФункции) +Процедура HTTP_ДобавитьФайлMultipartFormData(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; - МассивПолей = Новый Массив; - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеВложения("Вложение")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеФлажка("Флажок")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеДаты("Дата")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеТелефона("Телефон")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеПочты("Почта")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСсылки("Ссылка")); + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Наименование = "Тестовая таблица 2"; - Описание = "Новая таблица"; - - Результат = OPI_Airtable.СоздатьТаблицу(Токен, База, Наименование, МассивПолей, Описание); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") // <--- + .ДобавитьПолеMultipartFormData("Поле1", "Текст") + .ДобавитьПолеMultipartFormData("Поле2", "10") + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьТаблицу", , ПараметрыФункции, Наименование, Описание); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьФайлMultipartFormData", , Картинка); КонецПроцедуры -Процедура Airtable_ИзменитьТаблицу(ПараметрыФункции) +Процедура HTTP_ДобавитьПолеMultipartFormData(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Наименование = "Тестовая таблица 2 (изм.)"; - Описание = "Новая таблица (изм.)"; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; - Результат = OPI_Airtable.ИзменитьТаблицу(Токен, База, Таблица, Наименование, Описание); + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("Поле1", "Текст") // <--- + .ДобавитьПолеMultipartFormData("Поле2", "10") // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ИзменитьТаблицу", , Наименование, Описание); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьПолеMultipartFormData", , Картинка); КонецПроцедуры -Процедура Airtable_СоздатьПоле(ПараметрыФункции) +Процедура HTTP_ДобавитьДанныеRelated(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Имя = Строка(Новый УникальныйИдентификатор); + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; - Поле = OPI_Airtable.ПолучитьПолеНомера(Имя); - Результат = OPI_Airtable.СоздатьПоле(Токен, База, Таблица, Поле); + СлучайныйМассив = Новый Массив; + СлучайныйМассив.Добавить("A"); + СлучайныйМассив.Добавить("B"); + СлучайныйМассив.Добавить("C"); + + Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart(Истина, "related") + .ДобавитьДанныеRelated(Данные, "application/json; charset=UTF-8") // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьПоле", , ПараметрыФункции, Имя); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьДанныеRelated"); КонецПроцедуры -Процедура Airtable_ИзменитьПоле(ПараметрыФункции) +Процедура HTTP_ИспользоватьКодировку(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Поле = ПараметрыФункции["Airtable_Field"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; - Имя = Строка(Новый УникальныйИдентификатор) + "(изм.)"; - Описание = "Новое описание"; + Текст = "Привет мир!"; + Кодировка = "Windows-1251"; - Результат = OPI_Airtable.ИзменитьПоле(Токен, База, Таблица, Поле, Имя, Описание); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ИспользоватьКодировку(Кодировка) // <--- + .УстановитьСтроковоеТело(Текст) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ИзменитьПоле", , Имя, Описание); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьКодировку"); КонецПроцедуры -Процедура Airtable_СоздатьЗаписи(ПараметрыФункции) +Процедура HTTP_ИспользоватьСжатиеGzip(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; - Номер = 10; - Строковое = "Привет"; + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Номер, Строковое); - ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Номер, Строковое); - - МассивОписаний = Новый Массив; - МассивОписаний.Добавить(ОписаниеСтроки1); - МассивОписаний.Добавить(ОписаниеСтроки2); - - Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, МассивОписаний); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ИспользоватьСжатиеGzip(Ложь) // <--- + .ОбработатьЗапрос("POST", Ложь) + .ВернутьЗапрос(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьЗаписи", , ПараметрыФункции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьСжатиеGzip"); - МассивУдаляемых = Новый Массив; + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ИспользоватьСжатиеGzip(Истина) // <--- + .ОбработатьЗапрос("POST", Ложь) + .ВернутьЗапрос(); - Для Каждого Запись Из Результат["records"] Цикл - - ТекущаяЗапись = Запись["id"]; - МассивУдаляемых.Добавить(ТекущаяЗапись); - - КонецЦикла; - - OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых); - - // Одиночное - - Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, ОписаниеСтроки1); - - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьЗаписи", "Одиночная", ПараметрыФункции, Номер, Строковое); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьСжатиеGzip", "Включено"); КонецПроцедуры -Процедура Airtable_ПолучитьЗапись(ПараметрыФункции) +Процедура HTTP_ИспользоватьПоляТелаВOAuth(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; - Результат = OPI_Airtable.ПолучитьЗапись(Токен, База, Таблица, Запись); + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Токен = "***"; + Секрет = "***"; + КлючПользователя = "***"; + СекретПользователя = "***"; + Версия = "1.0"; + + НовыйЗапрос = OPI_ЗапросыHTTP.НовыйЗапрос().Инициализировать(URL); + + Результат = НовыйЗапрос + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("field1", "Текст") + .ДобавитьПолеMultipartFormData("field2", "10") + .ИспользоватьПоляТелаВOAuth(Ложь) // <--- + .ДобавитьOauthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьЗапись", , Запись); + ЛогСтрокой = НовыйЗапрос.ПолучитьЛог(Истина); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьПоляТелаВOAuth", , ЛогСтрокой); + + Результат = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("field1", "Текст") + .ДобавитьПолеMultipartFormData("field2", "10") + .ИспользоватьПоляТелаВOAuth(Истина) // <--- + .ДобавитьOauthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) + .ОбработатьЗапрос("POST", Ложь) + .ПолучитьЛог(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьПоляТелаВOAuth", "Включено"); КонецПроцедуры -Процедура Airtable_СоздатьКомментарий(ПараметрыФункции) +Процедура HTTP_УстановитьЗаголовки(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Текст = "Тестовый комментарий"; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.СоздатьКомментарий(Токен, База, Таблица, Запись, Текст); + Заголовки = Новый Соответствие; + Заголовки.Вставить("X-Header1", "Value1"); + Заголовки.Вставить("X-Header2", "Value2"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьЗаголовки(Заголовки) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьКомментарий", , ПараметрыФункции, Текст); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьЗаголовки"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("1111") + .УстановитьЗаголовки(Заголовки, Истина) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьЗаголовки", "Перезапись"); КонецПроцедуры -Процедура Airtable_ИзменитьКомментарий(ПараметрыФункции) +Процедура HTTP_ДобавитьЗаголовок(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Комментарий = ПараметрыФункции["Airtable_Comment"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Текст = "Тестовый комментарий (изм.)"; - Результат = OPI_Airtable.ИзменитьКомментарий(Токен, База, Таблица, Запись, Комментарий, Текст); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьЗаголовок("X-Header1", "Value1") // <--- + .ДобавитьЗаголовок("X-Header2", "Value2") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ИзменитьКомментарий", , Текст); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьЗаголовок"); + + Заголовки = Новый Соответствие; + Заголовки.Вставить("X-Header1", "Value1"); + Заголовки.Вставить("X-Header2", "Value2"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("1111") + .ДобавитьЗаголовок("X-Header3", "BadValue") // <--- + .ДобавитьЗаголовок("X-Header4", "BadValue") + .УстановитьЗаголовки(Заголовки, Истина) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьЗаголовок", "Замена"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("1111") + .ДобавитьЗаголовок("X-Header3", "BadValue") // <--- + .ДобавитьЗаголовок("X-Header4", "BadValue") + .УстановитьЗаголовки(Заголовки) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьЗаголовок", "Дополнение"); КонецПроцедуры -Процедура Airtable_ПолучитьКомментарии(ПараметрыФункции) +Процедура HTTP_ДобавитьBasicАвторизацию(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.ПолучитьКомментарии(Токен, База, Таблица, Запись); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBasicАвторизацию("user", "password") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьКомментарии"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьBasicАвторизацию"); КонецПроцедуры -Процедура Airtable_УдалитьКомментарий(ПараметрыФункции) +Процедура HTTP_ДобавитьBearerАвторизацию(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Комментарий = ПараметрыФункции["Airtable_Comment"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.УдалитьКомментарий(Токен, База, Таблица, Запись, Комментарий); + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("123123") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "УдалитьКомментарий", , Комментарий); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьBearerАвторизацию"); КонецПроцедуры -Процедура Airtable_ПолучитьСписокЗаписей(ПараметрыФункции) +Процедура HTTP_ДобавитьAWS4Авторизацию(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.ПолучитьСписокЗаписей(Токен, База, Таблица); + AccessKey = "AccessKey"; + SecretKey = "SecretKey"; + Region = "Region"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьAWS4Авторизацию(AccessKey, SecretKey, Region) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "ПолучитьСписокЗаписей"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьAWS4Авторизацию"); КонецПроцедуры -Процедура Airtable_УдалитьЗаписи(ПараметрыФункции) +Процедура HTTP_ДобавитьOAuthV1Авторизацию(ПараметрыФункции) - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; - Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, Запись); + Токен = "***"; + Секрет = "***"; + КлючПользователя = "***"; + СекретПользователя = "***"; + Версия = "1.0"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ДобавитьOAuthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); // END - OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "УдалитьЗаписи"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьOAuthV1Авторизацию"); КонецПроцедуры -#КонецОбласти // Airtable +Процедура HTTP_УстановитьАлгоритмOAuthV1(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Токен = "***"; + Секрет = "***"; + КлючПользователя = "***"; + СекретПользователя = "***"; + Версия = "1.0"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ДобавитьOAuthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) + .УстановитьАлгоритмOAuthV1("HMAC", "SHA1") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьАлгоритмOAuthV1"); + +КонецПроцедуры + +Процедура HTTP_ОбработатьЗапрос(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET") // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ОбработатьЗапрос"); + +КонецПроцедуры + +Процедура HTTP_ВыполнитьЗапрос(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВыполнитьЗапрос() // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВыполнитьЗапрос"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьОтвет(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВыполнитьЗапрос", "Без выполнения"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВыполнитьЗапрос() + .ВернутьОтвет(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВыполнитьЗапрос", "Выполнение"); + +КонецПроцедуры + +Процедура HTTP_ВернутьЗапрос(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьЗапрос"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ВернутьЗапрос(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьЗапрос", "Принудительно"); + +КонецПроцедуры + +Процедура HTTP_ВернутьСоединение(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьСоединение(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьСоединение"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ВернутьСоединение(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьСоединение", "Принудительно"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтвет(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтвет"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтветКакJSONКоллекцию(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтветКакJSONКоллекцию"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтветКакДвоичныеДанные(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакДвоичныеДанные(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтветКакДвоичныеДанные"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтветКакСтроку(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакСтроку(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтветКакСтроку"); + +КонецПроцедуры + +Процедура HTTP_ВернутьИмяФайлаТелаОтвета(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + ИВФ = ПолучитьИмяВременногоФайла(); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьФайлОтвета(ИВФ) // <--- + .ОбработатьЗапрос("GET") + .ВернутьИмяФайлаТелаОтвета(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьИмяФайлаТелаОтвета", , ИВФ); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура HTTP_УстановитьПрокси(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + НастройкиПрокси = Новый ИнтернетПрокси; + НастройкиПрокси.Установить("https", "proxy.com", 443, "user", "password", Ложь); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьПрокси(НастройкиПрокси) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьСоединение(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьПрокси"); + +КонецПроцедуры + +Процедура HTTP_УстановитьТаймаут(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьТаймаут(60) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьСоединение(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьТаймаут"); + +КонецПроцедуры + +Процедура HTTP_ИспользоватьКодированиеURL(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + СтруктураПараметров = Новый Структура; + СтруктураПараметров.Вставить("param1", "search?text"); + СтруктураПараметров.Вставить("param2", "John Doe"); + СтруктураПараметров.Вставить("param3", "value&another"); + СтруктураПараметров.Вставить("param4", "кириллица"); + СтруктураПараметров.Вставить("param5", ""); + + БезКодирования = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .ИспользоватьКодированиеURL(Ложь) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + // END + + Результат = Новый Соответствие; + Результат.Вставить("Без кодирования", БезКодирования); + Результат.Вставить("С кодированием" , СКодированием); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьКодированиеURL"); + +КонецПроцедуры + +Процедура HTTP_РазделятьМассивыВURL(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + ПараметрМассив = Новый Массив; + ПараметрМассив.Добавить("val1"); + ПараметрМассив.Добавить("val2"); + ПараметрМассив.Добавить("val3"); + + СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив); + + Разделение = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .РазделятьМассивыВURL(Истина) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .РазделятьМассивыВURL(Истина, Истина) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + // END + + Результат = Новый Соответствие; + Результат.Вставить("Без разделения", БезРазделения); + Результат.Вставить("Разделение" , Разделение); + Результат.Вставить("PHP" , РазделениеPhp); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "РазделятьМассивыВURL"); + +КонецПроцедуры + +Процедура HTTP_ОтправитьДанныеЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/put"; + + РазмерЧасти = 524288; + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОтправитьДанныеЧастями(РазмерЧасти) // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ОтправитьДанныеЧастями"); + +КонецПроцедуры + +Процедура HTTP_ОтправитьЧасть(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/put"; + + РазмерЧасти = 524288; + Данные = ПолучитьДвоичныеДанныеИзСтроки("Some data for sending"); + + // Отправляем только "data for" + НачальнаяПозиция = 5; + ЧислоБайт = 8; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Данные) + .ОтправитьЧасть(НачальнаяПозиция, ЧислоБайт) // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ОтправитьЧасть"); + +КонецПроцедуры + +Процедура HTTP_МаксимумПопыток(ПараметрыФункции) + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .МаксимумПопыток(10) + .ВернутьНастройки(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "МаксимумПопыток"); + +КонецПроцедуры + +Процедура HTTP_МаксимумПереадресаций(ПараметрыФункции) + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .МаксимумПереадресаций(15) + .ВернутьНастройки(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "МаксимумПереадресаций"); + +КонецПроцедуры + +Процедура HTTP_ВернутьНастройки(ПараметрыФункции) + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .ВернутьНастройки(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .ВернутьНастройки("КодировкаТелаЗапроса"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки", "Одиночный"); + + МассивНастроек = Новый Массив; + МассивНастроек.Добавить("МаксимумПопыток"); + МассивНастроек.Добавить("МаксимумПереадресаций"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .МаксимумПопыток(5) + .ВернутьНастройки(МассивНастроек); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки", "Массив"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .ВернутьНастройки("ААА"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки", "Несуществующий"); + +КонецПроцедуры + +#КонецОбласти #КонецОбласти // АтомарныеТесты #КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure HTTP_Initialization() Export + HTTP_Инициализация(); +EndProcedure + +Procedure HTTP_BodySet() Export + HTTP_УстановкаТела(); +EndProcedure + +Procedure HTTP_Settings() Export + HTTP_Настройки(); +EndProcedure + +Procedure HTTP_HeadersSetting() Export + HTTP_УстановкаЗаголовков(); +EndProcedure + +Procedure HTTP_Authorization() Export + HTTP_Авторизация(); +EndProcedure + +Procedure HTTP_RequestProcessing() Export + HTTP_ОбработкаЗапроса(); +EndProcedure + +Procedure HTTP_ResponseReceiving() Export + HTTP_ПолучениеОтвета(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl index 7e7c5975df..2f667653c0 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_MSSQL/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MSSQL.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1316 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("MSSQL"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("MSSQL"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область MSSQL + +Процедура MSS_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста); + + MSSQL_СформироватьСтрокуПодключения(ПараметрыТеста); + MSSQL_ОткрытьСоединение(ПараметрыТеста); + MSSQL_ЗакрытьСоединение(ПараметрыТеста); + MSSQL_ЭтоКоннектор(ПараметрыТеста); + MSSQL_ВыполнитьЗапросSQL(ПараметрыТеста); + MSSQL_ПолучитьНастройкиTLS(ПараметрыТеста); + +КонецПроцедуры + +Процедура MSS_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + MSSQL_СоздатьБазуДанных(ПараметрыТеста); + MSSQL_СоздатьТаблицу(ПараметрыТеста); + MSSQL_ДобавитьЗаписи(ПараметрыТеста); + MSSQL_ГарантироватьЗаписи(ПараметрыТеста); + MSSQL_ПолучитьЗаписи(ПараметрыТеста); + MSSQL_ОбновитьЗаписи(ПараметрыТеста); + MSSQL_УдалитьЗаписи(ПараметрыТеста); + MSSQL_ОчиститьТаблицу(ПараметрыТеста); + MSSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + MSSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + MSSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + MSSQL_ГарантироватьТаблицу(ПараметрыТеста); + MSSQL_УдалитьТаблицу(ПараметрыТеста); + MSSQL_УдалитьБазуДанных(ПараметрыТеста); + MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // MSSQL + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область MSSQL + +Процедура MSSQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // END + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СформироватьСтрокуПодключения"); + +КонецПроцедуры + +Процедура MSSQL_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура MSSQL_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MSSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_MSSQL.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура MSSQL_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MSSQL.ЭтоКоннектор(Соединение); + + // END + + OPI_MSSQL.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура MSSQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_MSSQL.УдалитьТаблицу("users" , Соединение); // SKIP + OPI_MSSQL.УдалитьТаблицу("test_data" , Соединение); // SKIP + OPI_MSSQL.УдалитьТаблицу("test_table", Соединение); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "MSSQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + | ID INT PRIMARY KEY, + | FirstName NVARCHAR(50), + | LastName NVARCHAR(50), + | BirthDate DATE, + | IsEmployed BIT, + | Salary DECIMAL(10, 2), + | CreatedAt DATETIME, + | Age SMALLINT, + | RowGuid UNIQUEIDENTIFIER, + | Data VARBINARY(MAX) + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data) + |VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("INT" , 1)); + МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Vitaly")); + МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Alpaca")); + МассивПараметров.Добавить(Новый Структура("DATE" , ТекущаяДата)); + МассивПараметров.Добавить(Новый Структура("BIT" , Истина)); + МассивПараметров.Добавить(Новый Структура("DECIMAL" , 10.30)); + МассивПараметров.Добавить(Новый Структура("DATETIME", ТекущаяДата)); + МассивПараметров.Добавить(Новый Структура("SMALLINT", 20)); + МассивПараметров.Добавить(Новый Структура("UUID" , Новый УникальныйИдентификатор)); + МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка)); + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + ТекстЗапроса = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));"; // SKIP + Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Test data"); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql", ФайлSQL); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP + + Закрытие = OPI_MSSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MSSQL", "ВыполнитьЗапросSQL", "Запрос"); // SKIP + +КонецПроцедуры + +Процедура MSSQL_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура MSSQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + База = "testbase1"; + + OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьБазуДанных"); + + База = "testbase2"; + OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); + + Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MSSQL", "СоздатьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьБазуДанных", "Создание"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьБазуДанных", "Существующая"); + + OPI_MSSQL.ЗакрытьСоединение(Подключение); + +КонецПроцедуры + +Процедура MSSQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("tinyint_field" , "tinyint"); + СтруктураКолонок.Вставить("smallint_field" , "smallint"); + СтруктураКолонок.Вставить("int_field" , "int"); + СтруктураКолонок.Вставить("bigint_field" , "bigint"); + СтруктураКолонок.Вставить("float24_field" , "float(24)"); + СтруктураКолонок.Вставить("float53_field" , "float(53)"); + СтруктураКолонок.Вставить("bit_field" , "bit"); + СтруктураКолонок.Вставить("nvarchar_field" , "nvarchar(4000)"); + СтруктураКолонок.Вставить("varbinary_field", "varbinary(max)"); + СтруктураКолонок.Вставить("uid_field" , "uniqueidentifier"); + СтруктураКолонок.Вставить("numeric_field" , "numeric(5,3)"); // Или decimal + СтруктураКолонок.Вставить("xml_field" , "xml"); + СтруктураКолонок.Вставить("date_field" , "date"); + СтруктураКолонок.Вставить("time_field" , "time"); + СтруктураКолонок.Вставить("dto_field" , "datetimeoffset"); + СтруктураКолонок.Вставить("datetime_field" , "datetime"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьТаблицу"); + + Таблица = "АБВ ГДЕ"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьТаблицу", "Ошибка имени"); + + Таблица = "somename"; + СтруктураКолонок.Вставить("wtf_field", "WTF"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьТаблицу", "Ошибка типа"); + +КонецПроцедуры + +Процедура MSSQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + XML = " + | + | Пример + | 123 + | + | + | Тест + | 456 + | + |"; + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("TINYINT" , 5)); + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 2000)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 200000)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 20000000000)); + СтруктураЗаписи.Вставить("float24_field" , Новый Структура("FLOAT24" , 10.1234567)); + СтруктураЗаписи.Вставить("float53_field" , Новый Структура("FLOAT53" , 10.123456789123456)); + СтруктураЗаписи.Вставить("bit_field" , Новый Структура("BIT" , Истина)); + СтруктураЗаписи.Вставить("nvarchar_field" , Новый Структура("NVARCHAR" , "Some text")); + СтруктураЗаписи.Вставить("varbinary_field", Новый Структура("BYTES" , Картинка)); + СтруктураЗаписи.Вставить("uid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор)); + СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , 5.333)); + СтруктураЗаписи.Вставить("xml_field" , Новый Структура("XML" , XML)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("dto_field" , Новый Структура("DATETIMEOFFSET", ТекущаяДатаЧП)); + СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATETIME" , ТекущаяДата)); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивЗаписей); + Опции.Вставить("trn", Истина); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ДобавитьЗаписи"); + +КонецПроцедуры + +Процедура MSSQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // Все записи без отборов + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьЗаписи"); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьЗаписи", "Отборы"); + +КонецПроцедуры + +Процедура MSSQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Количество = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Количество, "MSSQL", "ОбновитьЗаписи", "Количество"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОбновитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['ip_address']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); + +КонецПроцедуры + +Процедура MSSQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Получение = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Получение, "MSSQL", "УдалитьЗаписи", "Получение"); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьЗаписи", "Проверка", Остаток); + +КонецПроцедуры + +Процедура MSSQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьТаблицу"); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьТаблицу", "Тест"); + +КонецПроцедуры + +Процедура MSSQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + База = "testbase1"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных"); + + База = "testbase2"; + + Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MSSQL", "УдалитьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Удаление"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Ошибка"); + + Закрытие = OPI_MSSQL.ЗакрытьСоединение(Подключение); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MSSQL", "УдалитьБазуДанных", "Закрытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Ошибка подключения"); + +КонецПроцедуры + +Процедура MSSQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура MSSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьИнформациюОТаблице"); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьИнформациюОТаблице", "Ошибка"); + +КонецПроцедуры + +Процедура MSSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + База = "testbase1"; + Таблица = "testtable"; + Имя = "new_field"; + ТипДанных = "bigint"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MSSQL_УдалитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + База = "testbase1"; + Таблица = "testtable"; + Имя = "new_field"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MSSQL_ГарантироватьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + База = "testbase1"; + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("smallint_field" , "smallint"); + СтруктураКолонок.Вставить("double_field" , "real"); + СтруктураКолонок.Вставить("bigint_field" , "bigint"); + СтруктураКолонок.Вставить("custom_field" , "nvarchar"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + +КонецПроцедуры + +Процедура MSSQL_ГарантироватьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_guarantee"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "NVARCHAR(255)"); // SKIP + СтруктураКолонок.Вставить("age" , "INT"); // SKIP + СтруктураКолонок.Вставить("salary", "DECIMAL(10,2)"); // SKIP + OPI_MSSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); + СтруктураСтроки1.Вставить("name" , Новый Структура("NVARCHAR", "Vitaly")); + СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); + СтруктураСтроки1.Вставить("salary", Новый Структура("DECIMAL" , 1000.12)); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); + СтруктураСтроки2.Вставить("name" , Новый Структура("NVARCHAR", "Lesha")); + СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); + СтруктураСтроки2.Вставить("salary", Новый Структура("DECIMAL" , 200.20)); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , Новый Структура("NVARCHAR", "Vitaly Updated")); + СтруктураСтроки1.Вставить("salary", Новый Структура("DECIMAL" , 1500.50)); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); + СтруктураСтроки3.Вставить("name" , Новый Структура("NVARCHAR", "Anton")); + СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); + СтруктураСтроки3.Вставить("salary", Новый Структура("DECIMAL" , 3000.00)); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_MSSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); + +КонецПроцедуры + +Процедура MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +#КонецОбласти // MSSQL + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure MSS_CommonMethods() Export + MSS_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl index 7e7c5975df..4a24eb8e87 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_MongoDB/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MongoDB.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1959 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("MongoDB"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("MongoDB"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область MongoDB + +Процедура Mongo_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СформироватьСтрокуПодключения(ПараметрыТеста); + MongoDB_ОткрытьСоединение(ПараметрыТеста); + MongoDB_ЗакрытьСоединение(ПараметрыТеста); + MongoDB_ЭтоКоннектор(ПараметрыТеста); + MongoDB_ВыполнитьКоманду(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_РаботаСБазами() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_ПолучитьБазуДанных(ПараметрыТеста); + MongoDB_ПолучитьСписокБаз(ПараметрыТеста); + MongoDB_УдалитьБазуДанных(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_РаботаСКоллекциями() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СоздатьКоллекцию(ПараметрыТеста); + MongoDB_ПолучитьСписокКоллекций(ПараметрыТеста); + MongoDB_УдалитьКоллекцию(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_РаботаСДокументами() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + MongoDB_ВставитьДокументы(ПараметрыТеста); + MongoDB_ПолучитьДокументы(ПараметрыТеста); + MongoDB_ПолучитьКурсор(ПараметрыТеста); + MongoDB_ПолучитьПакетДокументов(ПараметрыТеста); + MongoDB_ОбновитьДокументы(ПараметрыТеста); + MongoDB_УдалитьДокументы(ПараметрыТеста); + MongoDB_ПолучитьСтруктуруОбновленияДокументов(ПараметрыТеста); + MongoDB_ПолучитьСтруктуруУдаленияДокументов(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СоздатьПользователя(ПараметрыТеста); + MongoDB_ИзменитьПользователя(ПараметрыТеста); + MongoDB_ПолучитьПользователей(ПараметрыТеста); + MongoDB_ПолучитьПользователейБазы(ПараметрыТеста); + MongoDB_УдалитьПользователя(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_УправлениеРолями() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СоздатьРоль(ПараметрыТеста); + MongoDB_ПолучитьРоли(ПараметрыТеста); + MongoDB_НазначитьРоли(ПараметрыТеста); + MongoDB_СнятьРоли(ПараметрыТеста); + MongoDB_ИзменитьРоль(ПараметрыТеста); + MongoDB_УдалитьРоль(ПараметрыТеста); + MongoDB_ПолучитьСтруктуруПривилегииРоли(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // MongoDB + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область MongoDB + +Процедура MongoDB_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СформироватьСтрокуПодключения", , ПараметрыФункции); + +КонецПроцедуры + +Процедура MongoDB_ОткрытьСоединение(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Результат = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОткрытьСоединение"); + + Результат = OPI_MongoDB.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОткрытьСоединение", "Закрытие"); + +КонецПроцедуры + +Процедура MongoDB_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + Результат = OPI_MongoDB.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура MongoDB_ЭтоКоннектор(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + Результат = OPI_MongoDB.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура MongoDB_ВыполнитьКоманду(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Команда = "listDatabases"; + Данные = Новый Структура("nameOnly", Истина); + + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "MongoDB", "ВыполнитьКоманду", "Подключение"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("comm", Команда); + Опции.Вставить("data", Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВыполнитьКоманду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ВыполнитьКоманду"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьБазуДанных(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + База = "test_db"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьБазуДанных"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСписокБаз(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСписокБаз", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСписокБаз"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьБазуДанных"); + +КонецПроцедуры + +Процедура MongoDB_СоздатьКоллекцию(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Наименование = "test_collection"; + База = "test_database"; + + Параметры = Новый Соответствие; + Выражение = Новый Соответствие; + ГруппаИ = Новый Массив; + + Условие1 = Новый Соответствие; // Итог >= 0 + Элементы1 = Новый Массив; + Элементы1.Добавить("$total"); + Элементы1.Добавить(0); + Условие1.Вставить("$gte", Элементы1); + + Условие2 = Новый Соответствие; // Статус <= 3 + Элементы2 = Новый Массив; + Элементы2.Добавить("$status"); + Элементы2.Добавить(3); + Условие2.Вставить("$lte", Элементы2); + + ГруппаИ.Добавить(Условие1); + ГруппаИ.Добавить(Условие2); + + Выражение.Вставить("$expr", ГруппаИ); + Параметры.Вставить("validator", Выражение); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", Наименование); + Опции.Вставить("db", База); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьКоллекцию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьКоллекцию"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", Наименование); + Опции.Вставить("db", База); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьКоллекцию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьКоллекцию", "Существующая"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьКоллекцию(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "test_collection"; + База = "test_database"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьКоллекцию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьКоллекцию"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСписокКоллекций(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + База = "test_database"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСписокКоллекций", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСписокКоллекций"); + +КонецПроцедуры + +Процедура MongoDB_ВставитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + МассивДокументов = Новый Массив; + + // С неявным приведением типов + СтруктураДокумента = Новый Структура; + + ТестовыйМассив = Новый Массив; + ТестовыйМассив.Добавить("Значение1"); + ТестовыйМассив.Добавить("Значение2"); + + ТестоваяСтруктура = Новый Структура("text,number", "Текст", 10); + ТестовыеДвоичные = ПолучитьДвоичныеДанныеИзСтроки("Текст"); + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + СтруктураДокумента.Вставить("stringField", "Текст"); + СтруктураДокумента.Вставить("intField" , 200); + СтруктураДокумента.Вставить("doubleField", 123.456); + СтруктураДокумента.Вставить("boolField" , Истина); + СтруктураДокумента.Вставить("arrayField" , ТестовыйМассив); + СтруктураДокумента.Вставить("docField" , ТестоваяСтруктура); + СтруктураДокумента.Вставить("dateField" , ТекущаяДата); + СтруктураДокумента.Вставить("nullField"); + + МассивДокументов.Добавить(СтруктураДокумента); + + // С явным приведением типов + СтруктураДокумента = Новый Структура; + + RegExp = Новый Структура("pattern,options", "[a-z]+@[a-z]+\.[a-z]+", "i"); + КодJS = "const result = [1, 2, 3].map(x => x * 2).filter(x => x > 3);"; + + СтруктураДокумента.Вставить("stringField", Новый Структура("__OPI_STRING__" , "Текст")); + СтруктураДокумента.Вставить("oidField" , Новый Структура("__OPI_OBJECTID__" , "63ceed18f71dda7d8cf21e8e")); + СтруктураДокумента.Вставить("jsField" , Новый Структура("__OPI_JS__" , КодJS)); + СтруктураДокумента.Вставить("symbolField", Новый Структура("__OPI_SYMBOL__" , "Y")); + СтруктураДокумента.Вставить("int32Field" , Новый Структура("__OPI_INT32__" , 10)); + СтруктураДокумента.Вставить("int64Field" , Новый Структура("__OPI_INT64__" , 1000)); + СтруктураДокумента.Вставить("doubleField", Новый Структура("__OPI_DOUBLE__" , 124.456)); + СтруктураДокумента.Вставить("boolField" , Новый Структура("__OPI_BOOLEAN__" , Истина)); + СтруктураДокумента.Вставить("dateField" , Новый Структура("__OPI_DATETIME__" , "1763204141")); + СтруктураДокумента.Вставить("tsField" , Новый Структура("__OPI_TIMESTAMP__", ТекущаяДата)); + СтруктураДокумента.Вставить("regexpField", Новый Структура("__OPI_REGEXP__" , RegExp)); + СтруктураДокумента.Вставить("binaryField", Новый Структура("__OPI_BINARY__" , ТестовыеДвоичные)); + СтруктураДокумента.Вставить("nullField" , Новый Структура("__OPI_NULL__")); + СтруктураДокумента.Вставить("minkeyField", Новый Структура("__OPI_MINKEY__")); + СтруктураДокумента.Вставить("maxkeyField", Новый Структура("__OPI_MAXKEY__")); + + ТестовыйМассив = Новый Массив; + ТестовыйМассив.Добавить(Новый Структура("__OPI_SYMBOL__", "A")); + ТестовыйМассив.Добавить(Новый Структура("__OPI_MINKEY__")); + + ТестоваяСтруктура = Новый Структура("code,number" + , Новый Структура("__OPI_JS__", "const result = 1") + , Новый Структура("__OPI_DOUBLE__", 10)); + + // Документы и массивы в структуру не оборачиваются + СтруктураДокумента.Вставить("docField" , ТестоваяСтруктура); + СтруктураДокумента.Вставить("arrayField" , ТестовыйМассив); + + МассивДокументов.Добавить(СтруктураДокумента); + + OPI_MongoDB.УдалитьКоллекцию(Соединение, Коллекция, База); // SKIP + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("docs", МассивДокументов); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВставитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ВставитьДокументы"); + + МассивДокументов = Новый Массив; + + СоответствиеКатегорий = Новый Соответствие; + СоответствиеКатегорий.Вставить(1, "электроника"); + СоответствиеКатегорий.Вставить(2, "одежда"); + СоответствиеКатегорий.Вставить(3, "книги"); + СоответствиеКатегорий.Вставить(4, "продукты"); + + СоответствиеПоставщиков = Новый Соответствие; + СоответствиеПоставщиков.Вставить(1, "Поставщик А"); + СоответствиеПоставщиков.Вставить(2, "Поставщик Б"); + СоответствиеПоставщиков.Вставить(3, "Поставщик В"); + + Для Н = 1 По 15 Цикл + + СтруктураДокумента = Новый Структура; + + СтруктураДокумента.Вставить("productName", "Товар " + Н); + СтруктураДокумента.Вставить("category" , СоответствиеКатегорий.Получить(Н % 4)); + СтруктураДокумента.Вставить("price" , 50 + (Н * 30)); + СтруктураДокумента.Вставить("quantity" , 5 + (Н % 10)); + СтруктураДокумента.Вставить("rating" , Макс(1, Н % 6)); + СтруктураДокумента.Вставить("inStock" , Н % 3 > 0); + СтруктураДокумента.Вставить("tags" , OPI_ПолучениеДанныхТестов.ПолучитьМассивТегов(Н)); + СтруктураДокумента.Вставить("createdDate", OPI_Инструменты.ПолучитьТекущуюДату() - (Н * 86400)); + + Детали = Новый Структура; + Детали.Вставить("supplier" , СоответствиеПоставщиков.Получить(Н % 3)); + Детали.Вставить("weightKg" , Н * 0.3); + Детали.Вставить("dimensions", Новый Структура("length,width,height", Н * 8, Н * 4, Н * 2)); + СтруктураДокумента.Вставить("details", Детали); + + МассивДокументов.Добавить(СтруктураДокумента); + + КонецЦикла; + + ДокументСНулем = Новый Структура; + ДокументСНулем.Вставить("productName", "Товар с нулевой ценой"); + ДокументСНулем.Вставить("category" , "книги"); + ДокументСНулем.Вставить("price" , 0); + ДокументСНулем.Вставить("quantity" , 1); + ДокументСНулем.Вставить("rating" , 4); + ДокументСНулем.Вставить("inStock" , Истина); + ДокументСНулем.Вставить("tags" , Новый Массив); + МассивДокументов.Добавить(ДокументСНулем); + + ДокументБезКатегории = Новый Структура; + ДокументБезКатегории.Вставить("productName", "Товар без категории"); + ДокументБезКатегории.Вставить("price" , 250); + ДокументБезКатегории.Вставить("quantity" , 3); + ДокументБезКатегории.Вставить("rating" , 3); + ДокументБезКатегории.Вставить("inStock" , Ложь); + МассивДокументов.Добавить(ДокументБезКатегории); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("docs", МассивДокументов); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВставитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ВставитьДокументы"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + // __4 = $ + Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); + Сортировка = Новый Структура("doubleField", -1); + Параметры = Новый Структура("limit", 2); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы"); + + // 1: Category and price range + Фильтр = Новый Структура("category,price", "электроника", Новый Структура("__4gte,__4lte", 100, 400)); + Сортировка = Новый Структура("price", 1); + Параметры = Новый Структура("limit", 5); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 1); + + // 2: Stock and rating + Фильтр = Новый Структура("inStock,rating", Истина, Новый Структура("__4gte", 4)); + Сортировка = Новый Структура("rating,price", -1, 1); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 2); + + // 3: By tags array + Фильтр = Новый Структура("tags", "распродажа"); + Сортировка = Новый Структура("createdDate", -1); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 3); + + // 4: By nested fields + Фильтр = Новый Соответствие; + Фильтр.Вставить("details.supplier", "Поставщик А"); + Фильтр.Вставить("details.weightKg", Новый Структура("__4lt", 3)); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 4); + + // 5: Projection + Фильтр = Новый Структура("category", "книги"); + Сортировка = Новый Структура("price", -1); + Параметры = Новый Структура("projection", Новый Структура("productName,price,rating", 1, 1, 1)); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 5); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьКурсор(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + Фильтр = Новый Структура("stringField", "Текст"); + Сортировка = Новый Структура("doubleField", -1); + Параметры = Новый Структура("limit,batchSize", 2, 1); + + Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьКурсор"); + + // Big batchSize with limit + Фильтр = Новый Структура("inStock", Истина); + Сортировка = Новый Структура("price", 1); + Параметры = Новый Структура("limit,batchSize", 8, 3); + + Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьКурсор", 1); + + // Small batchSize without limit + Фильтр = Новый Структура("category", "одежда"); + Сортировка = Новый Структура("rating", -1); + Параметры = Новый Структура("batchSize", 2); + + Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьКурсор", 2); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьПакетДокументов(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + Фильтр = Новый Структура("stringField", "Текст"); + Сортировка = Новый Структура("doubleField", -1); + Параметры = Новый Структура("limit,batchSize", 2, 1); + + Курсор = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + Если Не Курсор["result"] Тогда + ВызватьИсключение Курсор["error"]; + КонецЕсли; + + Курсор = Курсор["data"]["cursor"]; + МассивДокументов = Курсор["firstBatch"]; + IDКурсора = Курсор["id"]; + ПродолжатьВыборку = IDКурсора > 0; + + Пока ПродолжатьВыборку Цикл + + Результат = OPI_MongoDB.ПолучитьПакетДокументов(Соединение, Коллекция, IDКурсора, База); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + КонецЕсли; + + ПродолжатьВыборку = Результат["data"]["cursor"]["id"] > 0; + + Для Каждого Запись Из Результат["data"]["cursor"]["nextBatch"] Цикл + МассивДокументов.Добавить(Запись); + КонецЦикла; + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПакетДокументов"); + +КонецПроцедуры + +Процедура MongoDB_ОбновитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + // __4 = $ + Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); + Данные = Новый Структура( "__4set", Новый Структура("doubleField", 999)); + + Обновление = OPI_MongoDB.ПолучитьСтруктуруОбновленияДокументов(Фильтр, Данные); // Массив или одиночное + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы"); + + Параметры = Новый Структура("limit,batchSize", 2, 1); + Сортировка = Новый Структура("doubleField", -1); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", "Получение"); + + Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", "Получение новых"); + + // Multiply fields + Фильтр = Новый Структура("category", "электроника"); + Данные = Новый Структура("__4set", Новый Структура("price,inStock,rating", 777, Ложь, 5)); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 1); + + Фильтр = Новый Структура("category", "электроника", "price", 777); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 1"); + + // Number inc + Фильтр = Новый Структура("productName", "Товар 1"); + Данные = Новый Структура("__4inc", Новый Структура("quantity", 10)); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 2); + + Фильтр = Новый Структура("productName", "Товар 1"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 2"); + + // Array insertion + Фильтр = Новый Структура("productName", "Товар 2"); + Данные = Новый Структура("__4push", Новый Структура("tags", "обновленный")); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 3); + + Фильтр = Новый Структура("productName", "Товар 2", "tags", "обновленный"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 3"); + + // Nested field update + СоответствиеУстановки = Новый Соответствие; + СоответствиеУстановки.Вставить("details.weightKg", 2.5); + СоответствиеУстановки.Вставить("details.supplier", "Поставщик А+"); + + Фильтр = Новый Соответствие; + Фильтр.Вставить("details.supplier", "Поставщик А"); + + Данные = Новый Структура("__4set", СоответствиеУстановки); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 4); + + Фильтр = Новый Соответствие; + Фильтр.Вставить("details.supplier", "Поставщик А+"); + Фильтр.Вставить("details.weightKg", 2.5); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 4"); + + // Upsert + Фильтр = Новый Структура("productName", "Новый товар"); + + //@skip-check structure-consructor-too-many-keys + Данные = Новый Структура("__4set", Новый Структура("productName,category,price,quantity,inStock,createdDate" + , "Новый товар" + , "электроника" + , 1999 + , 1 + , Истина + , OPI_Инструменты.ПолучитьТекущуюДату() + )); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Ложь); + Опции.Вставить("upsert", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 5); + + Фильтр = Новый Структура("productName", "Новый товар"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 5"); + + // Field removing + Фильтр = Новый Структура("productName", "Товар 3"); + Данные = Новый Структура("__4unset", Новый Структура("rating", "")); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 6); + + Фильтр = Новый Структура("productName", "Товар 3"); + Параметры = Новый Структура("projection", Новый Структура("productName,rating", 1, 1)); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Неопределено); + Опции.Вставить("params", Параметры); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 6"); + + // Multiply operators + Фильтр = Новый Структура("price", Новый Структура("__4lt", 200)); + Данные = Новый Структура; + Данные.Вставить("__4set", Новый Структура("inStock", Ложь)); + Данные.Вставить("__4inc", Новый Структура("quantity", -5)); + Данные.Вставить("__4push", Новый Структура("tags", "уценка")); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 7); + + Фильтр = Новый Структура("price,tags", Новый Структура("__4lt", 200), "уценка"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 7"); + + // Updates array + МассивОбновлений = Новый Массив; + + Фильтр1 = Новый Структура("category", "электроника"); + Данные1 = Новый Структура("__4set", Новый Структура("price,discounted", 888, Истина)); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр1); + Опции.Вставить("data", Данные1); + Опции.Вставить("multi", Истина); + + Обновление1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление1); + + Фильтр2 = Новый Структура("category", "одежда"); + Данные2 = Новый Структура("__4inc", Новый Структура("quantity", 5)); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр2); + Опции.Вставить("data", Данные2); + Опции.Вставить("multi", Истина); + + Обновление2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление2); + + Фильтр3 = Новый Структура("category", "книги"); + Данные3 = Новый Структура("__4push", Новый Структура("tags", "массовое_обновление")); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр3); + Опции.Вставить("data", Данные3); + Опции.Вставить("multi", Истина); + + Обновление3 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление3); + + Фильтр4 = Новый Структура("productName", "Специальный товар из массива"); + + //@skip-check structure-consructor-too-many-keys + Данные4 = Новый Структура("__4set", Новый Структура("productName,category,price,quantity,inStock,createdDate" + , "Специальный товар из массива" + , "специальная" + , 1111 + , 7 + , Истина + , OPI_Инструменты.ПолучитьТекущуюДату() + )); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр4); + Опции.Вставить("data", Данные4); + Опции.Вставить("multi", Ложь); + Опции.Вставить("upsert", Истина); + + Обновление4 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление4); + + Фильтр5 = Новый Структура("rating", Новый Структура("__4lte", 2)); + Данные5 = Новый Структура; + Данные5.Вставить("__4set", Новый Структура("needsImprovement", Истина)); + Данные5.Вставить("__4inc", Новый Структура("quantity" , -2)); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр5); + Опции.Вставить("data", Данные5); + Опции.Вставить("multi", Истина); + + Обновление5 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление5); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", МассивОбновлений); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 9); + + Фильтр = Новый Структура("category,price", "электроника", 888); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_1"); + + Фильтр = Новый Структура("category,tags", "книги", "массовое_обновление"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_2"); + + Фильтр = Новый Структура("productName", "Специальный товар из массива"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_3"); + + Фильтр = Новый Структура("needsImprovement", Истина); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_4"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСтруктуруОбновленияДокументов(ПараметрыФункции) + + // __4 = $ + Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); + Данные = Новый Структура( "__4set", Новый Структура("doubleField", 999)); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + Опции.Вставить("upsert", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСтруктуруОбновленияДокументов"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСтруктуруУдаленияДокументов(ПараметрыФункции) + + Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); + Результат = OPI_MongoDB.ПолучитьСтруктуруУдаленияДокументов(Фильтр, 1); // Массив или одиночное + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСтруктуруУдаленияДокументов"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); + Удаление = OPI_MongoDB.ПолучитьСтруктуруУдаленияДокументов(Фильтр, 1); // Массив или одиночное + + Результат = OPI_MongoDB.ПолучитьДокументы(Соединение, Коллекция, База, Фильтр); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьДокументы", "Предпроверка"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("deletes", Удаление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьДокументы"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьДокументы", "Проверка"); + +КонецПроцедуры + +Процедура MongoDB_СоздатьПользователя(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("read"); + МассивРолей.Добавить("userAdmin"); + + ИмяПользователя = "newuser"; + ПарольПользователя = "1234"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьПользователя"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьПользователя", "Существующий"); + +КонецПроцедуры + +Процедура MongoDB_ИзменитьПользователя(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("readWrite"); + + ИмяПользователя = "newuser"; + ПарольПользователя = "4321"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ИзменитьПользователя"); + + ИмяПользователя = "anotheruser"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ИзменитьПользователя", "Несуществующий"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьПользователя(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + ИмяПользователя = "newuser"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьПользователя"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьПользователя", "Повторно"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьПользователей(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + ИмяПользователя = "newuser"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("usrs", ИмяПользователя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПользователей", "Простой"); // SKIP + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить(Новый Структура("user,db", "bayselonarrend", "admin")); + МассивПользователей.Добавить(Новый Структура("user,db", "newuser" , "main")); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("usrs", МассивПользователей); + Опции.Вставить("db", База); + Опции.Вставить("spwd", Истина); + Опции.Вставить("sprv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПользователей"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьПользователейБазы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователейБазы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПользователейБазы"); + +КонецПроцедуры + +Процедура MongoDB_СоздатьРоль(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("read"); + МассивРолей.Добавить("userAdmin"); + + Ресурс = Новый Структура("db,collection", База, "new_collection"); + Действия = Новый Массив; + + Действия.Добавить("find"); + Действия.Добавить("insert"); + Действия.Добавить("update"); + + Опции = Новый Структура; + Опции.Вставить("res", Ресурс); + Опции.Вставить("act", Действия); + + Привилегия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); + + МассивПривилегий = Новый Массив; + МассивПривилегий.Добавить(Привилегия); + + ИмяРоли = "newrole"; + + OPI_MongoDB.УдалитьРоль(Соединение, ИмяРоли, База); // SKIP + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + Опции.Вставить("prvl", МассивПривилегий); + Опции.Вставить("roles", МассивРолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьРоль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьРоль"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + Опции.Вставить("prvl", МассивПривилегий); + Опции.Вставить("roles", МассивРолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьРоль", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьРоль", "Существующий"); + +КонецПроцедуры + +Процедура MongoDB_ИзменитьРоль(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("read"); + МассивРолей.Добавить("userAdmin"); + + Ресурс = Новый Структура("db,collection", База, "new_collection2"); + Действия = Новый Массив; + + Действия.Добавить("find"); + Действия.Добавить("insert"); + + Опции = Новый Структура; + Опции.Вставить("res", Ресурс); + Опции.Вставить("act", Действия); + + Привилегия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); + + МассивПривилегий = Новый Массив; + МассивПривилегий.Добавить(Привилегия); + + ИмяРоли = "newrole"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + Опции.Вставить("prvl", МассивПривилегий); + Опции.Вставить("roles", МассивРолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьРоль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ИзменитьРоль"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьРоль(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + ИмяРоли = "newrole"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьРоль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьРоль"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьРоль", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьРоль", "Повторно"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСтруктуруПривилегииРоли(ПараметрыФункции) + + База = ПараметрыФункции["MongoDB_DB"]; + Ресурс = Новый Структура("db,collection", База, "new_collection"); + Действия = Новый Массив; + + Действия.Добавить("find"); + Действия.Добавить("insert"); + Действия.Добавить("update"); + + Опции = Новый Структура; + Опции.Вставить("res", Ресурс); + Опции.Вставить("act", Действия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСтруктуруПривилегииРоли"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьРоли(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Роль = Новый Структура("role,db", "newrole", База); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("roles", Роль); + Опции.Вставить("db", База); + Опции.Вставить("sprv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьРоли"); + +КонецПроцедуры + +Процедура MongoDB_НазначитьРоли(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Пользователь = "bayselonarrend"; + Роль = Новый Структура("role,db", "newrole", База); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("user", Пользователь); + Опции.Вставить("roles", Роль); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "НазначитьРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "НазначитьРоли"); + +КонецПроцедуры + +Процедура MongoDB_СнятьРоли(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Пользователь = "bayselonarrend"; + Роль = Новый Структура("role,db", "newrole", База); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("user", Пользователь); + Опции.Вставить("roles", Роль); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СнятьРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СнятьРоли"); + +КонецПроцедуры + +#КонецОбласти // MongoDB + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure Mongo_CommonMethods() Export + Mongo_ОсновныеМетоды(); +EndProcedure + +Procedure Mong_DatabaseManagement() Export + Mongo_РаботаСБазами(); +EndProcedure + +Procedure Mongo_CollectionManagement() Export + Mongo_РаботаСКоллекциями(); +EndProcedure + +Procedure Mongo_DocumentsManagement() Export + Mongo_РаботаСДокументами(); +EndProcedure + +Procedure Mongo_UserManagement() Export + Mongo_УправлениеПользователями(); +EndProcedure + +Procedure Mongo_RoleManagement() Export + Mongo_УправлениеРолями(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl index 7e7c5975df..e948621726 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_MySQL/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MySQL.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1537 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("MySQL"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("MySQL"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область MySQL + +Процедура MYS_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровMySQL(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + MySQL_СформироватьСтрокуПодключения(ПараметрыТеста); + MySQL_ОткрытьСоединение(ПараметрыТеста); + MySQL_ЗакрытьСоединение(ПараметрыТеста); + MySQL_ЭтоКоннектор(ПараметрыТеста); + MySQL_ВыполнитьЗапросSQL(ПараметрыТеста); + MySQL_ПолучитьНастройкиTLS(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура MYS_ORM() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровMySQL(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + MySQL_СоздатьБазуДанных(ПараметрыТеста); + MySQL_СоздатьТаблицу(ПараметрыТеста); + MySQL_ДобавитьЗаписи(ПараметрыТеста); + MySQL_ГарантироватьЗаписи(ПараметрыТеста); + MySQL_ПолучитьЗаписи(ПараметрыТеста); + MySQL_ОбновитьЗаписи(ПараметрыТеста); + MySQL_УдалитьЗаписи(ПараметрыТеста); + MySQL_ОчиститьТаблицу(ПараметрыТеста); + MySQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + MySQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + MySQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + MySQL_ГарантироватьТаблицу(ПараметрыТеста); + MySQL_УдалитьТаблицу(ПараметрыТеста); + MySQL_УдалитьБазуДанных(ПараметрыТеста); + MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // MySQL + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область MySQL + +Процедура MySQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + // END + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СформироватьСтрокуПодключения"); + +КонецПроцедуры + +Процедура MySQL_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Результат = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + // END + + OPI_MySQL.ЗакрытьСоединение(Результат); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура MySQL_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MySQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура MySQL_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MySQL.ЭтоКоннектор(Соединение); + + OPI_MySQL.ЗакрытьСоединение(Результат); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура MySQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_MySQL.УдалитьТаблицу("users" , Соединение); // SKIP + OPI_MySQL.УдалитьТаблицу("test_data" , Соединение); // SKIP + OPI_MySQL.УдалитьТаблицу("test_table", Соединение); // SKIP + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "MySQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id INT AUTO_INCREMENT PRIMARY KEY, + |name VARCHAR(255), + |age INT, + |salary DOUBLE, + |amount FLOAT, + |type TINYINT UNSIGNED, + |date DATE, + |time TIME, + |data MEDIUMBLOB + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) + |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly")); + МассивПараметров.Добавить(Новый Структура("INT" , 25)); + МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12)); + МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12)); + МассивПараметров.Добавить(Новый Структура("UINT" , 1)); + МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка)); + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + Результат = OPI_MySQL.ВыполнитьЗапросSQL("create table test_data (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Соединение); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Test data"); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql", ФайлSQL); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP + + Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MySQL", "ВыполнитьЗапросSQL", "Закрытие"); // SKIP + +КонецПроцедуры + +Процедура MySQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьБазуДанных"); + + База = "testbase2"; + OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); + + Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MySQL", "СоздатьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьБазуДанных", "Создание"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьБазуДанных", "Существующая"); + + OPI_MySQL.ЗакрытьСоединение(Подключение); + +КонецПроцедуры + +Процедура MySQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("char_field" , "CHAR(5)"); + СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)"); + СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT"); + СтруктураКолонок.Вставить("text_field" , "TEXT"); + СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT"); + СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT"); + СтруктураКолонок.Вставить("tinyint_field" , "TINYINT"); + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT"); + СтруктураКолонок.Вставить("int_field" , "INT"); + СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("float_field" , "FLOAT"); + СтруктураКолонок.Вставить("double_field" , "DOUBLE"); + СтруктураКолонок.Вставить("date_field" , "DATE"); + СтруктураКолонок.Вставить("time_field" , "TIME"); + СтруктураКолонок.Вставить("datetime_field" , "DATETIME"); + СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP"); + СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB"); + СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьТаблицу"); + + Таблица = "АБВ ГДЕ"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьТаблицу", "Ошибка имени"); + + Таблица = "somename"; + СтруктураКолонок.Вставить("wtf_field", "WTF"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьТаблицу", "Ошибка типа"); + +КонецПроцедуры + +Процедура MySQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA")); + СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar")); + СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text")); + СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); + СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text")); + СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text")); + СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127)); + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767)); + СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647)); + СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807)); + СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50)); + СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка)); + СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one")); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивЗаписей); + Опции.Вставить("trn", Истина); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ДобавитьЗаписи"); + +КонецПроцедуры + +Процедура MySQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + // Все записи без отборов + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьЗаписи"); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьЗаписи", "Отборы"); + +КонецПроцедуры + +Процедура MySQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Количество = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Количество, "MySQL", "ОбновитьЗаписи", "Количество"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОбновитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['ip_address']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); + +КонецПроцедуры + +Процедура MySQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Получение = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Получение, "MySQL", "УдалитьЗаписи", "Получение"); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьЗаписи", "Проверка", Остаток); + +КонецПроцедуры + +Процедура MySQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьТаблицу"); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьТаблицу", "Тест"); + +КонецПроцедуры + +Процедура MySQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных"); + + База = "testbase2"; + + Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MySQL", "УдалитьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Удаление"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Ошибка"); + + Закрытие = OPI_MySQL.ЗакрытьСоединение(Подключение); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MySQL", "УдалитьБазуДанных", "Закрытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Ошибка подключения"); + +КонецПроцедуры + +Процедура MySQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура MySQL_ГарантироватьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_merge"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP + СтруктураКолонок.Вставить("age" , "INT"); // SKIP + СтруктураКолонок.Вставить("salary", "DOUBLE"); // SKIP + OPI_MySQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly")); + СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); + СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1000.12)); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); + СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT" , "Lesha")); + СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); + СтруктураСтроки2.Вставить("salary", Новый Структура("DOUBLE", 200.20)); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly Updated")); + СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1500.50)); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); + СтруктураСтроки3.Вставить("name" , Новый Структура("TEXT" , "Anton")); + СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); + СтруктураСтроки3.Вставить("salary", Новый Структура("DOUBLE", 3000.00)); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); + +КонецПроцедуры + +Процедура MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +Процедура MySQL_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура MySQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьИнформациюОТаблице"); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьИнформациюОТаблице", "Ошибка"); + +КонецПроцедуры + +Процедура MySQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + ТипДанных = "MEDIUMTEXT"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MySQL_УдалитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MySQL_ГарантироватьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("double_field" , "DOUBLE"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("custom_field" , "TEXT"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + +КонецПроцедуры + +#КонецОбласти // MySQL + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure MYS_CommonMethods() Export + MYS_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl index 7e7c5975df..c8544f7bae 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Neocities/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Neocities.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,257 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Neocities"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Neocities"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Neocities + +Процедура НС_РаботаСФайлами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Gif" , ПараметрыТеста); + + Neocities_ЗагрузитьФайл(ПараметрыТеста); + Neocities_ЗагрузитьФайлы(ПараметрыТеста); + Neocities_ПолучитьСписокФайлов(ПараметрыТеста); + Neocities_УдалитьВыбранныеФайлы(ПараметрыТеста); + Neocities_СинхронизироватьКаталоги(ПараметрыТеста); + +КонецПроцедуры + +Процедура НС_ПолучениеДанных() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Login" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Password", ПараметрыТеста); + + Neocities_ПолучитьДанныеОСайте(ПараметрыТеста); + Neocities_ПолучитьТокен(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Neocities + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Neocities + +Процедура Neocities_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Данные = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Путь = "testfolder/test_pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("file", Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ЗагрузитьФайл"); + +КонецПроцедуры + +Процедура Neocities_ЗагрузитьФайлы(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + Гифка = ПараметрыФункции["Gif"]; // URL, Путь или Двоичные данные + + СоответствиеФайлов = Новый Соответствие; + СоответствиеФайлов.Вставить("test/pic1.png", Картинка1); + СоответствиеФайлов.Вставить("test/gif.gif" , Картинка2); + СоответствиеФайлов.Вставить("pic2.png" , Гифка); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("files", СоответствиеФайлов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайлы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ЗагрузитьФайлы"); + +КонецПроцедуры + +Процедура Neocities_УдалитьВыбранныеФайлы(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + Пути = Новый Массив; + Пути.Добавить("/test/pic1.png"); + Пути.Добавить("/test/gif.gif"); + Пути.Добавить("/pic2.png"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", Пути); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", "/testfolder"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы", "Каталог 1"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", "/test"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы", "Каталог 2"); + +КонецПроцедуры + +Процедура Neocities_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Путь = "test"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьСписокФайлов"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьСписокФайлов", "Все"); + +КонецПроцедуры + +Процедура Neocities_ПолучитьДанныеОСайте(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Сайт = "2athenaeum"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьДанныеОСайте"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("sitename", Сайт); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьДанныеОСайте", "Сайт"); + +КонецПроцедуры + +Процедура Neocities_ПолучитьТокен(ПараметрыФункции) + + Логин = ПараметрыФункции["NC_Login"]; + Пароль = ПараметрыФункции["NC_Password"]; + + Опции = Новый Структура; + Опции.Вставить("login", Логин); + Опции.Вставить("password", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьТокен", Опции); + + // END + + Результат["api_key"] = "***"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Neocities_СинхронизироватьКаталоги(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + ЛокальныйКаталог = "C:\test_site"; + УдаленныйКаталог = "test_sync"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("local", ЛокальныйКаталог); + Опции.Вставить("remote", УдаленныйКаталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "СинхронизироватьКаталоги", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "СинхронизироватьКаталоги"); + +КонецПроцедуры + +#КонецОбласти // Neocities + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure NC_FilesManagement() Export + НС_РаботаСФайлами(); +EndProcedure + +Procedure NC_DataRetrieving() Export + НС_ПолучениеДанных(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl index 7e7c5975df..168d1a4889 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Notion/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Notion.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,410 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Notion"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Notion"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Notion + +Процедура НоушнАпи_СоздатьСтраницу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + Notion_СоздатьСтраницу(ПараметрыТеста); + Notion_ПолучитьСтраницу(ПараметрыТеста); + Notion_ИзменитьСвойстваСтраницы(ПараметрыТеста); + +КонецПроцедуры + +Процедура НоушнАпи_СоздатьИзменитьБазу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Notion_СоздатьБазуДанных(ПараметрыТеста); + Notion_ИзменитьСвойстваБазы(ПараметрыТеста); + Notion_ПолучитьБазуДанных(ПараметрыТеста); + Notion_СоздатьСтраницуВБазу(ПараметрыТеста); + +КонецПроцедуры + +Процедура НоушнАпи_СоздатьУдалитьБлок() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Block" , ПараметрыТеста); + + Notion_ВернутьБлок(ПараметрыТеста); + Notion_СоздатьБлок(ПараметрыТеста); + Notion_ВернутьДочерниеБлоки(ПараметрыТеста); + Notion_УдалитьБлок(ПараметрыТеста); + +КонецПроцедуры + +Процедура НоушнАпи_ПолучитьПользователей() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_User" , ПараметрыТеста); + + Notion_СписокПользователей(ПараметрыТеста); + Notion_ПолучитьДанныеПользователя(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Notion + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Notion + +Процедура Notion_СоздатьСтраницу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Заголовок = "Тестовый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Родитель); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьСтраницу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Notion_СоздатьБазуДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Заголовок = "Тестовый заголовок"; + + Свойства = Новый Соответствие; + Свойства.Вставить("Имя" , "title"); + Свойства.Вставить("Описание" , "rich_text"); + Свойства.Вставить("Номер" , "number"); + Свойства.Вставить("Дата создания", "date"); + Свойства.Вставить("Картинка" , "files"); + Свойства.Вставить("Активен" , "checkbox"); + Свойства.Вставить("Сайт" , "url"); + Свойства.Вставить("Почта" , "email"); + Свойства.Вставить("Телефон" , "phone_number"); + Свойства.Вставить("Пользователь" , "people"); + + ВыборЗначения = Новый Соответствие; + ВыборЗначения.Вставить("Новый" , "green"); + ВыборЗначения.Вставить("В работе" , "yellow"); + ВыборЗначения.Вставить("Удаленный", "red"); + + Свойства.Вставить("Статус", ВыборЗначения); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Родитель); + Опции.Вставить("title", Заголовок); + Опции.Вставить("props", Свойства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьБазуДанных", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Notion_ИзменитьСвойстваБазы(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + + Заголовок = "Тестовый заголовок"; + Описание = "Тестовое описание"; + + Свойства = Новый Соответствие; + Свойства.Вставить("Почта", "rich_text"); // Тип поля "Почта" будет изменен с email на текст + Свойства.Вставить("Сайт"); // Поле "Сайт" будет удалено + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("props", Свойства); + Опции.Вставить("title", Заголовок); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваБазы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ИзменитьСвойстваБазы"); + +КонецПроцедуры + +Процедура Notion_ПолучитьСтраницу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Страница = ПараметрыФункции["Notion_Page"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Страница); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьСтраницу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ПолучитьСтраницу"); + +КонецПроцедуры + +Процедура Notion_ПолучитьБазуДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ПолучитьБазуДанных"); + +КонецПроцедуры + +Процедура Notion_СоздатьСтраницуВБазу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + Картинка_ = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + + Картинка = Новый Соответствие; + Картинка.Вставить("Лого", Картинка_); + + Свойства = Новый Соответствие; + Свойства.Вставить("Имя" , "ООО Вектор"); + Свойства.Вставить("Описание" , "Наш первый клиент"); + Свойства.Вставить("Номер" , 1); + Свойства.Вставить("Дата создания", OPI_Инструменты.ПолучитьТекущуюДату()); + Свойства.Вставить("Картинка" , Картинка); + Свойства.Вставить("Активен" , Истина); + Свойства.Вставить("Сайт" , "https://vector.ru"); + Свойства.Вставить("Почта" , "mail@vector.ru"); + Свойства.Вставить("Телефон" , "88005553535"); + Свойства.Вставить("Статус" , "Новый"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("data", Свойства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницуВБазу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьСтраницуВБазу", , База); + +КонецПроцедуры + +Процедура Notion_ИзменитьСвойстваСтраницы(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Страница = ПараметрыФункции["Notion_Page"]; + Иконка = ПараметрыФункции["Picture"]; + Обложка = ПараметрыФункции["Picture2"]; + Архивировать = Ложь; + + Свойства = Новый Соответствие; + Свойства.Вставить("Активен", Ложь); + Свойства.Вставить("Почта" , "vector@mail.ru"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Страница); + Опции.Вставить("data", Свойства); + Опции.Вставить("icon", Иконка); + Опции.Вставить("cover", Обложка); + Опции.Вставить("archive", Архивировать); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваСтраницы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ИзменитьСвойстваСтраницы"); + +КонецПроцедуры + +Процедура Notion_ВернутьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_Block"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ВернутьБлок"); + +КонецПроцедуры + +Процедура Notion_СоздатьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Блок = ПараметрыФункции["Notion_Block"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + ДанныеБлока = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Родитель); + Опции.Вставить("block", ДанныеБлока); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБлок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьБлок", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Notion_ВернутьДочерниеБлоки(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_NewBlock"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьДочерниеБлоки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ВернутьДочерниеБлоки"); + +КонецПроцедуры + +Процедура Notion_УдалитьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_NewBlock"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "УдалитьБлок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "УдалитьБлок"); + +КонецПроцедуры + +Процедура Notion_СписокПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СписокПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СписокПользователей"); + +КонецПроцедуры + +Процедура Notion_ПолучитьДанныеПользователя(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Пользователь = ПараметрыФункции["Notion_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("user", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьДанныеПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ПолучитьДанныеПользователя"); + +КонецПроцедуры + +#КонецОбласти // Notion + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure NotionAPI_CreatePage() Export + НоушнАпи_СоздатьСтраницу(); +EndProcedure + +Procedure NotionAPI_CreateUpdateBase() Export + НоушнАпи_СоздатьИзменитьБазу(); +EndProcedure + +Procedure NotionAPI_CreateDeleteBlock() Export + НоушнАпи_СоздатьУдалитьБлок(); +EndProcedure + +Procedure NotionAPI_GetUsers() Export + НоушнАпи_ПолучитьПользователей(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl index 7e7c5975df..843997d956 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Ollama/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Ollama.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,752 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Ollama"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Ollama"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Ollama + +Процедура OLLM_ОбработкаЗапросов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + + Ollama_СкачатьМодель(ПараметрыТеста); + Ollama_ПолучитьВерсию(ПараметрыТеста); + Ollama_ПолучитьОтвет(ПараметрыТеста); + Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста); + Ollama_ПолучитьПредставления(ПараметрыТеста); + Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыТеста); + Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыТеста); + Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыТеста); + Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыТеста); + +КонецПроцедуры + +Процедура OLLM_РаботаСМоделями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + + Ollama_СкачатьМодель(ПараметрыТеста); + Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста); + Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста); + Ollama_СоздатьМодель(ПараметрыТеста); + Ollama_ПолучитьИнформациюОМодели(ПараметрыТеста); + Ollama_ПолучитьСписокМоделей(ПараметрыТеста); + Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыТеста); + Ollama_КопироватьМодель(ПараметрыТеста); + Ollama_ОтправитьМодель(ПараметрыТеста); + Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыТеста); + Ollama_УдалитьМодель(ПараметрыТеста); + +КонецПроцедуры + +Процедура OLLM_РаботаСBlob() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Ollama_ОтправитьBlob(ПараметрыТеста); + Ollama_ПроверитьBlob(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Ollama + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Ollama + +Процедура Ollama_ПолучитьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Промпт = "What is 1C:Enterprise?"; + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("prompt", Промпт); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтвет"); // SKIP + + // С параметрами + + Промпт = "Ollama is 22 years old and is busy saving the world. Respond using JSON"; + + Формат = OPI_Инструменты.JSONВСтруктуру(" + |{ + |""type"": ""object"", + |""properties"": { + | ""age"": { + | ""type"": ""integer"" + | }, + | ""available"": { + | ""type"": ""boolean"" + | } + |}, + |""required"": [ + | ""age"", + | ""available"" + |] + |}"); + + ДопПараметры = Новый Структура("format", Формат); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("prompt", Промпт); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтвет", "Параметры"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьОтветВКонтексте(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Модель = "tinyllama"; + + МассивСообщений = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Вопрос1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); + Вопрос2 = OPI_Ollama.ПолучитьСтруктуруСообщенияКонтекста("user", "When the first version was released?"); // Вопрос без конкретики + + // Добавляем первый вопрос в контекст + МассивСообщений.Добавить(Вопрос1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("headers", ДопЗаголовки); + + Ответ1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Ответ1, "Ollama", "ПолучитьОтветВКонтексте", "Предварительный"); // SKIP + + МассивСообщений.Добавить(Ответ1["message"]); // Добавляем ответ на первый вопрос в контекст + МассивСообщений.Добавить(Вопрос2); // Добавляем второй вопрос в контекст + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("headers", ДопЗаголовки); + + Ответ2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + МассивСообщений.Добавить(Ответ2["message"]); + + // ... + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Ответ2, "Ollama", "ПолучитьОтветВКонтексте"); + + МассивСообщений = Новый Массив; + + Вопрос = Новый Структура("role,content", "user", "Hello!"); + МассивСообщений.Добавить(Вопрос); + + Опции = Новый Структура("seed,temperature", 101, 0); + ДопПараметры = Новый Структура("options", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 1"); + + Сообщение1 = Результат["message"]["content"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 2"); + + Сообщение2 = Результат["message"]["content"]; + + Опции = Новый Структура("seed,temperature", 555, 10); + ДопПараметры = Новый Структура("options", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 3"); + + Сообщение3 = Результат["message"]["content"]; + + OPI_ПолучениеДанныхТестов.Обработать(Сообщение3, "Ollama", "ПолучитьОтветВКонтексте", "Сравнение", Сообщение1, Сообщение2, Сообщение3); + +КонецПроцедуры + +Процедура Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + Период = 500; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("keep", Период); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ЗагрузитьМодельВПамять", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ЗагрузитьМодельВПамять"); + +КонецПроцедуры + +Процедура Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ВыгрузитьМодельИзПамяти", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ВыгрузитьМодельИзПамяти"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровЗапроса"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровЗапроса", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровВКонтексте"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровВКонтексте", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "Hello!"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруСообщенияКонтекста"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруНастроекМодели"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруНастроекМодели", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_СоздатьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Настройки = Новый Структура("from,system", "tinyllama", "You are Mario from Super Mario Bros."); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("settings", Настройки); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СоздатьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СоздатьМодель"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("prompt", "How are you?"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СоздатьМодель", "Запрос"); + +КонецПроцедуры + +Процедура Ollama_УдалитьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", "library/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель", "Tiny"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", "bayselonarrend/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель", "Tiny, аккаунт"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель", "Список"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСписокМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСписокМоделей"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокЗапущенныхМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСписокЗапущенныхМоделей"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьИнформациюОМодели(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("verbose", Ложь); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьИнформациюОМодели", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьИнформациюОМодели"); + +КонецПроцедуры + +Процедура Ollama_КопироватьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + Имя = "mario2"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("name", Имя); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "КопироватьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "КопироватьМодель"); + + OPI_Ollama.УдалитьМодель(URL, Имя, ДопЗаголовки); + +КонецПроцедуры + +Процедура Ollama_ПолучитьВерсию(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьВерсию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьВерсию"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьПредставления(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("Why is the sky blue?"); + МассивСтрок.Добавить("Why is the grass green?"); + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("input", МассивСтрок); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьПредставления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьПредставления"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровПредставлений"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровПредставлений", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_ОтправитьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "bayselonarrend/tinyllama:latest"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ОтправитьМодель"); + +КонецПроцедуры + +Процедура Ollama_СкачатьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СкачатьМодель"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", "bayselonarrend/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СкачатьМодель", "Аккаунт"); + +КонецПроцедуры + +Процедура Ollama_ОтправитьBlob(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка, Истина); // SKIP + Рандом = ПолучитьДвоичныеДанныеИзСтроки(Строка(Новый УникальныйИдентификатор)); // SKIP + Картинка = OPI_Инструменты.СклеитьДанные(Картинка, Рандом); // SKIP + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("data", Картинка); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьBlob", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ОтправитьBlob", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Ollama_ПроверитьBlob(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + SHA256 = ПараметрыФункции["Ollama_Blob"]; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("digest", SHA256); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПроверитьBlob"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("digest", "yoyoyo"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПроверитьBlob", "Ошибка"); + +КонецПроцедуры + +#КонецОбласти // Ollama + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure OLLM_RequestsProcessing() Export + OLLM_ОбработкаЗапросов(); +EndProcedure + +Procedure OLLM_ModelsManagement() Export + OLLM_РаботаСМоделями(); +EndProcedure + +Procedure OLLM_WorkingWithBlob() Export + OLLM_РаботаСBlob(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl index 7e7c5975df..f1f9a6fdad 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_OpenAI/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_OpenAI.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,616 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("OpenAI"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("OpenAI"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область OpenAI + +Процедура OAI_ОбработкаЗапросов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_File" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + OpenAI_ПолучитьОтвет(ПараметрыТеста); + OpenAI_ПолучитьПредставления(ПараметрыТеста); + OpenAI_ПолучитьСтруктуруСообщения(ПараметрыТеста); + OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыТеста); + OpenAI_ПолучитьКартинки(ПараметрыТеста); + OpenAI_ПолучитьСообщениеАссистента(ПараметрыТеста); + OpenAI_ПолучитьСообщениеПользователя(ПараметрыТеста); + OpenAI_ПолучитьСообщениеСистемы(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_Ассистенты() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_СоздатьАссистента(ПараметрыТеста); + OpenAI_ПолучитьАссистента(ПараметрыТеста); + OpenAI_ПолучитьСписокАссистентов(ПараметрыТеста); + OpenAI_УдалитьАссистента(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_РаботаСФайлами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + OpenAI_ЗагрузитьФайл(ПараметрыТеста); + OpenAI_ПолучитьИнформациюОФайле(ПараметрыТеста); + OpenAI_ПолучитьСписокФайлов(ПараметрыТеста); + OpenAI_СкачатьФайл(ПараметрыТеста); + OpenAI_УдалитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_РаботаСАудио() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_СгенерироватьРечь(ПараметрыТеста); + OpenAI_СоздатьТранскрипцию(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_РаботаСМоделями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_ПолучитьСписокМоделей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // OpenAI + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область OpenAI + +Процедура OpenAI_ПолучитьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + // Текстовые сообщения + + Сообщения = Новый Массив; + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "What is 1C:Enterprise?")); + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("assistant", "1C:Enterprise is a full-stack, low-code platform")); + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "When the first version was released?")); + + Модель = "smolvlm-256m-instruct"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", Сообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьОтвет"); // SKIP + + // Картинки + + Модель = "moondream2-20250414"; + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор())); + Назначение = "user_data"; + + Сообщения = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", ИмяФайла); + Опции.Вставить("data", Файл); + Опции.Вставить("purpose", Назначение); + + ЗагрузкаКартинки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(ЗагрузкаКартинки, "OpenAI", "ПолучитьОтвет", "Загрузка картинки"); // SKIP + + IDКартинки = ЗагрузкаКартинки["id"]; + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("file", IDКартинки); + Опции.Вставить("prompt", "What is in this image?"); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции); + + Сообщения.Добавить(Описание); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", Сообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьОтвет", Опции); + + OPI_OpenAI.УдалитьФайл(URL, Токен, IDКартинки); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьОтвет", "Картинка"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьПредставления(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Текст = "What is 1C:Enterprise?"; + Модель = "arcee-ai_afm-4.5b"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("input", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьПредставления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьПредставления"); + +КонецПроцедуры + +Процедура OpenAI_СоздатьАссистента(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Инструкция = "You are a personal math tutor. When asked a question, write and run Python code to answer the question."; + Модель = "smolvlm-256m-instruct"; + Имя = "Math tutor"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("name", Имя); + Опции.Вставить("inst", Инструкция); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьАссистента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СоздатьАссистента", , ПараметрыФункции); + +КонецПроцедуры + +Процедура OpenAI_УдалитьАссистента(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDАссистента = ПараметрыФункции["OpenAI_Assistant"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDАссистента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "УдалитьАссистента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "УдалитьАссистента", , IDАссистента); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьАссистента(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDАссистента = ПараметрыФункции["OpenAI_Assistant"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDАссистента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьАссистента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьАссистента"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСписокАссистентов(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Количество = 2; + ДопПараметры = Новый Структура("after,order", "asst_2", "desc"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("limit", Количество); + Опции.Вставить("options", ДопПараметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокАссистентов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСписокАссистентов"); + +КонецПроцедуры + +Процедура OpenAI_ЗагрузитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор())); + Назначение = "assistants"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", ИмяФайла); + Опции.Вставить("data", Файл); + Опции.Вставить("purpose", Назначение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ЗагрузитьФайл", , ПараметрыФункции, ИмяФайла, Файл.Размер() + 2); + +КонецПроцедуры + +Процедура OpenAI_УдалитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDФайла = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "УдалитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "УдалитьФайл", , IDФайла); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьИнформациюОФайле(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDФайла = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьИнформациюОФайле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьИнформациюОФайле"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСписокФайлов(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСписокФайлов"); + +КонецПроцедуры + +Процедура OpenAI_СкачатьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDФайла = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СкачатьФайл", , ПараметрыФункции); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСтруктуруСообщения(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСтруктуруСообщения"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + Картинка = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("file", Картинка); + Опции.Вставить("prompt", "What is in this image?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСтруктуруСообщенияКартинки"); + +КонецПроцедуры + +Процедура OpenAI_СгенерироватьРечь(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Текст = "Attack ships on fire off the shoulder of Orion bright as magnesium"; + Модель = "bark-cpp-small"; + + ДопПараметры = Новый Структура("response_format", "wav"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("input", Текст); + Опции.Вставить("options", ДопПараметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СгенерироватьРечь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СгенерироватьРечь", , ПараметрыФункции); + +КонецПроцедуры + +Процедура OpenAI_СоздатьТранскрипцию(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Аудио = ПараметрыФункции["OpenAI_Speech"]; + Модель = "whisper-1"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("audio", Аудио); + Опции.Вставить("type", "audio/wav"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьТранскрипцию", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(Аудио, "Не удалось удалить временный файл после теста!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СоздатьТранскрипцию"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьКартинки(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Модель = "sd-1.5-ggml"; + Опции = Новый Структура; + Опции.Вставить("prompt", "Yellow alpaca"); + Опции.Вставить("amount", 1); + Опции.Вставить("size", "64x64"); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруОписанияКартинок", Опции); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("descr", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьКартинки"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСписокМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСписокМоделей"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСообщениеАссистента(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеАссистента", Опции); + + // END + + Опции = Новый Структура; + Опции.Вставить("role", "assistant"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + Проверка = OPI_Инструменты.JSONСтрокой(Проверка); + Результат = OPI_Инструменты.JSONСтрокой(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСообщениеАссистента", , Проверка); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСообщениеПользователя(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text", "What is 1C:Enterprise?"); + Опции.Вставить("name", "Vitaly"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеПользователя", Опции); + + // END + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + Опции.Вставить("name", "Vitaly"); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + Проверка = OPI_Инструменты.JSONСтрокой(Проверка); + Результат = OPI_Инструменты.JSONСтрокой(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСообщениеПользователя", , Проверка); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСообщениеСистемы(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеСистемы", Опции); + + // END + + Опции = Новый Структура; + Опции.Вставить("role", "system"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + Проверка = OPI_Инструменты.JSONСтрокой(Проверка); + Результат = OPI_Инструменты.JSONСтрокой(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСообщениеСистемы", , Проверка); + +КонецПроцедуры + +#КонецОбласти // OpenAI + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure OAI_RequestsProcessing() Export + OAI_ОбработкаЗапросов(); +EndProcedure + +Procedure OAI_Assistants() Export + OAI_Ассистенты(); +EndProcedure + +Procedure OAI_FileManagement() Export + OAI_РаботаСФайлами(); +EndProcedure + +Procedure OAI_AudioProcessing() Export + OAI_РаботаСАудио(); +EndProcedure + +Procedure OAI_ModelsManagement() Export + OAI_РаботаСМоделями(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl index 7e7c5975df..a73626f33f 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_PostgreSQL/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_PostgreSQL.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1606 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("PostgreSQL"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("PostgreSQL"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область PostgreSQL + +Процедура Postgres_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровPostgres(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + PostgreSQL_СформироватьСтрокуПодключения(ПараметрыТеста); + PostgreSQL_ОткрытьСоединение(ПараметрыТеста); + PostgreSQL_ЗакрытьСоединение(ПараметрыТеста); + PostgreSQL_ЭтоКоннектор(ПараметрыТеста); + PostgreSQL_ВыполнитьЗапросSQL(ПараметрыТеста); + PostgreSQL_ПолучитьНастройкиTLS(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура Postgres_ORM() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровPostgres(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + PostgreSQL_СоздатьБазуДанных(ПараметрыТеста); + PostgreSQL_СоздатьТаблицу(ПараметрыТеста); + PostgreSQL_ДобавитьЗаписи(ПараметрыТеста); + PostgreSQL_ГарантироватьЗаписи(ПараметрыТеста); + PostgreSQL_ПолучитьЗаписи(ПараметрыТеста); + PostgreSQL_ОбновитьЗаписи(ПараметрыТеста); + PostgreSQL_УдалитьЗаписи(ПараметрыТеста); + PostgreSQL_ОчиститьТаблицу(ПараметрыТеста); + PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + PostgreSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + PostgreSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + PostgreSQL_ГарантироватьТаблицу(ПараметрыТеста); + PostgreSQL_УдалитьТаблицу(ПараметрыТеста); + PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста); + PostgreSQL_УдалитьБазуДанных(ПараметрыТеста); + PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // PostgreSQL + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область PostgreSQL + +Процедура PostgreSQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + // END + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СформироватьСтрокуПодключения"); + +КонецПроцедуры + +Процедура PostgreSQL_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Результат = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + // END + + OPI_PostgreSQL.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура PostgreSQL_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_PostgreSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура PostgreSQL_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_PostgreSQL.ЭтоКоннектор(Соединение); + + OPI_PostgreSQL.ЗакрытьСоединение(Результат); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура PostgreSQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_PostgreSQL.УдалитьТаблицу("users" , Соединение); // SKIP + OPI_PostgreSQL.УдалитьТаблицу("test_data" , Соединение); // SKIP + OPI_PostgreSQL.УдалитьТаблицу("test_table", Соединение); // SKIP + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "PostgreSQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id SERIAL PRIMARY KEY, + |name NAME, + |age INT, + |salary REAL, + |is_active BOOL, + |created_at DATE, + |data BYTEA + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES ($1, $2, $3, $4, $5, $6);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly")); + МассивПараметров.Добавить(Новый Структура("INT" , 25)); + МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12)); + МассивПараметров.Добавить(Новый Структура("BOOL" , Истина)); + МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("BYTEA", Картинка)); + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + // DO + Транзакция + + ТекстЗапроса = "DO $$ + |BEGIN + | CREATE TABLE users ( + | id SMALLSERIAL, + | name TEXT NOT NULL, + | age INT NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + |END $$ LANGUAGE plpgsql;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Transaction"); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql", ФайлSQL); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP + + Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Закрытие"); + +КонецПроцедуры + +Процедура PostgreSQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + Удаление = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP + OPI_ПолучениеДанныхТестов.ВывестиСлужебнуюИнформацию(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных"); + + Подключение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "PostgreSQL", "СоздатьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных", "Существующая"); + + База = "testbase2"; + + OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных", "Новая"); + + OPI_PostgreSQL.ЗакрытьСоединение(Подключение); + +КонецПроцедуры + +Процедура PostgreSQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("bool_field" , "BOOL"); + СтруктураКолонок.Вставить("oldchar_field" , """char"""); + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("smallserial_field", "SMALLSERIAL"); + СтруктураКолонок.Вставить("int_field" , "INT"); + СтруктураКолонок.Вставить("serial_field" , "SERIAL"); + СтруктураКолонок.Вставить("oid_field" , "OID"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("bigserial_field" , "BIGSERIAL"); + СтруктураКолонок.Вставить("real_field" , "REAL"); + СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION"); + СтруктураКолонок.Вставить("text_field" , "TEXT"); + СтруктураКолонок.Вставить("varchar_field" , "VARCHAR"); + СтруктураКолонок.Вставить("charn_field" , "CHAR(3)"); + СтруктураКолонок.Вставить("char_field" , "CHAR"); + СтруктураКолонок.Вставить("name_field" , "NAME"); + СтруктураКолонок.Вставить("bytea_field" , "BYTEA"); + СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP"); + СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); + СтруктураКолонок.Вставить("ip_field" , "INET"); + СтруктураКолонок.Вставить("json_field" , "JSON"); + СтруктураКолонок.Вставить("jsonb_field" , "JSONB"); + СтруктураКолонок.Вставить("date_field" , "DATE"); + СтруктураКолонок.Вставить("time_field" , "TIME"); + СтруктураКолонок.Вставить("uuid_field" , "UUID"); + СтруктураКолонок.Вставить("numeric_field" , "NUMERIC(15, 2)"); + + OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьТаблицу"); + + Таблица = "АБВ ГДЕ"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка имени"); + + Таблица = "somename"; + СтруктураКолонок.Вставить("wtf_field", "WTF"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка типа"); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьИнформациюОТаблице"); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьИнформациюОТаблице", "Ошибка"); + +КонецПроцедуры + +Процедура PostgreSQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина)); + СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char" + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 5)); + СтруктураЗаписи.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 6)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100)); + СтруктураЗаписи.Вставить("serial_field" , Новый Структура("SERIAL" , 100)); + СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999)); + СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999)); + СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2)); + СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0002)); // или DOUBLE PRECISION + СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); + СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar")); + СтруктураЗаписи.Вставить("charn_field" , Новый Структура("CHAR" , "AAA")); + СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A")); + СтруктураЗаписи.Вставить("name_field" , Новый Структура("NAME" , "Vitaly")); + СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка)); + СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , ТекущаяДата)); + СтруктураЗаписи.Вставить("tswtz_field" , Новый Структура("TIMESTAMP_WITH_TIME_ZONE", ТекущаяДатаЧП)); // или TIMESTAMP WITH TIME ZONE + СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1")); + СтруктураЗаписи.Вставить("json_field" , Новый Структура("JSON" , СлучайнаяСтруктура)); + СтруктураЗаписи.Вставить("jsonb_field" , Новый Структура("JSONB" , СлучайнаяСтруктура)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор)); + СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , "15.2")); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивЗаписей); + Опции.Вставить("trn", Истина); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ДобавитьЗаписи"); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + // Все записи без отборов + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьЗаписи"); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьЗаписи", "Отборы"); + +КонецПроцедуры + +Процедура PostgreSQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Количество = OPI_PostgreSQl.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Количество, "PostgreSQL", "ОбновитьЗаписи", "Количество"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Результат = OPI_PostgreSQl.ОбновитьЗаписи(Таблица + , СтруктураПолей + , СтруктураФильтра + , СтрокаПодключения + , НастройкиTLS); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОбновитьЗаписи"); + + Проверка = OPI_PostgreSQl.ПолучитьЗаписи(Таблица, "['ip_address']", Фильтры, , , СтрокаПодключения); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Получение = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Получение, "PostgreSQL", "УдалитьЗаписи", "Получение"); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьЗаписи", "Проверка", Остаток); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьТаблицу"); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьТаблицу", "Тест"); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных"); + + База = "testbase2"; + + Подключение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "PostgreSQL", "УдалитьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Отключение"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Удаление"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Ошибка"); + + Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Подключение); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "PostgreSQL", "УдалитьБазуДанных", "Закрытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Ошибка подключения"); + +КонецПроцедуры + +Процедура PostgreSQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОтключитьВсеСоединенияБазыДанных"); + +КонецПроцедуры + +Процедура PostgreSQL_ГарантироватьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_merge"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP + СтруктураКолонок.Вставить("age" , "INT"); // SKIP + СтруктураКолонок.Вставить("salary", "REAL"); // SKIP + OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT", "Vitaly")); + СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); + СтруктураСтроки1.Вставить("salary", Новый Структура("REAL", 1000.12)); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); + СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT", "Lesha")); + СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); + СтруктураСтроки2.Вставить("salary", Новый Структура("REAL", 200.20)); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT", "Vitaly Updated")); + СтруктураСтроки1.Вставить("salary", Новый Структура("REAL", 1500.50)); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); + СтруктураСтроки3.Вставить("name" , Новый Структура("TEXT", "Anton")); + СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); + СтруктураСтроки3.Вставить("salary", Новый Структура("REAL", 3000.00)); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура PostgreSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + ТипДанных = "TEXT"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура PostgreSQL_ГарантироватьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("uuid_field" , "uuid"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("custom_field" , "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + +КонецПроцедуры + +#КонецОбласти // PostgreSQL + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure Postgres_CommonMethods() Export + Postgres_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl index 7e7c5975df..37dce4c995 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_RCON/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RCON.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,174 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("RCON"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("RCON"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область RCON + +Процедура RC_ВыполнениеКоманд() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_Password", ПараметрыТеста); + + RCON_СформироватьПараметрыСоединения(ПараметрыТеста); + RCON_ОткрытьСоединение(ПараметрыТеста); + RCON_ВыполнитьКоманду(ПараметрыТеста); + RCON_ЭтоКоннектор(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // RCON + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область RCON + +Процедура RCON_СформироватьПараметрыСоединения(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "СформироватьПараметрыСоединения"); + +КонецПроцедуры + +Процедура RCON_ОткрытьСоединение(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + Результат = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура RCON_ВыполнитьКоманду(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + Соединение = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); + + Команда = "list"; + Опции = Новый Структура; + Опции.Вставить("exec", Команда); + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ВыполнитьКоманду"); + + Команда = "list"; + Опции = Новый Структура; + Опции.Вставить("exec", Команда); + Опции.Вставить("conn", ПараметрыСоединения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ВыполнитьКоманду", "Без соединения"); + +КонецПроцедуры + +Процедура RCON_ЭтоКоннектор(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + Соединение = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); + Результат = OPI_RCON.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ЭтоКоннектор"); + +КонецПроцедуры + +#КонецОбласти // RCON + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure RC_CommandsExecution() Export + RC_ВыполнениеКоманд(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl index 7e7c5975df..b28b6ef2f5 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_RSS/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RSS.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,269 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("RSS"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("RSS"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область RSS + +Процедура RSS_МетодыRSS() Экспорт + + ПараметрыТеста = Новый Структура; + + RSS_СоздатьФидRSS(ПараметрыТеста); + RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыТеста); + RSS_РазобратьФидRSS(ПараметрыТеста); + +КонецПроцедуры + +Процедура RSS_МетодыAtom() Экспорт + + ПараметрыТеста = Новый Структура; + + RSS_СоздатьФидAtom(ПараметрыТеста); + RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыТеста); + RSS_РазобратьФидAtom(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // RSS + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область RSS + +Процедура RSS_СоздатьФидRSS(ПараметрыФункции) + + НазваниеКанала = "Тестовый RSS канал"; + ОписаниеКанала = "Описание тестового RSS канала"; + СсылкаКанала = "https://example.com"; + + МассивЭлементов = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + СтруктураЭлемента["title"] = "Первый элемент"; + СтруктураЭлемента["description"] = "Описание первого элемента"; + СтруктураЭлемента["link"] = "https://example.com/item1"; + СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["author"] = "test@example.com"; + СтруктураЭлемента["guid"] = "item-1"; + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + СтруктураЭлемента["title"] = "Второй элемент"; + СтруктураЭлемента["description"] = "Описание второго элемента"; + СтруктураЭлемента["link"] = "https://example.com/item2"; + СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["author"] = "test@example.com"; + СтруктураЭлемента["guid"] = "item-2"; + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("name", НазваниеКанала); + Опции.Вставить("descr", ОписаниеКанала); + Опции.Вставить("link", СсылкаКанала); + Опции.Вставить("items", МассивЭлементов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "СоздатьФидRSS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "СоздатьФидRSS", , ПараметрыФункции); + +КонецПроцедуры + +Процедура RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Пустая"); + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + Опции.Вставить("map", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Соответствие"); + +КонецПроцедуры + +Процедура RSS_РазобратьФидRSS(ПараметрыФункции) + + ФидXML = ПараметрыФункции["RSS_FeedXML"]; + + Опции = Новый Структура; + Опции.Вставить("xml", ФидXML); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "РазобратьФидRSS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "РазобратьФидRSS"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФидXML, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура RSS_СоздатьФидAtom(ПараметрыФункции) + + НазваниеФида = "Тестовый Atom фид"; + СсылкаФида = "https://example.com"; + IDФида = "https://example.com/feed"; + + МассивЭлементов = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + СтруктураЭлемента["title"] = "Первая запись"; + СтруктураЭлемента["id"] = "https://example.com/entry1"; + СтруктураЭлемента["link"] = "https://example.com/entry1"; + СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["summary"] = "Краткое описание первой записи"; + СтруктураЭлемента["content"] = "Полное содержимое первой записи"; + СтруктураЭлемента["author"] = "Автор Первый"; + СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату(); + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + СтруктураЭлемента["title"] = "Вторая запись"; + СтруктураЭлемента["id"] = "https://example.com/entry2"; + СтруктураЭлемента["link"] = "https://example.com/entry2"; + СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["summary"] = "Краткое описание второй записи"; + СтруктураЭлемента["content"] = "Полное содержимое второй записи"; + СтруктураЭлемента["author"] = "Автор Второй"; + СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату(); + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("name", НазваниеФида); + Опции.Вставить("link", СсылкаФида); + Опции.Вставить("id", IDФида); + Опции.Вставить("items", МассивЭлементов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "СоздатьФидAtom", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "СоздатьФидAtom", , ПараметрыФункции); + +КонецПроцедуры + +Процедура RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Пустая"); + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + Опции.Вставить("map", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Соответствие"); + +КонецПроцедуры + +Процедура RSS_РазобратьФидAtom(ПараметрыФункции) + + ФидXML = ПараметрыФункции["RSS_AtomFeedXML"]; + + Опции = Новый Структура; + Опции.Вставить("xml", ФидXML); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "РазобратьФидAtom", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "РазобратьФидAtom"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФидXML, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +#КонецОбласти // RSS + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure RSS_RSSMethods() Export + RSS_МетодыRSS(); +EndProcedure + +Procedure RSS_AtomMethods() Export + RSS_МетодыAtom(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl index 7e7c5975df..49792d4f91 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_ReportPortal/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ReportPortal.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1016 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("ReportPortal"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("ReportPortal"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область ReportPortal + +Процедура RPortal_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_Login" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_UserID" , ПараметрыТеста); + + ReportPortal_ПолучитьВременныйТокен(ПараметрыТеста); + ReportPortal_ПолучитьПостоянныйТокен(ПараметрыТеста); + ReportPortal_УдалитьПостоянныйТокен(ПараметрыТеста); + ReportPortal_ПолучитьТокеныПользователя(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_УправлениеТестами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьЗапуск(ПараметрыТеста); + ReportPortal_ПолучитьЗапуск(ПараметрыТеста); + ReportPortal_ПолучитьЭлементыЗапуска(ПараметрыТеста); + ReportPortal_ИзменитьЗапуск(ПараметрыТеста); + ReportPortal_СоздатьЭлемент(ПараметрыТеста); + ReportPortal_ПолучитьЭлемент(ПараметрыТеста); + ReportPortal_ПолучитьЛогиЭлемента(ПараметрыТеста); + ReportPortal_ИзменитьЭлемент(ПараметрыТеста); + ReportPortal_ЗавершитьЭлемент(ПараметрыТеста); + ReportPortal_ЗавершитьЗапуск(ПараметрыТеста); + ReportPortal_УдалитьЭлемент(ПараметрыТеста); + ReportPortal_ПолучитьОтчетЗапуска(ПараметрыТеста); + ReportPortal_УдалитьЗапуск(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЗапуска(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЭлемента(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЗавершенияЭлемента(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЗавершенияЗапуска(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_ЗаписьЛогов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьЗапуск(ПараметрыТеста); + ReportPortal_СоздатьЭлемент(ПараметрыТеста); + + ReportPortal_ЗаписатьЛог(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЛога(ПараметрыТеста); + ReportPortal_ПолучитьЛог(ПараметрыТеста); + ReportPortal_УдалитьЛог(ПараметрыТеста); + + ReportPortal_ЗавершитьЭлемент(ПараметрыТеста); + ReportPortal_ЗавершитьЗапуск(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_УправлениеПроектами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьПроект(ПараметрыТеста); + ReportPortal_ПолучитьПроект(ПараметрыТеста); + ReportPortal_ПолучитьПроекты(ПараметрыТеста); + ReportPortal_ДобавитьПользователейВПроект(ПараметрыТеста); + ReportPortal_ИсключитьПользователейИзПроекта(ПараметрыТеста); + ReportPortal_УдалитьПроект(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьПользователя(ПараметрыТеста); + ReportPortal_ПолучитьТекущегоПользователя(ПараметрыТеста); + ReportPortal_ПолучитьПользователя(ПараметрыТеста); + ReportPortal_ПолучитьПользователей(ПараметрыТеста); + ReportPortal_ПолучитьПроектыПользователя(ПараметрыТеста); + ReportPortal_ИзменитьПользователя(ПараметрыТеста); + ReportPortal_УдалитьПользователя(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруПользователя(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // ReportPortal + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область ReportPortal + +Процедура ReportPortal_ПолучитьВременныйТокен(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Логин = ПараметрыФункции["RPortal_Login"]; + Пароль = ПараметрыФункции["RPortal_Password"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьВременныйТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьВременныйТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПостоянныйТокен(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПользователя = ПараметрыФункции["RPortal_UserID"]; + ИмяКлюча = "test_key_2"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("name", ИмяКлюча); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПостоянныйТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПостоянныйТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьПостоянныйТокен(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TestApiKey"]; + IDПользователя = ПараметрыФункции["RPortal_UserID"]; + IDКлюча = ПараметрыФункции["RPortal_TestKeyID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("id", IDКлюча); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПостоянныйТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьПостоянныйТокен"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьТокеныПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПользователя = ПараметрыФункции["RPortal_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьТокеныПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьТокеныПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Проект = "Test"; + + ДатаНачала = Дата("20260101100000"); + + СтруктураЗапуска = Новый Структура; + СтруктураЗапуска.Вставить("name" , "Test"); + СтруктураЗапуска.Вставить("startTime" , ДатаНачала); + СтруктураЗапуска.Вставить("description", "Test launch"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("params", СтруктураЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьЗапуск", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ЗавершитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + Проект = "Test"; + + ДатаЗавершения = Дата("20260101200000"); + Опции = Новый Структура; + Опции.Вставить("end", ДатаЗавершения); + Опции.Вставить("status", "passed"); + Опции.Вставить("descr", "Updated launch description"); + + СтруктураЗавершения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЗапуска", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", IDЗапуска); + Опции.Вставить("params", СтруктураЗавершения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗавершитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ЗавершитьЗапуск"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + Проект = "Test"; + + ДатаНачала = Дата("20260101100000"); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("name" , "Test"); + СтруктураЭлемента.Вставить("startTime" , ДатаНачала); + СтруктураЭлемента.Вставить("type" , "test"); + СтруктураЭлемента.Вставить("description", "Test launch"); + СтруктураЭлемента.Вставить("launchUuid" , IDЗапуска); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("params", СтруктураЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьЭлемент", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ЗавершитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + + ДатаЗавершения = Дата("20260101200000"); + + СтруктураЗавершения = Новый Структура; + СтруктураЗавершения.Вставить("endTime", ДатаЗавершения); + СтруктураЗавершения.Вставить("status" , "passed"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", IDЭлемента); + Опции.Вставить("params", СтруктураЗавершения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗавершитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ЗавершитьЭлемент"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЗапуска(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗапуска"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗапуска", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗапуска", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЭлемента(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЭлемента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЭлемента"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЭлемента", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЭлемента", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЗавершенияЭлемента(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЭлемента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЭлемента"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЭлемента", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЭлемента", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЗавершенияЗапуска(ПараметрыФункции) + + Время = Дата("20260101100000"); + Статус = "passed"; + Описание = "Some test"; + Атрибуты = "key1:value1, key2:value2"; + + Опции = Новый Структура; + Опции.Вставить("end", Время); + Опции.Вставить("status", Статус); + Опции.Вставить("descr", Описание); + Опции.Вставить("attr", Атрибуты); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЗапуска"); + +КонецПроцедуры + +Процедура ReportPortal_ЗаписатьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + Время = Дата("20260101100010"); + Текст = "Some log 1"; + + Опции = Новый Структура; + Опции.Вставить("launch", IDЗапуска); + Опции.Вставить("id", IDЭлемента); + Опции.Вставить("time", Время); + Опции.Вставить("text", Текст); + + СтруктураЛога = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЛога", Опции); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("params", СтруктураЛога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗаписатьЛог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ЗаписатьЛог", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЛога(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + Время = Дата("20260101100010"); + Текст = "Some log"; + + Опции = Новый Структура; + Опции.Вставить("launch", IDЗапуска); + Опции.Вставить("id", IDЭлемента); + Опции.Вставить("time", Время); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЛога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЛога"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + UUIDЛога = ПараметрыФункции["RPortal_TestLog"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", UUIDЛога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЛог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЛог", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЛога = ПараметрыФункции["RPortal_TestLogId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЛога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЛог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьЛог"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Имя = "testproject"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьПроект", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПроекта = ПараметрыФункции["RPortal_TestProject"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDПроекта); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьПроект"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Имя = "TestProject"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПроект"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПроекты(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроекты", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПроекты"); + +КонецПроцедуры + +Процедура ReportPortal_ДобавитьПользователейВПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + ИмяПроекта = "TestProject"; + + СписокПользователей = Новый Соответствие; + СписокПользователей.Вставить("default", "MEMBER"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", ИмяПроекта); + Опции.Вставить("users", СписокПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ДобавитьПользователейВПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ДобавитьПользователейВПроект"); + +КонецПроцедуры + +Процедура ReportPortal_ИсключитьПользователейИзПроекта(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + ИмяПроекта = "TestProject"; + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить("default"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", ИмяПроекта); + Опции.Вставить("users", МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИсключитьПользователейИзПроекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИсключитьПользователейИзПроекта"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + UUIDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", UUIDЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЗапуск", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЭлементыЗапуска(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЭлементыЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЭлементыЗапуска"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + UUIDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", UUIDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЭлемент", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЛогиЭлемента(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("item", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЛогиЭлемента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЛогиЭлемента"); + +КонецПроцедуры + +Процедура ReportPortal_ИзменитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + СтруктураЗапуска = Новый Структура; + СтруктураЗапуска.Вставить("description", "New description"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + Опции.Вставить("params", СтруктураЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИзменитьЗапуск"); + +КонецПроцедуры + +Процедура ReportPortal_ИзменитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; + Проект = "Test"; + + СтруктураЗапуска = Новый Структура; + СтруктураЗапуска.Вставить("description", "New description"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЭлемента); + Опции.Вставить("params", СтруктураЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИзменитьЭлемент"); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьЗапуск"); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьЭлемент"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьОтчетЗапуска(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + Опции.Вставить("format", "html"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьОтчетЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьОтчетЗапуска"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Имя = "testproject"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("active" , Истина); + СтруктураПользователя.Вставить("login" , "test"); + СтруктураПользователя.Вставить("password" , "G00d_Pass"); + СтруктураПользователя.Вставить("fullName" , "Test User"); + СтруктураПользователя.Вставить("email" , "test@example.com"); + СтруктураПользователя.Вставить("accountRole" , "USER"); + СтруктураПользователя.Вставить("projectRole" , "MEMBER"); + СтруктураПользователя.Вставить("defaultProject", "test"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("params", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьПользователя", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПользователя = ПараметрыФункции["RPortal_TestUser"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруПользователя(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруПользователя"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруПользователя", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ИзменитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Логин = "test"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("fullName", "Updated Test User"); + СтруктураПользователя.Вставить("email" , "updated@example.com"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("login", Логин); + Опции.Вставить("params", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИзменитьПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьТекущегоПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьТекущегоПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьТекущегоПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Логин = "test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("login", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПользователей"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПроектыПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Логин = "test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("login", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроектыПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПроектыПользователя"); + +КонецПроцедуры + +#КонецОбласти // ReportPortal + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure RPortal_Authorization() Export + RPortal_Авторизация(); +EndProcedure + +Procedure RPortal_TestManagement() Export + RPortal_УправлениеТестами(); +EndProcedure + +Procedure RPortal_LogRecording() Export + RPortal_ЗаписьЛогов(); +EndProcedure + +Procedure RPortal_ProjectManagement() Export + RPortal_УправлениеПроектами(); +EndProcedure + +Procedure RPortal_UserManagement() Export + RPortal_УправлениеПользователями(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl index 7e7c5975df..696807ad25 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_S3/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_S3.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1562 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("S3"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("S3"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область S3 + +Процедура AWS_ОбщиеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + S3_ПолучитьСтруктуруДанных(ПараметрыТеста); + S3_ОтправитьЗапросБезТела(ПараметрыТеста); + S3_ОтправитьЗапросСТелом(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура AWS_РаботаСБакетами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + S3_СоздатьБакет(ПараметрыТеста); + S3_ПолучитьСписокБакетов(ПараметрыТеста); + S3_ПроверитьДоступностьБакета(ПараметрыТеста); + S3_УстановитьТегиБакета(ПараметрыТеста); + S3_ПолучитьТегиБакета(ПараметрыТеста); + S3_УдалитьТегиБакета(ПараметрыТеста); + S3_УстановитьШифрованиеБакета(ПараметрыТеста); + S3_ПолучитьШифрованиеБакета(ПараметрыТеста); + S3_УдалитьШифрованиеБакета(ПараметрыТеста); + S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста); + S3_ПолучитьНастройкиВерсионированияБакета(ПараметрыТеста); + S3_УдалитьБакет(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура AWS_РаботаСОбъектами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + S3_СоздатьБакет(ПараметрыТеста); + S3_ЗагрузитьОбъект(ПараметрыТеста); + S3_ЗагрузитьОбъектЦеликом(ПараметрыТеста); + S3_ИнициализироватьЗагрузкуЧастями(ПараметрыТеста); + S3_ЗагрузитьЧастьОбъекта(ПараметрыТеста); + S3_ЗавершитьЗагрузкуЧастями(ПараметрыТеста); + S3_ОтменитьЗагрузкуЧастями(ПараметрыТеста); + S3_ПолучитьОписаниеОбъекта(ПараметрыТеста); + S3_КопироватьОбъект(ПараметрыТеста); + S3_УстановитьТегиОбъекта(ПараметрыТеста); + S3_ПолучитьТегиОбъекта(ПараметрыТеста); + S3_УдалитьТегиОбъекта(ПараметрыТеста); + S3_ПолучитьСписокОбъектов(ПараметрыТеста); + S3_ПолучитьСписокВерсийОбъектов(ПараметрыТеста); + S3_ПолучитьОбъект(ПараметрыТеста); + S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыТеста); + S3_УдалитьОбъект(ПараметрыТеста); + S3_УдалитьБакет(ПараметрыТеста); + S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // S3 + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область S3 + +Процедура S3_ПолучитьСтруктуруДанных(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСтруктуруДанных"); + +КонецПроцедуры + +Процедура S3_ОтправитьЗапросБезТела(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"] + "/opi-newbucket2"; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Метод = "GET"; + + Опции = Новый Структура; + Опции.Вставить("method", Метод); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ОтправитьЗапросБезТела"); + +КонецПроцедуры + +Процедура S3_ОтправитьЗапросСТелом(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Метод = "PUT"; + Тело = "C:\test_data\document.docx"; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("method", Метод); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("body", Тело); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросСТелом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ОтправитьЗапросСТелом"); + +КонецПроцедуры + +Процедура S3_СоздатьБакет(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Результат = OPI_S3.УдалитьБакет(Наименование, ОсновныеДанные, Каталог); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "СоздатьБакет", "Удаление"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "СоздатьБакет"); + +КонецПроцедуры + +Процедура S3_УдалитьБакет(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьБакет"); + +КонецПроцедуры + +Процедура S3_ПолучитьСписокБакетов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Опции = Новый Структура; + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокБакетов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСписокБакетов"); + +КонецПроцедуры + +Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПроверитьДоступностьБакета"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + Опции.Вставить("account", "1234"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПроверитьДоступностьБакета", "Аккаунт"); + +КонецПроцедуры + +Процедура S3_ПолучитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьШифрованиеБакета"); + +КонецПроцедуры + +Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьШифрованиеБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьШифрованиеБакета"); + +КонецПроцедуры + +Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + XMLКонфигурация = " + | + | + | AES256 + | + | + |"; + + ИВФ = ПолучитьИмяВременногоФайла("xml"); // SKIP + ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация).Записать(ИВФ); // SKIP + XMLКонфигурация = ИВФ; // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("conf", XMLКонфигурация); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьШифрованиеБакета", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(XMLКонфигурация, "Ошибка удаления файла после теста"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьШифрованиеБакета"); + +КонецПроцедуры + +Процедура S3_ПолучитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьТегиБакета"); + +КонецПроцедуры + +Процедура S3_УстановитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + СтруктураТегов = Новый Структура; + СтруктураТегов.Вставить("MyTag1", "SomeValue"); + СтруктураТегов.Вставить("MyTag2", "AnotherOne"); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьТегиБакета"); + +КонецПроцедуры + +Процедура S3_УдалитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьТегиБакета"); + +КонецПроцедуры + +Процедура S3_ПолучитьНастройкиВерсионированияБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкиВерсионированияБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьНастройкиВерсионированияБакета"); + +КонецПроцедуры + +Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Статус = Истина; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьНастройкиВерсионированияБакета"); + +КонецПроцедуры + +Процедура S3_ЗагрузитьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Наименование = "picture.jpg"; + Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data", Содержимое); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьОбъект"); // SKIP + + Наименование = "fileChunked.mp3"; + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + + ОсновныеДанные.Вставить("ChunkSize", 5242880); // Размер части для загрузки в несколько запросов + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data", Содержимое); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьОбъект", "Частями"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные, , , Каталог); + +КонецПроцедуры + +Процедура S3_ЗагрузитьОбъектЦеликом(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "pictureSmall.jpg"; + Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data", Содержимое); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъектЦеликом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьОбъектЦеликом"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные, , , Каталог); + +КонецПроцедуры + +Процедура S3_УдалитьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьОбъект"); + +КонецПроцедуры + +Процедура S3_ПолучитьОписаниеОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОписаниеОбъекта"); + +КонецПроцедуры + +Процедура S3_КопироватьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + ПутьИсточник = "picture.jpg"; + БакетИсточник = "newbucket2"; + + ПутьПриемник = "new_picture.jpg"; + БакетПриемник = ПараметрыФункции["S3_DB"]; + БакетПриемник = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("sname", ПутьИсточник); + Опции.Вставить("sbucket", БакетИсточник); + Опции.Вставить("name", ПутьПриемник); + Опции.Вставить("bucket", БакетПриемник); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "КопироватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "КопироватьОбъект"); + + OPI_S3.УдалитьОбъект(ПутьПриемник, БакетПриемник, ОсновныеДанные, , , Каталог); + +КонецПроцедуры + +Процедура S3_УстановитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + СтруктураТегов = Новый Структура; + + СтруктураТегов.Вставить("MyTag1", "SomeValue"); + СтруктураТегов.Вставить("MyTag2", "AnotherOne"); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьТегиОбъекта"); + +КонецПроцедуры + +Процедура S3_ПолучитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьТегиОбъекта"); + +КонецПроцедуры + +Процедура S3_УдалитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьТегиОбъекта"); + +КонецПроцедуры + +Процедура S3_ПолучитьСписокОбъектов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокОбъектов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСписокОбъектов"); + +КонецПроцедуры + +Процедура S3_ПолучитьСписокВерсийОбъектов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Префикс = "pic"; + Опции = Новый Структура; + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("prefix", Префикс); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокВерсийОбъектов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСписокВерсийОбъектов"); + +КонецПроцедуры + +Процедура S3_ПолучитьОбъект(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; // SKIP + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP + НеобходимыйРазмер = Картинка.Размер(); // SKIP + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", , НеобходимыйРазмер); // SKIP + + ВременныйФайл = ПолучитьИмяВременногоФайла(); + ОсновныеДанные.Вставить("ChunkSize", 200000); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("out", ВременныйФайл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", "Файл", НеобходимыйРазмер); + + Наименование = "bigfile.exe"; + Бакет = "newbucket2"; + + ВременныйФайлБольшой = ПолучитьИмяВременногоФайла(); + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("out", ВременныйФайлБольшой); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", "Большой файл", 34432400); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", "Большой ДД", 34432400); + + OPI_Инструменты.УдалитьФайлВПопытке(ВременныйФайлБольшой, "Не удалось удалить временный файл после теста!"); + OPI_Инструменты.УдалитьФайлВПопытке(ВременныйФайл , "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура S3_ИнициализироватьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями"); // SKIP + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные + , Каталог); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями", "Часть"); // SKIP + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags", МассивТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями", "Завершение"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура S3_ЗавершитьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями", "Начало"); // SKIP + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные + , Каталог); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями", "Часть"); // SKIP + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags", МассивТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура S3_ЗагрузитьЧастьОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта", "Начало"); // SKIP + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные + , Каталог); + + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта"); // SKIP + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags", МассивТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта", "Завершение"); // SKIP + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Начало = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"]; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтменитьЗагрузкуЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ОтменитьЗагрузкуЧастями"); + +КонецПроцедуры + +Процедура S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; // SKIP + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP + НеобходимыйРазмер = Картинка.Размер(); // SKIP + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("expires", 7200); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуСкачиванияОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуСкачиванияОбъекта"); + + Результат = OPI_ЗапросыHTTP.Get(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуСкачиванияОбъекта", "Проверка", НеобходимыйРазмер); + +КонецПроцедуры + +Процедура S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; // SKIP + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP + НеобходимыйРазмер = Картинка.Размер(); // SKIP + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "pictureU.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = "newbucket2"; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("expires", 7200); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуЗагрузкиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуЗагрузкиОбъекта"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(Результат) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("PUT"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуЗагрузкиОбъекта", "Загрузка"); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "S3", "ПолучитьСсылкуЗагрузкиОбъекта", "Проверка", НеобходимыйРазмер); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +#КонецОбласти // S3 + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure AWS_CommonMethods() Export + AWS_ОбщиеМетоды(); +EndProcedure + +Procedure AWS_BucketsManagement() Export + AWS_РаботаСБакетами(); +EndProcedure + +Procedure AWS_ObjectsManagement() Export + AWS_РаботаСОбъектами(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl index 7e7c5975df..009f350a79 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_SFTP/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SFTP.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1716 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("SFTP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("SFTP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область SFTP + +Процедура SF_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SFTP_ОткрытьСоединение(ПараметрыТеста); + SFTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста); + SFTP_ЭтоКоннектор(ПараметрыТеста); + SFTP_ЗакрытьСоединение(ПараметрыТеста); + SFTP_ПолучитьНастройкиЛогинПароль(ПараметрыТеста); + SFTP_ПолучитьНастройкиПриватныйКлюч(ПараметрыТеста); + SFTP_ПолучитьНастройкиЧерезАгента(ПараметрыТеста); + SFTP_ПолучитьНастройкиKI(ПараметрыТеста); + SFTP_ПолучитьНастройкиПрокси(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +Процедура SF_РаботаСДиректориями() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SFTP_ПолучитьТекущийКаталог(ПараметрыТеста); + SFTP_ПолучитьСписокОбъектов(ПараметрыТеста); + SFTP_СоздатьНовуюДиректорию(ПараметрыТеста); + SFTP_УдалитьДиректорию(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +Процедура SF_РаботаСФайлами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SFTP_ЗагрузитьФайл(ПараметрыТеста); + SFTP_ПолучитьИнформациюОФайле(ПараметрыТеста); + SFTP_ПолучитьДанныеФайла(ПараметрыТеста); + SFTP_СохранитьФайл(ПараметрыТеста); + SFTP_ИзменитьПуть(ПараметрыТеста); + SFTP_УдалитьФайл(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +#КонецОбласти // SFTP + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область SFTP + +Процедура SFTP_ОткрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Результат = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ОткрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SFTP_СоздатьНовуюДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "СоздатьНовуюДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "СоздатьНовуюДиректорию", Постфикс); + +КонецПроцедуры + +Процедура SFTP_УдалитьДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "УдалитьДиректорию", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьТекущийКаталог(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьТекущийКаталог", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьТекущийКаталог", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьСписокОбъектов(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "test_folder"); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьСписокОбъектов", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "test_folder"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьСписокОбъектов", Постфикс + ", Без рекурсии"); + +КонецПроцедуры + +Процедура SFTP_ЗагрузитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Картинка = "C:\pic.png"; + + Картинка = ПараметрыФункции["Picture"]; // SKIP + ИВФ = ПолучитьИмяВременногоФайла("png"); // SKIP + КопироватьФайл(Картинка, ИВФ); // SKIP + Картинка = ИВФ; // SKIP + + КартинкаДД = Новый ДвоичныеДанные(Картинка); + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", Картинка); + Опции.Вставить("path", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ЗагрузитьФайл", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", КартинкаДД); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ЗагрузитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + ЗагруженныйФайл = Новый Файл(Картинка); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ЗагрузитьФайл", Постфикс , ЗагруженныйФайл.Размер()); + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "SFTP", "ЗагрузитьФайл", "Двоичные, " + Постфикс, КартинкаДД.Размер()); + + РазмерФайлаЛокальный = ЗагруженныйФайл.Размер(); + РазмерФайлаЛокальныйДД = КартинкаДД.Размер(); + + РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, "pic_from_disk.png")["data"]["size"]; + РазмерФайлаУдаленныйДД = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, "files_folder/pic_from_binary.png")["data"]["size"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальный , "SFTP", "СохранитьФайл", "Размер файла, " + Постфикс , РазмерФайлаУдаленный); + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальныйДД, "SFTP", "СохранитьФайл", "Размер файла, ДД, " + Постфикс, РазмерФайлаУдаленныйДД); + + Для Н = 1 По 7 Цикл + + Результат = OPI_SFTP.ЗагрузитьФайл(Соединение, Картинка, "pic_from_disk.png"); + Результат2 = OPI_SFTP.ЗагрузитьФайл(Соединение, КартинкаДД, "files_folder/pic_from_binary.png"); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЗагрузитьФайл", "Множественный, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + Если Не Результат2["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "SFTP", "ЗагрузитьФайл", "Множественный, двоичные, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура SFTP_УдалитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьФайл", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "УдалитьФайл", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "УдалитьФайл", "Несуществующий, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder"); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "УдалитьФайл", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ЭтоКоннектор(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + Результат = OPI_SFTP.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЭтоКоннектор", Постфикс); + + Результат = OPI_SFTP.ЭтоКоннектор("a"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЭтоКоннектор", "Ошибка, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиЛогинПароль(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиЛогинПароль", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиПриватныйКлюч(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("key", ПриватныйКлюч); + Опции.Вставить("pub", ПубличныйКлюч); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПриватныйКлюч", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиПриватныйКлюч", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиЧерезАгента(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЧерезАгента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиЧерезАгента", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиKI(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("yes"); + МассивОтветов.Добавить(Пароль); + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("prompts", МассивОтветов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиKI", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиKI", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиПрокси(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиПрокси", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьКонфигурациюСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("set", НастройкиSFTP); + Опции.Вставить("proxy", НастройкиПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьКонфигурациюСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьКонфигурациюСоединения", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Результат); + Опции.Вставить("comm", "whoami"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ЗакрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Результат = OPI_SFTP.ЗакрытьСоединение(Соединение); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЗакрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SFTP_СохранитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "pic_from_disk.png"; + ИмяФайла = ПолучитьИмяВременногоФайла("bin"); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + Опции.Вставить("file", ИмяФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "СохранитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "СохранитьФайл", Постфикс); + + ЗагруженныйФайл = Новый Файл(ИмяФайла); + РазмерФайлаЛокальный = ЗагруженныйФайл.Размер(); + РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, Путь)["data"]["size"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальный, "SFTP", "СохранитьФайл", "Размер файла, " + Постфикс, РазмерФайлаУдаленный); + + Путь = "files_folder/pic_from_binary.png"; + + Для Н = 1 По 20 Цикл + + Результат = OPI_SFTP.СохранитьФайл(Соединение, Путь, ИмяФайла); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "СохранитьФайл", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИмяФайла, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура SFTP_ПолучитьДанныеФайла(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "pic_from_disk.png"; + Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьДанныеФайла", Постфикс); + + РазмерФайлаЛокальный = Результат.Размер(); + РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, Путь)["data"]["size"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальный, "SFTP", "ПолучитьДанныеФайла", "Размер файла, " + Постфикс, РазмерФайлаУдаленный); + + Путь = "files_folder/pic_from_binary.png"; + + Для Н = 1 По 20 Цикл + + Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь); + + Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьДанныеФайла", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура SFTP_ИзменитьПуть(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "pic_from_disk.png"); + Опции.Вставить("new", "files_folder/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ИзменитьПуть", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Старый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Новый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "files_folder/pic_from_disk.png"); + Опции.Вставить("new", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Старый, Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Новый, Обратно, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьИнформациюОФайле(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ПолучитьИнформациюОФайле", Постфикс); + +КонецПроцедуры + +#КонецОбласти // SFTP + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SF_CommonMethods() Export + SF_ОсновныеМетоды(); +EndProcedure + +Procedure SF_DirectoryManagement() Export + SF_РаботаСДиректориями(); +EndProcedure + +Procedure SF_FileManagement() Export + SF_РаботаСФайлами(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl index 7e7c5975df..2a92b36e51 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_SQLite/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SQLite.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,927 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("SQLite"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("SQLite"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область SQLite + +Процедура SQLL_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + + База = ПолучитьИмяВременногоФайла("sqlite"); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); + OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_ExtLinux", ПараметрыТеста); + + SQLite_ОткрытьСоединение(ПараметрыТеста); + SQLite_ЗакрытьСоединение(ПараметрыТеста); + SQLite_ВыполнитьЗапросSQL(ПараметрыТеста); + SQLite_ЭтоКоннектор(ПараметрыТеста); + SQLite_ПодключитьРасширение(ПараметрыТеста); + + OPI_Инструменты.УдалитьФайлВПопытке(База, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLL_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + + База = ПолучитьИмяВременногоФайла("sqlite"); + + Соединение = OPI_SQLite.ОткрытьСоединение(База); + ПараметрыТеста.Вставить("SQLite_DB", Соединение); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + SQLite_СоздатьТаблицу(ПараметрыТеста); + SQLite_ДобавитьЗаписи(ПараметрыТеста); + SQLite_ГарантироватьЗаписи(ПараметрыТеста); + SQLite_ПолучитьЗаписи(ПараметрыТеста); + SQLite_ОбновитьЗаписи(ПараметрыТеста); + SQLite_УдалитьЗаписи(ПараметрыТеста); + SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); + SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста); + SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста); + SQLite_ГарантироватьТаблицу(ПараметрыТеста); + SQLite_ОчиститьТаблицу(ПараметрыТеста); + SQLite_УдалитьТаблицу(ПараметрыТеста); + SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); + OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); + + SQLite_СоздатьТаблицу(ПараметрыТеста); + SQLite_ДобавитьЗаписи(ПараметрыТеста); + SQLite_ГарантироватьЗаписи(ПараметрыТеста); + SQLite_ПолучитьЗаписи(ПараметрыТеста); + SQLite_ОбновитьЗаписи(ПараметрыТеста); + SQLite_УдалитьЗаписи(ПараметрыТеста); + SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); + SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста); + SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста); + SQLite_ГарантироватьТаблицу(ПараметрыТеста); + SQLite_ОчиститьТаблицу(ПараметрыТеста); + SQLite_УдалитьТаблицу(ПараметрыТеста); + SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + OPI_Инструменты.УдалитьФайлВПопытке(База, "Ошибка удаления файла базы"); + +КонецПроцедуры + +#КонецОбласти // SQLite + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область SQLite + +Процедура SQLite_ОткрытьСоединение(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + БазаНаДиске = OPI_SQLite.ОткрытьСоединение(ИВФ); + БазаВПамяти = OPI_SQLite.ОткрытьСоединение(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(БазаНаДиске, "SQLite", "ОткрытьСоединение"); + OPI_ПолучениеДанныхТестов.Обработать(БазаВПамяти, "SQLite", "ОткрытьСоединение", "IM"); + + Закрытие = OPI_SQLite.ЗакрытьСоединение(БазаНаДиске); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "SQLite", "ОткрытьСоединение", "Закрытие"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLite_ЗакрытьСоединение(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "SQLite", "ЗакрытьСоединение", "Открытие"); // SKIP + + Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "SQLite", "ЗакрытьСоединение"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLite_ВыполнитьЗапросSQL(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "SQLite", "ВыполнитьЗапросSQL", "Открытие"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id INTEGER PRIMARY KEY, + |name TEXT, + |age INTEGER, + |salary REAL, + |is_active BOOLEAN, + |created_at DATETIME, + |data BLOB + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить("Vitaly"); // TEXT + МассивПараметров.Добавить(25); // INTEGER + МассивПараметров.Добавить(1000.12); // REAL + МассивПараметров.Добавить(Истина); // BOOL + МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + МассивПараметров.Добавить(Новый Структура("blob", Картинка)); // BLOB + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + // Транзакция + + ТекстЗапроса = "BEGIN TRANSACTION; + | CREATE TABLE IF NOT EXISTS users ( + | id INTEGER PRIMARY KEY AUTOINCREMENT, + | name TEXT NOT NULL, + | age INTEGER NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + | COMMIT;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Transaction"); // SKIP + + // С расширением + + Если OPI_Инструменты.ЭтоWindows() Тогда + Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные + Иначе + Расширение = ПараметрыФункции["SQLite_ExtLinux"]; // URL, Путь или Двоичные данные + КонецЕсли; + + ТочкаВхода = "sqlite3_uuid_init"; + + СоответствиеРасширений = Новый Соответствие; + СоответствиеРасширений.Вставить(Расширение, ТочкаВхода); + + ТекстЗапроса = "SELECT uuid4();"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + Опции.Вставить("exts", СоответствиеРасширений); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Расширение"); // SKIP + + Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Закрытие"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLite_ЭтоКоннектор(ПараметрыФункции) + + Соединение = OPI_SQLite.ОткрытьСоединение(); + Результат = OPI_SQLite.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура SQLite_СоздатьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); + СтруктураКолонок.Вставить("name" , "TEXT"); + СтруктураКолонок.Вставить("age" , "INTEGER"); + СтруктураКолонок.Вставить("salary" , "REAL"); + СтруктураКолонок.Вставить("is_active" , "BOOLEAN"); + СтруктураКолонок.Вставить("created_at", "DATETIME"); + СтруктураКолонок.Вставить("data" , "BLOB"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "СоздатьТаблицу"); + + СоответствиеКолонок = Новый Соответствие; + СоответствиеКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); + СоответствиеКолонок.Вставить("[Непонятная колонка]", "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("cols", СоответствиеКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "СоздатьТаблицу", "Непонятная колонка"); + +КонецПроцедуры + +Процедура SQLite_ДобавитьЗаписи(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + ФайлКартинки = ПолучитьИмяВременногоФайла("png"); + Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("name" , "Vitaly"); // TEXT + СтруктураСтроки1.Вставить("age" , 25); // INTEGER + СтруктураСтроки1.Вставить("salary" , 1000.12); // REAL + СтруктураСтроки1.Вставить("is_active" , Истина); // BOOL + СтруктураСтроки1.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + СтруктураСтроки1.Вставить("data" , Новый Структура("blob", Картинка)); // BLOB + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("name" , "Lesha"); // TEXT + СтруктураСтроки2.Вставить("age" , 20); // INTEGER + СтруктураСтроки2.Вставить("salary" , 200.20); // REAL + СтруктураСтроки2.Вставить("is_active" , Ложь); // BOOL + СтруктураСтроки2.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + СтруктураСтроки2.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("trn", Ложь); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Без транзакции"); + + СтруктураСтроки2.Вставить("error", "Lesha"); + МассивДанных.Добавить(СтруктураСтроки2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка поля"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("trn", Ложь); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка без транзакции"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", "not valid json"); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка JSON"); + + СоответствиеСтроки = Новый Соответствие; + СоответствиеСтроки.Вставить("[Непонятная колонка]", "yo"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("rows", СоответствиеСтроки); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Непонятная колонка"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлКартинки, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура SQLite_ПолучитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Поля = Новый Массив; + Поля.Добавить("name"); + Поля.Добавить("salary"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "name"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Vitaly"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "age"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 30"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("created_at", "DESC"); + Количество = 1; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Без параметров"); + + СтруктураФильтра2.Вставить("type", "SOMETHING"); + Фильтры.Добавить(СтруктураФильтра2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Ошибка"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Непонятная колонка"); + +КонецПроцедуры + +Процедура SQLite_ОбновитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("name" , "Vitaly A."); + СтруктураПолей.Вставить("salary", "999999"); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "name"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", "Vitaly"); + СтруктураФильтра.Вставить("union", "AND"); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ОбновитьЗаписи"); + + СтруктураФильтра.Вставить("value", "Vitaly A."); + + Фильтры = Новый Массив; + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','salary']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ОбновитьЗаписи", "Проверка", СтруктураПолей); + +КонецПроцедуры + +Процедура SQLite_УдалитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "name"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", "Vitaly A."); + СтруктураФильтра.Вставить("union", "AND"); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','salary']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "УдалитьЗаписи", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьИнформациюОТаблице"); + +КонецПроцедуры + +Процедура SQLite_ГарантироватьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test_merge"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP + СтруктураКолонок.Вставить("age" , "INTEGER"); // SKIP + СтруктураКолонок.Вставить("salary" , "REAL"); // SKIP + OPI_SQLite.СоздатьТаблицу(Таблица, СтруктураКолонок, База); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , 1); + СтруктураСтроки1.Вставить("name" , "Vitaly"); + СтруктураСтроки1.Вставить("age" , 25); + СтруктураСтроки1.Вставить("salary", 1000.12); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , 2); + СтруктураСтроки2.Вставить("name" , "Lesha"); + СтруктураСтроки2.Вставить("age" , 20); + СтруктураСтроки2.Вставить("salary", 200.20); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , "Vitaly Updated"); + СтруктураСтроки1.Вставить("salary", 1500.50); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , 3); + СтруктураСтроки3.Вставить("name" , "Anton"); + СтруктураСтроки3.Вставить("age" , 30); + СтруктураСтроки3.Вставить("salary", 3000.00); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_SQLite.УдалитьТаблицу(Таблица, База); + +КонецПроцедуры + +Процедура SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +Процедура SQLite_УдалитьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "УдалитьТаблицу", "Проверка"); + + OPI_SQLite.УдалитьТаблицу("test1", База); + +КонецПроцедуры + +Процедура SQLite_ОчиститьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ОчиститьТаблицу", "Таблица"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_ПодключитьРасширение(ПараметрыФункции) + + Если OPI_Инструменты.ЭтоWindows() Тогда + Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные + Иначе + Расширение = ПараметрыФункции["SQLite_ExtLinux"]; // URL, Путь или Двоичные данные + КонецЕсли; + + База = ПараметрыФункции["SQLite_DB"]; + ТочкаВхода = "sqlite3_uuid_init"; + + Соединение = OPI_SQLite.ОткрытьСоединение(База); + Результат = OPI_SQLite.ПодключитьРасширение(Расширение, ТочкаВхода, Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПодключитьРасширение"); + + ИВФ = ПолучитьИмяВременногоФайла("dll"); + КопироватьФайл(Расширение, ИВФ); + + Результат = OPI_SQLite.ПодключитьРасширение(ИВФ, ТочкаВхода, Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПодключитьРасширение", "Путь"); + + Результат = OPI_SQLite.ПодключитьРасширение(Новый ДвоичныеДанные(ИВФ), ТочкаВхода, Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПодключитьРасширение", "Двоичные"); + + Результат = OPI_SQLite.ЗакрытьСоединение(Соединение); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла расширение"); + +КонецПроцедуры + +Процедура SQLite_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + Имя = "new_col"; + ТипДанных = "TEXT"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_УдалитьКолонкуТаблицы(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + Имя = "new_col"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_ГарантироватьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + + Таблица = "test"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "INTEGER"); + СтруктураКолонок.Вставить("code" , "INTEGER"); + СтруктураКолонок.Вставить("name" , "TEXT"); + СтруктураКолонок.Вставить("age" , "INTEGER"); + СтруктураКолонок.Вставить("info" , "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьТаблицу", "Проверка 2", СтруктураКолонок); + +КонецПроцедуры + +#КонецОбласти // SQLite + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SQLL_CommonMethods() Export + SQLL_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl index 7e7c5975df..7c84175b58 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_SSH/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SSH.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,662 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("SSH"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("SSH"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область SSH + +Процедура SShell_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SSH_ОткрытьСоединение(ПараметрыТеста); + SSH_ПолучитьКонфигурациюСоединения(ПараметрыТеста); + SSH_ВыполнитьКоманду(ПараметрыТеста); + SSH_ЗакрытьСоединение(ПараметрыТеста); + SSH_ЭтоКоннектор(ПараметрыТеста); + SSH_ПолучитьНастройкиЛогинПароль(ПараметрыТеста); + SSH_ПолучитьНастройкиПриватныйКлюч(ПараметрыТеста); + SSH_ПолучитьНастройкиЧерезАгента(ПараметрыТеста); + SSH_ПолучитьНастройкиKI(ПараметрыТеста); + SSH_ПолучитьНастройкиПрокси(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +#КонецОбласти // SSH + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область SSH + +Процедура SSH_ОткрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Результат = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ОткрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SSH_ВыполнитьКоманду(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + + Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("comm", "whoami"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ВыполнитьКоманду", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьКонфигурациюСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("set", НастройкиSSH); + Опции.Вставить("proxy", НастройкиПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьКонфигурациюСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьКонфигурациюСоединения", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Результат); + Опции.Вставить("comm", "whoami"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура SSH_ЗакрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + + Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда + Результат = OPI_SSH.ЗакрытьСоединение(Соединение); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ЗакрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SSH_ЭтоКоннектор(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = 2223; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + Результат = OPI_SSH.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ЭтоКоннектор", Постфикс); + + Результат = OPI_SSH.ЭтоКоннектор("a"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ЭтоКоннектор", "Ошибка, " + Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиЛогинПароль(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиЛогинПароль", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиПриватныйКлюч(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("key", ПриватныйКлюч); + Опции.Вставить("pub", ПубличныйКлюч); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПриватныйКлюч", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиПриватныйКлюч", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиЧерезАгента(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЧерезАгента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиЧерезАгента", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиKI(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("yes"); + МассивОтветов.Добавить(Пароль); + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("prompts", МассивОтветов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиKI", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиKI", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиПрокси(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиПрокси", Постфикс); + +КонецПроцедуры + +#КонецОбласти // SSH + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SShell_CommonMethods() Export + SShell_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl index 7e7c5975df..d8e2cd48ba 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Slack/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Slack.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,918 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Slack"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Slack"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Slack + +Процедура Слак_ПолучитьИнформацию() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + + Slack_ПолучитьИнформациюОБоте(ПараметрыТеста); + Slack_ПолучитьСписокПользователей(ПараметрыТеста); + Slack_ПолучитьСписокРабочихОбластей(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ОтправитьУдалитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + Slack_ОтправитьСообщение(ПараметрыТеста); + Slack_ИзменитьСообщение(ПараметрыТеста); + Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыТеста); + Slack_ПолучитьСсылкуНаСообщение(ПараметрыТеста); + Slack_УдалитьСообщение(ПараметрыТеста); + Slack_ОтправитьЭфемерноеСообщение(ПараметрыТеста); + Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыТеста); + Slack_СформироватьБлокКартинку(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_СоздатьАрхивироватьКанал() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + Slack_СоздатьКанал(ПараметрыТеста); + Slack_УстановитьТемуКанала(ПараметрыТеста); + Slack_УстановитьЦельКанала(ПараметрыТеста); + Slack_ПолучитьКанал(ПараметрыТеста); + Slack_ПригласитьПользователейВКанал(ПараметрыТеста); + Slack_ВыгнатьПользователяИзКанала(ПараметрыТеста); + Slack_ПолучитьИсториюКанала(ПараметрыТеста); + Slack_ПолучитьСписокПользователейКанала(ПараметрыТеста); + Slack_ПокинутьКанал(ПараметрыТеста); + Slack_ВступитьВКанал(ПараметрыТеста); + Slack_ПереименоватьКанал(ПараметрыТеста); + Slack_АрхивироватьКанал(ПараметрыТеста); + Slack_ПолучитьСписокКаналов(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ОткрытьЗакрытьДиалог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + Slack_ОткрытьДиалог(ПараметрыТеста); + Slack_ЗакрытьДиалог(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Slack_ПолучитьСписокФайлов(ПараметрыТеста); + Slack_ЗагрузитьФайл(ПараметрыТеста); + Slack_СделатьФайлПубличным(ПараметрыТеста); + Slack_СделатьФайлПриватным(ПараметрыТеста); + Slack_ПолучитьДанныеФайла(ПараметрыТеста); + Slack_УдалитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ЗагрузитьУдалитьВФ() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Slack_ПолучитьСписокВнешнихФайлов(ПараметрыТеста); + Slack_ДобавитьВнешнийФайл(ПараметрыТеста); + Slack_ПолучитьВнешнийФайл(ПараметрыТеста); + Slack_ОтправитьВнешнийФайл(ПараметрыТеста); + Slack_УдалитьВнешнийФайл(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Slack + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Slack + +Процедура Slack_ПолучитьИнформациюОБоте(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИнформациюОБоте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьИнформациюОБоте"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокПользователей"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокРабочихОбластей(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокРабочихОбластей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокРабочихОбластей"); + +КонецПроцедуры + +Процедура Slack_ОтправитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + // Текстовое + + Текст = "Тестовое сообщение 1"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьСообщение", , ПараметрыФункции, Текст, Канал); // SKIP + + // С вложениями (в примере: блок с картинкой) + + Текст = "Сообщение с картинкой"; + Картинка = ПараметрыФункции["Picture"]; + МассивБлоков = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt", "Картинка"); + + Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + МассивБлоков.Добавить(Блок); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", МассивБлоков); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьСообщение", "Картинка", ПараметрыФункции, Текст, Канал); // SKIP + + // Отложенное + + Текст = "Отложенное сообщение"; + Час = 3600; + Сутки = 24; + + ДатаОтправки = OPI_Инструменты.ПолучитьТекущуюДату() + (Сутки * Час); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + Опции.Вставить("date", ДатаОтправки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьСообщение", "Отложенное", ПараметрыФункции, Текст, Канал); + + Токен = ПараметрыФункции["Slack_Token"]; + Отметка = Результат["scheduled_message_id"]; + + OPI_Slack.УдалитьСообщение(Токен, Канал, Отметка, Истина); + +КонецПроцедуры + +Процедура Slack_СформироватьБлокКартинку(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt", "Картинка"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СформироватьБлокКартинку"); + +КонецПроцедуры + +Процедура Slack_ИзменитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Текст = "Тестовое сообщение 2"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ИзменитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ИзменитьСообщение", , Текст, Канал); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтветовНаСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокОтветовНаСообщение"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСсылкуНаСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСсылкуНаСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСсылкуНаСообщение", , Канал); + +КонецПроцедуры + +Процедура Slack_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура Slack_ОтправитьЭфемерноеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + Картинка = ПараметрыФункции["Picture"]; + Текст = "Эфимерное сообщение"; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt", "Картинка"); + + Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + Опции.Вставить("user", Пользователь); + Опции.Вставить("blocks", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьЭфемерноеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьЭфемерноеСообщение"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтложенныхСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокОтложенныхСообщений"); + +КонецПроцедуры + +Процедура Slack_СоздатьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Имя = "testconv" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СоздатьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СоздатьКанал", , ПараметрыФункции, Имя); + +КонецПроцедуры + +Процедура Slack_УстановитьТемуКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Тема = "Тестовая тема"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("theme", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьТемуКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УстановитьТемуКанала", , Тема); + +КонецПроцедуры + +Процедура Slack_УстановитьЦельКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Цель = "Тестовая цель"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("purpose", Цель); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьЦельКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УстановитьЦельКанала"); + +КонецПроцедуры + +Процедура Slack_ПолучитьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьКанал", , ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура Slack_ПригласитьПользователейВКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("users", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПригласитьПользователейВКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПригласитьПользователейВКанал", , ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура Slack_ВыгнатьПользователяИзКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("user", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВыгнатьПользователяИзКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ВыгнатьПользователяИзКанала"); + +КонецПроцедуры + +Процедура Slack_ПолучитьИсториюКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИсториюКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьИсториюКанала"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокПользователейКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователейКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокПользователейКанала"); + +КонецПроцедуры + +Процедура Slack_ПокинутьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПокинутьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПокинутьКанал"); + +КонецПроцедуры + +Процедура Slack_ВступитьВКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВступитьВКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ВступитьВКанал", , ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура Slack_ПереименоватьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Название = "testconv" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("title", Название); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПереименоватьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПереименоватьКанал", , Название); + +КонецПроцедуры + +Процедура Slack_АрхивироватьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "АрхивироватьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "АрхивироватьКанал"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокКаналов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокКаналов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокКаналов"); + +КонецПроцедуры + +Процедура Slack_ОткрытьДиалог(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("users", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОткрытьДиалог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОткрытьДиалог", , ПараметрыФункции); + + Канал = Результат["channel"]["id"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", "Тест диалог"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОткрытьДиалог", "Сообщение", ПараметрыФункции); + +КонецПроцедуры + +Процедура Slack_ЗакрытьДиалог(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Диалог = ПараметрыФункции["Slack_Dialog"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("conv", Диалог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗакрытьДиалог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ЗакрытьДиалог"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокФайлов"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокФайлов", "Все"); + +КонецПроцедуры + +Процедура Slack_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Файл = ПараметрыФункции["Document"]; // URL, Двоичные данные или Путь к файлу + + ИмяФайла = "megadoc.docx"; + Заголовок = "Новый файл"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ЗагрузитьФайл", , ПараметрыФункции, ИмяФайла); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПубличным"); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПриватным"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("title", Заголовок); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ЗагрузитьФайл", "Канал", ПараметрыФункции, ИмяФайла); + OPI_Slack.УдалитьФайл(ПараметрыФункции["Slack_Token"], Результат["files"][0]["id"]); + +КонецПроцедуры + +Процедура Slack_СделатьФайлПубличным(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПубличным", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПубличным", "Без записи"); + +КонецПроцедуры + +Процедура Slack_СделатьФайлПриватным(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПриватным", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПриватным", "Без записи"); + +КонецПроцедуры + +Процедура Slack_ПолучитьДанныеФайла(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьДанныеФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьДанныеФайла", , "megadoc.docx"); + +КонецПроцедуры + +Процедура Slack_УдалитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УдалитьФайл"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокВнешнихФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокВнешнихФайлов"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокВнешнихФайлов", "Все"); + +КонецПроцедуры + +Процедура Slack_ДобавитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Заголовок = "Новый файл"; + Файл = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", Файл); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ДобавитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ДобавитьВнешнийФайл", , ПараметрыФункции, Заголовок); + +КонецПроцедуры + +Процедура Slack_ПолучитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьВнешнийФайл"); + +КонецПроцедуры + +Процедура Slack_ОтправитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + Опции.Вставить("channels", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьВнешнийФайл"); + +КонецПроцедуры + +Процедура Slack_УдалитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УдалитьВнешнийФайл"); + +КонецПроцедуры + +#КонецОбласти // Slack + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SlackGetData() Export + Слак_ПолучитьИнформацию(); +EndProcedure + +Procedure Slack_SendDeleteMessage() Export + Слак_ОтправитьУдалитьСообщение(); +EndProcedure + +Procedure Slack_CreateArchiveChannel() Export + Слак_СоздатьАрхивироватьКанал(); +EndProcedure + +Procedure Slack_OpenCloseDialog() Export + Слак_ОткрытьЗакрытьДиалог(); +EndProcedure + +Procedure Slack_UploadDeleteFile() Export + Слак_ЗагрузитьУдалитьФайл(); +EndProcedure + +Procedure Slack_UploadDeleteExternalFile() Export + Слак_ЗагрузитьУдалитьВФ(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl index 7e7c5975df..b17dc49f98 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_TCP/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_TCP.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,773 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("TCP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("TCP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область TCP + +Процедура TC_Клиент() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTLS", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_Port" , ПараметрыТеста); + + TCP_ОткрытьСоединение(ПараметрыТеста); + TCP_ЗакрытьСоединение(ПараметрыТеста); + TCP_ПрочитатьДвоичныеДанные(ПараметрыТеста); + TCP_ОтправитьДвоичныеДанные(ПараметрыТеста); + TCP_ПрочитатьСтроку(ПараметрыТеста); + TCP_ОтправитьСтроку(ПараметрыТеста); + TCP_ОбработатьЗапрос(ПараметрыТеста); + TCP_ПолучитьНастройкиTLS(ПараметрыТеста); + TCP_ПолучитьПоследнююОшибку(ПараметрыТеста); + TCP_ПолучитьНастройкиПрокси(ПараметрыТеста); + +КонецПроцедуры + +Процедура TC_Сервер() Экспорт + + ПараметрыТеста = Новый Структура; + + TCP_ЗапуститьСервер(ПараметрыТеста); + TCP_ОстановитьСервер(ПараметрыТеста); + TCP_ПолучитьДанныеОчередногоСоединения(ПараметрыТеста); + TCP_ПолучитьДанныеСоединения(ПараметрыТеста); + TCP_ОтправитьДанные(ПараметрыТеста); + TCP_ЗакрытьВходящееСоединение(ПараметрыТеста); + TCP_ЗавершитьОтправку(ПараметрыТеста); + TCP_ЗавершитьПолучение(ПараметрыТеста); + TCP_ПолучитьСписокСоединений(ПараметрыТеста); + TCP_ЭтоОбъектСервера(ПараметрыТеста); + TCP_ПолучитьЛог(ПараметрыТеста); + TCP_ПолучитьНастройкиЛогирования(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // TCP + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область TCP + +Процедура TCP_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "TCP", "ОткрытьСоединение"); // SKIP + + OPI_TCP.ЗакрытьСоединение(Соединение); + + Адрес = "tcpbin.com:4243"; + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + ПроксиПользователь = ПараметрыФункции["Proxy_User"]; + ПроксиПароль = ПараметрыФункции["Proxy_Password"]; + ПроксиАдрес = ПараметрыФункции["Socks5_IP"]; + ПроксиПорт = ПараметрыФункции["Socks5_Port"]; + + ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", ПроксиАдрес); + Опции.Вставить("port", ПроксиПорт); + Опции.Вставить("type", "socks5"); + Опции.Вставить("login", ПроксиПользователь); + Опции.Вставить("pass", ПроксиПароль); + + Прокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес, TLS, Прокси); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "TCP", "ОткрытьСоединение", "TLS"); + +КонецПроцедуры + +Процедура TCP_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + Результат = OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура TCP_ПрочитатьДвоичныеДанные(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Сообщение = "Hello server!" + Символы.ПС; + Данные = ПолучитьДвоичныеДанныеИзСтроки(Сообщение); + + OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , Маркер); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьДвоичныеДанные", , Сообщение); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьДвоичныеДанные", "Таймаут", Сообщение); + +КонецПроцедуры + +Процедура TCP_ОтправитьДвоичныеДанные(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Сообщение = "Hello server!" + Символы.ПС; + Данные = ПолучитьДвоичныеДанныеИзСтроки(Сообщение); + + Результат = OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Ответ = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , Маркер); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Ответ, "TCP", "ОтправитьДвоичныеДанные", , Сообщение); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОтправитьДвоичныеДанные", "Таймаут", Сообщение); + +КонецПроцедуры + +Процедура TCP_ОбработатьЗапрос(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Данные = "Echo this!" + Символы.ПС; + + Опции = Новый Структура; + Опции.Вставить("address", Адрес); + Опции.Вставить("data", Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОбработатьЗапрос", , "Echo this!" + Символы.ПС); // SKIP + + Адрес = ПараметрыФункции["TCP_AddressTLS"]; + + ПроксиПользователь = ПараметрыФункции["Proxy_User"]; + ПроксиПароль = ПараметрыФункции["Proxy_Password"]; + ПроксиАдрес = ПараметрыФункции["Socks5_IP"]; + ПроксиПорт = ПараметрыФункции["Socks5_Port"]; + + ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", ПроксиАдрес); + Опции.Вставить("port", ПроксиПорт); + Опции.Вставить("type", "socks5"); + Опции.Вставить("login", ПроксиПользователь); + Опции.Вставить("pass", ПроксиПароль); + + Прокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + Опции = Новый Структура; + Опции.Вставить("address", Адрес); + Опции.Вставить("data", Данные); + Опции.Вставить("tls", Tls); + Опции.Вставить("proxy", Прокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОбработатьЗапрос", "TLS", "Echo this!" + Символы.ПС); + +КонецПроцедуры + +Процедура TCP_ПрочитатьСтроку(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Данные = "Hello server!" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(Соединение, Данные); + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , Маркер); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьСтроку", , Данные); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьСтроку(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьСтроку", "Таймаут", Данные); + +КонецПроцедуры + +Процедура TCP_ОтправитьСтроку(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Данные = "Hello server!" + Символы.ПС; + + Результат = OPI_TCP.ОтправитьСтроку(Соединение, Данные); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Ответ = OPI_TCP.ПрочитатьСтроку(Соединение, , Маркер); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Ответ, "TCP", "ОтправитьСтроку", , Данные); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьСтроку(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОтправитьСтроку", "Таймаут", Данные); + +КонецПроцедуры + +Процедура TCP_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура TCP_ПолучитьПоследнююОшибку(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Данные = "Hello server!" + Символы.ПС; + + Отправка = OPI_TCP.ОтправитьСтроку(Соединение, Данные); + Результат = OPI_TCP.ПолучитьПоследнююОшибку(Соединение); // SKIP + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьПоследнююОшибку"); + +КонецПроцедуры + +Процедура TCP_ПолучитьНастройкиПрокси(ПараметрыФункции) + + ТипПрокси = "socks5"; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Socks5_IP"]; + ПортПрокси = ПараметрыФункции["Socks5_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиПрокси"); + +КонецПроцедуры + +Процедура TCP_ЗапуститьСервер(ПараметрыФункции) + + Порт = 9876; + РазмерПула = 10; + + Сервер = OPI_TCP.ЗапуститьСервер(Порт, РазмерПула); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Сервер, "TCP", "ЗапуститьСервер"); + + OPI_TCP.ОстановитьСервер(Сервер); + +КонецПроцедуры + +Процедура TCP_ОстановитьСервер(ПараметрыФункции) + + Порт = 9877; + Сервер = OPI_TCP.ЗапуститьСервер(Порт); + + Результат = OPI_TCP.ОстановитьСервер(Сервер); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОстановитьСервер"); + + РезультатСписка = OPI_TCP.ПолучитьСписокСоединений(Сервер); + + OPI_ПолучениеДанныхТестов.Обработать(РезультатСписка, "TCP", "ОстановитьСервер", "Список"); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); + + Адрес = СтрШаблон("127.0.0.1:%1", Порт); + Клиент = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_ПолучениеДанныхТестов.Обработать(Клиент, "TCP", "ОстановитьСервер", "Подключение"); + +КонецПроцедуры + +Процедура TCP_ПолучитьДанныеОчередногоСоединения(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Отправляем сообщение от клиента + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + Иначе + Сообщение = "Hello from client!" + Символы.ПС; + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + КонецЕсли; + + // Получаем сообщение на сервере + Результат = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000, 8192); + + // END + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеОчередногоСоединения", , Сообщение); + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + + Результат = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000, 8192); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеОчередногоСоединения", "Закрытое", Сообщение); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ПолучитьДанныеСоединения(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + OPI_Инструменты.Пауза(1); // SKIP + + // Получаем список соединений сервера + СписокСоединений = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + Если Не СписокСоединений["result"] Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(СписокСоединений); + КонецЕсли; + + Если СписокСоединений["connections"].Количество() = 0 Тогда + ВызватьИсключение "Список соединений пуст"; + Иначе + IDСоединения = СписокСоединений["connections"][0]["connectionId"]; + КонецЕсли; + + РезультатПустой = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(РезультатПустой, "TCP", "ПолучитьДанныеСоединения", "Пустое"); // SKIP + + Для Н = 0 По 5 Цикл + + // Отправляем из клиента + ТекущееСообщение = СтрШаблон("Message no. %1%2", Н, Символы.ПС); + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, ТекущееСообщение); + + // Получем на сервере + Результат = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", , ТекущееСообщение); // SKIP + + КонецЦикла; + + // END + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + + Результат = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", "Закрытое"); + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", "ПустойСписок"); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ОтправитьДанные(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + Сообщение = "Hello!" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + // Получаем сообщение и ID соединения + ОчередноеСообщение = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000); + IDСоединения = ОчередноеСообщение["connectionId"]; + + // Отправляем ответ от сервера + ОтветСервера = "Response from server!" + Символы.ПС; + Результат = OPI_TCP.ОтправитьДанные(ОбъектСервера, IDСоединения, ОтветСервера); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОтправитьДанные"); + + // Проверяем получение на клиенте + ОтветКлиента = OPI_TCP.ПрочитатьСтроку(ОбъектКлиента, , Символы.ПС); + + OPI_ПолучениеДанныхТестов.Обработать(ОтветКлиента, "TCP", "ОтправитьДанные", "Проверка", ОтветСервера); + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЗакрытьВходящееСоединение(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + Сообщение = "Hello!" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + // Получаем ID соединения + ПервоеСообщение = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000); + IDСоединения = ПервоеСообщение["connectionId"]; + + // Закрываем соединение со стороны сервера + Результат = OPI_TCP.ЗакрытьВходящееСоединение(ОбъектСервера, IDСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение"); + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение", "ПустойСписок"); + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + Результат = OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение", "ОтправкаВЗакрытое"); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЗавершитьОтправку(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + OPI_Инструменты.Пауза(1); // SKIP + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + АктивныеСоединения = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + IDСоединения = АктивныеСоединения["connections"][0]["connectionId"]; + + // Завершаем отправку со стороны сервера + Результат = OPI_TCP.ЗавершитьОтправку(ОбъектСервера, IDСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьОтправку"); + + Сообщение = "Hello" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + Результат = OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьОтправку", "ОтправкаКлиент"); + + ОтветСервера = "Response from server!" + Символы.ПС; + Результат = OPI_TCP.ОтправитьДанные(ОбъектСервера, IDСоединения, ОтветСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьОтправку", "ОтправкаСервер"); + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ПолучитьСписокСоединений(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + + Клиент1 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + Клиент2 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(Клиент1) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент1); + КонецЕсли; + + Если Не OPI_TCP.ЭтоОбъектКлиента(Клиент2) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент2); + КонецЕсли; + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьСписокСоединений"); + + OPI_TCP.ЗакрытьСоединение(Клиент1); + OPI_TCP.ЗакрытьСоединение(Клиент2); + + Клиент3 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + Клиент4 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + OPI_TCP.ОтправитьСтроку(Клиент3, "Yo" + Символы.ПС); + + OPI_TCP.ЗакрытьСоединение(Клиент3); + OPI_TCP.ЗакрытьСоединение(Клиент4); + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьСписокСоединений", "Закрытые"); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЗавершитьПолучение(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + OPI_Инструменты.Пауза(1); // SKIP + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + АктивныеСоединения = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + IDСоединения = АктивныеСоединения["connections"][0]["connectionId"]; + + // Завершаем получение со стороны сервера + Результат = OPI_TCP.ЗавершитьПолучение(ОбъектСервера, IDСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьПолучение"); + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЭтоОбъектСервера(ПараметрыФункции) + + Порт = 9884; + Сервер = OPI_TCP.ЗапуститьСервер(Порт); + + Результат = OPI_TCP.ЭтоОбъектСервера(Сервер); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЭтоОбъектСервера"); + + OPI_TCP.ОстановитьСервер(Сервер); + + // Проверка с неправильным объектом + Результат = OPI_TCP.ЭтоОбъектСервера("Не сервер"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЭтоОбъектСервера", "Ложь"); + +КонецПроцедуры + +Процедура TCP_ПолучитьЛог(ПараметрыФункции) + + ПортЗапуска = 9877; + ФайлЛога = ПолучитьИмяВременногоФайла("txt"); + НастройкиЛогирования = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога); + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска, , НастройкиЛогирования); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + OPI_Инструменты.Пауза(1); // SKIP + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + Результат = OPI_TCP.ПолучитьЛог(ОбъектСервера); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьЛог", , ФайлЛога); + +КонецПроцедуры + +Процедура TCP_ПолучитьНастройкиЛогирования(ПараметрыФункции) + + Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 100, ПолучитьИмяВременногоФайла()); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования"); + + Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Ложь, , ПолучитьИмяВременногоФайла()); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования", "Файл"); + + Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования", "Память"); + +КонецПроцедуры + +#КонецОбласти // TCP + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure TC_Client() Export + TC_Клиент(); +EndProcedure + +Procedure TC_Server() Export + TC_Сервер(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl index 7e7c5975df..79a90c294b 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Telegram/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Telegram.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1596 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Telegram"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Telegram"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Telegram + +Процедура Телеграм_ПолучитьИнформациюБота() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + Telegram_ПолучитьИнформациюБота(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьОбновления() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + Telegram_УдалитьWebhook(ПараметрыТеста); + Telegram_ПолучитьОбновления(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_УстановитьWebhook() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_URL" , ПараметрыТеста); + + Telegram_УстановитьWebhook(ПараметрыТеста); + Telegram_УдалитьWebhook(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьТекстовоеСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + + Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста); + Telegram_ЗаменитьТекстСообщения(ПараметрыТеста); + Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста); + Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьКартинку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Telegram_ОтправитьКартинку(ПараметрыТеста); + Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста); + Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьВидео() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + Telegram_ОтправитьВидео(ПараметрыТеста); + Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьАудио() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); + + Telegram_ОтправитьАудио(ПараметрыТеста); + Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьДокумент() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Telegram_ОтправитьДокумент(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьГифку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); + + Telegram_ОтправитьГифку(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьМедиагруппу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Telegram_ОтправитьМедиагруппу(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьМестоположение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Long" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Lat" , ПараметрыТеста); + + Telegram_ОтправитьМестоположение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьКонтакт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Name" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Surname" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Phone" , ПараметрыТеста); + + Telegram_ОтправитьКонтакт(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьОпрос() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_ОтправитьОпрос(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПереслатьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); + + Telegram_ПереслатьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_БанРазбан() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_Бан(ПараметрыТеста); + Telegram_Разбан(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_СоздатьСсылкуПриглашение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_СоздатьСсылкуПриглашение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ЗакрепитьОткрепитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); + + Telegram_ЗакрепитьСообщение(ПараметрыТеста); + Telegram_ОткрепитьСообщение(ПараметрыТеста); + Telegram_УдалитьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьЧислоУчастников() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_ПолучитьЧислоУчастников(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьСписокАватаровФорума() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + Telegram_ПолучитьСписокИконокАватаров(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_СоздатьУдалитьТемуФорума() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + + Telegram_СоздатьТемуФорума(ПараметрыТеста); + Telegram_ИзменитьТемуФорума(ПараметрыТеста); + Telegram_ЗакрытьТемуФорума(ПараметрыТеста); + Telegram_ОткрытьТемуФорума(ПараметрыТеста); + Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыТеста); + Telegram_УдалитьТемуФорума(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_СкрытьПоказатьГлавнуюТему() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + + Telegram_СкрытьГлавнуюТемуФорума(ПараметрыТеста); + Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ИзменитьИмяГлавнойТемы() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + + Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Telegram + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Telegram + +Процедура Telegram_ПолучитьИнформациюБота(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьИнформациюБота", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьИнформациюБота"); + +КонецПроцедуры + +Процедура Telegram_ПолучитьОбновления(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьОбновления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьОбновления"); + +КонецПроцедуры + +Процедура Telegram_УстановитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + URL = ПараметрыФункции["Telegram_URL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УстановитьWebhook", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УстановитьWebhook"); + +КонецПроцедуры + +Процедура Telegram_УдалитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьWebhook", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УдалитьWebhook"); + +КонецПроцедуры + +Процедура Telegram_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + + МассивКнопокКлавиатуры = Новый Массив; + МассивКнопокКлавиатуры.Добавить("Кнопка1"); + МассивКнопокКлавиатуры.Добавить("Кнопка2"); + + // С клавиатурой, в чат + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопокКлавиатуры); + Опции.Вставить("under", Истина); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", , ПараметрыФункции, Текст); // SKIP + + // Простое, в канал + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Канал", ПараметрыФункции, Текст); + + Текст = "Текст html %F0%9F%93%9E 10%"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemode", "HTML"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "HTML"); + + Текст = "%F0%9F%A4%BC"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Emoji"); + + Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Текст + Emoji"); + + Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура, Ложь); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Клавиатура структура"); + + Текст = "%F0%9F%94%A5 *Новый релиз\!* + | + |%F0%9F%8F%B0 *Репозиторий*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Версия*: \{0.6.0} + |%F0%9F%93%85 *Дата релиза*: 6 декабря 2025 г. + | + |>*AI сводка* + |>Devtools - это инструмент для автоматизации работы с конфигурациями\расширениями 1С:Предприятия и интеграции с Git. Приложение позволяет выгружать и загружать объекты, а также синхронизировать изменения между Git и хранилищем 1С. В релизе 0.6.0 реализованы оптимизация логики работы и добавлено логирование, что способствует стабильности и упрощает анализ работы приложения. + | + | + |_Не забывайте ставить %E2%AD%90 понравившимся проектам_"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Сложный"); + +КонецПроцедуры + +Процедура Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка1"); + МассивКнопок.Добавить("Кнопка2"); + МассивКнопок.Добавить("Кнопка3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СформироватьКлавиатуруПоМассивуКнопок"); + +КонецПроцедуры + +Процедура Telegram_ОтправитьКартинку(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Картинка = ПараметрыФункции["Picture"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + КартинкаДД = Новый ДвоичныеДанные(КартинкаПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", КартинкаПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", КартинкаДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Двоичные", ПараметрыФункции, Текст); + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка1"); + МассивКнопок.Добавить("Кнопка2"); + МассивКнопок.Добавить("Кнопка3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + Опции.Вставить("under", Истина); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Клавиатура", ПараметрыФункции, Текст); + + Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Клавиатура коллекция", ПараметрыФункции, Текст); + + Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Текст + Emoji"); + + Текст = "%F0%9F%94%A5 *Новый релиз\!* + | + |%F0%9F%8F%B0 *Репозиторий*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Версия*: \{0.6.0} + |%F0%9F%93%85 *Дата релиза*: 6 декабря 2025 г. + | + |>*AI сводка* + |>Devtools - это инструмент для автоматизации работы с конфигурациями\расширениями 1С:Предприятия и интеграции с Git. Приложение позволяет выгружать и загружать объекты, а также синхронизировать изменения между Git и хранилищем 1С. В релизе 0.6.0 реализованы оптимизация логики работы и добавлено логирование, что способствует стабильности и упрощает анализ работы приложения. + | + | + |_Не забывайте ставить %E2%AD%90 понравившимся проектам_"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Сложный"); + + OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьВидео(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Видео = ПараметрыФункции["Video"]; + + ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); + КопироватьФайл(Видео, ВидеоПуть); + + ВидеоДД = Новый ДвоичныеДанные(ВидеоПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("video", Видео); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьВидео", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("video", ВидеоПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьВидео", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("video", ВидеоДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ВидеоПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьВидео", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьАудио(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Аудио = ПараметрыФункции["Audio"]; + + АудиоПуть = ПолучитьИмяВременногоФайла("mp3"); + КопироватьФайл(Аудио, АудиоПуть); + + АудиоДД = Новый ДвоичныеДанные(АудиоПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("audio", Аудио); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьАудио", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("audio", АудиоПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьАудио", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("audio", АудиоДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(АудиоПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьАудио", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьДокумент(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Документ = ПараметрыФункции["Document"]; + + ДокументПуть = ПолучитьИмяВременногоФайла("docx"); + КопироватьФайл(Документ, ДокументПуть); + + ДокументДД = Новый ДвоичныеДанные(ДокументПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", Документ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", , ПараметрыФункции, Текст); // SKIP + + // В чат, по URL, с указанием имени файла + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", Документ); + Опции.Вставить("filename", "customname.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", "С именем", ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", ДокументПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных, с указанием имени файла + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", ДокументДД); + Опции.Вставить("filename", "customname.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ДокументПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьГифку(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Гифка = ПараметрыФункции["GIF"]; + + ГифкаПуть = ПолучитьИмяВременногоФайла("gif"); + КопироватьФайл(Гифка, ГифкаПуть); + + ГифкаДД = Новый ДвоичныеДанные(ГифкаПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("gif", Гифка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьГифку", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("gif", ГифкаПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьГифку", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("gif", ГифкаДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ГифкаПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьГифку", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьМедиагруппу(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + Текст = ПараметрыФункции["String"]; + Картинка = ПараметрыФункции["Picture"]; + Видео = ПараметрыФункции["Video"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); + КопироватьФайл(Видео, ВидеоПуть); + + ВидеоДД = Новый ДвоичныеДанные(ВидеоПуть); + + Медиагруппа = Новый Соответствие; + Медиагруппа.Вставить(КартинкаПуть, "photo"); + Медиагруппа.Вставить(ВидеоДД , "video"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("media", Медиагруппа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМедиагруппу"); + + ДокументURL = ПараметрыФункции["Document"]; + ДокументПуть = ПолучитьИмяВременногоФайла("docx"); + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + КопироватьФайл(ДокументURL, ДокументПуть); + + МедиаГруппа = Новый Соответствие; + Медиагруппа.Вставить(ДокументURL , "document"); + Медиагруппа.Вставить(ДокументПуть, "document"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("media", Медиагруппа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); + + OPI_Инструменты.УдалитьФайлВПопытке(ВидеоПуть , "Не удалось удалить временный файл после теста!"); + OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); + OPI_Инструменты.УдалитьФайлВПопытке(ДокументПуть, "Не удалось удалить временный файл после теста!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМедиагруппу", "Документы"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьМестоположение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Ширина = ПараметрыФункции["Lat"]; + Долгота = ПараметрыФункции["Long"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("lat", Ширина); + Опции.Вставить("long", Долгота); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМестоположение"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("lat", Ширина); + Опции.Вставить("long", Долгота); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМестоположение", "Канал"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьКонтакт(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Имя = ПараметрыФункции["Name"]; + Фамилия = ПараметрыФункции["Surname"]; + Телефон = ПараметрыФункции["Phone"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("phone", Телефон); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКонтакт", , Имя); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("phone", Телефон); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКонтакт", "Канал", Имя); + +КонецПроцедуры + +Процедура Telegram_ОтправитьОпрос(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Вопрос = "Какой ваш любимый цвет?"; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("Красный"); + МассивОтветов.Добавить("Желтый"); + МассивОтветов.Добавить("Зеленый"); + МассивОтветов.Добавить("Синий"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивОтветов); + Опции.Вставить("anonymous", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьОпрос", , Вопрос); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивОтветов); + Опции.Вставить("anonymous", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьОпрос", "Канал", Вопрос); // SKIP + + // END + + СтрочныйМассив = "['Красный', 'Желтый','Зеленый' ,'Синий']"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", СтрочныйМассив); + Опции.Вставить("anonymous", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьОпрос", "Вопросы строкой", Вопрос); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_СкачатьФайл(ПараметрыФункции) + + IDФайла = ПараметрыФункции["Telegram_FileID"]; + Токен = ПараметрыФункции["Telegram_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СкачатьФайл"); + +КонецПроцедуры + +Процедура Telegram_ПереслатьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("from", IDКанала); + Опции.Вставить("to", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПереслатьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПереслатьСообщение", , IDСообщения); + +КонецПроцедуры + +Процедура Telegram_Бан(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDПользователя = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Бан", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "Бан"); + +КонецПроцедуры + +Процедура Telegram_Разбан(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDПользователя = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Разбан", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "Разбан"); + +КонецПроцедуры + +Процедура Telegram_СоздатьСсылкуПриглашение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Сутки = 86400; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + Заголовок = "Ссылка " + Строка(ТекущаяДата); + Истечение = ТекущаяДата + Сутки; + UnixИстечение = OPI_Инструменты.UNIXTime(Истечение); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("title", Заголовок); + Опции.Вставить("expire", Истечение); + Опции.Вставить("limit", 200); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьСсылкуПриглашение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СоздатьСсылкуПриглашение", , Заголовок, UnixИстечение); + +КонецПроцедуры + +Процедура Telegram_ЗакрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗакрепитьСообщение"); + +КонецПроцедуры + +Процедура Telegram_ОткрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОткрепитьСообщение"); + +КонецПроцедуры + +Процедура Telegram_ПолучитьЧислоУчастников(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьЧислоУчастников", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьЧислоУчастников"); + +КонецПроцедуры + +Процедура Telegram_ПолучитьСписокИконокАватаров(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьСписокИконокАватаров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьСписокИконокАватаров"); + +КонецПроцедуры + +Процедура Telegram_СоздатьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Иконка = "5357419403325481346"; + Имя = "Тестовая тема " + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("title", Имя); + Опции.Вставить("icon", Иконка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СоздатьТемуФорума", , ПараметрыФункции, Имя, Иконка); + + ЧатТема = Чат + "*" + ПараметрыФункции["Telegram_TopicID"]; + Текст = ПараметрыФункции["String"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", ЧатТема); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СоздатьТемуФорума", "Сообщение", ПараметрыФункции, Текст); + +КонецПроцедуры + +Процедура Telegram_ИзменитьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + НовоеИмя = "Новый тестовый заголовок"; + НоваяИконка = "5310132165583840589"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + Опции.Вставить("title", НовоеИмя); + Опции.Вставить("icon", НоваяИконка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ИзменитьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ЗакрытьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); // SKIP + + Результат = OPI_Telegram.ЗакрытьТемуФорума(Токен, Чат); // Закрывает главную тему + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗакрытьТемуФорума", "Главная"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗакрытьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ОткрытьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + Результат = OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); // Открывает главную тему + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОткрытьТемуФорума", "Главная"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОткрытьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_УдалитьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УдалитьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", "Главная"); // SKIP + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы"); + +КонецПроцедуры + +Процедура Telegram_СкрытьГлавнуюТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкрытьГлавнуюТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СкрытьГлавнуюТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПоказатьГлавнуюТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПоказатьГлавнуюТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыФункции) + + Заголовок = "Новое имя главной темы " + Строка(Новый УникальныйИдентификатор); + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьИмяГлавнойТемыФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ИзменитьИмяГлавнойТемыФорума"); + +КонецПроцедуры + +Процедура Telegram_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура Telegram_ЗаменитьТекстСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьТекстСообщения", , Текст); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", "Полужирный текст"); + Опции.Вставить("parsemode", "HTML"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьТекстСообщения", "Разметка", "Полужирный текст"); + +КонецПроцедуры + +Процедура Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDСообщения = ПараметрыФункции["Telegram_MessageID"]; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Новая кнопка 1"); + МассивКнопок.Добавить("Новая кнопка 2"); + МассивКнопок.Добавить("Новая кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + Опции.Вставить("under", Истина); + Опции.Вставить("column", Ложь); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьКлавиатуруСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьКлавиатуруСообщения", , Клавиатура); + +КонецПроцедуры + +Процедура Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDСообщения = ПараметрыФункции["Telegram_PicMessageID"]; + + Описание = "Новое описание картинки"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьОписаниеСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьОписаниеСообщения", , Описание); + +КонецПроцедуры + +#КонецОбласти // Telegram + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure TelegramAPI_GetBotInfo() Export + Телеграм_ПолучитьИнформациюБота(); +EndProcedure + +Procedure TelegramAPI_GetUpdates() Export + Телеграм_ПолучитьОбновления(); +EndProcedure + +Procedure TelegramAPI_SetWebhook() Export + Телеграм_УстановитьWebhook(); +EndProcedure + +Procedure TelegramAPI_SendTextMessage() Export + Телеграм_ОтправитьТекстовоеСообщение(); +EndProcedure + +Procedure TelegramAPI_SendImage() Export + Телеграм_ОтправитьКартинку(); +EndProcedure + +Procedure TelegramAPI_SendVideo() Export + Телеграм_ОтправитьВидео(); +EndProcedure + +Procedure TelegramAPI_SendAudio() Export + Телеграм_ОтправитьАудио(); +EndProcedure + +Procedure TelegramAPI_SendDocument() Export + Телеграм_ОтправитьДокумент(); +EndProcedure + +Procedure TelegramAPI_SendGIF() Export + Телеграм_ОтправитьГифку(); +EndProcedure + +Procedure TelegramAPI_SendMediaGroup() Export + Телеграм_ОтправитьМедиагруппу(); +EndProcedure + +Procedure TelegramAPI_SendLocation() Export + Телеграм_ОтправитьМестоположение(); +EndProcedure + +Procedure TelegramAPI_SendContact() Export + Телеграм_ОтправитьКонтакт(); +EndProcedure + +Procedure TelegramAPI_SendPoll() Export + Телеграм_ОтправитьОпрос(); +EndProcedure + +Procedure TelegramAPI_ForwardMessage() Export + Телеграм_ПереслатьСообщение(); +EndProcedure + +Procedure TelegramAPI_BanUnban() Export + Телеграм_БанРазбан(); +EndProcedure + +Procedure TelegramAPI_CreateInvitationLink() Export + Телеграм_СоздатьСсылкуПриглашение(); +EndProcedure + +Procedure TelegramAPI_PinUnpinMessage() Export + Телеграм_ЗакрепитьОткрепитьСообщение(); +EndProcedure + +Procedure TelegramAPI_GetMemberCount() Export + Телеграм_ПолучитьЧислоУчастников(); +EndProcedure + +Procedure TelegramAPI_GetForumAvatarsList() Export + Телеграм_ПолучитьСписокАватаровФорума(); +EndProcedure + +Procedure TelegramAPI_CreateDeleteForumTopic() Export + Телеграм_СоздатьУдалитьТемуФорума(); +EndProcedure + +Procedure TelegramAPI_HideShowMainTopic() Export + Телеграм_СкрытьПоказатьГлавнуюТему(); +EndProcedure + +Procedure TelegramAPI_ChangeMainTopicName() Export + Телеграм_ИзменитьИмяГлавнойТемы(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl index 7e7c5975df..3ef37967d3 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Twitter/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Twitter.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,403 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Twitter"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Twitter"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Twitter + +Процедура Твиттер_ДанныеАккаунта() Экспорт + + ПараметрыТеста = Новый Структура; + + Twitter_ПолучитьТокен(ПараметрыТеста); + Twitter_ПолучитьСсылкуАвторизации(ПараметрыТеста); + // !DISABLED! Twitter_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура Твиттер_Твиты() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + Twitter_СоздатьТекстовыйТвит(ПараметрыТеста); + Twitter_ЗагрузитьМассивВложений(ПараметрыТеста); + Twitter_СоздатьТвитВидео(ПараметрыТеста); + Twitter_СоздатьТвитКартинки(ПараметрыТеста); + Twitter_СоздатьТвитГифки(ПараметрыТеста); + Twitter_СоздатьТвитОпрос(ПараметрыТеста); + Twitter_СоздатьПроизвольныйТвит(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Twitter + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьПараметрыАвторизацииТвиттер() + + Параметры = Новый Соответствие; + + ТокенСервера = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Access_Token"); + + URL = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_TokenURL"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию(ТокенСервера) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + Токен = Результат["data"]; + + Параметры.Вставить("redirect_uri" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Redirect")); + Параметры.Вставить("client_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientID")); + Параметры.Вставить("client_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientSecret")); + Параметры.Вставить("access_token" , Токен); + Параметры.Вставить("refresh_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Refresh")); + Параметры.Вставить("oauth_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthToken")); + Параметры.Вставить("oauth_token_secret", OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthSecret")); + + Параметры.Вставить("oauth_consumer_key" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerKey")); + Параметры.Вставить("oauth_consumer_secret", OPI_ПолучениеДанныхТестов.ПолучитьПараметр( + "Twitter_OAuthConsumerSecret")); + + Возврат Параметры; + +КонецФункции + +#Область АтомарныеТесты + +#Область Twitter + +Процедура Twitter_ПолучитьТокен(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Код = "123456"; + + Опции = Новый Структура; + Опции.Вставить("code", Код); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Twitter_ПолучитьСсылкуАвторизации(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьСсылкуАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ПолучитьСсылкуАвторизации"); + +КонецПроцедуры + +Процедура Twitter_ОбновитьТокен(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура Twitter_СоздатьТекстовыйТвит(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТекстовыйТвит", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТекстовыйТвит", , Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитКартинки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", МассивКартинок); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитКартинки", , Текст); // SKIP + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитКартинки", "Одиночная", Текст); + + Картинка = OPI_ЗапросыHTTP.Get(Картинка); + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитКартинки", "Двоичные", Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитВидео(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Видео = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу + Видео2 = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу + + МассивВидео = Новый Массив; + МассивВидео.Добавить(Видео); + МассивВидео.Добавить(Видео2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("videos", МассивВидео); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитВидео", , Текст); // SKIP + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("videos", Видео); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитВидео", "Одиночная", Текст); + + Видео = OPI_ЗапросыHTTP.Get(Видео); + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("videos", Видео); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитВидео", "Двоичные", Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитГифки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Гифка = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу + Гифка2 = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу + + МассивГифок = Новый Массив; + МассивГифок.Добавить(Гифка); + МассивГифок.Добавить(Гифка2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", МассивГифок); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитГифки", , Текст); // SKIP + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", Гифка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитГифки", "Одиночная", Текст); + + Гифка = OPI_ЗапросыHTTP.Get(Гифка); + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", Гифка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитГифки", "Двоичные", Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитОпрос(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("Вариант 1"); + МассивОтветов.Добавить("Вариант 2"); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("options", МассивОтветов); + Опции.Вставить("duration", 60); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитОпрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитОпрос", , Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьПроизвольныйТвит(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("files", МассивКартинок); + Опции.Вставить("type", "tweet_image"); + Опции.Вставить("auth", Параметры); + + МассивМедиа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("media", МассивМедиа); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьПроизвольныйТвит", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьПроизвольныйТвит", , Текст); + +КонецПроцедуры + +Процедура Twitter_ЗагрузитьМассивВложений(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("files", МассивКартинок); + Опции.Вставить("type", "tweet_image"); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ЗагрузитьМассивВложений"); + +КонецПроцедуры + +#КонецОбласти // Twitter + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure TwitterAPI_AccountData() Export + Твиттер_ДанныеАккаунта(); +EndProcedure + +Procedure TwitterAPI_Tweets() Export + Твиттер_Твиты(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl index 7e7c5975df..7e63b94f09 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_VK/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VK.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,1465 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("VK"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("VK"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область VK + +Процедура ВК_СоздатьСсылкуТокена() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AppID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_GroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_Token" , ПараметрыТеста); + + VK_СоздатьСсылкуПолученияТокена(ПараметрыТеста); + VK_ПолучитьПараметрыАвторизации(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьУдалитьПост() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + VK_СоздатьПост(ПараметрыТеста); + VK_УдалитьПост(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьСоставнойПост() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + VK_СоздатьСоставнойПост(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьОпрос() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + VK_СоздатьОпрос(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СохранитьУдалитьКартинку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + VK_СоздатьАльбом(ПараметрыТеста); + VK_СохранитьКартинкуВАльбом(ПараметрыТеста); + VK_УдалитьКартинку(ПараметрыТеста); + VK_УдалитьАльбом(ПараметрыТеста); + VK_ЗагрузитьФотоНаСервер(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьИсторию() Экспорт + + ПараметрыТеста = Новый Соответствие; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + VK_СоздатьИсторию(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ЛайкРепостКоммент() Экспорт + + ПараметрыТеста = Новый Структура; + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + + Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); + ИДПоста = Результат["response"]["post_id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID", ПараметрыТеста); + + VK_СделатьРепост(ПараметрыТеста); + VK_НаписатьКомментарий(ПараметрыТеста); + VK_СократитьСсылку(ПараметрыТеста); + + OPI_VK.УдалитьПост(ИДПоста , Параметры); + OPI_VK.УдалитьПост(ПараметрыТеста["Repost"], Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ПолучитьСтатистику() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСтатистику(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ПолучитьСтатистикуПостов() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСтатистикуПостов(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_СоздатьРекламнуюКампанию() Экспорт + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + + Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); + ИДПоста = Результат["response"]["post_id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AdsCabinetID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID" , ПараметрыТеста); + + // !DISABLED! VK_СоздатьРекламнуюКампанию(ПараметрыТеста); + // !DISABLED! VK_СоздатьРекламноеОбъявление(ПараметрыТеста); + // !DISABLED! VK_ПриостановитьРекламноеОбъявление(ПараметрыТеста); + VK_ПолучитьСписокРекламныхКатегорий(ПараметрыТеста); + + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ОтправитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_UserID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_CommunityToken", ПараметрыТеста); + + VK_СформироватьКлавиатуру(ПараметрыТеста); + VK_НаписатьСообщение(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ПолучитьКатегорииТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокКатегорийТоваров(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_СоздатьТоварПодборку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + VK_СоздатьПодборкуТоваров(ПараметрыТеста); + VK_ИзменитьПодборкуТоваров(ПараметрыТеста); + VK_ПолучитьПодборкиПоИД(ПараметрыТеста); + VK_ДобавитьТовар(ПараметрыТеста); + VK_ИзменитьТовар(ПараметрыТеста); + VK_ДобавитьТоварВПодборку(ПараметрыТеста); + VK_УдалитьТоварИзПодборки(ПараметрыТеста); + VK_УдалитьТовар(ПараметрыТеста); + VK_УдалитьПодборку(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_СоздатьТоварСоСвойствами() Экспорт + + Параметры = ПолучитьПараметрыВК(); + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + VK_ПолучитьОписаниеТовара(ПараметрыТеста); + VK_СоздатьСвойствоТовара(ПараметрыТеста); + VK_ИзменитьСвойствоТовара(ПараметрыТеста); + VK_ДобавитьВариантСвойстваТовара(ПараметрыТеста); + VK_ИзменитьВариантСвойстваТовара(ПараметрыТеста); + VK_СоздатьТоварСоСвойством(ПараметрыТеста); + VK_ПолучитьТоварыПоИД(ПараметрыТеста); + VK_СгруппироватьТовары(ПараметрыТеста); + + OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID2"], Параметры); + OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID3"], Параметры); + + VK_УдалитьВариантСвойстваТовара(ПараметрыТеста); + VK_УдалитьСвойствоТовара(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокТоваров(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокПодборок() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокПодборок(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокСвойств() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокСвойств(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокЗаказов() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокЗаказов(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ЗагрузитьВидео() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video", ПараметрыТеста); + + VK_ЗагрузитьВидеоНаСервер(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // VK + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьПараметрыВК() + + Параметры = Новый Структура; + НомерГруппы = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_GroupID"); + + Параметры.Вставить("access_token", OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_Token")); + Параметры.Вставить("owner_id" , "-" + НомерГруппы); + Параметры.Вставить("app_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_AppID")); + Параметры.Вставить("group_id" , НомерГруппы); + + Возврат Параметры; + +КонецФункции + +#Область АтомарныеТесты + +#Область VK + +Процедура VK_СоздатьСсылкуПолученияТокена(ПараметрыФункции) + + Приложение = ПараметрыФункции["VK_AppID"]; + Опции = Новый Структура; + Опции.Вставить("app", Приложение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСсылкуПолученияТокена", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьСсылкуПолученияТокена"); + +КонецПроцедуры + +Процедура VK_ПолучитьПараметрыАвторизации(ПараметрыФункции) + + IDГруппы = ПараметрыФункции["VK_GroupID"]; + IDПриложения = ПараметрыФункции["VK_AppID"]; + Токен = ПараметрыФункции["VK_Token"]; + + Опции = Новый Структура; + Опции.Вставить("group", IDГруппы); + Опции.Вставить("app", IDПриложения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПараметрыАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьПараметрыАвторизации"); + +КонецПроцедуры + +Процедура VK_СоздатьПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка2, ИВФ); + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка); + МассивКартинок.Добавить(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", МассивКартинок); + Опции.Вставить("ad", Истина); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПост", , Параметры); // SKIP + + ИДПоста = Результат["response"]["post_id"]; // SKIP + OPI_VK.УдалитьПост(ИДПоста, Параметры); // SKIP + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("ad", Ложь); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПост", "Картинка", Параметры); + + ИДПоста = Результат["response"]["post_id"]; + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", ИВФ); + Опции.Вставить("ad", Истина); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПост", "Путь", ПараметрыФункции); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VK_УдалитьПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДПоста = ПараметрыФункции["VK_PostID"]; + + Опции = Новый Структура; + Опции.Вставить("post", ИДПоста); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьПост"); + +КонецПроцедуры + +Процедура VK_СоздатьСоставнойПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Видео = ПараметрыФункции["Video"]; // URL, Путь или Двоичные данные + + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, ИВФ); + + ЗагрузкаКартинки = OPI_VK.ЗагрузитьФотоНаСервер(ИВФ, Параметры)["response"][0]; + Опции = Новый Структура; + Опции.Вставить("file", Видео); + Опции.Вставить("title", "Новое видео"); + Опции.Вставить("auth", Параметры); + + ЗагрузкаВидео = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); + + ВладелецКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["owner_id"]); + ВладелецВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["owner_id"]); + + IDКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["id"]); + IDВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["video_id"]); + + МассивВложений = Новый Массив; + МассивВложений.Добавить("photo" + ВладелецКартинки + "_" + IDКартинки); + МассивВложений.Добавить("video" + ВладелецВидео + "_" + IDВидео); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("objects", МассивВложений); + Опции.Вставить("ad", Ложь); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСоставнойПост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьСоставнойПост"); + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VK_СоздатьОпрос(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Вопрос = "Какой ваш любимый цвет?"; + + МассивВариантов = Новый Массив; + МассивВариантов.Добавить("Красный"); + МассивВариантов.Добавить("Желтый"); + МассивВариантов.Добавить("Зеленый"); + + Опции = Новый Структура; + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивВариантов); + Опции.Вставить("text", "Текст поста"); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьОпрос", "Текст"); // SKIP + + // С картинкой + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивВариантов); + Опции.Вставить("picture", Картинка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьОпрос"); + + ИДПоста = Результат["response"]["post_id"]; + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура VK_СоздатьАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Имя = "Альбом из автотеста"; + Описание = "Новый альбом из автотеста"; + + Опции = Новый Структура; + Опции.Вставить("title", Имя); + Опции.Вставить("description", Описание); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьАльбом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьАльбом", , ПараметрыФункции, Описание); + +КонецПроцедуры + +Процедура VK_СохранитьКартинкуВАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ОписаниеКартинки = "Картинка автотест"; + ИДАльбома = ПараметрыФункции["VK_AlbumID"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("album", ИДАльбома); + Опции.Вставить("picture", Картинка); + Опции.Вставить("description", ОписаниеКартинки); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СохранитьКартинкуВАльбом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СохранитьКартинкуВАльбом", , ПараметрыФункции, ОписаниеКартинки, ИДАльбома); + +КонецПроцедуры + +Процедура VK_УдалитьКартинку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДКартинки = ПараметрыФункции["VK_PictureID"]; + + Опции = Новый Структура; + Опции.Вставить("pictureid", ИДКартинки); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьКартинку"); + +КонецПроцедуры + +Процедура VK_УдалитьАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДАльбома = ПараметрыФункции["VK_AlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("album", ИДАльбома); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьАльбом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьАльбом"); + +КонецПроцедуры + +Процедура VK_СоздатьИсторию(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, ИВФ); + Картинка = Новый ДвоичныеДанные(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьИсторию"); // SKIP + + // END + + Опции = Новый Структура; + Опции.Вставить("picture", ИВФ); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьИсторию", "Путь"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VK_СделатьРепост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + IDПоста = 2571; + IDСтены = -218704372; + + Опции = Новый Структура; + Опции.Вставить("post", IDПоста); + Опции.Вставить("from", IDСтены); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СделатьРепост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СделатьРепост", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_НаписатьКомментарий(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Новый комментарий"; + IDПоста = ПараметрыФункции["VK_PostID"]; + IDСтены = Параметры["owner_id"]; + + Опции = Новый Структура; + Опции.Вставить("post", IDПоста); + Опции.Вставить("wall", IDСтены); + Опции.Вставить("text", Текст); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "НаписатьКомментарий"); + +КонецПроцедуры + +Процедура VK_ПолучитьСтатистику(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ДатаНачала = НачалоДня(ТекущаяДата); + ДатаОкончания = КонецДня(ДатаНачала); + + Опции = Новый Структура; + Опции.Вставить("datefrom", ДатаНачала); + Опции.Вставить("dateto", ДатаОкончания); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистику", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСтатистику"); + +КонецПроцедуры + +Процедура VK_ПолучитьСтатистикуПостов(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + МассивПостов = Новый Массив; + МассивПостов.Добавить(214); + МассивПостов.Добавить(215); + + Опции = Новый Структура; + Опции.Вставить("posts", МассивПостов); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистикуПостов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСтатистикуПостов"); + +КонецПроцедуры + +Процедура VK_СоздатьРекламнуюКампанию(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + Наименование = "Новая кампания"; + + Опции = Новый Структура; + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("title", Наименование); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламнуюКампанию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьРекламнуюКампанию", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_СоздатьРекламноеОбъявление(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + НомерКампании = ПараметрыФункции["VK_AdsCampaignID"]; + ДневнойЛимит = 150; + НомерКатегории = 126; + IDПоста = ПараметрыФункции["VK_PostID"]; + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + + Опции = Новый Структура; + Опции.Вставить("campaign", НомерКампании); + Опции.Вставить("limit", ДневнойЛимит); + Опции.Вставить("category", НомерКатегории); + Опции.Вставить("post", IDПоста); + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламноеОбъявление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьРекламноеОбъявление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ПриостановитьРекламноеОбъявление(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + IDОбъявления = ПараметрыФункции["VK_AdsPostID"]; + + Опции = Новый Структура; + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("adv", IDОбъявления); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПриостановитьРекламноеОбъявление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПриостановитьРекламноеОбъявление"); + +КонецПроцедуры + +Процедура VK_СформироватьКлавиатуру(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Button 1"); + МассивКнопок.Добавить("Button 2"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СформироватьКлавиатуру"); + +КонецПроцедуры + +Процедура VK_НаписатьСообщение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Текст = "Сообщение из автотеста"; + IDПользователя = ПараметрыФункции["VK_UserID"]; + Communitytoken = ПараметрыФункции["VK_CommunityToken"]; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Button 1"); + МассивКнопок.Добавить("Button 2"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ct", Communitytoken); + Опции.Вставить("keyboard", Клавиатура); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "НаписатьСообщение"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокКатегорийТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокКатегорийТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокКатегорийТоваров"); + +КонецПроцедуры + +Процедура VK_СоздатьПодборкуТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Тестовая подборка"; + Картинка = ПараметрыФункции["Picture"]; + Основная = Истина; + Скрытая = Ложь; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("picture", Картинка); + Опции.Вставить("main", Основная); + Опции.Вставить("hidden", Скрытая); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПодборкуТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПодборкуТоваров", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ИзменитьПодборкуТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Измененная подборка"; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьПодборкуТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьПодборкуТоваров"); + +КонецПроцедуры + +Процедура VK_ПолучитьПодборкиПоИД(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sels", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПодборкиПоИД", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьПодборкиПоИД"); + +КонецПроцедуры + +Процедура VK_ДобавитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + ОписаниеТовара = Новый Соответствие; + ОписаниеТовара.Вставить("Имя" , "Тестовый товар"); + ОписаниеТовара.Вставить("Описание" , "Описание товара"); + ОписаниеТовара.Вставить("Категория" , "20173"); + ОписаниеТовара.Вставить("Цена" , 1); + ОписаниеТовара.Вставить("СтараяЦена" , 15); + ОписаниеТовара.Вставить("ОсновноеФото" , Картинка1); + ОписаниеТовара.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + ОписаниеТовара.Вставить("ДополнительныеФото", МассивКартинок); + ОписаниеТовара.Вставить("ГлавныйВГруппе" , Истина); + ОписаниеТовара.Вставить("Ширина" , 20); + ОписаниеТовара.Вставить("Высота" , 30); + ОписаниеТовара.Вставить("Глубина" , 40); + ОписаниеТовара.Вставить("Вес" , 100); + ОписаниеТовара.Вставить("SKU" , "12345"); + ОписаниеТовара.Вставить("ДоступныйОстаток" , "10"); + + Опции = Новый Структура; + Опции.Вставить("product", ОписаниеТовара); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ДобавитьТовар", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ИзменитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + + ОписаниеТовара = Новый Соответствие; + ОписаниеТовара.Вставить("Имя", "Тестовый товар измененный"); + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("product", ОписаниеТовара); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьТовар"); + +КонецПроцедуры + +Процедура VK_ДобавитьТоварВПодборку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("items", Товар); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТоварВПодборку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ДобавитьТоварВПодборку"); + +КонецПроцедуры + +Процедура VK_УдалитьТоварИзПодборки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТоварИзПодборки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьТоварИзПодборки"); + +КонецПроцедуры + +Процедура VK_УдалитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьТовар"); + +КонецПроцедуры + +Процедура VK_УдалитьПодборку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПодборку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьПодборку"); + +КонецПроцедуры + +Процедура VK_СоздатьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Цвет"; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСвойствоТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьСвойствоТовара", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ИзменитьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Цвет (изм.)"; + Свойство = ПараметрыФункции["VK_PropID"]; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("prop", Свойство); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьСвойствоТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьСвойствоТовара"); + +КонецПроцедуры + +Процедура VK_ДобавитьВариантСвойстваТовара(ПараметрыФункции) + + Счетчик = 1; // SKIP + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + МассивВариантов = Новый Массив; + МассивВариантов.Добавить("Желтый"); + МассивВариантов.Добавить("Синий"); + МассивВариантов.Добавить("Красный"); + + Для Каждого Значение Из МассивВариантов Цикл + + Результат = OPI_VK.ДобавитьВариантСвойстваТовара(Значение, Свойство, Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ДобавитьВариантСвойстваТовара", , ПараметрыФункции, Счетчик); // SKIP + + Счетчик = Счетчик + 1; // SKIP + + КонецЦикла; + + // END + +КонецПроцедуры + +Процедура VK_ИзменитьВариантСвойстваТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + Вариант = ПараметрыФункции["VK_PropVarID1"]; + Значение = "Новое имя варианта"; + + Опции = Новый Структура; + Опции.Вставить("value", Значение); + Опции.Вставить("prop", Свойство); + Опции.Вставить("option", Вариант); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьВариантСвойстваТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьВариантСвойстваТовара"); + +КонецПроцедуры + +Процедура VK_СоздатьТоварСоСвойством(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка1 = ПараметрыФункции["Picture"]; + Картинка2 = ПараметрыФункции["Picture2"]; + ВариантСвойства1 = ПараметрыФункции["VK_PropVarID1"]; + ВариантСвойства2 = ПараметрыФункции["VK_PropVarID2"]; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Товар = Новый Соответствие; + Товар.Вставить("Имя" , "Тестовый товар (со свойством)"); + Товар.Вставить("Описание" , "Описание товара"); + Товар.Вставить("Категория" , "20173"); + Товар.Вставить("Цена" , 1); + Товар.Вставить("СтараяЦена" , 15); + Товар.Вставить("ОсновноеФото" , Картинка1); + Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + Товар.Вставить("ДополнительныеФото", МассивКартинок); + Товар.Вставить("ГлавныйВГруппе" , Истина); + Товар.Вставить("Ширина" , 20); + Товар.Вставить("Высота" , 30); + Товар.Вставить("Глубина" , 40); + Товар.Вставить("Вес" , 100); + Товар.Вставить("SKU" , 12345); + Товар.Вставить("ДоступныйОстаток" , "10"); + Товар.Вставить("ЗначенияСвойств" , ВариантСвойства1); + + Опции = Новый Структура; + Опции.Вставить("product", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьТоварСоСвойством", "Первый", ПараметрыФункции, 2); + + Товар.Вставить("Имя" , "Тестовый товар (другой)"); + Товар.Вставить("ЗначенияСвойств", ВариантСвойства2); + + Опции = Новый Структура; + Опции.Вставить("product", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьТоварСоСвойством", "Второй", ПараметрыФункции, 3); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура VK_ПолучитьТоварыПоИД(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар1 = ПараметрыФункции["VK_MarketItemID2"]; + Товар2 = ПараметрыФункции["VK_MarketItemID3"]; + + МассивТоваров = Новый Массив; + МассивТоваров.Добавить(Товар1); + МассивТоваров.Добавить(Товар2); + + Опции = Новый Структура; + Опции.Вставить("items", МассивТоваров); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьТоварыПоИД", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьТоварыПоИД"); + +КонецПроцедуры + +Процедура VK_СгруппироватьТовары(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар1 = ПараметрыФункции["VK_MarketItemID2"]; + Товар2 = ПараметрыФункции["VK_MarketItemID3"]; + + МассивТоваров = Новый Массив; + МассивТоваров.Добавить(Товар1); + МассивТоваров.Добавить(Товар2); + + Опции = Новый Структура; + Опции.Вставить("items", МассивТоваров); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СгруппироватьТовары", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СгруппироватьТовары"); + +КонецПроцедуры + +Процедура VK_УдалитьВариантСвойстваТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Вариант = ПараметрыФункции["VK_PropVarID1"]; + + Опции = Новый Структура; + Опции.Вставить("option", Вариант); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьВариантСвойстваТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьВариантСвойстваТовара"); + +КонецПроцедуры + +Процедура VK_УдалитьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + + Опции = Новый Структура; + Опции.Вставить("prop", Свойство); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьСвойствоТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьСвойствоТовара"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокТоваров"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокПодборок(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокПодборок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокПодборок"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокСвойств(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокСвойств", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокСвойств"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокЗаказов(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокЗаказов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокЗаказов"); + +КонецПроцедуры + +Процедура VK_ЗагрузитьВидеоНаСервер(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Видео = ПараметрыФункции["Video"]; // URL, Двоичные данные или Путь к файлу + Наименование = "Новое видео"; + Описание = "Описание видео"; + + Опции = Новый Структура; + Опции.Вставить("file", Видео); + Опции.Вставить("title", Наименование); + Опции.Вставить("description", Описание); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ЗагрузитьВидеоНаСервер"); + +КонецПроцедуры + +Процедура VK_ЗагрузитьФотоНаСервер(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Вид = "Пост"; + + Опции = Новый Структура; + Опции.Вставить("file", Картинка); + Опции.Вставить("auth", Параметры); + Опции.Вставить("type", Вид); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьФотоНаСервер", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ЗагрузитьФотоНаСервер"); + +КонецПроцедуры + +Процедура VK_СократитьСсылку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("url", "https://github.com/Bayselonarrend/OpenIntegrations"); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СократитьСсылку", Опции); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокРекламныхКатегорий(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокРекламныхКатегорий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокРекламныхКатегорий"); + +КонецПроцедуры + +Процедура VK_ПолучитьОписаниеТовара(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьОписаниеТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьОписаниеТовара"); + +КонецПроцедуры + +#КонецОбласти // VK + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure VKAPI_CreateTokenLink() Export + ВК_СоздатьСсылкуТокена(); +EndProcedure + +Procedure VKAPI_CreateDeletePost() Export + ВК_СоздатьУдалитьПост(); +EndProcedure + +Procedure VKAPI_CreateCompositePost() Export + ВК_СоздатьСоставнойПост(); +EndProcedure + +Procedure VKAPI_CreatePoll() Export + ВК_СоздатьОпрос(); +EndProcedure + +Procedure VKAPI_SaveDeleteImage() Export + ВК_СохранитьУдалитьКартинку(); +EndProcedure + +Procedure VKAPI_CreateStory() Export + ВК_СоздатьИсторию(); +EndProcedure + +Procedure VKAPI_LikeRepostComment() Export + ВК_ЛайкРепостКоммент(); +EndProcedure + +Procedure VKAPI_GetStatistics() Export + ВК_ПолучитьСтатистику(); +EndProcedure + +Procedure VKAPI_GetPostStatistics() Export + ВК_ПолучитьСтатистикуПостов(); +EndProcedure + +Procedure VKAPI_CreateAdCampaign() Export + ВК_СоздатьРекламнуюКампанию(); +EndProcedure + +Procedure VKAPI_SendMessage() Export + ВК_ОтправитьСообщение(); +EndProcedure + +Procedure VKAPI_GetProductCategories() Export + ВК_ПолучитьКатегорииТоваров(); +EndProcedure + +Procedure VKAPI_CreateProductSelection() Export + ВК_СоздатьТоварПодборку(); +EndProcedure + +Procedure VKAPI_CreateProductWithProperties() Export + ВК_СоздатьТоварСоСвойствами(); +EndProcedure + +Procedure VKAPI_GetProductList() Export + ВК_ПолучитьСписокТоваров(); +EndProcedure + +Procedure VKAPI_GetSelectionList() Export + ВК_ПолучитьСписокПодборок(); +EndProcedure + +Procedure VKAPI_GetPropertyList() Export + ВК_ПолучитьСписокСвойств(); +EndProcedure + +Procedure VKAPI_GetOrderList() Export + ВК_ПолучитьСписокЗаказов(); +EndProcedure + +Procedure VKAPI_UploadVideo() Export + ВК_ЗагрузитьВидео(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl index 7e7c5975df..1febd28681 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_VKTeams/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VKTeams.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,855 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("VKTeams"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("VKTeams"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область VkTeams + +Процедура ВКТ_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_FileID", ПараметрыТеста); + + VkTeams_ПроверитьТокен(ПараметрыТеста); + VkTeams_ПолучитьСобытия(ПараметрыТеста); + VKTeams_ПолучитьИнформациюОФайле(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВКТ_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_MessageID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio2" , ПараметрыТеста); + + VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста); + OPI_Инструменты.Пауза(60); + + VKTeams_ОтветитьНаСобытиеКлавиатуры(ПараметрыТеста); + VKTeams_ПереслатьСообщение(ПараметрыТеста); + VKTeams_ОтправитьФайл(ПараметрыТеста); + VKTeams_ПереслатьФайл(ПараметрыТеста); + VKTeams_ИзменитьТекстСообщения(ПараметрыТеста); + VKTeams_ЗакрепитьСообщение(ПараметрыТеста); + VKTeams_ОткрепитьСообщение(ПараметрыТеста); + VKTeams_УдалитьСообщение(ПараметрыТеста); + VKTeams_ОтправитьГолосовоеСообщение(ПараметрыТеста); + VKTeams_ПереслатьГолосовоеСообщение(ПараметрыТеста); + VKTeams_СформироватьКнопкуДействия(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВКТ_УправлениеЧатами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); + + VKTeams_ИсключитьПользователейЧата(ПараметрыТеста); + VKTeams_ИзменитьАватарЧата(ПараметрыТеста); + VKTeams_ПолучитьИнформациюОЧате(ПараметрыТеста); + VKTeams_ПолучитьАдминистраторовЧата(ПараметрыТеста); + VKTeams_ПолучитьПользователейЧата(ПараметрыТеста); + VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыТеста); + VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыТеста); + VKTeams_ЗаблокироватьПользователяЧата(ПараметрыТеста); + VKTeams_РазблокироватьПользователяЧата(ПараметрыТеста); + VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыТеста); + VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыТеста); + VKTeams_УстановитьЗаголовокЧата(ПараметрыТеста); + VKTeams_УстановитьОписаниеЧата(ПараметрыТеста); + VKTeams_УстановитьПравилаЧата(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // VkTeams + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область VKTeams + +Процедура VKTeams_ПроверитьТокен(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПроверитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПроверитьТокен"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьСобытия(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDПоследнего = 0; + + Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл + + Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьСобытия"); // SKIP + + События = Результат["events"]; + + // Обработка событий... + + Если Не События.Количество() = 0 Тогда + + IDПоследнего = События[События.ВГраница()]["eventId"]; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_Инструменты.Пауза(3); + +КонецПроцедуры + +Процедура VKTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + Текст = "Текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьТекстовоеСообщение", "Простое", ПараметрыФункции); // SKIP + + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; + Текст = "Полужирный текст сообщения"; + Разметка = "HTML"; + + Клавиатура = Новый Массив; + МассивСтрокиКнопок = Новый Массив; + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка1", "НажатиеКнопки1", , "attention")); + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Клавиатура.Добавить(МассивСтрокиКнопок); + Клавиатура.Добавить(МассивСтрокиКнопок); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("reply", IDЦитируемого); + Опции.Вставить("keyboard", Клавиатура); + Опции.Вставить("parsemod", Разметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VKTeams_ПереслатьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDЧатаИсточника = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("fromid", IDЧатаИсточника); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьСообщение", "Простое"); // SKIP + + Текст = "Дополнительный текст"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("fromid", IDЧатаИсточника); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОтправитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + Текст = "Подпись к файлу"; + + Файл = ПараметрыФункции["Document"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("docx"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьФайл", "URL", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлПуть); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьФайл", "Путь", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлДД); + Опции.Вставить("text", Текст); + Опции.Вставить("filename", "ВажныйДокумент.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьФайл", , ПараметрыФункции); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VKTeams_ПереслатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDФайла = ПараметрыФункции["VkTeams_FileID"]; + Текст = "Подпись к файлу"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьФайл"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьИнформациюОФайле(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDФайла = ПараметрыФункции["VkTeams_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОФайле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьИнформациюОФайле"); + +КонецПроцедуры + +Процедура VKTeams_ИзменитьТекстСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьТекстСообщения", "Путь"); // SKIP + + Текст = "Новый полужирный текст сообщения"; + Разметка = "HTML"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemod", Разметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьТекстСообщения"); + +КонецПроцедуры + +Процедура VKTeams_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОтправитьГолосовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; + + Файл = ПараметрыФункции["Audio2"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("m4a"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", "URL", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлПуть); + Опции.Вставить("reply", IDЦитируемого); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", "Путь", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", , ПараметрыФункции); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VKTeams_ПереслатьГолосовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDФайла = ПараметрыФункции["VkTeams_VoiceID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьГолосовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьГолосовоеСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ИсключитьПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("members", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИсключитьПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИсключитьПользователейЧата"); + +КонецПроцедуры + +Процедура VKTeams_ИзменитьАватарЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Файл = ПараметрыФункции["Picture3"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("png"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьАватарЧата", "URL"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьАватарЧата", "Путь"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьАватарЧата"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьИнформациюОЧате(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОЧате", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьИнформациюОЧате"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьАдминистраторовЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьАдминистраторовЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьАдминистраторовЧата"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьПользователейЧата"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗаблокированныхПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьЗаблокированныхПользователейЧата"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗапросыВступленияЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьЗапросыВступленияЧата"); + +КонецПроцедуры + +Процедура VKTeams_ЗаблокироватьПользователяЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + Опции.Вставить("dellast", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗаблокироватьПользователяЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ЗаблокироватьПользователяЧата"); + +КонецПроцедуры + +Процедура VKTeams_РазблокироватьПользователяЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "РазблокироватьПользователяЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "РазблокироватьПользователяЧата"); + +КонецПроцедуры + +Процедура VKTeams_ЗакрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗакрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ЗакрепитьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОткрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОткрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОткрепитьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОдобритьЗаявкуНаВступление", "Один"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОдобритьЗаявкуНаВступление"); + +КонецПроцедуры + +Процедура VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтклонитьЗаявкуНаВступление", "Один"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтклонитьЗаявкуНаВступление"); + +КонецПроцедуры + +Процедура VKTeams_УстановитьЗаголовокЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Новый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьЗаголовокЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УстановитьЗаголовокЧата"); + +КонецПроцедуры + +Процедура VKTeams_УстановитьОписаниеЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьОписаниеЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УстановитьОписаниеЧата"); + +КонецПроцедуры + +Процедура VKTeams_УстановитьПравилаЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Текст новых правил"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УстановитьПравилаЧата"); + +КонецПроцедуры + +Процедура VKTeams_ОтветитьНаСобытиеКлавиатуры(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDПоследнего = 0; + + Для Н = 1 По 5 Цикл + + Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3); + События = Результат["events"]; + + Если Не События.Количество() = 0 Тогда + + Для Каждого Событие Из События Цикл + + ДанныеСобытия = Событие["payload"]; + + Если ДанныеСобытия["callbackData"] = "НажатиеКнопки1" Тогда + + IDСобытия = ДанныеСобытия["queryId"]; + Результат = OPI_VKTeams.ОтветитьНаСобытиеКлавиатуры(Токен, IDСобытия, "Получено!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтветитьНаСобытиеКлавиатуры"); // SKIP + + КонецЕсли; + + КонецЦикла; + + IDПоследнего = События[События.ВГраница()]["eventId"]; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_Инструменты.Пауза(3); + +КонецПроцедуры + +Процедура VKTeams_СформироватьКнопкуДействия(ПараметрыФункции) + + Клавиатура = Новый Массив; + МассивСтрокиКнопок = Новый Массив; + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка1", "НажатиеКнопки1", , "attention")); + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Клавиатура.Добавить(МассивСтрокиКнопок); + Клавиатура.Добавить(МассивСтрокиКнопок); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + // END + +КонецПроцедуры + +#КонецОбласти // VKTeams + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure VKT_CommonMethods() Export + ВКТ_ОбщиеМетоды(); +EndProcedure + +Procedure VKT_MessagesSending() Export + ВКТ_ОтправкаСообщений(); +EndProcedure + +Procedure VKT_ChatManagement() Export + ВКТ_УправлениеЧатами(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl index 7e7c5975df..69f7005634 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_Viber/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Viber.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,432 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Viber"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Viber"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Viber + +Процедура Вайбер_ПолучениеИнформации() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); + + Возврат; + + //@skip-check unreachable-statements + // BSLLS:UnreachableCode-off + + Viber_ПолучитьИнформациюОКанале(ПараметрыТеста); + Viber_ПолучитьДанныеПользователя(ПараметрыТеста); + Viber_ПолучитьОнлайнПользователей(ПараметрыТеста); + Viber_УстановитьWebhook(ПараметрыТеста); + + // BSLLS:UnreachableCode-on + +КонецПроцедуры + +Процедура Вайбер_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_UserID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыТеста); + + Возврат; + + //@skip-check unreachable-statement + // BSLLS:UnreachableCode-off + + Viber_ОтправитьТекстовоеСообщение(ПараметрыТеста); + Viber_ОтправитьКартинку(ПараметрыТеста); + Viber_ОтправитьФайл(ПараметрыТеста); + Viber_ОтправитьКонтакт(ПараметрыТеста); + Viber_ОтправитьЛокацию(ПараметрыТеста); + Viber_ОтправитьСсылку(ПараметрыТеста); + + // BSLLS:UnreachableCode-on + +КонецПроцедуры + +#КонецОбласти // Viber + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Viber + +Процедура Viber_УстановитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + URL = "http://api.athenaeum.digital/hs/viber"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "УстановитьWebhook", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "УстановитьWebhook"); + +КонецПроцедуры + +Процедура Viber_ПолучитьИнформациюОКанале(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьИнформациюОКанале", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ПолучитьИнформациюОКанале"); + +КонецПроцедуры + +Процедура Viber_ПолучитьДанныеПользователя(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьДанныеПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ПолучитьДанныеПользователя"); + +КонецПроцедуры + +Процедура Viber_ПолучитьОнлайнПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("users", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьОнлайнПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ПолучитьОнлайнПользователей"); + +КонецПроцедуры + +Процедура Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка 1"); + МассивКнопок.Добавить("Кнопка 2"); + МассивКнопок.Добавить("Кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "СформироватьКлавиатуруИзМассиваКнопок"); + +КонецПроцедуры + +Процедура Viber_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Текст = "Тестовое сообщение"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка 1"); + МассивКнопок.Добавить("Кнопка 2"); + МассивКнопок.Добавить("Кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("text", Текст); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьТекстовоеСообщение"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("text", Текст); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьТекстовоеСообщение", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьКартинку(ПараметрыФункции) + + Описание = "Тестовое сообщение"; + URL = ПараметрыФункции["Picture"]; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("picture", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКартинку"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("picture", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКартинку", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьФайл(ПараметрыФункции) + + Расширение = "docx"; + URL = ПараметрыФункции["Document"]; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("ext", Расширение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьФайл"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("ext", Расширение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьФайл", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьКонтакт(ПараметрыФункции) + + Имя = "Петр Петров"; + Телефон = "+123456789"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + Опции.Вставить("phone", Телефон); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКонтакт"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + Опции.Вставить("phone", Телефон); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКонтакт", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьЛокацию(ПараметрыФункции) + + Широта = "48.87373649724122"; + Долгота = "2.2954639195323967"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьЛокацию"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьЛокацию", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьСсылку(ПараметрыФункции) + + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьСсылку"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьСсылку", "Канал"); + +КонецПроцедуры + +#КонецОбласти // Viber + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure Viber_DataRetrieval() Export + Вайбер_ПолучениеИнформации(); +EndProcedure + +Procedure Viber_MessagesSending() Export + Вайбер_ОтправкаСообщений(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl index 7e7c5975df..da6b786481 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_WebSocket/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_WebSocket.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -63,6 +65,31 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("WebSocket"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("WebSocket"); + +КонецФункции + + +#Region Alternate + + + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl index 7e7c5975df..dff4db42f6 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexDisk/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexDisk.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,701 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("YandexDisk"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("YandexDisk"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область YandexDisk + +Процедура ЯДиск_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_RefreshToken", ПараметрыТеста); + + YandexDisk_ПолучитьКодПодтверждения(ПараметрыТеста); + YandexDisk_ПреобразоватьКодВТокен(ПараметрыТеста); + YandexDisk_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьИнформациюОДиске() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_ПолучитьИнформациюОДиске(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_СоздатьПапку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_СоздатьПапку(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + YandexDisk_ЗагрузитьФайлПоURL(ПараметрыТеста); + YandexDisk_ПолучитьОбъект(ПараметрыТеста); + YandexDisk_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); + + YandexDisk_ЗагрузитьФайлЧастями(ПараметрыТеста); + YandexDisk_ЗагрузитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_СоздатьКопиюОбъекта() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + YandexDisk_СоздатьКопиюОбъекта(ПараметрыТеста); + + ПутьКопии = ПараметрыТеста["YandexDisk_CopyFilePath"]; + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьКопии , Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьСсылкуНаСкачивание() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, Путь, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PathForLink", Путь); + ПараметрыТеста.Вставить("YandexDisk_PathForLink", Путь); + + YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыТеста); + YandexDisk_СкачатьФайл(ПараметрыТеста); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьСписокФайлов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_ПолучитьСписокФайлов(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ПереместитьОбъект() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + YandexDisk_ПереместитьОбъект(ПараметрыТеста); + + ПутьНового = ПараметрыТеста["YandexDisk_NewFilePath"]; + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьНового , Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ЯДиск_ДействияПубличныхОбъектов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + YandexDisk_ОпубликоватьОбъект(ПараметрыТеста); + YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыТеста); + YandexDisk_ПолучитьПубличныйОбъект(ПараметрыТеста); + YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыТеста); + YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыТеста); + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьСписокОпубликованных() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // YandexDisk + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область YandexDisk + +Процедура YandexDisk_ПолучитьКодПодтверждения(ПараметрыФункции) + + ClientID = ПараметрыФункции["YandexDisk_ClientID"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьКодПодтверждения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьКодПодтверждения"); + +КонецПроцедуры + +Процедура YandexDisk_ПреобразоватьКодВТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["YandexDisk_ClientID"]; + ClientSecret = ПараметрыФункции["YandexDisk_ClientSecret"]; + КодУстройства = "12345678"; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("device", КодУстройства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПреобразоватьКодВТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПреобразоватьКодВТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура YandexDisk_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["YandexDisk_ClientID"]; + ClientSecret = ПараметрыФункции["YandexDisk_ClientSecret"]; + RefreshToken = ПараметрыФункции["YandexDisk_RefreshToken"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ОбновитьТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьИнформациюОДиске(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьИнформациюОДиске", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьИнформациюОДиске"); + +КонецПроцедуры + +Процедура YandexDisk_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СоздатьПапку", , Токен, Путь); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); + +КонецПроцедуры + +Процедура YandexDisk_ЗагрузитьФайлПоURL(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Адрес = ПараметрыФункции["Picture"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("url", Адрес); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлПоURL", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьОбъект", , Путь); + +КонецПроцедуры + +Процедура YandexDisk_УдалитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("can", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "УдалитьОбъект"); + +КонецПроцедуры + +Процедура YandexDisk_ЗагрузитьФайл(ПараметрыФункции) + + Путь1 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + Путь2 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Картинка = ПараметрыФункции["Picture"]; // URL + + ИВФ = ПолучитьИмяВременногоФайла("png"); // Путь + КопироватьФайл(Картинка, ИВФ); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь1); + Опции.Вставить("file", Картинка); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайл", "URL"); // SKIP + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь1, Ложь); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь2); + Опции.Вставить("file", ИВФ); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайл"); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь2, Ложь); // SKIP + +КонецПроцедуры + +Процедура YandexDisk_СоздатьКопиюОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Оригинал); + Опции.Вставить("to", Путь); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьКопиюОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СоздатьКопиюОбъекта", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_PathForLink"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуДляСкачивания", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСсылкуДляСкачивания"); + +КонецПроцедуры + +Процедура YandexDisk_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_PathForLink"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СкачатьФайл"); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Количество = 2; + СмещениеОтНачала = 1; + ОтборПоТипу = "image"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("amount", Количество); + Опции.Вставить("offset", СмещениеОтНачала); + Опции.Вставить("type", ОтборПоТипу); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСписокФайлов", , Количество, СмещениеОтНачала); + +КонецПроцедуры + +Процедура YandexDisk_ПереместитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Оригинал); + Опции.Вставить("to", Путь); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПереместитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПереместитьОбъект", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Количество = 2; + СмещениеОтНачала = 1; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("amount", Количество); + Опции.Вставить("offset", СмещениеОтНачала); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокОпубликованныхОбъектов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСписокОпубликованныхОбъектов", , Количество, СмещениеОтНачала); + +КонецПроцедуры + +Процедура YandexDisk_ОпубликоватьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОпубликоватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ОпубликоватьОбъект", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта"); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьПубличныйОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьПубличныйОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьПубличныйОбъект"); + +КонецПроцедуры + +Процедура YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СохранитьПубличныйОбъектНаДиск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СохранитьПубличныйОбъектНаДиск"); + +КонецПроцедуры + +Процедура YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОтменитьПубликациюОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ОтменитьПубликациюОбъекта", , Путь); + +КонецПроцедуры + +Процедура YandexDisk_ЗагрузитьФайлЧастями(ПараметрыФункции) + + Путь = "/song.mp3"; + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Файл = ПараметрыФункции["Audio"]; // URL, Двоичные или Путь к файлу + + РазмерЧасти = 1048576; // 1 MB + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("file", Файл); + Опции.Вставить("psize", РазмерЧасти); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", , Файл); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", "Скачивание", Файл); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("can", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", "Удаление"); + +КонецПроцедуры + +#КонецОбласти // YandexDisk + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure YDisk_Authorization() Export + ЯДиск_Авторизация(); +EndProcedure + +Procedure YDisk_GetDiskInfo() Export + ЯДиск_ПолучитьИнформациюОДиске(); +EndProcedure + +Procedure YDisk_CreateFolder() Export + ЯДиск_СоздатьПапку(); +EndProcedure + +Procedure YDisk_UploadByUrlAndGetObject() Export + ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект(); +EndProcedure + +Procedure YDisk_UploadDeleteFile() Export + ЯДиск_ЗагрузитьУдалитьФайл(); +EndProcedure + +Procedure YDisk_CreateObjectCopy() Export + ЯДиск_СоздатьКопиюОбъекта(); +EndProcedure + +Procedure YDisk_GetDownloadLink() Export + ЯДиск_ПолучитьСсылкуНаСкачивание(); +EndProcedure + +Procedure YDisk_GetFileList() Export + ЯДиск_ПолучитьСписокФайлов(); +EndProcedure + +Procedure YDisk_MoveObject() Export + ЯДиск_ПереместитьОбъект(); +EndProcedure + +Procedure YDisk_PublicObjectActions() Export + ЯДиск_ДействияПубличныхОбъектов(); +EndProcedure + +Procedure YDisk_GetPublishedList() Export + ЯДиск_ПолучитьСписокОпубликованных(); +EndProcedure + +#EndRegion diff --git a/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl b/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl index 7e7c5975df..3e7336dbfa 100644 --- a/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl +++ b/src/ru/BSL/Tests/src/CommonModules/OPItc_YandexMetrika/Module.bsl @@ -1,3 +1,5 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexMetrika.os + // MIT License // Copyright (c) 2023-2026 Anton Tsitavets @@ -9,7 +11,7 @@ // 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 +// 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 @@ -22,6 +24,8 @@ // https://github.com/Bayselonarrend/OpenIntegrations +// Набор тестов для YAxUnit + // BSLLS:Typo-off // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off @@ -63,6 +67,395 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -// #Использовать oint -// #Использовать asserts -// #Использовать "internal" +//#Использовать "../../tools/main" +//#Использовать "../../tools/http" +//#Использовать "../../api" +//#Использовать asserts +//#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("YandexMetrika"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("YandexMetrika"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область YandexMetrika + +Процедура ЯМетрика_УправлениеМетками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + YandexMetrika_СоздатьМетку(ПараметрыТеста); + YandexMetrika_ПолучитьСписокМеток(ПараметрыТеста); + YandexMetrika_ИзменитьМетку(ПараметрыТеста); + YandexMetrika_ПолучитьМетку(ПараметрыТеста); + YandexMetrika_УдалитьМетку(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯМетрика_УправлениеСчетчиками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыТеста); + YandexMetrika_СоздатьСчетчик(ПараметрыТеста); + YandexMetrika_ПолучитьСчетчик(ПараметрыТеста); + YandexMetrika_ИзменитьСчетчик(ПараметрыТеста); + YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + YandexMetrika_ВосстановитьСчетчик(ПараметрыТеста); + YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыТеста); + YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯМетрика_УправлениеОперациями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + YandexMetrika_СоздатьСчетчик(ПараметрыТеста); + YandexMetrika_ПолучитьСписокОпераций(ПараметрыТеста); + YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // YandexMetrika + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область YandexMetrika + +Процедура YandexMetrika_ПолучитьСписокМеток(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокМеток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокМеток"); + +КонецПроцедуры + +Процедура YandexMetrika_СоздатьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + Наименование = "Новая метка"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "СоздатьМетку", , ПараметрыФункции, Наименование); + +КонецПроцедуры + +Процедура YandexMetrika_УдалитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "УдалитьМетку"); + +КонецПроцедуры + +Процедура YandexMetrika_ИзменитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + Наименование = "Новое имя метки"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ИзменитьМетку", , Наименование); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьМетку"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСтруктуруСчетчика", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСтруктуруСчетчика"); + +КонецПроцедуры + +Процедура YandexMetrika_СоздатьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", Истина); + + СтруктураНастроекКода = Новый Структура; + СтруктураНастроекКода.Вставить("async" , 0); + СтруктураНастроекКода.Вставить("clickmap" , 1); + СтруктураНастроекКода.Вставить("ecommerce" , 1); + СтруктураНастроекКода.Вставить("in_one_line" , 0); + СтруктураНастроекКода.Вставить("track_hash" , 1); + СтруктураНастроекКода.Вставить("visor" , 1); + СтруктураНастроекКода.Вставить("xml_site" , 0); + СтруктураНастроекКода.Вставить("ytm" , 0); + СтруктураНастроекКода.Вставить("alternative_cdn", 1); + + СтруктураИнформера = Новый Структура; + СтруктураИнформера.Вставить("color_arrow", 1); + СтруктураИнформера.Вставить("color_end" , "EFEFEFFE"); + СтруктураИнформера.Вставить("color_start", "EEEEEEEE"); + СтруктураИнформера.Вставить("color_text" , 0); + СтруктураИнформера.Вставить("enabled" , 1); + СтруктураИнформера.Вставить("indicator" , "uniques"); + СтруктураИнформера.Вставить("size" , 2); + СтруктураИнформера.Вставить("type" , "ext"); + + СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); + + СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , Истина); + СтруктураФлагов.Вставить("measurement_enabled" , Истина); + СтруктураФлагов.Вставить("use_in_benchmarks" , Истина); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Истина); + + СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , 1); + СтруктураСчетчика.Вставить("filter_robots" , 2); + СтруктураСчетчика.Вставить("gdpr_agreement_accepted", 1); + + СтруктураДомена = Новый Структура("site", "openintegrations.dev"); + + СтруктураСчетчика.Вставить("site2", СтруктураДомена); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fields", СтруктураСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "СоздатьСчетчик", , ПараметрыФункции); + +КонецПроцедуры + +Процедура YandexMetrika_УдалитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "УдалитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ИзменитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", Истина); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , Ложь); + СтруктураФлагов.Вставить("measurement_enabled" , Ложь); + СтруктураФлагов.Вставить("use_in_benchmarks" , Ложь); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Ложь); + + СтруктураСчетчика.Вставить("counter_flags", СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , 0); + СтруктураСчетчика.Вставить("filter_robots", 1); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + Опции.Вставить("fields", СтруктураСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ИзменитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ВосстановитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ВосстановитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ВосстановитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокСчетчиков"); // SKIP + + // Фильтр по списку ID + + Фильтр = Новый Структура; + + МассивСчетчиков = Новый Массив; + МассивСчетчиков.Добавить(IDСчетчика); + + Фильтр.Вставить("counter_ids", МассивСчетчиков); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("filter", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокСчетчиков", "Фильтр"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСписокОпераций(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокОпераций", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокОпераций"); + +КонецПроцедуры + +#КонецОбласти // YandexMetrika + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure YaMetrika_TagsManagement() Export + ЯМетрика_УправлениеМетками(); +EndProcedure + +Procedure YaMetrika_CountersManagement() Export + ЯМетрика_УправлениеСчетчиками(); +EndProcedure + +Procedure YaMetrika_ActionsManagement() Export + ЯМетрика_УправлениеОперациями(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPI_ТестыCLI.os b/src/ru/OInt/tests/Modules/OPI_ТестыCLI.os deleted file mode 100644 index 3036d85320..0000000000 --- a/src/ru/OInt/tests/Modules/OPI_ТестыCLI.os +++ /dev/null @@ -1,39076 +0,0 @@ - // OneScript: ./OInt/tests/Modules/OPI_ТестыCLI.os - -// MIT License - -// Copyright (c) 2023-2026 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 - -// Набор тестов для YAxUnit - -// BSLLS:Typo-off -// BSLLS:LatinAndCyrillicSymbolInWord-off -// BSLLS:IncorrectLineBreak-off -// BSLLS:UsingServiceTag-off -// BSLLS:UnusedParameters-off -// BSLLS:DuplicateStringLiteral-off -// BSLLS:UsingHardcodePath-off -// BSLLS:UnusedLocalVariable-off -// BSLLS:DeprecatedMessage-off -// BSLLS:LineLength-off -// BSLLS:MagicNumber-off -// BSLLS:CommentedCode-off -// BSLLS:AssignAliasFieldsInQuery-off -// BSLLS:UsingHardcodeNetworkAddress-off -// BSLLS:UnreachableCode-off -// BSLLS:UnusedLocalMethod-off -// BSLLS:NestedFunctionInParameters-off -// BSLLS:MissingTemporaryFileDeletion-off -// BSLLS:UsingSynchronousCalls-off -// BSLLS:MagicNumber-off -// BSLLS:MagicDate-off -// BSLLS:MissingParameterDescription-off -// BSLLS:NumberOfOptionalParams-off -// BSLLS:MethodSize-off -// BSLLS:NestedConstructorsInStructureDeclaration-off -// BSLLS:NumberOfValuesInStructureConstructor-off -// BSLLS:UsingHardcodeSecretInformation-off -// BSLLS:SpaceAtStartComment-off - -//@skip-check undefined-variable -//@skip-check wrong-string-literal-content -//@skip-check module-structure-top-region -//@skip-check module-structure-method-in-regions -//@skip-check undefined-function-or-procedure -//@skip-check wrong-string-literal-content -//@skip-check module-unused-local-variable -//@skip-check bsl-legacy-check-string-literal -//@skip-check bsl-legacy-check-method-for-statements-after-return -//@skip-check missing-temporary-file-deletion -//@skip-check module-unused-method - -#Использовать "../../tools/main" - #Использовать "../../tools/http" - #Использовать "../../api" -#Использовать asserts -#Использовать "internal" - -#Область СлужебныйПрограммныйИнтерфейс - -// Для YaxUnit - -Процедура ИсполняемыеСценарии() Экспорт - - OPI_ПолучениеДанныхТестов.СформироватьТестыЯксCLI(); - -КонецПроцедуры - -// Для Asserts - -Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт - - Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертсCLI(); - -КонецФункции - -#Область ЗапускаемыеТесты - -#Область Служебные - -Процедура ПроверитьСоответствиеИБПоследнейСборке() Экспорт - - Если OPI_ПолучениеДанныхТестов.ЭтоТестCLI() Тогда - - //@skip-check use-non-recommended-method - Сообщить("CLI test check for hash sum"); - СуммаСборки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("hashsum", "", Новый Структура); - - Иначе - - СуммаСборки = OPI_Инструменты.ПолучитьХешСуммуПоследнейСборки(); - - КонецЕсли; - - URL = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/refs/heads/main/service/last_build_hash.txt"; - - СуммаПоследний = OPI_ЗапросыHTTP - .НовыйЗапрос() - .Инициализировать(URL) - .ОбработатьЗапрос("GET") - .ВернутьОтветКакСтроку(Ложь, Истина); - - Обработать(СуммаСборки, "BuildCheck", "ПроверитьСоответствиеИБПоследнейСборке", , СуммаПоследний); - -КонецПроцедуры - -#КонецОбласти - -#Область Telegram - -Процедура Телеграм_ПолучитьИнформациюБота() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - - Telegram_ПолучитьИнформациюБота(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ПолучитьОбновления() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - - Telegram_УдалитьWebhook(ПараметрыТеста); - Telegram_ПолучитьОбновления(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_УстановитьWebhook() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_URL" , ПараметрыТеста); - - Telegram_УстановитьWebhook(ПараметрыТеста); - Telegram_УдалитьWebhook(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьТекстовоеСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - - Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста); - Telegram_ЗаменитьТекстСообщения(ПараметрыТеста); - Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста); - Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьКартинку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Telegram_ОтправитьКартинку(ПараметрыТеста); - Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста); - Telegram_СкачатьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьВидео() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - Telegram_ОтправитьВидео(ПараметрыТеста); - Telegram_СкачатьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьАудио() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); - - Telegram_ОтправитьАудио(ПараметрыТеста); - Telegram_СкачатьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьДокумент() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Telegram_ОтправитьДокумент(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьГифку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); - - Telegram_ОтправитьГифку(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьМедиагруппу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Telegram_ОтправитьМедиагруппу(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьМестоположение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Long" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Lat" , ПараметрыТеста); - - Telegram_ОтправитьМестоположение(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьКонтакт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Name" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Surname" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Phone" , ПараметрыТеста); - - Telegram_ОтправитьКонтакт(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ОтправитьОпрос() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - Telegram_ОтправитьОпрос(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ПереслатьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); - - Telegram_ПереслатьСообщение(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_БанРазбан() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - Telegram_Бан(ПараметрыТеста); - Telegram_Разбан(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_СоздатьСсылкуПриглашение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - Telegram_СоздатьСсылкуПриглашение(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ЗакрепитьОткрепитьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); - - Telegram_ЗакрепитьСообщение(ПараметрыТеста); - Telegram_ОткрепитьСообщение(ПараметрыТеста); - Telegram_УдалитьСообщение(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ПолучитьЧислоУчастников() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); - - Telegram_ПолучитьЧислоУчастников(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ПолучитьСписокАватаровФорума() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); - - Telegram_ПолучитьСписокИконокАватаров(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_СоздатьУдалитьТемуФорума() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); - - Telegram_СоздатьТемуФорума(ПараметрыТеста); - Telegram_ИзменитьТемуФорума(ПараметрыТеста); - Telegram_ЗакрытьТемуФорума(ПараметрыТеста); - Telegram_ОткрытьТемуФорума(ПараметрыТеста); - Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыТеста); - Telegram_УдалитьТемуФорума(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_СкрытьПоказатьГлавнуюТему() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); - - Telegram_СкрытьГлавнуюТемуФорума(ПараметрыТеста); - Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыТеста); - -КонецПроцедуры - -Процедура Телеграм_ИзменитьИмяГлавнойТемы() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); - - Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область VK - -Процедура ВК_СоздатьСсылкуТокена() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AppID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_GroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_Token" , ПараметрыТеста); - - VK_СоздатьСсылкуПолученияТокена(ПараметрыТеста); - VK_ПолучитьПараметрыАвторизации(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_СоздатьУдалитьПост() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - - VK_СоздатьПост(ПараметрыТеста); - VK_УдалитьПост(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_СоздатьСоставнойПост() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - VK_СоздатьСоставнойПост(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_СоздатьОпрос() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); - - VK_СоздатьОпрос(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_СохранитьУдалитьКартинку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); - - VK_СоздатьАльбом(ПараметрыТеста); - VK_СохранитьКартинкуВАльбом(ПараметрыТеста); - VK_УдалитьКартинку(ПараметрыТеста); - VK_УдалитьАльбом(ПараметрыТеста); - VK_ЗагрузитьФотоНаСервер(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_СоздатьИсторию() Экспорт - - ПараметрыТеста = Новый Соответствие; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); - - VK_СоздатьИсторию(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_ЛайкРепостКоммент() Экспорт - - ПараметрыТеста = Новый Структура; - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - - Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); - ИДПоста = Результат["response"]["post_id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID", ПараметрыТеста); - - VK_СделатьРепост(ПараметрыТеста); - VK_НаписатьКомментарий(ПараметрыТеста); - VK_СократитьСсылку(ПараметрыТеста); - - OPI_VK.УдалитьПост(ИДПоста , Параметры); - OPI_VK.УдалитьПост(ПараметрыТеста["Repost"], Параметры); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_ПолучитьСтатистику() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСтатистику(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_ПолучитьСтатистикуПостов() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСтатистикуПостов(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_СоздатьРекламнуюКампанию() Экспорт - - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - - Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); - ИДПоста = Результат["response"]["post_id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AdsCabinetID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID" , ПараметрыТеста); - - // !DISABLED! VK_СоздатьРекламнуюКампанию(ПараметрыТеста); - // !DISABLED! VK_СоздатьРекламноеОбъявление(ПараметрыТеста); - // !DISABLED! VK_ПриостановитьРекламноеОбъявление(ПараметрыТеста); - VK_ПолучитьСписокРекламныхКатегорий(ПараметрыТеста); - - OPI_VK.УдалитьПост(ИДПоста, Параметры); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_ОтправитьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_UserID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_CommunityToken", ПараметрыТеста); - - VK_СформироватьКлавиатуру(ПараметрыТеста); - VK_НаписатьСообщение(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_ПолучитьКатегорииТоваров() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСписокКатегорийТоваров(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_СоздатьТоварПодборку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - - VK_СоздатьПодборкуТоваров(ПараметрыТеста); - VK_ИзменитьПодборкуТоваров(ПараметрыТеста); - VK_ПолучитьПодборкиПоИД(ПараметрыТеста); - VK_ДобавитьТовар(ПараметрыТеста); - VK_ИзменитьТовар(ПараметрыТеста); - VK_ДобавитьТоварВПодборку(ПараметрыТеста); - VK_УдалитьТоварИзПодборки(ПараметрыТеста); - VK_УдалитьТовар(ПараметрыТеста); - VK_УдалитьПодборку(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ВК_СоздатьТоварСоСвойствами() Экспорт - - Параметры = ПолучитьПараметрыВК(); - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - - VK_ПолучитьОписаниеТовара(ПараметрыТеста); - VK_СоздатьСвойствоТовара(ПараметрыТеста); - VK_ИзменитьСвойствоТовара(ПараметрыТеста); - VK_ДобавитьВариантСвойстваТовара(ПараметрыТеста); - VK_ИзменитьВариантСвойстваТовара(ПараметрыТеста); - VK_СоздатьТоварСоСвойством(ПараметрыТеста); - VK_ПолучитьТоварыПоИД(ПараметрыТеста); - VK_СгруппироватьТовары(ПараметрыТеста); - - OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID2"], Параметры); - OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID3"], Параметры); - - VK_УдалитьВариантСвойстваТовара(ПараметрыТеста); - VK_УдалитьСвойствоТовара(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_ПолучитьСписокТоваров() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСписокТоваров(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_ПолучитьСписокПодборок() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСписокПодборок(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_ПолучитьСписокСвойств() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСписокСвойств(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_ПолучитьСписокЗаказов() Экспорт - - ПараметрыТеста = Новый Структура; - - VK_ПолучитьСписокЗаказов(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВК_ЗагрузитьВидео() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video", ПараметрыТеста); - - VK_ЗагрузитьВидеоНаСервер(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexDisk - -Процедура ЯДиск_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_ClientSecret", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_RefreshToken", ПараметрыТеста); - - YandexDisk_ПолучитьКодПодтверждения(ПараметрыТеста); - YandexDisk_ПреобразоватьКодВТокен(ПараметрыТеста); - YandexDisk_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯДиск_ПолучитьИнформациюОДиске() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - YandexDisk_ПолучитьИнформациюОДиске(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯДиск_СоздатьПапку() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - YandexDisk_СоздатьПапку(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - YandexDisk_ЗагрузитьФайлПоURL(ПараметрыТеста); - YandexDisk_ПолучитьОбъект(ПараметрыТеста); - YandexDisk_УдалитьОбъект(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯДиск_ЗагрузитьУдалитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); - - YandexDisk_ЗагрузитьФайлЧастями(ПараметрыТеста); - YandexDisk_ЗагрузитьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯДиск_СоздатьКопиюОбъекта() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); - ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); - - YandexDisk_СоздатьКопиюОбъекта(ПараметрыТеста); - - ПутьКопии = ПараметрыТеста["YandexDisk_CopyFilePath"]; - - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьКопии , Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ЯДиск_ПолучитьСсылкуНаСкачивание() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, Путь, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PathForLink", Путь); - ПараметрыТеста.Вставить("YandexDisk_PathForLink", Путь); - - YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыТеста); - YandexDisk_СкачатьФайл(ПараметрыТеста); - - OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); - -КонецПроцедуры - -Процедура ЯДиск_ПолучитьСписокФайлов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - YandexDisk_ПолучитьСписокФайлов(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯДиск_ПереместитьОбъект() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); - ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); - - YandexDisk_ПереместитьОбъект(ПараметрыТеста); - - ПутьНового = ПараметрыТеста["YandexDisk_NewFilePath"]; - - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьНового , Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ЯДиск_ДействияПубличныхОбъектов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Токен = ПараметрыТеста["YandexDisk_Token"]; - URL = ПараметрыТеста["Picture"]; - - ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); - OPI_Инструменты.Пауза(35); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); - ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); - - YandexDisk_ОпубликоватьОбъект(ПараметрыТеста); - YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыТеста); - YandexDisk_ПолучитьПубличныйОбъект(ПараметрыТеста); - YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыТеста); - YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыТеста); - - OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ЯДиск_ПолучитьСписокОпубликованных() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); - - YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Viber - -Процедура Вайбер_ПолучениеИнформации() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); - - Возврат; - - //@skip-check unreachable-statements - // BSLLS:UnreachableCode-off - - Viber_ПолучитьИнформациюОКанале(ПараметрыТеста); - Viber_ПолучитьДанныеПользователя(ПараметрыТеста); - Viber_ПолучитьОнлайнПользователей(ПараметрыТеста); - Viber_УстановитьWebhook(ПараметрыТеста); - - // BSLLS:UnreachableCode-on - -КонецПроцедуры - -Процедура Вайбер_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_UserID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыТеста); - - Возврат; - - //@skip-check unreachable-statement - // BSLLS:UnreachableCode-off - - Viber_ОтправитьТекстовоеСообщение(ПараметрыТеста); - Viber_ОтправитьКартинку(ПараметрыТеста); - Viber_ОтправитьФайл(ПараметрыТеста); - Viber_ОтправитьКонтакт(ПараметрыТеста); - Viber_ОтправитьЛокацию(ПараметрыТеста); - Viber_ОтправитьСсылку(ПараметрыТеста); - - // BSLLS:UnreachableCode-on - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleWorkspace - -Процедура ГВ_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); - - GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыТеста); - GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыТеста); - GoogleWorkspace_ОбновитьТокен(ПараметрыТеста); - GoogleWorkspace_ПолучитьТокенServiceАккаунта(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleCalendar - -Процедура ГК_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); - - GoogleCalendar_СформироватьСсылкуПолученияКода(ПараметрыТеста); - GoogleCalendar_ПолучитьТокенПоКоду(ПараметрыТеста); - GoogleCalendar_ОбновитьТокен(ПараметрыТеста); - GoogleCalendar_ПолучитьТокенServiceАккаунта(ПараметрыТеста); - -КонецПроцедуры - -Процедура ГК_ПолучитьСписокКалендарей() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыТеста); - -КонецПроцедуры - -Процедура ГК_СоздатьУдалитьКалендарь() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); - GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыТеста); - GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыТеста); - GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыТеста); - GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыТеста); - GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыТеста); - GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыТеста); - // !DISABLED! GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыТеста); - GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ГК_СоздатьУдалитьСобытие() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_NewCalendarID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_CalendarID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); - GoogleCalendar_СоздатьСобытие(ПараметрыТеста); - GoogleCalendar_ИзменитьСобытие(ПараметрыТеста); - GoogleCalendar_ПолучитьСобытие(ПараметрыТеста); - GoogleCalendar_ПереместитьСобытие(ПараметрыТеста); - GoogleCalendar_ПолучитьСписокСобытий(ПараметрыТеста); - GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыТеста); - GoogleCalendar_УдалитьСобытие(ПараметрыТеста); - GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleDrive - -Процедура ГД_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); - - GoogleDrive_СформироватьСсылкуПолученияКода(ПараметрыТеста); - GoogleDrive_ПолучитьТокенПоКоду(ПараметрыТеста); - GoogleDrive_ОбновитьТокен(ПараметрыТеста); - GoogleDrive_ПолучитьТокенServiceАккаунта(ПараметрыТеста); - -КонецПроцедуры - -Процедура ГД_ПолучитьСписокКаталогов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - GoogleDrive_ПолучитьСписокКаталогов(ПараметрыТеста); - GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); - -КонецПроцедуры - -Процедура ГД_ЗагрузитьУдалитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста); - - ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); - - GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); - GoogleDrive_СкопироватьОбъект(ПараметрыТеста); - GoogleDrive_СкачатьФайл(ПараметрыТеста); - GoogleDrive_ОбновитьФайл(ПараметрыТеста); - GoogleDrive_ПолучитьСписокФайлов(ПараметрыТеста); - GoogleDrive_УдалитьОбъект(ПараметрыТеста); - GoogleDrive_ПолучитьОписаниеФайла(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура ГД_СоздатьУдалитьКомментарий() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); - - GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); - - GoogleDrive_СоздатьКомментарий(ПараметрыТеста); - GoogleDrive_ПолучитьКомментарий(ПараметрыТеста); - GoogleDrive_ПолучитьСписокКомментариев(ПараметрыТеста); - GoogleDrive_УдалитьКомментарий(ПараметрыТеста); - - GoogleDrive_УдалитьОбъект(ПараметрыТеста); - -КонецПроцедуры - -Процедура ГД_СоздатьКаталог() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); - - GoogleDrive_СоздатьПапку(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleSheets - -Процедура ГТ_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); - - GoogleSheets_СформироватьСсылкуПолученияКода(ПараметрыТеста); - GoogleSheets_ПолучитьТокенПоКоду(ПараметрыТеста); - GoogleSheets_ОбновитьТокен(ПараметрыТеста); - GoogleSheets_ПолучитьТокенServiceАккаунта(ПараметрыТеста); - -КонецПроцедуры - -Процедура ГТ_СоздатьТаблицу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - GoogleSheets_СоздатьКнигу(ПараметрыТеста); - GoogleSheets_ПолучитьКнигу(ПараметрыТеста); - GoogleSheets_КопироватьЛист(ПараметрыТеста); - GoogleSheets_ДобавитьЛист(ПараметрыТеста); - GoogleSheets_УдалитьЛист(ПараметрыТеста); - GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыТеста); - GoogleSheets_ПолучитьТаблицу(ПараметрыТеста); - - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); - -КонецПроцедуры - -Процедура ГТ_ЗаполнитьОчиститьЯчейки() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); - - GoogleSheets_СоздатьКнигу(ПараметрыТеста); - GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыТеста); - GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыТеста); - GoogleSheets_ОчиститьЯчейки(ПараметрыТеста); - - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); - OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); - -КонецПроцедуры - -#КонецОбласти - -#Область Twitter - -Процедура Твиттер_ДанныеАккаунта() Экспорт - - ПараметрыТеста = Новый Структура; - - Twitter_ПолучитьТокен(ПараметрыТеста); - Twitter_ПолучитьСсылкуАвторизации(ПараметрыТеста); - // !DISABLED! Twitter_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура Твиттер_Твиты() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - Twitter_СоздатьТекстовыйТвит(ПараметрыТеста); - Twitter_ЗагрузитьМассивВложений(ПараметрыТеста); - Twitter_СоздатьТвитВидео(ПараметрыТеста); - Twitter_СоздатьТвитКартинки(ПараметрыТеста); - Twitter_СоздатьТвитГифки(ПараметрыТеста); - Twitter_СоздатьТвитОпрос(ПараметрыТеста); - Twitter_СоздатьПроизвольныйТвит(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Notion - -Процедура НоушнАпи_СоздатьСтраницу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - Notion_СоздатьСтраницу(ПараметрыТеста); - Notion_ПолучитьСтраницу(ПараметрыТеста); - Notion_ИзменитьСвойстваСтраницы(ПараметрыТеста); - -КонецПроцедуры - -Процедура НоушнАпи_СоздатьИзменитьБазу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Notion_СоздатьБазуДанных(ПараметрыТеста); - Notion_ИзменитьСвойстваБазы(ПараметрыТеста); - Notion_ПолучитьБазуДанных(ПараметрыТеста); - Notion_СоздатьСтраницуВБазу(ПараметрыТеста); - -КонецПроцедуры - -Процедура НоушнАпи_СоздатьУдалитьБлок() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Block" , ПараметрыТеста); - - Notion_ВернутьБлок(ПараметрыТеста); - Notion_СоздатьБлок(ПараметрыТеста); - Notion_ВернутьДочерниеБлоки(ПараметрыТеста); - Notion_УдалитьБлок(ПараметрыТеста); - -КонецПроцедуры - -Процедура НоушнАпи_ПолучитьПользователей() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_User" , ПараметрыТеста); - - Notion_СписокПользователей(ПараметрыТеста); - Notion_ПолучитьДанныеПользователя(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Slack - -Процедура Слак_ПолучитьИнформацию() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); - - Slack_ПолучитьИнформациюОБоте(ПараметрыТеста); - Slack_ПолучитьСписокПользователей(ПараметрыТеста); - Slack_ПолучитьСписокРабочихОбластей(ПараметрыТеста); - -КонецПроцедуры - -Процедура Слак_ОтправитьУдалитьСообщение() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); - - Slack_ОтправитьСообщение(ПараметрыТеста); - Slack_ИзменитьСообщение(ПараметрыТеста); - Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыТеста); - Slack_ПолучитьСсылкуНаСообщение(ПараметрыТеста); - Slack_УдалитьСообщение(ПараметрыТеста); - Slack_ОтправитьЭфемерноеСообщение(ПараметрыТеста); - Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыТеста); - Slack_СформироватьБлокКартинку(ПараметрыТеста); - -КонецПроцедуры - -Процедура Слак_СоздатьАрхивироватьКанал() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); - - Slack_СоздатьКанал(ПараметрыТеста); - Slack_УстановитьТемуКанала(ПараметрыТеста); - Slack_УстановитьЦельКанала(ПараметрыТеста); - Slack_ПолучитьКанал(ПараметрыТеста); - Slack_ПригласитьПользователейВКанал(ПараметрыТеста); - Slack_ВыгнатьПользователяИзКанала(ПараметрыТеста); - Slack_ПолучитьИсториюКанала(ПараметрыТеста); - Slack_ПолучитьСписокПользователейКанала(ПараметрыТеста); - Slack_ПокинутьКанал(ПараметрыТеста); - Slack_ВступитьВКанал(ПараметрыТеста); - Slack_ПереименоватьКанал(ПараметрыТеста); - Slack_АрхивироватьКанал(ПараметрыТеста); - Slack_ПолучитьСписокКаналов(ПараметрыТеста); - -КонецПроцедуры - -Процедура Слак_ОткрытьЗакрытьДиалог() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); - - Slack_ОткрытьДиалог(ПараметрыТеста); - Slack_ЗакрытьДиалог(ПараметрыТеста); - -КонецПроцедуры - -Процедура Слак_ЗагрузитьУдалитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Slack_ПолучитьСписокФайлов(ПараметрыТеста); - Slack_ЗагрузитьФайл(ПараметрыТеста); - Slack_СделатьФайлПубличным(ПараметрыТеста); - Slack_СделатьФайлПриватным(ПараметрыТеста); - Slack_ПолучитьДанныеФайла(ПараметрыТеста); - Slack_УдалитьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура Слак_ЗагрузитьУдалитьВФ() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Slack_ПолучитьСписокВнешнихФайлов(ПараметрыТеста); - Slack_ДобавитьВнешнийФайл(ПараметрыТеста); - Slack_ПолучитьВнешнийФайл(ПараметрыТеста); - Slack_ОтправитьВнешнийФайл(ПараметрыТеста); - Slack_УдалитьВнешнийФайл(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Airtable - -Процедура АТ_СоздатьБазу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Workspace", ПараметрыТеста); - - Airtable_СоздатьБазу(ПараметрыТеста); - Airtable_ПолучитьТаблицыБазы(ПараметрыТеста); - Airtable_ПолучитьСписокБаз(ПараметрыТеста); - -КонецПроцедуры - -Процедура АТ_СоздатьТаблицу() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - - Airtable_ПолучитьПолеНомера(ПараметрыТеста); - Airtable_ПолучитьПолеСтроковое(ПараметрыТеста); - Airtable_ПолучитьПолеВложения(ПараметрыТеста); - Airtable_ПолучитьПолеФлажка(ПараметрыТеста); - Airtable_ПолучитьПолеДаты(ПараметрыТеста); - Airtable_ПолучитьПолеТелефона(ПараметрыТеста); - Airtable_ПолучитьПолеПочты(ПараметрыТеста); - Airtable_ПолучитьПолеСсылки(ПараметрыТеста); - Airtable_СоздатьТаблицу(ПараметрыТеста); - Airtable_ИзменитьТаблицу(ПараметрыТеста); - -КонецПроцедуры - -Процедура АТ_СоздатьПоле() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); - - Airtable_СоздатьПоле(ПараметрыТеста); - Airtable_ИзменитьПоле(ПараметрыТеста); - -КонецПроцедуры - -Процедура АТ_СоздатьУдалитьЗаписи() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Base" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Airtable_Table", ПараметрыТеста); - - Airtable_СоздатьЗаписи(ПараметрыТеста); - Airtable_ПолучитьЗапись(ПараметрыТеста); - Airtable_СоздатьКомментарий(ПараметрыТеста); - Airtable_ИзменитьКомментарий(ПараметрыТеста); - Airtable_ПолучитьКомментарии(ПараметрыТеста); - Airtable_УдалитьКомментарий(ПараметрыТеста); - Airtable_ПолучитьСписокЗаписей(ПараметрыТеста); - Airtable_УдалитьЗаписи(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Dropbox - -Процедура ДропБокс_ПолучитьОбновитьТокен() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appkey" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appsecret", ПараметрыТеста); - - Dropbox_ПолучитьСсылкуАвторизации(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Code", ПараметрыТеста); - - Dropbox_ПолучитьТокен(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Refresh", ПараметрыТеста); - - Dropbox_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_ЗагрузитьФайл() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста); - - Dropbox_ЗагрузитьФайл(ПараметрыТеста); - Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); - Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыТеста); - Dropbox_ВосстановитьОбъектКВерсии(ПараметрыТеста); - Dropbox_ПолучитьПревью(ПараметрыТеста); - Dropbox_СкачатьФайл(ПараметрыТеста); - Dropbox_ПереместитьОбъект(ПараметрыТеста); - Dropbox_КопироватьОбъект(ПараметрыТеста); - Dropbox_УдалитьОбъект(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_СоздатьКаталог() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - Dropbox_СоздатьПапку(ПараметрыТеста); - Dropbox_СкачатьПапку(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_ПолучитьСписокФайловПапки() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - Dropbox_ПолучитьСписокФайловПапки(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_ЗагрузитьФайлПоURL() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Dropbox_ЗагрузитьФайлПоURL(ПараметрыТеста); - Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_СоздатьУдалитьТег() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - Dropbox_ДобавитьТег(ПараметрыТеста); - Dropbox_ПолучитьСписокТегов(ПараметрыТеста); - Dropbox_УдалитьТег(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_ПолучитьАккаунт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); - - Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); - Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыТеста); - -КонецПроцедуры - -Процедура ДропБокс_РаботаСДоступами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_OtherUser", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_FileID" , ПараметрыТеста); - - Dropbox_ДобавитьПользователейКФайлу(ПараметрыТеста); - Dropbox_ОпубликоватьПапку(ПараметрыТеста); - Dropbox_ДобавитьПользователейКПапке(ПараметрыТеста); - Dropbox_ОтменитьПубликациюПапки(ПараметрыТеста); - Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыТеста); - Dropbox_ОтменитьПубликациюФайла(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Bitrix24 - -Процедура Б24_РаботаСТокеном() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientSecret", ПараметрыТеста); - - Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Code", ПараметрыТеста); - - Bitrix24_ПолучитьТокен(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Refresh", ПараметрыТеста); - - Bitrix24_ОбновитьТокен(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_СерверноеВремя() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - Bitrix24_СерверноеВремя(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСНовостями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - Bitrix24_СоздатьНовость(ПараметрыТеста); - Bitrix24_ИзменитьНовость(ПараметрыТеста); - Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыТеста); - Bitrix24_ПолучитьНовости(ПараметрыТеста); - Bitrix24_ДобавитьКомментарийНовости(ПараметрыТеста); - Bitrix24_ДобавитьПолучателейКНовости(ПараметрыТеста); - Bitrix24_УдалитьНовость(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСЗадачами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_UserID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыТеста); - Bitrix24_СоздатьЗадачу(ПараметрыТеста); - Bitrix24_СоздатьЗависимостьЗадач(ПараметрыТеста); - Bitrix24_УдалитьЗависимостьЗадач(ПараметрыТеста); - Bitrix24_ИзменитьЗадачу(ПараметрыТеста); - Bitrix24_ПолучитьЗадачу(ПараметрыТеста); - Bitrix24_ОтключитьЗвукЗадачи(ПараметрыТеста); - Bitrix24_ВключитьЗвукЗадачи(ПараметрыТеста); - Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыТеста); - Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыТеста); - Bitrix24_ДелегироватьЗадачу(ПараметрыТеста); - Bitrix24_ОтложитьЗадачу(ПараметрыТеста); - Bitrix24_ЗавершитьЗадачу(ПараметрыТеста); - Bitrix24_ОтклонитьЗадачу(ПараметрыТеста); - Bitrix24_ПринятьЗадачу(ПараметрыТеста); - Bitrix24_ВозобновитьЗадачу(ПараметрыТеста); - Bitrix24_НачатьВыполнениеЗадачи(ПараметрыТеста); - Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыТеста); - Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыТеста); - Bitrix24_ПриостановитьЗадачу(ПараметрыТеста); - Bitrix24_ПолучитьИсториюЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьСписокЗадач(ПараметрыТеста); - Bitrix24_ПроверитьДоступКЗадаче(ПараметрыТеста); - Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыТеста); - Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыТеста); - Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыТеста); - Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыТеста); - Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыТеста); - - Наименование = "Картинка задачи.jpg"; - Картинка = ПараметрыТеста["Picture"]; - IDПриемника = 3; - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование, Картинка, IDПриемника); - IDФайла = Результат["result"]["ID"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskFileID", IDФайла); - ПараметрыТеста.Вставить("Bitrix24_TaskFileID", IDФайла); - - Bitrix24_ДобавитьФайлВЗадачу(ПараметрыТеста); - - OPI_Bitrix24.УдалитьФайл(URL, IDФайла); - - Bitrix24_УдалитьЗадачу(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСДиском() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - - Bitrix24_ПолучитьСписокХранилищ(ПараметрыТеста); - Bitrix24_ПолучитьХранилищеПриложения(ПараметрыТеста); - Bitrix24_ПереименоватьХранилище(ПараметрыТеста); - Bitrix24_ПолучитьХранилище(ПараметрыТеста); - Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыТеста); - Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыТеста); - Bitrix24_ПолучитьИнформациюОФайле(ПараметрыТеста); - Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыТеста); - Bitrix24_ПереименоватьФайл(ПараметрыТеста); - Bitrix24_ПоместитьФайлВКорзину(ПараметрыТеста); - Bitrix24_ВосстановитьФайл(ПараметрыТеста); - Bitrix24_СоздатьКаталогВХранилище(ПараметрыТеста); - Bitrix24_ПереименоватьКаталог(ПараметрыТеста); - Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыТеста); - Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста); - Bitrix24_СоздатьПодкаталог(ПараметрыТеста); - Bitrix24_ПереместитьФайлВКаталог(ПараметрыТеста); - Bitrix24_СкопироватьКаталог(ПараметрыТеста); - Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста); - Bitrix24_СкопироватьФайл(ПараметрыТеста); - Bitrix24_УдалитьФайл(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста); - Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста); - Bitrix24_ПереместитьКаталог(ПараметрыТеста); - Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста); - Bitrix24_ВосстановитьКаталог(ПараметрыТеста); - Bitrix24_УдалитьКаталог(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСКомментариями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи); - ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи); - - Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыТеста); - Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыТеста); - // !DISABLED! Bitrix24_СоздатьРезультатИзКомментария(ПараметрыТеста); - // !DISABLED! Bitrix24_ПолучитьСписокРезультатов(ПараметрыТеста); - // !DISABLED! Bitrix24_УдалитьРезультатИзКомментария(ПараметрыТеста); - // !DISABLED! Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыТеста); - // !DISABLED! Bitrix24_ПолучитьКомментарийЗадачи(ПараметрыТеста); - // !DISABLED! Bitrix24_УдалитьКомментарийЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыТеста); - - OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); - -КонецПроцедуры - -Процедура Б24_УчетРабочегоВремени() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ElapsedTaskID", IDЗадачи); - ПараметрыТеста.Вставить("Bitrix24_ElapsedTaskID", IDЗадачи); - - Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыТеста); - Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыТеста); - Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыТеста); - Bitrix24_НачатьУчетВремени(ПараметрыТеста); - Bitrix24_ПриостановитьУчетВремени(ПараметрыТеста); - Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыТеста); - Bitrix24_ЗавершитьУчетВремени(ПараметрыТеста); - Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыТеста); - - OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); - -КонецПроцедуры - -Процедура Б24_Канбан() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыТеста["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); - IDЗадачи = Результат["result"]["task"]["id"]; - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_KanbanTaskID", IDЗадачи); - ПараметрыТеста.Вставить("Bitrix24_KanbanTaskID", IDЗадачи); - - Bitrix24_ДобавитьСтадиюКанбана(ПараметрыТеста); - Bitrix24_ПолучитьСтадииКанбана(ПараметрыТеста); - Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыТеста); - Bitrix24_ИзменитьСтадиюКанбана(ПараметрыТеста); - - OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); - - Bitrix24_УдалитьСтадиюКанбана(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСЧатами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Bitrix24_ПолучитьСтатусПользователя(ПараметрыТеста); - Bitrix24_УстановитьСтатусПользователя(ПараметрыТеста); - Bitrix24_ПолучитьПользователей(ПараметрыТеста); - Bitrix24_СоздатьЧат(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыТеста); - Bitrix24_ИсключитьПользователяИзЧата(ПараметрыТеста); - Bitrix24_ДобавитьПользователейВЧат(ПараметрыТеста); - Bitrix24_ИзменитьЗаголовокЧата(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - Bitrix24_ИзменитьЦветЧата(ПараметрыТеста); - Bitrix24_ИзменитьКартинкуЧата(ПараметрыТеста); - Bitrix24_ОтключитьУведомленияЧата(ПараметрыТеста); - Bitrix24_ВключитьУведомленияЧата(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыТеста); - Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыТеста); - Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыТеста); - Bitrix24_ПолучитьДиалог(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыТеста); - Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыТеста); - Bitrix24_ОтправитьСообщение(ПараметрыТеста); - Bitrix24_ИзменитьСообщение(ПараметрыТеста); - Bitrix24_ПолучитьБлокКартинки(ПараметрыТеста); - Bitrix24_ПолучитьБлокФайла(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыТеста); - Bitrix24_УдалитьСообщение(ПараметрыТеста); - Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыТеста); - Bitrix24_ОтправитьФайл(ПараметрыТеста); - - OPI_Инструменты.Пауза(5); - - Bitrix24_ПрочитатьВсе(ПараметрыТеста); - Bitrix24_СменитьВладельцаЧата(ПараметрыТеста); - Bitrix24_ПокинутьЧат(ПараметрыТеста); - - Bitrix24_ПолучитьСтруктуруЧата(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСУведомлениями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - Bitrix24_СоздатьПерсональноеУведомление(ПараметрыТеста); - Bitrix24_СоздатьСистемноеУведомление(ПараметрыТеста); - Bitrix24_УдалитьУведомление(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСПолямиЗадач() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_HookTaskFieldID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_TaskFieldID" , ПараметрыТеста); - - Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыТеста); - Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыТеста); - Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыТеста); - Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_УправлениеПодразделениями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - Bitrix24_СоздатьПодразделение(ПараметрыТеста); - Bitrix24_ПолучитьПодразделения(ПараметрыТеста); - Bitrix24_ИзменитьПодразделение(ПараметрыТеста); - Bitrix24_УдалитьПодразделение(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_УправлениеПользователями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - Bitrix24_ПолучитьТекущегоПользователя(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруПользователя(ПараметрыТеста); - Bitrix24_СоздатьПользователя(ПараметрыТеста); - Bitrix24_НайтиПользователей(ПараметрыТеста); - Bitrix24_ИзменитьПользователя(ПараметрыТеста); - Bitrix24_ПолучитьПользователя(ПараметрыТеста); - Bitrix24_ИзменитьСтатусПользователя(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСЛидами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - Bitrix24_ПолучитьСписокЛидов(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруЛида(ПараметрыТеста); - Bitrix24_СоздатьЛид(ПараметрыТеста); - Bitrix24_ПолучитьЛид(ПараметрыТеста); - Bitrix24_ИзменитьЛид(ПараметрыТеста); - Bitrix24_УдалитьЛид(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСоСделками() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруСделки(ПараметрыТеста); - Bitrix24_СоздатьСделку(ПараметрыТеста); - Bitrix24_ПолучитьСделку(ПараметрыТеста); - Bitrix24_ИзменитьСделку(ПараметрыТеста); - Bitrix24_УдалитьСделку(ПараметрыТеста); - Bitrix24_ПолучитьСписокСделок(ПараметрыТеста); - -КонецПроцедуры - -Процедура Б24_РаботаСКалендарями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); - - Bitrix24_СоздатьКалендарь(ПараметрыТеста); - Bitrix24_ИзменитьКалендарь(ПараметрыТеста); - Bitrix24_ПолучитьСписокКалендарей(ПараметрыТеста); - Bitrix24_СоздатьСобытиеКалендаря(ПараметрыТеста); - Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыТеста); - Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыТеста); - Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьСобытияКалендарей(ПараметрыТеста); - Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыТеста); - Bitrix24_УдалитьСобытиеКалендаря(ПараметрыТеста); - Bitrix24_УдалитьКалендарь(ПараметрыТеста); - Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); - Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыТеста); - Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область VkTeams - -Процедура ВКТ_ОбщиеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_FileID", ПараметрыТеста); - - VkTeams_ПроверитьТокен(ПараметрыТеста); - VkTeams_ПолучитьСобытия(ПараметрыТеста); - VKTeams_ПолучитьИнформациюОФайле(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВКТ_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_MessageID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio2" , ПараметрыТеста); - - VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста); - OPI_Инструменты.Пауза(60); - - VKTeams_ОтветитьНаСобытиеКлавиатуры(ПараметрыТеста); - VKTeams_ПереслатьСообщение(ПараметрыТеста); - VKTeams_ОтправитьФайл(ПараметрыТеста); - VKTeams_ПереслатьФайл(ПараметрыТеста); - VKTeams_ИзменитьТекстСообщения(ПараметрыТеста); - VKTeams_ЗакрепитьСообщение(ПараметрыТеста); - VKTeams_ОткрепитьСообщение(ПараметрыТеста); - VKTeams_УдалитьСообщение(ПараметрыТеста); - VKTeams_ОтправитьГолосовоеСообщение(ПараметрыТеста); - VKTeams_ПереслатьГолосовоеСообщение(ПараметрыТеста); - VKTeams_СформироватьКнопкуДействия(ПараметрыТеста); - -КонецПроцедуры - -Процедура ВКТ_УправлениеЧатами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); - - VKTeams_ИсключитьПользователейЧата(ПараметрыТеста); - VKTeams_ИзменитьАватарЧата(ПараметрыТеста); - VKTeams_ПолучитьИнформациюОЧате(ПараметрыТеста); - VKTeams_ПолучитьАдминистраторовЧата(ПараметрыТеста); - VKTeams_ПолучитьПользователейЧата(ПараметрыТеста); - VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыТеста); - VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыТеста); - VKTeams_ЗаблокироватьПользователяЧата(ПараметрыТеста); - VKTeams_РазблокироватьПользователяЧата(ПараметрыТеста); - VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыТеста); - VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыТеста); - VKTeams_УстановитьЗаголовокЧата(ПараметрыТеста); - VKTeams_УстановитьОписаниеЧата(ПараметрыТеста); - VKTeams_УстановитьПравилаЧата(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Neocities - -Процедура НС_РаботаСФайлами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Gif" , ПараметрыТеста); - - Neocities_ЗагрузитьФайл(ПараметрыТеста); - Neocities_ЗагрузитьФайлы(ПараметрыТеста); - Neocities_ПолучитьСписокФайлов(ПараметрыТеста); - Neocities_УдалитьВыбранныеФайлы(ПараметрыТеста); - Neocities_СинхронизироватьКаталоги(ПараметрыТеста); - -КонецПроцедуры - -Процедура НС_ПолучениеДанных() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Login" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Password", ПараметрыТеста); - - Neocities_ПолучитьДанныеОСайте(ПараметрыТеста); - Neocities_ПолучитьТокен(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область CDEK - -Процедура СдэкАПИ_ОбщиеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Account" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Password", ПараметрыТеста); - - CDEK_ПолучитьТокен(ПараметрыТеста); - CDEK_ПолучитьЧекиНаДату(ПараметрыТеста); - CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыТеста); - CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыТеста); - CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыТеста); - CDEK_ПолучитьСписокОфисов(ПараметрыТеста); - CDEK_ПолучитьСписокРегионов(ПараметрыТеста); - -КонецПроцедуры - -Процедура СдэкАПИ_РаботаСЗаказами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); - - CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста); - CDEK_СоздатьЗаказ(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CDEK_ПолучитьЗаказ(ПараметрыТеста); - CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста); - CDEK_СформироватьКвитанцию(ПараметрыТеста); - CDEK_СформироватьШтрихкод(ПараметрыТеста); - CDEK_СоздатьПреалерт(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CDEK_ПолучитьКвитанцию(ПараметрыТеста); - CDEK_ПолучитьШтрихкод(ПараметрыТеста); - CDEK_ПолучитьПреалерт(ПараметрыТеста); - CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыТеста); - CDEK_ПолучитьЧекЗаказа(ПараметрыТеста); - CDEK_ИзменитьЗаказ(ПараметрыТеста); - CDEK_ОформитьКлиентскийВозврат(ПараметрыТеста); - CDEK_СоздатьОтказ(ПараметрыТеста); - CDEK_УдалитьЗаказ(ПараметрыТеста); - -КонецПроцедуры - -Процедура СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); - - CDEK_СоздатьЗаказ(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыТеста); - CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыТеста); - CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыТеста); - CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыТеста); - CDEK_ПолучитьОписаниеДоговоренности(ПараметрыТеста); - - CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыТеста); - CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыТеста); - - OPI_Инструменты.Пауза(25); - - CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыТеста); - CDEK_УдалитьЗаказ(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexMetrika - -Процедура ЯМетрика_УправлениеМетками() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); - - YandexMetrika_СоздатьМетку(ПараметрыТеста); - YandexMetrika_ПолучитьСписокМеток(ПараметрыТеста); - YandexMetrika_ИзменитьМетку(ПараметрыТеста); - YandexMetrika_ПолучитьМетку(ПараметрыТеста); - YandexMetrika_УдалитьМетку(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯМетрика_УправлениеСчетчиками() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); - - YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыТеста); - YandexMetrika_СоздатьСчетчик(ПараметрыТеста); - YandexMetrika_ПолучитьСчетчик(ПараметрыТеста); - YandexMetrika_ИзменитьСчетчик(ПараметрыТеста); - YandexMetrika_УдалитьСчетчик(ПараметрыТеста); - YandexMetrika_ВосстановитьСчетчик(ПараметрыТеста); - YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыТеста); - YandexMetrika_УдалитьСчетчик(ПараметрыТеста); - -КонецПроцедуры - -Процедура ЯМетрика_УправлениеОперациями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); - - YandexMetrika_СоздатьСчетчик(ПараметрыТеста); - YandexMetrika_ПолучитьСписокОпераций(ПараметрыТеста); - YandexMetrika_УдалитьСчетчик(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область S3 - -Процедура AWS_ОбщиеМетоды() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - S3_ПолучитьСтруктуруДанных(ПараметрыТеста); - S3_ОтправитьЗапросБезТела(ПараметрыТеста); - S3_ОтправитьЗапросСТелом(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура AWS_РаботаСБакетами() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - S3_СоздатьБакет(ПараметрыТеста); - S3_ПолучитьСписокБакетов(ПараметрыТеста); - S3_ПроверитьДоступностьБакета(ПараметрыТеста); - S3_УстановитьТегиБакета(ПараметрыТеста); - S3_ПолучитьТегиБакета(ПараметрыТеста); - S3_УдалитьТегиБакета(ПараметрыТеста); - S3_УстановитьШифрованиеБакета(ПараметрыТеста); - S3_ПолучитьШифрованиеБакета(ПараметрыТеста); - S3_УдалитьШифрованиеБакета(ПараметрыТеста); - S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста); - S3_ПолучитьНастройкиВерсионированияБакета(ПараметрыТеста); - S3_УдалитьБакет(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура AWS_РаботаСОбъектами() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - S3_СоздатьБакет(ПараметрыТеста); - S3_ЗагрузитьОбъект(ПараметрыТеста); - S3_ЗагрузитьОбъектЦеликом(ПараметрыТеста); - S3_ИнициализироватьЗагрузкуЧастями(ПараметрыТеста); - S3_ЗагрузитьЧастьОбъекта(ПараметрыТеста); - S3_ЗавершитьЗагрузкуЧастями(ПараметрыТеста); - S3_ОтменитьЗагрузкуЧастями(ПараметрыТеста); - S3_ПолучитьОписаниеОбъекта(ПараметрыТеста); - S3_КопироватьОбъект(ПараметрыТеста); - S3_УстановитьТегиОбъекта(ПараметрыТеста); - S3_ПолучитьТегиОбъекта(ПараметрыТеста); - S3_УдалитьТегиОбъекта(ПараметрыТеста); - S3_ПолучитьСписокОбъектов(ПараметрыТеста); - S3_ПолучитьСписокВерсийОбъектов(ПараметрыТеста); - S3_ПолучитьОбъект(ПараметрыТеста); - S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыТеста); - S3_УдалитьОбъект(ПараметрыТеста); - S3_УдалитьБакет(ПараметрыТеста); - S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область TCP - -Процедура TC_Клиент() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTLS", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_Port" , ПараметрыТеста); - - TCP_ОткрытьСоединение(ПараметрыТеста); - TCP_ЗакрытьСоединение(ПараметрыТеста); - TCP_ПрочитатьДвоичныеДанные(ПараметрыТеста); - TCP_ОтправитьДвоичныеДанные(ПараметрыТеста); - TCP_ПрочитатьСтроку(ПараметрыТеста); - TCP_ОтправитьСтроку(ПараметрыТеста); - TCP_ОбработатьЗапрос(ПараметрыТеста); - TCP_ПолучитьНастройкиTLS(ПараметрыТеста); - TCP_ПолучитьПоследнююОшибку(ПараметрыТеста); - TCP_ПолучитьНастройкиПрокси(ПараметрыТеста); - -КонецПроцедуры - -Процедура TC_Сервер() Экспорт - - ПараметрыТеста = Новый Структура; - - TCP_ЗапуститьСервер(ПараметрыТеста); - TCP_ОстановитьСервер(ПараметрыТеста); - TCP_ПолучитьДанныеОчередногоСоединения(ПараметрыТеста); - TCP_ПолучитьДанныеСоединения(ПараметрыТеста); - TCP_ОтправитьДанные(ПараметрыТеста); - TCP_ЗакрытьВходящееСоединение(ПараметрыТеста); - TCP_ЗавершитьОтправку(ПараметрыТеста); - TCP_ЗавершитьПолучение(ПараметрыТеста); - TCP_ПолучитьСписокСоединений(ПараметрыТеста); - TCP_ЭтоОбъектСервера(ПараметрыТеста); - TCP_ПолучитьЛог(ПараметрыТеста); - TCP_ПолучитьНастройкиЛогирования(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область SQLite - -Процедура SQLL_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - - База = ПолучитьИмяВременногоФайла("sqlite"); - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); - OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_ExtLinux", ПараметрыТеста); - - SQLite_ОткрытьСоединение(ПараметрыТеста); - SQLite_ЗакрытьСоединение(ПараметрыТеста); - SQLite_ВыполнитьЗапросSQL(ПараметрыТеста); - SQLite_ЭтоКоннектор(ПараметрыТеста); - SQLite_ПодключитьРасширение(ПараметрыТеста); - - OPI_Инструменты.УдалитьФайлВПопытке(База, "Ошибка удаления файла базы"); - -КонецПроцедуры - -Процедура SQLL_ORM() Экспорт - - ПараметрыТеста = Новый Структура; - - База = ПолучитьИмяВременногоФайла("sqlite"); - - Соединение = OPI_SQLite.ОткрытьСоединение(База); - ПараметрыТеста.Вставить("SQLite_DB", Соединение); - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); - - SQLite_СоздатьТаблицу(ПараметрыТеста); - SQLite_ДобавитьЗаписи(ПараметрыТеста); - SQLite_ГарантироватьЗаписи(ПараметрыТеста); - SQLite_ПолучитьЗаписи(ПараметрыТеста); - SQLite_ОбновитьЗаписи(ПараметрыТеста); - SQLite_УдалитьЗаписи(ПараметрыТеста); - SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); - SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста); - SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста); - SQLite_ГарантироватьТаблицу(ПараметрыТеста); - SQLite_ОчиститьТаблицу(ПараметрыТеста); - SQLite_УдалитьТаблицу(ПараметрыТеста); - SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - - OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); - OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); - - SQLite_СоздатьТаблицу(ПараметрыТеста); - SQLite_ДобавитьЗаписи(ПараметрыТеста); - SQLite_ГарантироватьЗаписи(ПараметрыТеста); - SQLite_ПолучитьЗаписи(ПараметрыТеста); - SQLite_ОбновитьЗаписи(ПараметрыТеста); - SQLite_УдалитьЗаписи(ПараметрыТеста); - SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); - SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста); - SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста); - SQLite_ГарантироватьТаблицу(ПараметрыТеста); - SQLite_ОчиститьТаблицу(ПараметрыТеста); - SQLite_УдалитьТаблицу(ПараметрыТеста); - SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - - OPI_Инструменты.УдалитьФайлВПопытке(База, "Ошибка удаления файла базы"); - -КонецПроцедуры - -#КонецОбласти - -#Область PostgreSQL - -Процедура Postgres_ОсновныеМетоды() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровPostgres(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - PostgreSQL_СформироватьСтрокуПодключения(ПараметрыТеста); - PostgreSQL_ОткрытьСоединение(ПараметрыТеста); - PostgreSQL_ЗакрытьСоединение(ПараметрыТеста); - PostgreSQL_ЭтоКоннектор(ПараметрыТеста); - PostgreSQL_ВыполнитьЗапросSQL(ПараметрыТеста); - PostgreSQL_ПолучитьНастройкиTLS(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура Postgres_ORM() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровPostgres(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - PostgreSQL_СоздатьБазуДанных(ПараметрыТеста); - PostgreSQL_СоздатьТаблицу(ПараметрыТеста); - PostgreSQL_ДобавитьЗаписи(ПараметрыТеста); - PostgreSQL_ГарантироватьЗаписи(ПараметрыТеста); - PostgreSQL_ПолучитьЗаписи(ПараметрыТеста); - PostgreSQL_ОбновитьЗаписи(ПараметрыТеста); - PostgreSQL_УдалитьЗаписи(ПараметрыТеста); - PostgreSQL_ОчиститьТаблицу(ПараметрыТеста); - PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); - PostgreSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); - PostgreSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); - PostgreSQL_ГарантироватьТаблицу(ПараметрыТеста); - PostgreSQL_УдалитьТаблицу(ПараметрыТеста); - PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста); - PostgreSQL_УдалитьБазуДанных(ПараметрыТеста); - PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область MySQL - -Процедура MYS_ОсновныеМетоды() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровMySQL(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - MySQL_СформироватьСтрокуПодключения(ПараметрыТеста); - MySQL_ОткрытьСоединение(ПараметрыТеста); - MySQL_ЗакрытьСоединение(ПараметрыТеста); - MySQL_ЭтоКоннектор(ПараметрыТеста); - MySQL_ВыполнитьЗапросSQL(ПараметрыТеста); - MySQL_ПолучитьНастройкиTLS(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура MYS_ORM() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровMySQL(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - MySQL_СоздатьБазуДанных(ПараметрыТеста); - MySQL_СоздатьТаблицу(ПараметрыТеста); - MySQL_ДобавитьЗаписи(ПараметрыТеста); - MySQL_ГарантироватьЗаписи(ПараметрыТеста); - MySQL_ПолучитьЗаписи(ПараметрыТеста); - MySQL_ОбновитьЗаписи(ПараметрыТеста); - MySQL_УдалитьЗаписи(ПараметрыТеста); - MySQL_ОчиститьТаблицу(ПараметрыТеста); - MySQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); - MySQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); - MySQL_УдалитьКолонкуТаблицы(ПараметрыТеста); - MySQL_ГарантироватьТаблицу(ПараметрыТеста); - MySQL_УдалитьТаблицу(ПараметрыТеста); - MySQL_УдалитьБазуДанных(ПараметрыТеста); - MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область GreenAPI - -Процедура GAPI_Аккаунт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - GreenAPI_АрхивироватьЧат(ПараметрыТеста); - GreenAPI_РазархивироватьЧат(ПараметрыТеста); - GreenAPI_СформироватьПараметрыДоступа(ПараметрыТеста); - GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыТеста); - GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); - GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); - GreenAPI_УстановитьНастройкиИнстанса(ПараметрыТеста); - GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыТеста); - GreenAPI_УстановитьКартинкуПрофиля(ПараметрыТеста); - // !DISABLED! GreenAPI_ПерезапуститьИнстанс(ПараметрыТеста); - // !DISABLED! GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста); - // !DISABLED! GreenAPI_РазлогинитьИнстанс(ПараметрыТеста); - // !DISABLED! GreenAPI_ПолучитьQR(ПараметрыТеста); - -КонецПроцедуры - -Процедура GAPI_УправлениеГруппами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - GreenAPI_СоздатьГруппу(ПараметрыТеста); - GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыТеста); - GreenAPI_ИзменитьИмяГруппы(ПараметрыТеста); - GreenAPI_УстановитьКартинкуГруппы(ПараметрыТеста); - GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыТеста); - GreenAPI_ИсключитьУчастникаГруппы(ПараметрыТеста); - GreenAPI_НазначитьПраваАдминистратора(ПараметрыТеста); - GreenAPI_ОтозватьПраваАдминистратора(ПараметрыТеста); - GreenAPI_ПокинутьГруппу(ПараметрыТеста); - -КонецПроцедуры - -Процедура GAPI_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыТеста); - GreenAPI_ОтправитьФайл(ПараметрыТеста); - GreenAPI_ОтправитьФайлПоURL(ПараметрыТеста); - GreenAPI_ОтправитьОпрос(ПараметрыТеста); - GreenAPI_ОтправитьЛокацию(ПараметрыТеста); - GreenAPI_ОтправитьКонтакт(ПараметрыТеста); - GreenAPI_ПереслатьСообщения(ПараметрыТеста); - GreenAPI_ПолучитьОписаниеЛокации(ПараметрыТеста); - GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыТеста); - GreenAPI_ИзменитьТекстСообщения(ПараметрыТеста); - GreenAPI_УдалитьСообщение(ПараметрыТеста); - -КонецПроцедуры - -Процедура GAPI_ПолучениеУведомлений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_FileMessageID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_DownloadMessageID", ПараметрыТеста); - - GreenAPI_ПолучитьУведомление(ПараметрыТеста); - GreenAPI_УстановитьОтметкуПрочтения(ПараметрыТеста); - // !DISABLED! GreenAPI_СкачатьФайлСообщения(ПараметрыТеста); - GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыТеста); - -КонецПроцедуры - -Процедура GAPI_ОчередьСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - - GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста); - GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста); - -КонецПроцедуры - -Процедура GAPI_ЖурналыСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MessageID" , ПараметрыТеста); - - GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста); - GreenAPI_ПолучитьСообщение(ПараметрыТеста); - GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); - GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область RCON - -Процедура RC_ВыполнениеКоманд() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_Password", ПараметрыТеста); - - RCON_СформироватьПараметрыСоединения(ПараметрыТеста); - RCON_ОткрытьСоединение(ПараметрыТеста); - RCON_ВыполнитьКоманду(ПараметрыТеста); - RCON_ЭтоКоннектор(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область Ollama - -Процедура OLLM_ОбработкаЗапросов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); - - Ollama_СкачатьМодель(ПараметрыТеста); - Ollama_ПолучитьВерсию(ПараметрыТеста); - Ollama_ПолучитьОтвет(ПараметрыТеста); - Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста); - Ollama_ПолучитьПредставления(ПараметрыТеста); - Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыТеста); - Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыТеста); - Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыТеста); - Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыТеста); - -КонецПроцедуры - -Процедура OLLM_РаботаСМоделями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); - - Ollama_СкачатьМодель(ПараметрыТеста); - Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста); - Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста); - Ollama_СоздатьМодель(ПараметрыТеста); - Ollama_ПолучитьИнформациюОМодели(ПараметрыТеста); - Ollama_ПолучитьСписокМоделей(ПараметрыТеста); - Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыТеста); - Ollama_КопироватьМодель(ПараметрыТеста); - Ollama_ОтправитьМодель(ПараметрыТеста); - Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыТеста); - Ollama_УдалитьМодель(ПараметрыТеста); - -КонецПроцедуры - -Процедура OLLM_РаботаСBlob() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - Ollama_ОтправитьBlob(ПараметрыТеста); - Ollama_ПроверитьBlob(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область HTTP - -Процедура HTTP_Инициализация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL" , ПараметрыТеста); - - HTTP_Инициализировать(ПараметрыТеста); - HTTP_УстановитьURL(ПараметрыТеста); - HTTP_УстановитьПараметрыURL(ПараметрыТеста); - HTTP_УстановитьФайлОтвета(ПараметрыТеста); - HTTP_УстановитьТипДанных(ПараметрыТеста); - HTTP_ПолучитьЛог(ПараметрыТеста); - HTTP_УстановитьПрокси(ПараметрыТеста); - HTTP_УстановитьТаймаут(ПараметрыТеста); - -КонецПроцедуры - -Процедура HTTP_УстановкаТела() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - HTTP_УстановитьДвоичноеТело(ПараметрыТеста); - HTTP_УстановитьСтроковоеТело(ПараметрыТеста); - HTTP_УстановитьJsonТело(ПараметрыТеста); - HTTP_УстановитьFormТело(ПараметрыТеста); - HTTP_НачатьЗаписьТелаMultipart(ПараметрыТеста); - HTTP_ДобавитьПолеMultipartFormData(ПараметрыТеста); - HTTP_ДобавитьФайлMultipartFormData(ПараметрыТеста); - HTTP_ДобавитьДанныеRelated(ПараметрыТеста); - -КонецПроцедуры - -Процедура HTTP_Настройки() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - HTTP_ИспользоватьКодировку(ПараметрыТеста); - HTTP_ИспользоватьСжатиеGzip(ПараметрыТеста); - HTTP_ИспользоватьПоляТелаВOAuth(ПараметрыТеста); - HTTP_ИспользоватьКодированиеURL(ПараметрыТеста); - HTTP_РазделятьМассивыВURL(ПараметрыТеста); - HTTP_МаксимумПереадресаций(ПараметрыТеста); - HTTP_МаксимумПопыток(ПараметрыТеста); - HTTP_ВернутьНастройки(ПараметрыТеста); - -КонецПроцедуры - -Процедура HTTP_УстановкаЗаголовков() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - - HTTP_УстановитьЗаголовки(ПараметрыТеста); - HTTP_ДобавитьЗаголовок(ПараметрыТеста); - -КонецПроцедуры - -Процедура HTTP_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - - HTTP_ДобавитьBasicАвторизацию(ПараметрыТеста); - HTTP_ДобавитьBearerАвторизацию(ПараметрыТеста); - HTTP_ДобавитьAWS4Авторизацию(ПараметрыТеста); - HTTP_ДобавитьOAuthV1Авторизацию(ПараметрыТеста); - HTTP_УстановитьАлгоритмOAuthV1(ПараметрыТеста); - -КонецПроцедуры - -Процедура HTTP_ОбработкаЗапроса() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - HTTP_ОбработатьЗапрос(ПараметрыТеста); - HTTP_ВыполнитьЗапрос(ПараметрыТеста); - HTTP_ВернутьЗапрос(ПараметрыТеста); - HTTP_ВернутьСоединение(ПараметрыТеста); - HTTP_ОтправитьДанныеЧастями(ПараметрыТеста); - HTTP_ОтправитьЧасть(ПараметрыТеста); - -КонецПроцедуры - -Процедура HTTP_ПолучениеОтвета() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - HTTP_ВернутьОтвет(ПараметрыТеста); - HTTP_ВернутьОтветКакJSONКоллекцию(ПараметрыТеста); - HTTP_ВернутьОтветКакДвоичныеДанные(ПараметрыТеста); - HTTP_ВернутьОтветКакСтроку(ПараметрыТеста); - HTTP_ВернутьИмяФайлаТелаОтвета(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область OpenAI - -Процедура OAI_ОбработкаЗапросов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL2" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_File" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - OpenAI_ПолучитьОтвет(ПараметрыТеста); - OpenAI_ПолучитьПредставления(ПараметрыТеста); - OpenAI_ПолучитьСтруктуруСообщения(ПараметрыТеста); - OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыТеста); - OpenAI_ПолучитьКартинки(ПараметрыТеста); - OpenAI_ПолучитьСообщениеАссистента(ПараметрыТеста); - OpenAI_ПолучитьСообщениеПользователя(ПараметрыТеста); - OpenAI_ПолучитьСообщениеСистемы(ПараметрыТеста); - -КонецПроцедуры - -Процедура OAI_Ассистенты() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); - - OpenAI_СоздатьАссистента(ПараметрыТеста); - OpenAI_ПолучитьАссистента(ПараметрыТеста); - OpenAI_ПолучитьСписокАссистентов(ПараметрыТеста); - OpenAI_УдалитьАссистента(ПараметрыТеста); - -КонецПроцедуры - -Процедура OAI_РаботаСФайлами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - OpenAI_ЗагрузитьФайл(ПараметрыТеста); - OpenAI_ПолучитьИнформациюОФайле(ПараметрыТеста); - OpenAI_ПолучитьСписокФайлов(ПараметрыТеста); - OpenAI_СкачатьФайл(ПараметрыТеста); - OpenAI_УдалитьФайл(ПараметрыТеста); - -КонецПроцедуры - -Процедура OAI_РаботаСАудио() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); - - OpenAI_СгенерироватьРечь(ПараметрыТеста); - OpenAI_СоздатьТранскрипцию(ПараметрыТеста); - -КонецПроцедуры - -Процедура OAI_РаботаСМоделями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); - - OpenAI_ПолучитьСписокМоделей(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область MSSQL - -Процедура MSS_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста); - - MSSQL_СформироватьСтрокуПодключения(ПараметрыТеста); - MSSQL_ОткрытьСоединение(ПараметрыТеста); - MSSQL_ЗакрытьСоединение(ПараметрыТеста); - MSSQL_ЭтоКоннектор(ПараметрыТеста); - MSSQL_ВыполнитьЗапросSQL(ПараметрыТеста); - MSSQL_ПолучитьНастройкиTLS(ПараметрыТеста); - -КонецПроцедуры - -Процедура MSS_ORM() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - MSSQL_СоздатьБазуДанных(ПараметрыТеста); - MSSQL_СоздатьТаблицу(ПараметрыТеста); - MSSQL_ДобавитьЗаписи(ПараметрыТеста); - MSSQL_ГарантироватьЗаписи(ПараметрыТеста); - MSSQL_ПолучитьЗаписи(ПараметрыТеста); - MSSQL_ОбновитьЗаписи(ПараметрыТеста); - MSSQL_УдалитьЗаписи(ПараметрыТеста); - MSSQL_ОчиститьТаблицу(ПараметрыТеста); - MSSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); - MSSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); - MSSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); - MSSQL_ГарантироватьТаблицу(ПараметрыТеста); - MSSQL_УдалитьТаблицу(ПараметрыТеста); - MSSQL_УдалитьБазуДанных(ПараметрыТеста); - MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область FTP - -Процедура FT_РаботаСДиректориями() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - FTP_ОчиститьДиректорию(ПараметрыТеста); - FTP_СоздатьНовуюДиректорию(ПараметрыТеста); - FTP_ПолучитьТекущийКаталог(ПараметрыТеста); - FTP_ИзменитьТекущийКаталог(ПараметрыТеста); - FTP_ПолучитьСписокОбъектов(ПараметрыТеста); - FTP_УдалитьДиректорию(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура FT_РаботаСФайлами() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - FTP_ЗагрузитьФайл(ПараметрыТеста); - FTP_СохранитьФайл(ПараметрыТеста); - FTP_ПолучитьДанныеФайла(ПараметрыТеста); - FTP_УдалитьФайл(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -Процедура FT_ОсновныеМетоды() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - FTP_ОткрытьСоединение(ПараметрыТеста); - FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста); - FTP_ПолучитьСписокРасширенийПротокола(ПараметрыТеста); - FTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста); - FTP_ЗакрытьСоединение(ПараметрыТеста); - FTP_ЭтоКоннектор(ПараметрыТеста); - FTP_ПолучитьНастройкиСоединения(ПараметрыТеста); - FTP_ПолучитьНастройкиПрокси(ПараметрыТеста); - FTP_ПолучитьНастройкиTLS(ПараметрыТеста); - FTP_ПолучитьРазмерОбъекта(ПараметрыТеста); - FTP_ИзменитьПуть(ПараметрыТеста); - FTP_ВыполнитьНестандартнуюКоманду(ПараметрыТеста); - FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыТеста); - FTP_Пинг(ПараметрыТеста); - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - -#Область ReportPortal - -Процедура RPortal_Авторизация() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_Login" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_UserID" , ПараметрыТеста); - - ReportPortal_ПолучитьВременныйТокен(ПараметрыТеста); - ReportPortal_ПолучитьПостоянныйТокен(ПараметрыТеста); - ReportPortal_УдалитьПостоянныйТокен(ПараметрыТеста); - ReportPortal_ПолучитьТокеныПользователя(ПараметрыТеста); - -КонецПроцедуры - -Процедура RPortal_УправлениеТестами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); - - ReportPortal_СоздатьЗапуск(ПараметрыТеста); - ReportPortal_ПолучитьЗапуск(ПараметрыТеста); - ReportPortal_ПолучитьЭлементыЗапуска(ПараметрыТеста); - ReportPortal_ИзменитьЗапуск(ПараметрыТеста); - ReportPortal_СоздатьЭлемент(ПараметрыТеста); - ReportPortal_ПолучитьЭлемент(ПараметрыТеста); - ReportPortal_ПолучитьЛогиЭлемента(ПараметрыТеста); - ReportPortal_ИзменитьЭлемент(ПараметрыТеста); - ReportPortal_ЗавершитьЭлемент(ПараметрыТеста); - ReportPortal_ЗавершитьЗапуск(ПараметрыТеста); - ReportPortal_УдалитьЭлемент(ПараметрыТеста); - ReportPortal_ПолучитьОтчетЗапуска(ПараметрыТеста); - ReportPortal_УдалитьЗапуск(ПараметрыТеста); - ReportPortal_ПолучитьСтруктуруЗапуска(ПараметрыТеста); - ReportPortal_ПолучитьСтруктуруЭлемента(ПараметрыТеста); - ReportPortal_ПолучитьСтруктуруЗавершенияЭлемента(ПараметрыТеста); - ReportPortal_ПолучитьСтруктуруЗавершенияЗапуска(ПараметрыТеста); - -КонецПроцедуры - -Процедура RPortal_ЗаписьЛогов() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); - - ReportPortal_СоздатьЗапуск(ПараметрыТеста); - ReportPortal_СоздатьЭлемент(ПараметрыТеста); - - ReportPortal_ЗаписатьЛог(ПараметрыТеста); - ReportPortal_ПолучитьСтруктуруЛога(ПараметрыТеста); - ReportPortal_ПолучитьЛог(ПараметрыТеста); - ReportPortal_УдалитьЛог(ПараметрыТеста); - - ReportPortal_ЗавершитьЭлемент(ПараметрыТеста); - ReportPortal_ЗавершитьЗапуск(ПараметрыТеста); - -КонецПроцедуры - -Процедура RPortal_УправлениеПроектами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); - - ReportPortal_СоздатьПроект(ПараметрыТеста); - ReportPortal_ПолучитьПроект(ПараметрыТеста); - ReportPortal_ПолучитьПроекты(ПараметрыТеста); - ReportPortal_ДобавитьПользователейВПроект(ПараметрыТеста); - ReportPortal_ИсключитьПользователейИзПроекта(ПараметрыТеста); - ReportPortal_УдалитьПроект(ПараметрыТеста); - -КонецПроцедуры - -Процедура RPortal_УправлениеПользователями() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); - - ReportPortal_СоздатьПользователя(ПараметрыТеста); - ReportPortal_ПолучитьТекущегоПользователя(ПараметрыТеста); - ReportPortal_ПолучитьПользователя(ПараметрыТеста); - ReportPortal_ПолучитьПользователей(ПараметрыТеста); - ReportPortal_ПолучитьПроектыПользователя(ПараметрыТеста); - ReportPortal_ИзменитьПользователя(ПараметрыТеста); - ReportPortal_УдалитьПользователя(ПараметрыТеста); - ReportPortal_ПолучитьСтруктуруПользователя(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область SSH - -Процедура SShell_ОсновныеМетоды() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - SSH_ОткрытьСоединение(ПараметрыТеста); - SSH_ПолучитьКонфигурациюСоединения(ПараметрыТеста); - SSH_ВыполнитьКоманду(ПараметрыТеста); - SSH_ЗакрытьСоединение(ПараметрыТеста); - SSH_ЭтоКоннектор(ПараметрыТеста); - SSH_ПолучитьНастройкиЛогинПароль(ПараметрыТеста); - SSH_ПолучитьНастройкиПриватныйКлюч(ПараметрыТеста); - SSH_ПолучитьНастройкиЧерезАгента(ПараметрыТеста); - SSH_ПолучитьНастройкиKI(ПараметрыТеста); - SSH_ПолучитьНастройкиПрокси(ПараметрыТеста); - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); - -КонецПроцедуры - -#КонецОбласти - -#Область SFTP - -Процедура SF_ОсновныеМетоды() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - SFTP_ОткрытьСоединение(ПараметрыТеста); - SFTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста); - SFTP_ЭтоКоннектор(ПараметрыТеста); - SFTP_ЗакрытьСоединение(ПараметрыТеста); - SFTP_ПолучитьНастройкиЛогинПароль(ПараметрыТеста); - SFTP_ПолучитьНастройкиПриватныйКлюч(ПараметрыТеста); - SFTP_ПолучитьНастройкиЧерезАгента(ПараметрыТеста); - SFTP_ПолучитьНастройкиKI(ПараметрыТеста); - SFTP_ПолучитьНастройкиПрокси(ПараметрыТеста); - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); - -КонецПроцедуры - -Процедура SF_РаботаСДиректориями() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - SFTP_ПолучитьТекущийКаталог(ПараметрыТеста); - SFTP_ПолучитьСписокОбъектов(ПараметрыТеста); - SFTP_СоздатьНовуюДиректорию(ПараметрыТеста); - SFTP_УдалитьДиректорию(ПараметрыТеста); - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); - -КонецПроцедуры - -Процедура SF_РаботаСФайлами() Экспорт - - МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); - - Для Каждого ПараметрыТеста Из МассивВариантов Цикл - - SFTP_ЗагрузитьФайл(ПараметрыТеста); - SFTP_ПолучитьИнформациюОФайле(ПараметрыТеста); - SFTP_ПолучитьДанныеФайла(ПараметрыТеста); - SFTP_СохранитьФайл(ПараметрыТеста); - SFTP_ИзменитьПуть(ПараметрыТеста); - SFTP_УдалитьФайл(ПараметрыТеста); - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); - -КонецПроцедуры - -#КонецОбласти - -#Область GreenMax - -Процедура GMax_Аккаунт() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); - //OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_TestGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - GreenMax_СформироватьПараметрыДоступа(ПараметрыТеста); - // !DISABLED! GreenMax_РазлогинитьИнстанс(ПараметрыТеста); - // !DISABLED! GreenMax_ПолучитьКодАвторизации(ПараметрыТеста); - // !DISABLED! GreenMax_ОтправитьКодАвторизации(ПараметрыТеста); - GreenMax_ПолучитьСостояниеИнстанса(ПараметрыТеста); - GreenMax_ПолучитьНастройкиИнстанса(ПараметрыТеста); - GreenMax_УстановитьНастройкиИнстанса(ПараметрыТеста); - GreenMax_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); - GreenMax_УстановитьКартинкуПрофиля(ПараметрыТеста); - GreenMax_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); - GreenMax_ПроверитьАккаунт(ПараметрыТеста); - GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); - GreenMax_ПолучитьИнформациюОКонтакте(ПараметрыТеста); - GreenMax_ПолучитьСписокЧатов(ПараметрыТеста); - GreenMax_ПолучитьАватарЧата(ПараметрыТеста); - GreenMax_ПерезапуститьИнстанс(ПараметрыТеста); - -КонецПроцедуры - -Процедура GMax_РаботаСГруппами() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); - - GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_СоздатьГруппу(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьИнформациюОГруппе(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ИзменитьИмяГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ИзменитьНастройкиГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_НазначитьПраваАдминистратора(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ОтозватьПраваАдминистратора(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_УдалитьУчастникаГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ДобавитьУчастникаГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_УстановитьКартинкуГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ВыйтиИзГруппы(ПараметрыТеста); - GreenMax_ПолучитьСтруктуруНастроекГруппы(ПараметрыТеста); - -КонецПроцедуры - -Процедура GMax_ОтправкаСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); - - GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_СоздатьГруппу(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ОтправитьТекстовоеСообщение(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ОтправитьФайл(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ОтправитьФайлПоURL(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_УдалитьУчастникаГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ВыйтиИзГруппы(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - -КонецПроцедуры - -Процедура GMax_Уведомления() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); - - GreenMax_ПолучитьУведомление(ПараметрыТеста); - GreenMax_УдалитьУведомление(ПараметрыТеста); - -КонецПроцедуры - -Процедура GMax_ИсторияСообщений() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); - - GreenMax_ОтметитьСообщенияКакПрочитанные(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьИсториюСообщенийЧата(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьСообщениеЧата(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - -КонецПроцедуры - -Процедура GMax_Очереди() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); - - GreenMax_ПолучитьКоличествоСообщенийКОтправке(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьОчередьСообщенийКОтправке(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ОчиститьОчередьСообщенийКОтправке(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ПолучитьКоличествоВходящихУведомлений(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - GreenMax_ОчиститьОчередьВходящихУведомлений(ПараметрыТеста); - OPI_Инструменты.Пауза(1); - -КонецПроцедуры - -#КонецОбласти - -#Область MongoDB - -Процедура Mongo_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); - - MongoDB_СформироватьСтрокуПодключения(ПараметрыТеста); - MongoDB_ОткрытьСоединение(ПараметрыТеста); - MongoDB_ЗакрытьСоединение(ПараметрыТеста); - MongoDB_ЭтоКоннектор(ПараметрыТеста); - MongoDB_ВыполнитьКоманду(ПараметрыТеста); - -КонецПроцедуры - -Процедура Mongo_РаботаСБазами() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); - - MongoDB_ПолучитьБазуДанных(ПараметрыТеста); - MongoDB_ПолучитьСписокБаз(ПараметрыТеста); - MongoDB_УдалитьБазуДанных(ПараметрыТеста); - -КонецПроцедуры - -Процедура Mongo_РаботаСКоллекциями() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); - - MongoDB_СоздатьКоллекцию(ПараметрыТеста); - MongoDB_ПолучитьСписокКоллекций(ПараметрыТеста); - MongoDB_УдалитьКоллекцию(ПараметрыТеста); - -КонецПроцедуры - -Процедура Mongo_РаботаСДокументами() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); - - MongoDB_ВставитьДокументы(ПараметрыТеста); - MongoDB_ПолучитьДокументы(ПараметрыТеста); - MongoDB_ПолучитьКурсор(ПараметрыТеста); - MongoDB_ПолучитьПакетДокументов(ПараметрыТеста); - MongoDB_ОбновитьДокументы(ПараметрыТеста); - MongoDB_УдалитьДокументы(ПараметрыТеста); - MongoDB_ПолучитьСтруктуруОбновленияДокументов(ПараметрыТеста); - MongoDB_ПолучитьСтруктуруУдаленияДокументов(ПараметрыТеста); - -КонецПроцедуры - -Процедура Mongo_УправлениеПользователями() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); - - MongoDB_СоздатьПользователя(ПараметрыТеста); - MongoDB_ИзменитьПользователя(ПараметрыТеста); - MongoDB_ПолучитьПользователей(ПараметрыТеста); - MongoDB_ПолучитьПользователейБазы(ПараметрыТеста); - MongoDB_УдалитьПользователя(ПараметрыТеста); - -КонецПроцедуры - -Процедура Mongo_УправлениеРолями() Экспорт - - ПараметрыТеста = Новый Структура; - - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); - - MongoDB_СоздатьРоль(ПараметрыТеста); - MongoDB_ПолучитьРоли(ПараметрыТеста); - MongoDB_НазначитьРоли(ПараметрыТеста); - MongoDB_СнятьРоли(ПараметрыТеста); - MongoDB_ИзменитьРоль(ПараметрыТеста); - MongoDB_УдалитьРоль(ПараметрыТеста); - MongoDB_ПолучитьСтруктуруПривилегииРоли(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область GRPC - -Процедура GR_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_AddressNoTls", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoTS" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - GRPC_ОткрытьСоединение(ПараметрыТеста); - GRPC_ЗакрытьСоединение(ПараметрыТеста); - GRPC_ЭтоКоннектор(ПараметрыТеста); - GRPC_УстановитьМетаданные(ПараметрыТеста); - GRPC_ВызватьМетод(ПараметрыТеста); - GRPC_ПолучитьНастройкиTls(ПараметрыТеста); - GRPC_ПолучитьПараметрыСоединения(ПараметрыТеста); - -КонецПроцедуры - -Процедура GR_Интроспекция() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport", ПараметрыТеста); - - GRPC_ПолучитьСписокСервисов(ПараметрыТеста); - GRPC_ПолучитьСписокМетодов(ПараметрыТеста); - GRPC_ПолучитьМетод(ПараметрыТеста); - -КонецПроцедуры - -Процедура GR_Стриминг() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_AddressNoTls", ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoTS" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); - - GRPC_ИнициализироватьСерверныйПоток(ПараметрыТеста); - GRPC_ИнициализироватьКлиентскийПоток(ПараметрыТеста); - GRPC_ИнициализироватьДвунаправленныйПоток(ПараметрыТеста); - GRPC_ОтправитьСообщение(ПараметрыТеста); - GRPC_ПолучитьСообщение(ПараметрыТеста); - GRPC_ЗакрытьПоток(ПараметрыТеста); - GRPC_ОбработатьСерверныйПоток(ПараметрыТеста); - GRPC_ОбработатьКлиентскийПоток(ПараметрыТеста); - GRPC_ОбработатьДвунаправленныйПоток(ПараметрыТеста); - GRPC_ЗавершитьОтправку(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область ClickHouse - -Процедура CH_ОсновныеМетоды() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Port" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_PortGRPC" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста); - - ClickHouse_ВыполнитьЗапрос(ПараметрыТеста); - ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыТеста); - ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыТеста); - ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыТеста); - ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыТеста); - ClickHouse_ПолучитьНастройкиСессии(ПараметрыТеста); - -КонецПроцедуры - -Процедура CH_GRPC() Экспорт - - ПараметрыТеста = Новый Структура; - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_PortGRPC" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста); - OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста); - - ClickHouse_ОткрытьСоединениеGRPC(ПараметрыТеста); - ClickHouse_ПолучитьНастройкиTls(ПараметрыТеста); - - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыТеста["ClickHouse_PortGRPC"]); - - Логин = ПараметрыТеста["ClickHouse_User"]; - Пароль = ПараметрыТеста["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - ТекстСозданияТаблицы = "CREATE TABLE IF NOT EXISTS events_stream_test ( - | id UInt64, - | timestamp DateTime, - | user_id UInt32, - | event_type String, - | payload String - |) ENGINE = MergeTree() - |ORDER BY (timestamp, id)"; - - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_stream_test"); - Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); - - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстСозданияТаблицы); - Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); - - ClickHouse_ОткрытьПотокGRPC(ПараметрыТеста); - ClickHouse_ОтправитьСообщениеGRPC(ПараметрыТеста); - ClickHouse_ОтправитьДанныеGRPC(ПараметрыТеста); - ClickHouse_ПолучитьСообщениеGRPC(ПараметрыТеста); - ClickHouse_ЗавершитьОтправкуGRPC(ПараметрыТеста); - ClickHouse_ЗакрытьПотокGRPC(ПараметрыТеста); - ClickHouse_ОбработатьОтправкуGRPC(ПараметрыТеста); - ClickHouse_ОбработатьПолучениеGRPC(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#Область RSS - -Процедура RSS_МетодыRSS() Экспорт - - ПараметрыТеста = Новый Структура; - - RSS_СоздатьФидRSS(ПараметрыТеста); - RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыТеста); - RSS_РазобратьФидRSS(ПараметрыТеста); - -КонецПроцедуры - -Процедура RSS_МетодыAtom() Экспорт - - ПараметрыТеста = Новый Структура; - - RSS_СоздатьФидAtom(ПараметрыТеста); - RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыТеста); - RSS_РазобратьФидAtom(ПараметрыТеста); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьПараметрыВК() - - Параметры = Новый Структура; - НомерГруппы = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_GroupID"); - - Параметры.Вставить("access_token", OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_Token")); - Параметры.Вставить("owner_id" , "-" + НомерГруппы); - Параметры.Вставить("app_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_AppID")); - Параметры.Вставить("group_id" , НомерГруппы); - - Возврат Параметры; - -КонецФункции - -Функция ПолучитьПараметрыАвторизацииТвиттер() - - Параметры = Новый Соответствие; - - ТокенСервера = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Access_Token"); - - URL = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_TokenURL"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьBearerАвторизацию(ТокенСервера) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - Токен = Результат["data"]; - - Параметры.Вставить("redirect_uri" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Redirect")); - Параметры.Вставить("client_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientID")); - Параметры.Вставить("client_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientSecret")); - Параметры.Вставить("access_token" , Токен); - Параметры.Вставить("refresh_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Refresh")); - Параметры.Вставить("oauth_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthToken")); - Параметры.Вставить("oauth_token_secret", OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthSecret")); - - Параметры.Вставить("oauth_consumer_key" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerKey")); - Параметры.Вставить("oauth_consumer_secret", OPI_ПолучениеДанныхТестов.ПолучитьПараметр( - "Twitter_OAuthConsumerSecret")); - - Возврат Параметры; - -КонецФункции - -//@skip-check method-too-many-params -Процедура Обработать(Знач Результат - , Знач Библиотека - , Знач Метод - , Знач Вариант = "" - , ДопПараметр1 = Неопределено - , ДопПараметр2 = Неопределено - , ДопПараметр3 = Неопределено) - - CLITestsMark = 1; - - УстановитьПеременнуюСреды("OINT_TESTS_CLI", CLITestsMark); - - OPI_ПолучениеДанныхТестов.ОбработатьРезультатТестирования(Результат - , Метод - , Библиотека - , Вариант - , ДопПараметр1 - , ДопПараметр2 - , ДопПараметр3); - -КонецПроцедуры - -#Область АтомарныеТесты - -#Область Telegram - -Процедура Telegram_ПолучитьИнформациюБота(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьИнформациюБота", Опции); - - // END - - Обработать(Результат, "Telegram", "ПолучитьИнформациюБота"); - -КонецПроцедуры - -Процедура Telegram_ПолучитьОбновления(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьОбновления", Опции); - - // END - - Обработать(Результат, "Telegram", "ПолучитьОбновления"); - -КонецПроцедуры - -Процедура Telegram_УстановитьWebhook(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - URL = ПараметрыФункции["Telegram_URL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УстановитьWebhook", Опции); - - // END - - Обработать(Результат, "Telegram", "УстановитьWebhook"); - -КонецПроцедуры - -Процедура Telegram_УдалитьWebhook(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьWebhook", Опции); - - // END - - Обработать(Результат, "Telegram", "УдалитьWebhook"); - -КонецПроцедуры - -Процедура Telegram_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Текст = ПараметрыФункции["String"]; - - МассивКнопокКлавиатуры = Новый Массив; - МассивКнопокКлавиатуры.Добавить("Кнопка1"); - МассивКнопокКлавиатуры.Добавить("Кнопка2"); - - // С клавиатурой, в чат - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопокКлавиатуры); - Опции.Вставить("under", Истина); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("keyboard", Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", , ПараметрыФункции, Текст); // SKIP - - // Простое, в канал - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - // END - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Канал", ПараметрыФункции, Текст); - - Текст = "Текст html %F0%9F%93%9E 10%"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("text" , Текст); - Опции.Вставить("parsemode", "HTML"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "HTML"); - - Текст = "%F0%9F%A4%BC"; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Emoji"); - - Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("text" , Текст); - Опции.Вставить("parsemode", "MarkdownV2"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Текст + Emoji"); - - Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура, Ложь); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("keyboard", Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Клавиатура структура"); - - Текст = "%F0%9F%94%A5 *Новый релиз\!* - | - |%F0%9F%8F%B0 *Репозиторий*: [240596448/devtools](https://github.com/240596448/devtools) - |%F0%9F%94%A2 *Версия*: \{0.6.0} - |%F0%9F%93%85 *Дата релиза*: 6 декабря 2025 г. - | - |>*AI сводка* - |>Devtools - это инструмент для автоматизации работы с конфигурациями\расширениями 1С:Предприятия и интеграции с Git. Приложение позволяет выгружать и загружать объекты, а также синхронизировать изменения между Git и хранилищем 1С. В релизе 0.6.0 реализованы оптимизация логики работы и добавлено логирование, что способствует стабильности и упрощает анализ работы приложения. - | - | - |_Не забывайте ставить %E2%AD%90 понравившимся проектам_"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("parsemode", "MarkdownV2"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Сложный"); - -КонецПроцедуры - -Процедура Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыФункции) - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка1"); - МассивКнопок.Добавить("Кнопка2"); - МассивКнопок.Добавить("Кнопка3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); - - // END - - Обработать(Результат, "Telegram", "СформироватьКлавиатуруПоМассивуКнопок"); - -КонецПроцедуры - -Процедура Telegram_ОтправитьКартинку(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Текст = ПараметрыФункции["String"]; - Картинка = ПараметрыФункции["Picture"]; - - КартинкаПуть = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, КартинкаПуть); - - КартинкаДД = Новый ДвоичныеДанные(КартинкаПуть); - - // В чат, по URL - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("text", Текст); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКартинку", , ПараметрыФункции, Текст); // SKIP - - // В канал, на диске - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("picture", КартинкаПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКартинку", "Путь", ПараметрыФункции, Текст); // SKIP - - // В канал, из двоичных данных - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("picture", КартинкаДД); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - // END - - Обработать(Результат, "Telegram", "ОтправитьКартинку", "Двоичные", ПараметрыФункции, Текст); - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка1"); - МассивКнопок.Добавить("Кнопка2"); - МассивКнопок.Добавить("Кнопка3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - Опции.Вставить("under" , Истина); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("keyboard", Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКартинку", "Клавиатура", ПараметрыФункции, Текст); - - Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("text" , Текст); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("keyboard", Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКартинку", "Клавиатура коллекция", ПараметрыФункции, Текст); - - Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("text" , Текст); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("parsemode", "MarkdownV2"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКартинку", "Текст + Emoji"); - - Текст = "%F0%9F%94%A5 *Новый релиз\!* - | - |%F0%9F%8F%B0 *Репозиторий*: [240596448/devtools](https://github.com/240596448/devtools) - |%F0%9F%94%A2 *Версия*: \{0.6.0} - |%F0%9F%93%85 *Дата релиза*: 6 декабря 2025 г. - | - |>*AI сводка* - |>Devtools - это инструмент для автоматизации работы с конфигурациями\расширениями 1С:Предприятия и интеграции с Git. Приложение позволяет выгружать и загружать объекты, а также синхронизировать изменения между Git и хранилищем 1С. В релизе 0.6.0 реализованы оптимизация логики работы и добавлено логирование, что способствует стабильности и упрощает анализ работы приложения. - | - | - |_Не забывайте ставить %E2%AD%90 понравившимся проектам_"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("parsemode", "MarkdownV2"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКартинку", "Сложный"); - - OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьВидео(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Текст = ПараметрыФункции["String"]; - Видео = ПараметрыФункции["Video"]; - - ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); - КопироватьФайл(Видео, ВидеоПуть); - - ВидеоДД = Новый ДвоичныеДанные(ВидеоПуть); - - // В чат, по URL - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("text", Текст); - Опции.Вставить("video", Видео); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); - - Обработать(Результат, "Telegram", "ОтправитьВидео", , ПараметрыФункции, Текст); // SKIP - - // В канал, на диске - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("video", ВидеоПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); - - Обработать(Результат, "Telegram", "ОтправитьВидео", "Путь", ПараметрыФункции, Текст); // SKIP - - // В канал, из двоичных данных - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("video", ВидеоДД); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(ВидеоПуть, "Не удалось удалить временный файл после теста!"); - Обработать(Результат, "Telegram", "ОтправитьВидео", "Двоичные", ПараметрыФункции, Текст); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьАудио(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Текст = ПараметрыФункции["String"]; - Аудио = ПараметрыФункции["Audio"]; - - АудиоПуть = ПолучитьИмяВременногоФайла("mp3"); - КопироватьФайл(Аудио, АудиоПуть); - - АудиоДД = Новый ДвоичныеДанные(АудиоПуть); - - // В чат, по URL - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("text", Текст); - Опции.Вставить("audio", Аудио); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); - - Обработать(Результат, "Telegram", "ОтправитьАудио", , ПараметрыФункции, Текст); // SKIP - - // В канал, на диске - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("audio", АудиоПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); - - Обработать(Результат, "Telegram", "ОтправитьАудио", "Путь", ПараметрыФункции, Текст); // SKIP - - // В канал, из двоичных данных - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("audio", АудиоДД); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(АудиоПуть, "Не удалось удалить временный файл после теста!"); - Обработать(Результат, "Telegram", "ОтправитьАудио", "Двоичные", ПараметрыФункции, Текст); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьДокумент(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Текст = ПараметрыФункции["String"]; - Документ = ПараметрыФункции["Document"]; - - ДокументПуть = ПолучитьИмяВременногоФайла("docx"); - КопироватьФайл(Документ, ДокументПуть); - - ДокументДД = Новый ДвоичныеДанные(ДокументПуть); - - // В чат, по URL - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("text", Текст); - Опции.Вставить("doc", Документ); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - Обработать(Результат, "Telegram", "ОтправитьДокумент", , ПараметрыФункции, Текст); // SKIP - - // В чат, по URL, с указанием имени файла - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("text", Текст); - Опции.Вставить("doc", Документ); - Опции.Вставить("filename", "customname.docx"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - Обработать(Результат, "Telegram", "ОтправитьДокумент", "С именем", ПараметрыФункции, Текст); // SKIP - - // В канал, на диске - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("doc", ДокументПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - Обработать(Результат, "Telegram", "ОтправитьДокумент", "Путь", ПараметрыФункции, Текст); // SKIP - - // В канал, из двоичных данных, с указанием имени файла - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("doc", ДокументДД); - Опции.Вставить("filename", "customname.docx"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(ДокументПуть, "Не удалось удалить временный файл после теста!"); - Обработать(Результат, "Telegram", "ОтправитьДокумент", "Двоичные", ПараметрыФункции, Текст); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьГифку(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Текст = ПараметрыФункции["String"]; - Гифка = ПараметрыФункции["GIF"]; - - ГифкаПуть = ПолучитьИмяВременногоФайла("gif"); - КопироватьФайл(Гифка, ГифкаПуть); - - ГифкаДД = Новый ДвоичныеДанные(ГифкаПуть); - - // В чат, по URL - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("text", Текст); - Опции.Вставить("gif", Гифка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьГифку", , ПараметрыФункции, Текст); // SKIP - - // В канал, на диске - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("gif", ГифкаПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); - - Обработать(Результат, "Telegram", "ОтправитьГифку", "Путь", ПараметрыФункции, Текст); // SKIP - - // В канал, из двоичных данных - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat", IDКанала); - Опции.Вставить("text", Текст); - Опции.Вставить("gif", ГифкаДД); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(ГифкаПуть, "Не удалось удалить временный файл после теста!"); - Обработать(Результат, "Telegram", "ОтправитьГифку", "Двоичные", ПараметрыФункции, Текст); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьМедиагруппу(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - Текст = ПараметрыФункции["String"]; - Картинка = ПараметрыФункции["Picture"]; - Видео = ПараметрыФункции["Video"]; - - КартинкаПуть = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, КартинкаПуть); - - ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); - КопироватьФайл(Видео, ВидеоПуть); - - ВидеоДД = Новый ДвоичныеДанные(ВидеоПуть); - - Медиагруппа = Новый Соответствие; - Медиагруппа.Вставить(КартинкаПуть, "photo"); - Медиагруппа.Вставить(ВидеоДД , "video"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("media", Медиагруппа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); - - // END - - Обработать(Результат, "Telegram", "ОтправитьМедиагруппу"); - - ДокументURL = ПараметрыФункции["Document"]; - ДокументПуть = ПолучитьИмяВременногоФайла("docx"); - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - - КопироватьФайл(ДокументURL, ДокументПуть); - - МедиаГруппа = Новый Соответствие; - Медиагруппа.Вставить(ДокументURL , "document"); - Медиагруппа.Вставить(ДокументПуть, "document"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("text" , Текст); - Опции.Вставить("media", Медиагруппа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); - - OPI_Инструменты.УдалитьФайлВПопытке(ВидеоПуть , "Не удалось удалить временный файл после теста!"); - OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); - OPI_Инструменты.УдалитьФайлВПопытке(ДокументПуть, "Не удалось удалить временный файл после теста!"); - - Обработать(Результат, "Telegram", "ОтправитьМедиагруппу", "Документы"); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьМестоположение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Ширина = ПараметрыФункции["Lat"]; - Долгота = ПараметрыФункции["Long"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("lat" , Ширина); - Опции.Вставить("long" , Долгота); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); - - Обработать(Результат, "Telegram", "ОтправитьМестоположение"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("lat" , Ширина); - Опции.Вставить("long" , Долгота); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); - - // END - - Обработать(Результат, "Telegram", "ОтправитьМестоположение", "Канал"); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_ОтправитьКонтакт(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Имя = ПараметрыФункции["Name"]; - Фамилия = ПараметрыФункции["Surname"]; - Телефон = ПараметрыФункции["Phone"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("name" , Имя); - Опции.Вставить("surname", Фамилия); - Опции.Вставить("phone" , Телефон); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); - - Обработать(Результат, "Telegram", "ОтправитьКонтакт", , Имя); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("name" , Имя); - Опции.Вставить("surname", Фамилия); - Опции.Вставить("phone" , Телефон); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); - - // END - - Обработать(Результат, "Telegram", "ОтправитьКонтакт", "Канал", Имя); - -КонецПроцедуры - -Процедура Telegram_ОтправитьОпрос(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Вопрос = "Какой ваш любимый цвет?"; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить("Красный"); - МассивОтветов.Добавить("Желтый"); - МассивОтветов.Добавить("Зеленый"); - МассивОтветов.Добавить("Синий"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("question" , Вопрос); - Опции.Вставить("options" , МассивОтветов); - Опции.Вставить("anonymous", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); - - Обработать(Результат, "Telegram", "ОтправитьОпрос", , Вопрос); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("question" , Вопрос); - Опции.Вставить("options" , МассивОтветов); - Опции.Вставить("anonymous", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); - - Обработать(Результат, "Telegram", "ОтправитьОпрос", "Канал", Вопрос); // SKIP - - // END - - СтрочныйМассив = "['Красный', 'Желтый','Зеленый' ,'Синий']"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("question" , Вопрос); - Опции.Вставить("options" , СтрочныйМассив); - Опции.Вставить("anonymous", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); - - Обработать(Результат, "Telegram", "ОтправитьОпрос", "Вопросы строкой", Вопрос); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура Telegram_СкачатьФайл(ПараметрыФункции) - - IDФайла = ПараметрыФункции["Telegram_FileID"]; - Токен = ПараметрыФункции["Telegram_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкачатьФайл", Опции); - - // END - - Обработать(Результат, "Telegram", "СкачатьФайл"); - -КонецПроцедуры - -Процедура Telegram_ПереслатьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("from" , IDКанала); - Опции.Вставить("to" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПереслатьСообщение", Опции); - - // END - - Обработать(Результат, "Telegram", "ПереслатьСообщение", , IDСообщения); - -КонецПроцедуры - -Процедура Telegram_Бан(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDПользователя = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Бан", Опции); - - // END - - Обработать(Результат, "Telegram", "Бан"); - -КонецПроцедуры - -Процедура Telegram_Разбан(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDПользователя = ПараметрыФункции["Telegram_ChatID"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Разбан", Опции); - - // END - - Обработать(Результат, "Telegram", "Разбан"); - -КонецПроцедуры - -Процедура Telegram_СоздатьСсылкуПриглашение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - Сутки = 86400; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - Заголовок = "Ссылка " + Строка(ТекущаяДата); - Истечение = ТекущаяДата + Сутки; - UnixИстечение = OPI_Инструменты.UNIXTime(Истечение); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("expire", Истечение); - Опции.Вставить("limit" , 200); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьСсылкуПриглашение", Опции); - - // END - - Обработать(Результат, "Telegram", "СоздатьСсылкуПриглашение", , Заголовок, UnixИстечение); - -КонецПроцедуры - -Процедура Telegram_ЗакрепитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрепитьСообщение", Опции); - - // END - - Обработать(Результат, "Telegram", "ЗакрепитьСообщение"); - -КонецПроцедуры - -Процедура Telegram_ОткрепитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDКанала); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрепитьСообщение", Опции); - - // END - - Обработать(Результат, "Telegram", "ОткрепитьСообщение"); - -КонецПроцедуры - -Процедура Telegram_ПолучитьЧислоУчастников(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDКанала = ПараметрыФункции["Telegram_ChannelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , IDКанала); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьЧислоУчастников", Опции); - - // END - - Обработать(Результат, "Telegram", "ПолучитьЧислоУчастников"); - -КонецПроцедуры - -Процедура Telegram_ПолучитьСписокИконокАватаров(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьСписокИконокАватаров", Опции); - - // END - - Обработать(Результат, "Telegram", "ПолучитьСписокИконокАватаров"); - -КонецПроцедуры - -Процедура Telegram_СоздатьТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Иконка = "5357419403325481346"; - Имя = "Тестовая тема " + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - Опции.Вставить("title", Имя); - Опции.Вставить("icon" , Иконка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "СоздатьТемуФорума", , ПараметрыФункции, Имя, Иконка); - - ЧатТема = Чат + "*" + ПараметрыФункции["Telegram_TopicID"]; - Текст = ПараметрыФункции["String"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("chat" , ЧатТема); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Telegram", "СоздатьТемуФорума", "Сообщение", ПараметрыФункции, Текст); - -КонецПроцедуры - -Процедура Telegram_ИзменитьТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Тема = ПараметрыФункции["Telegram_TopicID"]; - НовоеИмя = "Новый тестовый заголовок"; - НоваяИконка = "5310132165583840589"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - Опции.Вставить("topic", Тема); - Опции.Вставить("title", НовоеИмя); - Опции.Вставить("icon" , НоваяИконка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "ИзменитьТемуФорума"); - -КонецПроцедуры - -Процедура Telegram_ЗакрытьТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Тема = ПараметрыФункции["Telegram_TopicID"]; - - OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); // SKIP - - Результат = OPI_Telegram.ЗакрытьТемуФорума(Токен, Чат); // Закрывает главную тему - - Обработать(Результат, "Telegram", "ЗакрытьТемуФорума", "Главная"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - Опции.Вставить("topic", Тема); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "ЗакрытьТемуФорума"); - -КонецПроцедуры - -Процедура Telegram_ОткрытьТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Тема = ПараметрыФункции["Telegram_TopicID"]; - - Результат = OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); // Открывает главную тему - - Обработать(Результат, "Telegram", "ОткрытьТемуФорума", "Главная"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - Опции.Вставить("topic", Тема); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "ОткрытьТемуФорума"); - -КонецПроцедуры - -Процедура Telegram_УдалитьТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Тема = ПараметрыФункции["Telegram_TopicID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - Опции.Вставить("topic", Тема); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "УдалитьТемуФорума"); - -КонецПроцедуры - -Процедура Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - Тема = ПараметрыФункции["Telegram_TopicID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); - - Обработать(Результат, "Telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", "Главная"); // SKIP - - // END - - Обработать(Результат, "Telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы"); - -КонецПроцедуры - -Процедура Telegram_СкрытьГлавнуюТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкрытьГлавнуюТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "СкрытьГлавнуюТемуФорума"); - -КонецПроцедуры - -Процедура Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПоказатьГлавнуюТемуФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "ПоказатьГлавнуюТемуФорума"); - -КонецПроцедуры - -Процедура Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыФункции) - - Заголовок = "Новое имя главной темы " + Строка(Новый УникальныйИдентификатор); - Токен = ПараметрыФункции["Telegram_Token"]; - Чат = ПараметрыФункции["Telegram_ForumID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("forum", Чат); - Опции.Вставить("title", Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьИмяГлавнойТемыФорума", Опции); - - // END - - Обработать(Результат, "Telegram", "ИзменитьИмяГлавнойТемыФорума"); - -КонецПроцедуры - -Процедура Telegram_УдалитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChannelID"]; - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьСообщение", Опции); - - // END - - Обработать(Результат, "Telegram", "УдалитьСообщение"); - -КонецПроцедуры - -Процедура Telegram_ЗаменитьТекстСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChannelID"]; - IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); - - // END - - Обработать(Результат, "Telegram", "ЗаменитьТекстСообщения", , Текст); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message" , IDСообщения); - Опции.Вставить("text" , "Полужирный текст"); - Опции.Вставить("parsemode", "HTML"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); - - Обработать(Результат, "Telegram", "ЗаменитьТекстСообщения", "Разметка", "Полужирный текст"); - -КонецПроцедуры - -Процедура Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDСообщения = ПараметрыФункции["Telegram_MessageID"]; - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Новая кнопка 1"); - МассивКнопок.Добавить("Новая кнопка 2"); - МассивКнопок.Добавить("Новая кнопка 3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - Опции.Вставить("under" , Истина); - Опции.Вставить("column" , Ложь); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message" , IDСообщения); - Опции.Вставить("keyboard", Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьКлавиатуруСообщения", Опции); - - // END - - Обработать(Результат, "Telegram", "ЗаменитьКлавиатуруСообщения", , Клавиатура); - -КонецПроцедуры - -Процедура Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["Telegram_Token"]; - IDЧата = ПараметрыФункции["Telegram_ChatID"]; - IDСообщения = ПараметрыФункции["Telegram_PicMessageID"]; - - Описание = "Новое описание картинки"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("caption", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьОписаниеСообщения", Опции); - - // END - - Обработать(Результат, "Telegram", "ЗаменитьОписаниеСообщения", , Описание); - -КонецПроцедуры - -#КонецОбласти - -#Область VK - -Процедура VK_СоздатьСсылкуПолученияТокена(ПараметрыФункции) - - Приложение = ПараметрыФункции["VK_AppID"]; - Опции = Новый Структура; - Опции.Вставить("app", Приложение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСсылкуПолученияТокена", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьСсылкуПолученияТокена"); - -КонецПроцедуры - -Процедура VK_ПолучитьПараметрыАвторизации(ПараметрыФункции) - - IDГруппы = ПараметрыФункции["VK_GroupID"]; - IDПриложения = ПараметрыФункции["VK_AppID"]; - Токен = ПараметрыФункции["VK_Token"]; - - Опции = Новый Структура; - Опции.Вставить("group", IDГруппы); - Опции.Вставить("app" , IDПриложения); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПараметрыАвторизации", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьПараметрыАвторизации"); - -КонецПроцедуры - -Процедура VK_СоздатьПост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные - - ИВФ = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка2, ИВФ); - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка); - МассивКартинок.Добавить(ИВФ); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", МассивКартинок); - Опции.Вставить("ad" , Истина); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); - - Обработать(Результат, "VK", "СоздатьПост", , Параметры); // SKIP - - ИДПоста = Результат["response"]["post_id"]; // SKIP - OPI_VK.УдалитьПост(ИДПоста, Параметры); // SKIP - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", Картинка); - Опции.Вставить("ad" , Ложь); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьПост", "Картинка", Параметры); - - ИДПоста = Результат["response"]["post_id"]; - OPI_VK.УдалитьПост(ИДПоста, Параметры); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", ИВФ); - Опции.Вставить("ad" , Истина); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); - - Обработать(Результат, "VK", "СоздатьПост", "Путь", ПараметрыФункции); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура VK_УдалитьПост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДПоста = ПараметрыФункции["VK_PostID"]; - - Опции = Новый Структура; - Опции.Вставить("post", ИДПоста); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПост", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьПост"); - -КонецПроцедуры - -Процедура VK_СоздатьСоставнойПост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Текст = "Пост из автотеста"; - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Видео = ПараметрыФункции["Video"]; // URL, Путь или Двоичные данные - - ИВФ = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, ИВФ); - - ЗагрузкаКартинки = OPI_VK.ЗагрузитьФотоНаСервер(ИВФ, Параметры)["response"][0]; - Опции = Новый Структура; - Опции.Вставить("file" , Видео); - Опции.Вставить("title", "Новое видео"); - Опции.Вставить("auth" , Параметры); - - ЗагрузкаВидео = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); - - ВладелецКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["owner_id"]); - ВладелецВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["owner_id"]); - - IDКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["id"]); - IDВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["video_id"]); - - МассивВложений = Новый Массив; - МассивВложений.Добавить("photo" + ВладелецКартинки + "_" + IDКартинки); - МассивВложений.Добавить("video" + ВладелецВидео + "_" + IDВидео); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("objects", МассивВложений); - Опции.Вставить("ad" , Ложь); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСоставнойПост", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьСоставнойПост"); - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура VK_СоздатьОпрос(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Вопрос = "Какой ваш любимый цвет?"; - - МассивВариантов = Новый Массив; - МассивВариантов.Добавить("Красный"); - МассивВариантов.Добавить("Желтый"); - МассивВариантов.Добавить("Зеленый"); - - Опции = Новый Структура; - Опции.Вставить("question", Вопрос); - Опции.Вставить("options" , МассивВариантов); - Опции.Вставить("text" , "Текст поста"); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); - - Обработать(Результат, "VK", "СоздатьОпрос", "Текст"); // SKIP - - // С картинкой - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("question", Вопрос); - Опции.Вставить("options" , МассивВариантов); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьОпрос"); - - ИДПоста = Результат["response"]["post_id"]; - OPI_VK.УдалитьПост(ИДПоста, Параметры); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура VK_СоздатьАльбом(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Имя = "Альбом из автотеста"; - Описание = "Новый альбом из автотеста"; - - Опции = Новый Структура; - Опции.Вставить("title" , Имя); - Опции.Вставить("description", Описание); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьАльбом", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьАльбом", , ПараметрыФункции, Описание); - -КонецПроцедуры - -Процедура VK_СохранитьКартинкуВАльбом(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ОписаниеКартинки = "Картинка автотест"; - ИДАльбома = ПараметрыФункции["VK_AlbumID"]; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("album" , ИДАльбома); - Опции.Вставить("picture" , Картинка); - Опции.Вставить("description", ОписаниеКартинки); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СохранитьКартинкуВАльбом", Опции); - - // END - - Обработать(Результат, "VK", "СохранитьКартинкуВАльбом", , ПараметрыФункции, ОписаниеКартинки, ИДАльбома); - -КонецПроцедуры - -Процедура VK_УдалитьКартинку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДКартинки = ПараметрыФункции["VK_PictureID"]; - - Опции = Новый Структура; - Опции.Вставить("pictureid", ИДКартинки); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьКартинку", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьКартинку"); - -КонецПроцедуры - -Процедура VK_УдалитьАльбом(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - ИДАльбома = ПараметрыФункции["VK_AlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("album", ИДАльбома); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьАльбом", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьАльбом"); - -КонецПроцедуры - -Процедура VK_СоздатьИсторию(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные - ИВФ = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, ИВФ); - Картинка = Новый ДвоичныеДанные(ИВФ); - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); - - Обработать(Результат, "VK", "СоздатьИсторию"); // SKIP - - // END - - Опции = Новый Структура; - Опции.Вставить("picture", ИВФ); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); - - Обработать(Результат, "VK", "СоздатьИсторию", "Путь"); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура VK_СделатьРепост(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - IDПоста = 2571; - IDСтены = -218704372; - - Опции = Новый Структура; - Опции.Вставить("post", IDПоста); - Опции.Вставить("from", IDСтены); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СделатьРепост", Опции); - - // END - - Обработать(Результат, "VK", "СделатьРепост", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VK_НаписатьКомментарий(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Текст = "Новый комментарий"; - IDПоста = ПараметрыФункции["VK_PostID"]; - IDСтены = Параметры["owner_id"]; - - Опции = Новый Структура; - Опции.Вставить("post", IDПоста); - Опции.Вставить("wall", IDСтены); - Опции.Вставить("text", Текст); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьКомментарий", Опции); - - // END - - Обработать(Результат, "VK", "НаписатьКомментарий"); - -КонецПроцедуры - -Процедура VK_ПолучитьСтатистику(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - ДатаНачала = НачалоДня(ТекущаяДата); - ДатаОкончания = КонецДня(ДатаНачала); - - Опции = Новый Структура; - Опции.Вставить("datefrom", ДатаНачала); - Опции.Вставить("dateto" , ДатаОкончания); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистику", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСтатистику"); - -КонецПроцедуры - -Процедура VK_ПолучитьСтатистикуПостов(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - МассивПостов = Новый Массив; - МассивПостов.Добавить(214); - МассивПостов.Добавить(215); - - Опции = Новый Структура; - Опции.Вставить("posts", МассивПостов); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистикуПостов", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСтатистикуПостов"); - -КонецПроцедуры - -Процедура VK_СоздатьРекламнуюКампанию(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; - Наименование = "Новая кампания"; - - Опции = Новый Структура; - Опции.Вставить("cabinet", IDКабинета); - Опции.Вставить("title" , Наименование); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламнуюКампанию", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьРекламнуюКампанию", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VK_СоздатьРекламноеОбъявление(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - НомерКампании = ПараметрыФункции["VK_AdsCampaignID"]; - ДневнойЛимит = 150; - НомерКатегории = 126; - IDПоста = ПараметрыФункции["VK_PostID"]; - IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; - - Опции = Новый Структура; - Опции.Вставить("campaign", НомерКампании); - Опции.Вставить("limit" , ДневнойЛимит); - Опции.Вставить("category", НомерКатегории); - Опции.Вставить("post" , IDПоста); - Опции.Вставить("cabinet" , IDКабинета); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламноеОбъявление", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьРекламноеОбъявление", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VK_ПриостановитьРекламноеОбъявление(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; - IDОбъявления = ПараметрыФункции["VK_AdsPostID"]; - - Опции = Новый Структура; - Опции.Вставить("cabinet", IDКабинета); - Опции.Вставить("adv" , IDОбъявления); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПриостановитьРекламноеОбъявление", Опции); - - // END - - Обработать(Результат, "VK", "ПриостановитьРекламноеОбъявление"); - -КонецПроцедуры - -Процедура VK_СформироватьКлавиатуру(ПараметрыФункции) - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Button 1"); - МассивКнопок.Добавить("Button 2"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); - - // END - - Обработать(Результат, "VK", "СформироватьКлавиатуру"); - -КонецПроцедуры - -Процедура VK_НаписатьСообщение(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Текст = "Сообщение из автотеста"; - IDПользователя = ПараметрыФункции["VK_UserID"]; - Communitytoken = ПараметрыФункции["VK_CommunityToken"]; - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Button 1"); - МассивКнопок.Добавить("Button 2"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ct" , Communitytoken); - Опции.Вставить("keyboard", Клавиатура); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьСообщение", Опции); - - // END - - Обработать(Результат, "VK", "НаписатьСообщение"); - -КонецПроцедуры - -Процедура VK_ПолучитьСписокКатегорийТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокКатегорийТоваров", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСписокКатегорийТоваров"); - -КонецПроцедуры - -Процедура VK_СоздатьПодборкуТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Тестовая подборка"; - Картинка = ПараметрыФункции["Picture"]; - Основная = Истина; - Скрытая = Ложь; - - Опции = Новый Структура; - Опции.Вставить("title" , Название); - Опции.Вставить("picture", Картинка); - Опции.Вставить("main" , Основная); - Опции.Вставить("hidden" , Скрытая); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПодборкуТоваров", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьПодборкуТоваров", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VK_ИзменитьПодборкуТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Измененная подборка"; - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьПодборкуТоваров", Опции); - - // END - - Обработать(Результат, "VK", "ИзменитьПодборкуТоваров"); - -КонецПроцедуры - -Процедура VK_ПолучитьПодборкиПоИД(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("sels", Подборка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПодборкиПоИД", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьПодборкиПоИД"); - -КонецПроцедуры - -Процедура VK_ДобавитьТовар(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - ОписаниеТовара = Новый Соответствие; - ОписаниеТовара.Вставить("Имя" , "Тестовый товар"); - ОписаниеТовара.Вставить("Описание" , "Описание товара"); - ОписаниеТовара.Вставить("Категория" , "20173"); - ОписаниеТовара.Вставить("Цена" , 1); - ОписаниеТовара.Вставить("СтараяЦена" , 15); - ОписаниеТовара.Вставить("ОсновноеФото" , Картинка1); - ОписаниеТовара.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); - ОписаниеТовара.Вставить("ДополнительныеФото", МассивКартинок); - ОписаниеТовара.Вставить("ГлавныйВГруппе" , Истина); - ОписаниеТовара.Вставить("Ширина" , 20); - ОписаниеТовара.Вставить("Высота" , 30); - ОписаниеТовара.Вставить("Глубина" , 40); - ОписаниеТовара.Вставить("Вес" , 100); - ОписаниеТовара.Вставить("SKU" , "12345"); - ОписаниеТовара.Вставить("ДоступныйОстаток" , "10"); - - Опции = Новый Структура; - Опции.Вставить("product", ОписаниеТовара); - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); - - // END - - Обработать(Результат, "VK", "ДобавитьТовар", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VK_ИзменитьТовар(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - - ОписаниеТовара = Новый Соответствие; - ОписаниеТовара.Вставить("Имя", "Тестовый товар измененный"); - - Опции = Новый Структура; - Опции.Вставить("item" , Товар); - Опции.Вставить("product", ОписаниеТовара); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьТовар", Опции); - - // END - - Обработать(Результат, "VK", "ИзменитьТовар"); - -КонецПроцедуры - -Процедура VK_ДобавитьТоварВПодборку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("items", Товар); - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТоварВПодборку", Опции); - - // END - - Обработать(Результат, "VK", "ДобавитьТоварВПодборку"); - -КонецПроцедуры - -Процедура VK_УдалитьТоварИзПодборки(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("item", Товар); - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТоварИзПодборки", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьТоварИзПодборки"); - -КонецПроцедуры - -Процедура VK_УдалитьТовар(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар = ПараметрыФункции["VK_MarketItemID"]; - - Опции = Новый Структура; - Опции.Вставить("item", Товар); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТовар", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьТовар"); - -КонецПроцедуры - -Процедура VK_УдалитьПодборку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Подборка = ПараметрыФункции["VK_MarketAlbumID"]; - - Опции = Новый Структура; - Опции.Вставить("sel" , Подборка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПодборку", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьПодборку"); - -КонецПроцедуры - -Процедура VK_СоздатьСвойствоТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Цвет"; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСвойствоТовара", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьСвойствоТовара", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VK_ИзменитьСвойствоТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Название = "Цвет (изм.)"; - Свойство = ПараметрыФункции["VK_PropID"]; - - Опции = Новый Структура; - Опции.Вставить("title", Название); - Опции.Вставить("prop" , Свойство); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьСвойствоТовара", Опции); - - // END - - Обработать(Результат, "VK", "ИзменитьСвойствоТовара"); - -КонецПроцедуры - -Процедура VK_ДобавитьВариантСвойстваТовара(ПараметрыФункции) - - Счетчик = 1; // SKIP - Параметры = ПолучитьПараметрыВК(); - - Свойство = ПараметрыФункции["VK_PropID"]; - МассивВариантов = Новый Массив; - МассивВариантов.Добавить("Желтый"); - МассивВариантов.Добавить("Синий"); - МассивВариантов.Добавить("Красный"); - - Для Каждого Значение Из МассивВариантов Цикл - - Результат = OPI_VK.ДобавитьВариантСвойстваТовара(Значение, Свойство, Параметры); - - Обработать(Результат, "VK", "ДобавитьВариантСвойстваТовара", , ПараметрыФункции, Счетчик); // SKIP - - Счетчик = Счетчик + 1; // SKIP - - КонецЦикла; - - // END - -КонецПроцедуры - -Процедура VK_ИзменитьВариантСвойстваТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Свойство = ПараметрыФункции["VK_PropID"]; - Вариант = ПараметрыФункции["VK_PropVarID1"]; - Значение = "Новое имя варианта"; - - Опции = Новый Структура; - Опции.Вставить("value" , Значение); - Опции.Вставить("prop" , Свойство); - Опции.Вставить("option", Вариант); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьВариантСвойстваТовара", Опции); - - // END - - Обработать(Результат, "VK", "ИзменитьВариантСвойстваТовара"); - -КонецПроцедуры - -Процедура VK_СоздатьТоварСоСвойством(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Картинка1 = ПараметрыФункции["Picture"]; - Картинка2 = ПараметрыФункции["Picture2"]; - ВариантСвойства1 = ПараметрыФункции["VK_PropVarID1"]; - ВариантСвойства2 = ПараметрыФункции["VK_PropVarID2"]; - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - Товар = Новый Соответствие; - Товар.Вставить("Имя" , "Тестовый товар (со свойством)"); - Товар.Вставить("Описание" , "Описание товара"); - Товар.Вставить("Категория" , "20173"); - Товар.Вставить("Цена" , 1); - Товар.Вставить("СтараяЦена" , 15); - Товар.Вставить("ОсновноеФото" , Картинка1); - Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); - Товар.Вставить("ДополнительныеФото", МассивКартинок); - Товар.Вставить("ГлавныйВГруппе" , Истина); - Товар.Вставить("Ширина" , 20); - Товар.Вставить("Высота" , 30); - Товар.Вставить("Глубина" , 40); - Товар.Вставить("Вес" , 100); - Товар.Вставить("SKU" , 12345); - Товар.Вставить("ДоступныйОстаток" , "10"); - Товар.Вставить("ЗначенияСвойств" , ВариантСвойства1); - - Опции = Новый Структура; - Опции.Вставить("product", Товар); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); - - // END - - Обработать(Результат, "VK", "СоздатьТоварСоСвойством", "Первый", ПараметрыФункции, 2); - - Товар.Вставить("Имя" , "Тестовый товар (другой)"); - Товар.Вставить("ЗначенияСвойств", ВариантСвойства2); - - Опции = Новый Структура; - Опции.Вставить("product", Товар); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); - - Обработать(Результат, "VK", "СоздатьТоварСоСвойством", "Второй", ПараметрыФункции, 3); - - OPI_Инструменты.Пауза(5); - -КонецПроцедуры - -Процедура VK_ПолучитьТоварыПоИД(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар1 = ПараметрыФункции["VK_MarketItemID2"]; - Товар2 = ПараметрыФункции["VK_MarketItemID3"]; - - МассивТоваров = Новый Массив; - МассивТоваров.Добавить(Товар1); - МассивТоваров.Добавить(Товар2); - - Опции = Новый Структура; - Опции.Вставить("items", МассивТоваров); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьТоварыПоИД", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьТоварыПоИД"); - -КонецПроцедуры - -Процедура VK_СгруппироватьТовары(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Товар1 = ПараметрыФункции["VK_MarketItemID2"]; - Товар2 = ПараметрыФункции["VK_MarketItemID3"]; - - МассивТоваров = Новый Массив; - МассивТоваров.Добавить(Товар1); - МассивТоваров.Добавить(Товар2); - - Опции = Новый Структура; - Опции.Вставить("items", МассивТоваров); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СгруппироватьТовары", Опции); - - // END - - Обработать(Результат, "VK", "СгруппироватьТовары"); - -КонецПроцедуры - -Процедура VK_УдалитьВариантСвойстваТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Вариант = ПараметрыФункции["VK_PropVarID1"]; - - Опции = Новый Структура; - Опции.Вставить("option", Вариант); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьВариантСвойстваТовара", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьВариантСвойстваТовара"); - -КонецПроцедуры - -Процедура VK_УдалитьСвойствоТовара(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Свойство = ПараметрыФункции["VK_PropID"]; - - Опции = Новый Структура; - Опции.Вставить("prop", Свойство); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьСвойствоТовара", Опции); - - // END - - Обработать(Результат, "VK", "УдалитьСвойствоТовара"); - -КонецПроцедуры - -Процедура VK_ПолучитьСписокТоваров(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокТоваров", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСписокТоваров"); - -КонецПроцедуры - -Процедура VK_ПолучитьСписокПодборок(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокПодборок", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСписокПодборок"); - -КонецПроцедуры - -Процедура VK_ПолучитьСписокСвойств(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокСвойств", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСписокСвойств"); - -КонецПроцедуры - -Процедура VK_ПолучитьСписокЗаказов(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокЗаказов", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСписокЗаказов"); - -КонецПроцедуры - -Процедура VK_ЗагрузитьВидеоНаСервер(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Видео = ПараметрыФункции["Video"]; // URL, Двоичные данные или Путь к файлу - Наименование = "Новое видео"; - Описание = "Описание видео"; - - Опции = Новый Структура; - Опции.Вставить("file" , Видео); - Опции.Вставить("title" , Наименование); - Опции.Вставить("description", Описание); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); - - // END - - Обработать(Результат, "VK", "ЗагрузитьВидеоНаСервер"); - -КонецПроцедуры - -Процедура VK_ЗагрузитьФотоНаСервер(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - Вид = "Пост"; - - Опции = Новый Структура; - Опции.Вставить("file", Картинка); - Опции.Вставить("auth", Параметры); - Опции.Вставить("type", Вид); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьФотоНаСервер", Опции); - - // END - - Обработать(Результат, "VK", "ЗагрузитьФотоНаСервер"); - -КонецПроцедуры - -Процедура VK_СократитьСсылку(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("url" , "https://github.com/Bayselonarrend/OpenIntegrations"); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СократитьСсылку", Опции); - -КонецПроцедуры - -Процедура VK_ПолучитьСписокРекламныхКатегорий(ПараметрыФункции) - - Параметры = ПолучитьПараметрыВК(); - - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокРекламныхКатегорий", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьСписокРекламныхКатегорий"); - -КонецПроцедуры - -Процедура VK_ПолучитьОписаниеТовара(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьОписаниеТовара", Опции); - - // END - - Обработать(Результат, "VK", "ПолучитьОписаниеТовара"); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexDisk - -Процедура YandexDisk_ПолучитьКодПодтверждения(ПараметрыФункции) - - ClientID = ПараметрыФункции["YandexDisk_ClientID"]; - - Опции = Новый Структура; - Опции.Вставить("id", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьКодПодтверждения", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьКодПодтверждения"); - -КонецПроцедуры - -Процедура YandexDisk_ПреобразоватьКодВТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["YandexDisk_ClientID"]; - ClientSecret = ПараметрыФункции["YandexDisk_ClientSecret"]; - КодУстройства = "12345678"; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret", ClientSecret); - Опции.Вставить("device", КодУстройства); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПреобразоватьКодВТокен", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПреобразоватьКодВТокен", , ПараметрыФункции); - -КонецПроцедуры - -Процедура YandexDisk_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["YandexDisk_ClientID"]; - ClientSecret = ПараметрыФункции["YandexDisk_ClientSecret"]; - RefreshToken = ПараметрыФункции["YandexDisk_RefreshToken"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret" , ClientSecret); - Опции.Вставить("refresh", RefreshToken); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ОбновитьТокен", , ПараметрыФункции); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьИнформациюОДиске(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьИнформациюОДиске", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьИнформациюОДиске"); - -КонецПроцедуры - -Процедура YandexDisk_СоздатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьПапку", Опции); - - // END - - Обработать(Результат, "YandexDisk", "СоздатьПапку", , Токен, Путь); - - OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); - -КонецПроцедуры - -Процедура YandexDisk_ЗагрузитьФайлПоURL(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Адрес = ПараметрыФункции["Picture"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("url" , Адрес); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлПоURL", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ЗагрузитьФайлПоURL", , ПараметрыФункции, Путь); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьОбъект", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьОбъект", , Путь); - -КонецПроцедуры - -Процедура YandexDisk_УдалитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("can" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); - - // END - - Обработать(Результат, "YandexDisk", "УдалитьОбъект"); - -КонецПроцедуры - -Процедура YandexDisk_ЗагрузитьФайл(ПараметрыФункции) - - Путь1 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - Путь2 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Картинка = ПараметрыФункции["Picture"]; // URL - - ИВФ = ПолучитьИмяВременногоФайла("png"); // Путь - КопироватьФайл(Картинка, ИВФ); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь1); - Опции.Вставить("file" , Картинка); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); - - Обработать(Результат, "YandexDisk", "ЗагрузитьФайл", "URL"); // SKIP - - OPI_YandexDisk.УдалитьОбъект(Токен, Путь1, Ложь); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь2); - Опции.Вставить("file" , ИВФ); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - - Обработать(Результат, "YandexDisk", "ЗагрузитьФайл"); - - OPI_YandexDisk.УдалитьОбъект(Токен, Путь2, Ложь); // SKIP - -КонецПроцедуры - -Процедура YandexDisk_СоздатьКопиюОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , Оригинал); - Опции.Вставить("to" , Путь); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьКопиюОбъекта", Опции); - - // END - - Обработать(Результат, "YandexDisk", "СоздатьКопиюОбъекта", , ПараметрыФункции, Путь); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_PathForLink"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуДляСкачивания", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьСсылкуДляСкачивания"); - -КонецПроцедуры - -Процедура YandexDisk_СкачатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_PathForLink"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); - - // END - - Обработать(Результат, "YandexDisk", "СкачатьФайл"); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Количество = 2; - СмещениеОтНачала = 1; - ОтборПоТипу = "image"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("amount", Количество); - Опции.Вставить("offset", СмещениеОтНачала); - Опции.Вставить("type" , ОтборПоТипу); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокФайлов", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьСписокФайлов", , Количество, СмещениеОтНачала); - -КонецПроцедуры - -Процедура YandexDisk_ПереместитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("from" , Оригинал); - Опции.Вставить("to" , Путь); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПереместитьОбъект", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПереместитьОбъект", , ПараметрыФункции, Путь); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Количество = 2; - СмещениеОтНачала = 1; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("amount", Количество); - Опции.Вставить("offset", СмещениеОтНачала); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокОпубликованныхОбъектов", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьСписокОпубликованныхОбъектов", , Количество, СмещениеОтНачала); - -КонецПроцедуры - -Процедура YandexDisk_ОпубликоватьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОпубликоватьОбъект", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ОпубликоватьОбъект", , ПараметрыФункции, Путь); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - URL = ПараметрыФункции["YandexDisk_PublicURL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта"); - -КонецПроцедуры - -Процедура YandexDisk_ПолучитьПубличныйОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - URL = ПараметрыФункции["YandexDisk_PublicURL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьПубличныйОбъект", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ПолучитьПубличныйОбъект"); - -КонецПроцедуры - -Процедура YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - URL = ПараметрыФункции["YandexDisk_PublicURL"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СохранитьПубличныйОбъектНаДиск", Опции); - - // END - - Обработать(Результат, "YandexDisk", "СохранитьПубличныйОбъектНаДиск"); - -КонецПроцедуры - -Процедура YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОтменитьПубликациюОбъекта", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ОтменитьПубликациюОбъекта", , Путь); - -КонецПроцедуры - -Процедура YandexDisk_ЗагрузитьФайлЧастями(ПараметрыФункции) - - Путь = "/song.mp3"; - - Токен = ПараметрыФункции["YandexDisk_Token"]; - Файл = ПараметрыФункции["Audio"]; // URL, Двоичные или Путь к файлу - - РазмерЧасти = 1048576; // 1 MB - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("file" , Файл); - Опции.Вставить("psize" , РазмерЧасти); - Опции.Вставить("rewrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлЧастями", Опции); - - // END - - Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", , Файл); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); - - Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", "Скачивание", Файл); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("can" , Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); - - Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", "Удаление"); - -КонецПроцедуры - -#КонецОбласти - -#Область Viber - -Процедура Viber_УстановитьWebhook(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - URL = "http://api.athenaeum.digital/hs/viber"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "УстановитьWebhook", Опции); - - // END - - Обработать(Результат, "Viber", "УстановитьWebhook"); - -КонецПроцедуры - -Процедура Viber_ПолучитьИнформациюОКанале(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьИнформациюОКанале", Опции); - - // END - - Обработать(Результат, "Viber", "ПолучитьИнформациюОКанале"); - -КонецПроцедуры - -Процедура Viber_ПолучитьДанныеПользователя(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьДанныеПользователя", Опции); - - // END - - Обработать(Результат, "Viber", "ПолучитьДанныеПользователя"); - -КонецПроцедуры - -Процедура Viber_ПолучитьОнлайнПользователей(ПараметрыФункции) - - Токен = ПараметрыФункции["Viber_ChannelToken"]; - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("users", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьОнлайнПользователей", Опции); - - // END - - Обработать(Результат, "Viber", "ПолучитьОнлайнПользователей"); - -КонецПроцедуры - -Процедура Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыФункции) - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка 1"); - МассивКнопок.Добавить("Кнопка 2"); - МассивКнопок.Добавить("Кнопка 3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); - - // END - - Обработать(Результат, "Viber", "СформироватьКлавиатуруИзМассиваКнопок"); - -КонецПроцедуры - -Процедура Viber_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - Текст = "Тестовое сообщение"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - МассивКнопок = Новый Массив; - МассивКнопок.Добавить("Кнопка 1"); - МассивКнопок.Добавить("Кнопка 2"); - МассивКнопок.Добавить("Кнопка 3"); - - Опции = Новый Структура; - Опции.Вставить("buttons", МассивКнопок); - - Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("keyboard" , Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "Viber", "ОтправитьТекстовоеСообщение"); // SKIP - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("keyboard" , Клавиатура); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); - - // END - - Обработать(Результат, "Viber", "ОтправитьТекстовоеСообщение", "Канал"); - -КонецПроцедуры - -Процедура Viber_ОтправитьКартинку(ПараметрыФункции) - - Описание = "Тестовое сообщение"; - URL = ПараметрыФункции["Picture"]; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("picture" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel" , ОтправкаВКанал); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); - - Обработать(Результат, "Viber", "ОтправитьКартинку"); // SKIP - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("picture" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel" , ОтправкаВКанал); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); - - // END - - Обработать(Результат, "Viber", "ОтправитьКартинку", "Канал"); - -КонецПроцедуры - -Процедура Viber_ОтправитьФайл(ПараметрыФункции) - - Расширение = "docx"; - URL = ПараметрыФункции["Document"]; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("ext" , Расширение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); - - Обработать(Результат, "Viber", "ОтправитьФайл"); // SKIP - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - Опции.Вставить("ext" , Расширение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); - - // END - - Обработать(Результат, "Viber", "ОтправитьФайл", "Канал"); - -КонецПроцедуры - -Процедура Viber_ОтправитьКонтакт(ПараметрыФункции) - - Имя = "Петр Петров"; - Телефон = "+123456789"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("name" , Имя); - Опции.Вставить("phone" , Телефон); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); - - Обработать(Результат, "Viber", "ОтправитьКонтакт"); // SKIP - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("name" , Имя); - Опции.Вставить("phone" , Телефон); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); - - // END - - Обработать(Результат, "Viber", "ОтправитьКонтакт", "Канал"); - -КонецПроцедуры - -Процедура Viber_ОтправитьЛокацию(ПараметрыФункции) - - Широта = "48.87373649724122"; - Долгота = "2.2954639195323967"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("lat" , Широта); - Опции.Вставить("long" , Долгота); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); - - Обработать(Результат, "Viber", "ОтправитьЛокацию"); // SKIP - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("lat" , Широта); - Опции.Вставить("long" , Долгота); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); - - // END - - Обработать(Результат, "Viber", "ОтправитьЛокацию", "Канал"); - -КонецПроцедуры - -Процедура Viber_ОтправитьСсылку(ПараметрыФункции) - - URL = "https://github.com/Bayselonarrend/OpenIntegrations"; - - IDПользователя = ПараметрыФункции["Viber_UserID"]; - Токен = ПараметрыФункции["Viber_Token"]; - ОтправкаВКанал = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); - - Обработать(Результат, "Viber", "ОтправитьСсылку"); // SKIP - - IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; - Токен = ПараметрыФункции["Viber_ChannelToken"]; - ОтправкаВКанал = Истина; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("ischannel", ОтправкаВКанал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); - - // END - - Обработать(Результат, "Viber", "ОтправитьСсылку", "Канал"); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleWorkspace - -Процедура GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - Опции = Новый Структура; - Опции.Вставить("id", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "СформироватьСсылкуПолученияКода", Опции); - - // END - - Обработать(Результат, "GoogleWorkspace", "СформироватьСсылкуПолученияКода"); - -КонецПроцедуры - -Процедура GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - Code = ПараметрыФункции["Google_Code"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенПоКоду", Опции); - - // END - - Обработать(Результат, "GoogleWorkspace", "ПолучитьТокенПоКоду"); - -КонецПроцедуры - -Процедура GoogleWorkspace_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - RefreshToken = ПараметрыФункции["Google_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret" , ClientSecret); - Опции.Вставить("refresh", RefreshToken); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "GoogleWorkspace", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура GoogleWorkspace_ПолучитьТокенServiceАккаунта(ПараметрыФункции) - - Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция - - Токен = ПараметрыФункции["Access_Token"]; // SKIP - Данные = OPI_ЗапросыHTTP // SKIP - .НовыйЗапрос() // SKIP - .Инициализировать(Данные) // SKIP - .ДобавитьBearerАвторизацию(Токен) // SKIP - .ОбработатьЗапрос("GET") // SKIP - .ВернутьОтветКакДвоичныеДанные(); // SKIP - - ОбластиДействия = Новый Массив; - ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); - - Опции = Новый Структура; - Опции.Вставить("auth" , Данные); - Опции.Вставить("scope", ОбластиДействия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенServiceАккаунта", Опции); - - // END - - Обработать(Результат, "GoogleWorkspace", "ПолучитьТокенServiceАккаунта"); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleCalendar - -Процедура GoogleCalendar_СформироватьСсылкуПолученияКода(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - Опции = Новый Структура; - Опции.Вставить("id", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СформироватьСсылкуПолученияКода", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "СформироватьСсылкуПолученияКода"); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьТокенПоКоду(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - Code = ПараметрыФункции["Google_Code"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьТокенПоКоду", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ПолучитьТокенПоКоду"); - -КонецПроцедуры - -Процедура GoogleCalendar_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - RefreshToken = ПараметрыФункции["Google_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret" , ClientSecret); - Опции.Вставить("refresh", RefreshToken); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьТокенServiceАккаунта(ПараметрыФункции) - - Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция - - Токен = ПараметрыФункции["Access_Token"]; // SKIP - Данные = OPI_ЗапросыHTTP // SKIP - .НовыйЗапрос() // SKIP - .Инициализировать(Данные) // SKIP - .ДобавитьBearerАвторизацию(Токен) // SKIP - .ОбработатьЗапрос("GET") // SKIP - .ВернутьОтветКакДвоичныеДанные(); // SKIP - - ОбластиДействия = Новый Массив; - ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); - - Опции = Новый Структура; - Опции.Вставить("auth" , Данные); - Опции.Вставить("scope", ОбластиДействия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьТокенServiceАккаунта", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ПолучитьТокенServiceАккаунта"); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокКалендарей", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ПолучитьСписокКалендарей"); - -КонецПроцедуры - -Процедура GoogleCalendar_СоздатьКалендарь(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Наименование = "Тестовый календарь"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("title", Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьКалендарь", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "СоздатьКалендарь", , ПараметрыФункции, Наименование); - -КонецПроцедуры - -Процедура GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Наименование = "Новое наименование"; - Описание = "Новое описание"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - Опции.Вставить("title" , Наименование); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьМетаданныеКалендаря", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ИзменитьМетаданныеКалендаря", , Наименование, Описание); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьМетаданныеКалендаря", Опции); - - // END - - Наименование = "Новое наименование"; - Описание = "Новое описание"; - - Обработать(Результат, "GoogleCalendar", "ПолучитьМетаданныеКалендаря", , Наименование, Описание); - -КонецПроцедуры - -Процедура GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ДобавитьКалендарьВСписок", Опции); - - // END - - Наименование = "Новое наименование"; - Описание = "Новое описание"; - - Обработать(Результат, "GoogleCalendar", "ДобавитьКалендарьВСписок", , Наименование, Описание); - -КонецПроцедуры - -Процедура GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - ОсновнойЦвет = "#000000"; - ДополнительныйЦвет = "#ffd800"; - Скрытый = Ложь; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar" , Календарь); - Опции.Вставить("primary" , ОсновнойЦвет); - Опции.Вставить("secondary", ДополнительныйЦвет); - Опции.Вставить("hidden" , Скрытый); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьКалендарьСписка", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ИзменитьКалендарьСписка", , ОсновнойЦвет, ДополнительныйЦвет); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьКалендарьСписка", Опции); - - // END - - ОсновнойЦвет = "#000000"; - ДополнительныйЦвет = "#ffd800"; - - Обработать(Результат, "GoogleCalendar", "ПолучитьКалендарьСписка", , ОсновнойЦвет, ДополнительныйЦвет); - -КонецПроцедуры - -Процедура GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОчиститьОсновнойКалендарь", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ОчиститьОсновнойКалендарь"); - -КонецПроцедуры - -Процедура GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарьИзСписка", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "УдалитьКалендарьИзСписка"); - -КонецПроцедуры - -Процедура GoogleCalendar_УдалитьКалендарь(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарь", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "УдалитьКалендарь"); - -КонецПроцедуры - -Процедура GoogleCalendar_СоздатьСобытие(ПараметрыФункции) - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Наименование = "Новое событие"; - Описание = "Описание тестового события"; - Час = 3600; - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу - Вложения = Новый Соответствие; - - Вложения.Вставить("Картинка1", Картинка1); - Вложения.Вставить("Картинка2", Картинка2); - - ОписаниеСобытия = Новый Соответствие; - ОписаниеСобытия.Вставить("Описание" , Описание); - ОписаниеСобытия.Вставить("Заголовок" , Наименование); - ОписаниеСобытия.Вставить("МестоПроведения" , "В офисе"); - ОписаниеСобытия.Вставить("ДатаНачала" , ТекущаяДата); - ОписаниеСобытия.Вставить("ДатаОкончания" , ОписаниеСобытия["ДатаНачала"] + Час); - ОписаниеСобытия.Вставить("МассивURLФайловВложений", Вложения); - ОписаниеСобытия.Вставить("ОтправлятьУведомления" , Истина); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("props" , ОписаниеСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьСобытие", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "СоздатьСобытие", , ПараметрыФункции, Наименование, Описание); - -КонецПроцедуры - -Процедура GoogleCalendar_ИзменитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Событие = ПараметрыФункции["Google_EventID"]; - Описание = "Новое описание события"; - - ОписаниеСобытия = Новый Соответствие; - ОписаниеСобытия.Вставить("Описание", Описание); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("props" , ОписаниеСобытия); - Опции.Вставить("event" , Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьСобытие", Опции); - - // END - - Наименование = "Новое событие"; - - Обработать(Результат, "GoogleCalendar", "ИзменитьСобытие", , Наименование, Описание); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Событие = ПараметрыФункции["Google_EventID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("event" , Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСобытие", Опции); - - // END - - Наименование = "Новое событие"; - Описание = "Новое описание события"; - - Обработать(Результат, "GoogleCalendar", "ПолучитьСобытие", , Наименование, Описание); - -КонецПроцедуры - -Процедура GoogleCalendar_ПереместитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Событие = ПараметрыФункции["Google_EventID"]; - - КалендарьИсточник = ПараметрыФункции["Google_NewCalendarID"]; - КалендарьПриемник = ПараметрыФункции["Google_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , КалендарьИсточник); - Опции.Вставить("to" , КалендарьПриемник); - Опции.Вставить("event", Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПереместитьСобытие", Опции); - - // END - - Наименование = "Новое событие"; - Описание = "Новое описание события"; - - Обработать(Результат, "GoogleCalendar", "ПереместитьСобытие", , Наименование, Описание); - - OPI_GoogleCalendar.ПереместитьСобытие(Токен, КалендарьПриемник, КалендарьИсточник, Событие); - -КонецПроцедуры - -Процедура GoogleCalendar_УдалитьСобытие(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - Событие = ПараметрыФункции["Google_EventID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - Опции.Вставить("event" , Событие); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьСобытие", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "УдалитьСобытие"); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьСписокСобытий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Календарь = ПараметрыФункции["Google_NewCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("calendar", Календарь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокСобытий", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ПолучитьСписокСобытий"); - -КонецПроцедуры - -Процедура GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьОписаниеСобытия", Опции); - - // END - - Обработать(Результат, "GoogleCalendar", "ПолучитьОписаниеСобытия"); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleDrive - -Процедура GoogleDrive_СформироватьСсылкуПолученияКода(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - Опции = Новый Структура; - Опции.Вставить("id", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СформироватьСсылкуПолученияКода", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "СформироватьСсылкуПолученияКода"); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьТокенПоКоду(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - Code = ПараметрыФункции["Google_Code"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьТокенПоКоду", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьТокенПоКоду"); - -КонецПроцедуры - -Процедура GoogleDrive_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - RefreshToken = ПараметрыФункции["Google_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret" , ClientSecret); - Опции.Вставить("refresh", RefreshToken); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьТокенServiceАккаунта(ПараметрыФункции) - - Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция - - Токен = ПараметрыФункции["Access_Token"]; // SKIP - Данные = OPI_ЗапросыHTTP // SKIP - .НовыйЗапрос() // SKIP - .Инициализировать(Данные) // SKIP - .ДобавитьBearerАвторизацию(Токен) // SKIP - .ОбработатьЗапрос("GET") // SKIP - .ВернутьОтветКакДвоичныеДанные(); // SKIP - - ОбластиДействия = Новый Массив; - ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); - - Опции = Новый Структура; - Опции.Вставить("auth" , Данные); - Опции.Вставить("scope", ОбластиДействия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьТокенServiceАккаунта", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьТокенServiceАккаунта"); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьСписокКаталогов(ПараметрыФункции) - - Имя = "Тестовая папка"; - Токен = ПараметрыФункции["Google_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("query", Имя); - Опции.Вставить("depth", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКаталогов", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьСписокКаталогов", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_Catalog"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьИнформациюОбОбъекте", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьИнформациюОбОбъекте"); - -КонецПроцедуры - -Процедура GoogleDrive_ЗагрузитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Каталог = ПараметрыФункции["GD_Catalog"]; - Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); - - Описание.Вставить("Родитель", Каталог); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("file" , Картинка); - Опции.Вставить("props", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", , ПараметрыФункции, Описание); - - Если Не OPI_Инструменты.ЭтоOneScript() И ПараметрыФункции.Свойство("Big") Тогда - - БольшойФайл = ПараметрыФункции["Big"]; - Описание.Вставить("Имя", "big.rar"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("file" , БольшойФайл); - Опции.Вставить("props", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); - - Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", "Большой", ПараметрыФункции, Описание); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Результат); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); - - Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", "Проверка", ПараметрыФункции, Описание); - - КонецЕсли; - -КонецПроцедуры - -Процедура GoogleDrive_СкопироватьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - НовоеИмя = "Скопированный файл.jpeg"; - НовыйРодитель = "root"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("title" , НовоеИмя); - Опции.Вставить("catalog", НовыйРодитель); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкопироватьОбъект", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "СкопироватьОбъект", , ПараметрыФункции, НовоеИмя); - -КонецПроцедуры - -Процедура GoogleDrive_СкачатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "СкачатьФайл", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GoogleDrive_ОбновитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - НовоеИмя = "Обновленный файл.jpg"; - Идентификатор = ПараметрыФункции["GD_File"]; - Файл = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - Опции.Вставить("file" , Файл); - Опции.Вставить("title" , НовоеИмя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьФайл", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ОбновитьФайл", , НовоеИмя); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Каталог = "root"; - ИмяСодержит = "data"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("query" , ИмяСодержит); - Опции.Вставить("catalog", Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокФайлов", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьСписокФайлов"); - -КонецПроцедуры - -Процедура GoogleDrive_УдалитьОбъект(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьОбъект", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "УдалитьОбъект"); - - Для Каждого Удаляемый Из ПараметрыФункции["МассивУдаляемых"] Цикл - - Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый); - - Обработать(Результат, "GoogleDrive", "УдалитьОбъект", "Дополнительный"); - - OPI_Инструменты.Пауза(2); - - КонецЦикла; - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьОписаниеФайла(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьОписаниеФайла"); - -КонецПроцедуры - -Процедура GoogleDrive_СоздатьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - Комментарий = "Текст комментария"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - Опции.Вставить("text" , Комментарий); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьКомментарий", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "СоздатьКомментарий", , ПараметрыФункции, Комментарий); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - ИДКомментария = ПараметрыФункции["GD_Comment"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("comment", ИДКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьКомментарий", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьКомментарий"); - -КонецПроцедуры - -Процедура GoogleDrive_ПолучитьСписокКомментариев(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКомментариев", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "ПолучитьСписокКомментариев"); - -КонецПроцедуры - -Процедура GoogleDrive_УдалитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GD_File"]; - ИДКомментария = ПараметрыФункции["GD_Comment"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("object" , Идентификатор); - Опции.Вставить("comment", ИДКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьКомментарий", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "УдалитьКомментарий"); - -КонецПроцедуры - -Процедура GoogleDrive_СоздатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Каталог = ПараметрыФункции["GD_Catalog"]; - Имя = "Тестовая папка"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Имя); - Опции.Вставить("catalog", Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); - - // END - - Обработать(Результат, "GoogleDrive", "СоздатьПапку"); - - ИДКаталога = Результат["id"]; - OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("title", Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); - - Обработать(Результат, "GoogleDrive", "СоздатьПапку", "Корень"); - - ИДКаталога = Результат["id"]; - OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); - -КонецПроцедуры - -#КонецОбласти - -#Область GoogleSheets - -Процедура GoogleSheets_СформироватьСсылкуПолученияКода(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - Опции = Новый Структура; - Опции.Вставить("id", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СформироватьСсылкуПолученияКода", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "СформироватьСсылкуПолученияКода"); - -КонецПроцедуры - -Процедура GoogleSheets_ПолучитьТокенПоКоду(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - Code = ПараметрыФункции["Google_Code"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьТокенПоКоду", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ПолучитьТокенПоКоду"); - -КонецПроцедуры - -Процедура GoogleSheets_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Google_ClientID"]; - ClientSecret = ПараметрыФункции["Google_ClientSecret"]; - RefreshToken = ПараметрыФункции["Google_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("id" , ClientID); - Опции.Вставить("secret" , ClientSecret); - Опции.Вставить("refresh", RefreshToken); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура GoogleSheets_ПолучитьТокенServiceАккаунта(ПараметрыФункции) - - Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция - - Токен = ПараметрыФункции["Access_Token"]; // SKIP - Данные = OPI_ЗапросыHTTP // SKIP - .НовыйЗапрос() // SKIP - .Инициализировать(Данные) // SKIP - .ДобавитьBearerАвторизацию(Токен) // SKIP - .ОбработатьЗапрос("GET") // SKIP - .ВернутьОтветКакДвоичныеДанные(); // SKIP - - ОбластиДействия = Новый Массив; - ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); - ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); - - Опции = Новый Структура; - Опции.Вставить("auth" , Данные); - Опции.Вставить("scope", ОбластиДействия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьТокенServiceАккаунта", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ПолучитьТокенServiceАккаунта"); - -КонецПроцедуры - -Процедура GoogleSheets_СоздатьКнигу(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Наименование = "Тестовая таблица"; - - МассивЛистов = Новый Массив; - МассивЛистов.Добавить("Лист1"); - МассивЛистов.Добавить("Лист2"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Наименование); - Опции.Вставить("sheets", МассивЛистов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "СоздатьКнигу", , ПараметрыФункции, Наименование, МассивЛистов); - - Наименование = "Тестовая таблица (доп.)"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("title" , Наименование); - Опции.Вставить("sheets", МассивЛистов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); - - Обработать(Результат, "GoogleSheets", "СоздатьКнигу", "Дополнительно", ПараметрыФункции, Наименование); - -КонецПроцедуры - -Процедура GoogleSheets_ПолучитьКнигу(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Идентификатор = ПараметрыФункции["GS_Spreadsheet"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Идентификатор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ПолучитьКнигу"); - -КонецПроцедуры - -Процедура GoogleSheets_КопироватьЛист(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Откуда = ПараметрыФункции["GS_Spreadsheet"]; - Куда = ПараметрыФункции["GS_Spreadsheet2"]; - Лист = ПараметрыФункции["GS_Sheet"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , Откуда); - Опции.Вставить("to" , Куда); - Опции.Вставить("sheet", Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "КопироватьЛист", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "КопироватьЛист"); - -КонецПроцедуры - -Процедура GoogleSheets_ДобавитьЛист(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Наименование = "Тестовый лист"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("title" , Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ДобавитьЛист", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ДобавитьЛист"); - -КонецПроцедуры - -Процедура GoogleSheets_УдалитьЛист(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = ПараметрыФункции["GS_Sheet"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("sheet" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УдалитьЛист", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "УдалитьЛист", , Книга); - -КонецПроцедуры - -Процедура GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Наименование = "Тестовая таблица (изм.)"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("title" , Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ИзменитьНаименованиеКниги", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ИзменитьНаименованиеКниги", , Книга); - -КонецПроцедуры - -Процедура GoogleSheets_ПолучитьТаблицу(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ПолучитьТаблицу"); - -КонецПроцедуры - -Процедура GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = "Лист2"; - - СоответствиеЗначений = Новый Соответствие; - СоответствиеЗначений.Вставить("A1", "Это A1"); - СоответствиеЗначений.Вставить("A2", "Это A2"); - СоответствиеЗначений.Вставить("B2", "Это B2"); - СоответствиеЗначений.Вставить("B3", "Это B3"); - СоответствиеЗначений.Вставить("A3", "Это A3"); - СоответствиеЗначений.Вставить("A4", "Это A4"); - СоответствиеЗначений.Вставить("B1", "Это B1"); - СоответствиеЗначений.Вставить("B4", "Это B4"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("data" , СоответствиеЗначений); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УстановитьЗначенияЯчеек", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "УстановитьЗначенияЯчеек", , СоответствиеЗначений.Количество()); - -КонецПроцедуры - -Процедура GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = "Лист2"; - - МассивЯчеек = Новый Массив; - МассивЯчеек.Добавить("B2"); - МассивЯчеек.Добавить("A3"); - МассивЯчеек.Добавить("B4"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("cells" , МассивЯчеек); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ПолучитьЗначенияЯчеек", , МассивЯчеек.Количество()); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); - - Обработать(Результат, "GoogleSheets", "ПолучитьЗначенияЯчеек", "Все", Книга); - -КонецПроцедуры - -Процедура GoogleSheets_ОчиститьЯчейки(ПараметрыФункции) - - Токен = ПараметрыФункции["Google_Token"]; - Книга = ПараметрыФункции["GS_Spreadsheet"]; - Лист = "Лист2"; - - МассивЯчеек = Новый Массив; - МассивЯчеек.Добавить("B2"); - МассивЯчеек.Добавить("A3"); - МассивЯчеек.Добавить("B4"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("spreadsheet", Книга); - Опции.Вставить("cells" , МассивЯчеек); - Опции.Вставить("sheetname" , Лист); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОчиститьЯчейки", Опции); - - // END - - Обработать(Результат, "GoogleSheets", "ОчиститьЯчейки", , МассивЯчеек.Количество()); - -КонецПроцедуры - -#КонецОбласти - -#Область Slack - -Процедура Slack_ПолучитьИнформациюОБоте(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИнформациюОБоте", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьИнформациюОБоте"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокПользователей(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователей", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокПользователей"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокРабочихОбластей(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокРабочихОбластей", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокРабочихОбластей"); - -КонецПроцедуры - -Процедура Slack_ОтправитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - // Текстовое - - Текст = "Тестовое сообщение 1"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - Обработать(Результат, "Slack", "ОтправитьСообщение", , ПараметрыФункции, Текст, Канал); // SKIP - - // С вложениями (в примере: блок с картинкой) - - Текст = "Сообщение с картинкой"; - Картинка = ПараметрыФункции["Picture"]; - МассивБлоков = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("alt" , "Картинка"); - - Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); - МассивБлоков.Добавить(Блок); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks" , МассивБлоков); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - Обработать(Результат, "Slack", "ОтправитьСообщение", "Картинка", ПараметрыФункции, Текст, Канал); // SKIP - - // Отложенное - - Текст = "Отложенное сообщение"; - Час = 3600; - Сутки = 24; - - ДатаОтправки = OPI_Инструменты.ПолучитьТекущуюДату() + (Сутки * Час); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - Опции.Вставить("date" , ДатаОтправки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - // END - - Обработать(Результат, "Slack", "ОтправитьСообщение", "Отложенное", ПараметрыФункции, Текст, Канал); - - Токен = ПараметрыФункции["Slack_Token"]; - Отметка = Результат["scheduled_message_id"]; - - OPI_Slack.УдалитьСообщение(Токен, Канал, Отметка, Истина); - -КонецПроцедуры - -Процедура Slack_СформироватьБлокКартинку(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("alt" , "Картинка"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); - - // END - - Обработать(Результат, "Slack", "СформироватьБлокКартинку"); - -КонецПроцедуры - -Процедура Slack_ИзменитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Текст = "Тестовое сообщение 2"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ИзменитьСообщение", Опции); - - // END - - Обработать(Результат, "Slack", "ИзменитьСообщение", , Текст, Канал); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтветовНаСообщение", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокОтветовНаСообщение"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСсылкуНаСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСсылкуНаСообщение", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСсылкуНаСообщение", , Канал); - -КонецПроцедуры - -Процедура Slack_УдалитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Отметка = ПараметрыФункции["Slack_MessageTS"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("stamp" , Отметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьСообщение", Опции); - - // END - - Обработать(Результат, "Slack", "УдалитьСообщение"); - -КонецПроцедуры - -Процедура Slack_ОтправитьЭфемерноеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Пользователь = ПараметрыФункции["Slack_User"]; - Картинка = ПараметрыФункции["Picture"]; - Текст = "Эфимерное сообщение"; - - Опции = Новый Структура; - Опции.Вставить("picture", Картинка); - Опции.Вставить("alt" , "Картинка"); - - Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , Текст); - Опции.Вставить("user" , Пользователь); - Опции.Вставить("blocks" , Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьЭфемерноеСообщение", Опции); - - // END - - Обработать(Результат, "Slack", "ОтправитьЭфемерноеСообщение"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтложенныхСообщений", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокОтложенныхСообщений"); - -КонецПроцедуры - -Процедура Slack_СоздатьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Имя = "testconv" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("title", Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СоздатьКанал", Опции); - - // END - - Обработать(Результат, "Slack", "СоздатьКанал", , ПараметрыФункции, Имя); - -КонецПроцедуры - -Процедура Slack_УстановитьТемуКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Тема = "Тестовая тема"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("theme" , Тема); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьТемуКанала", Опции); - - // END - - Обработать(Результат, "Slack", "УстановитьТемуКанала", , Тема); - -КонецПроцедуры - -Процедура Slack_УстановитьЦельКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Цель = "Тестовая цель"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("purpose", Цель); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьЦельКанала", Опции); - - // END - - Обработать(Результат, "Slack", "УстановитьЦельКанала"); - -КонецПроцедуры - -Процедура Slack_ПолучитьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьКанал", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьКанал", , ПараметрыФункции["Slack_NewChannelName"]); - -КонецПроцедуры - -Процедура Slack_ПригласитьПользователейВКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Пользователь = ПараметрыФункции["Slack_User"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("users" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПригласитьПользователейВКанал", Опции); - - // END - - Обработать(Результат, "Slack", "ПригласитьПользователейВКанал", , ПараметрыФункции["Slack_NewChannelName"]); - -КонецПроцедуры - -Процедура Slack_ВыгнатьПользователяИзКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Пользователь = ПараметрыФункции["Slack_User"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("user" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВыгнатьПользователяИзКанала", Опции); - - // END - - Обработать(Результат, "Slack", "ВыгнатьПользователяИзКанала"); - -КонецПроцедуры - -Процедура Slack_ПолучитьИсториюКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИсториюКанала", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьИсториюКанала"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокПользователейКанала(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователейКанала", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокПользователейКанала"); - -КонецПроцедуры - -Процедура Slack_ПокинутьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПокинутьКанал", Опции); - - // END - - Обработать(Результат, "Slack", "ПокинутьКанал"); - -КонецПроцедуры - -Процедура Slack_ВступитьВКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВступитьВКанал", Опции); - - // END - - Обработать(Результат, "Slack", "ВступитьВКанал", , ПараметрыФункции["Slack_NewChannelName"]); - -КонецПроцедуры - -Процедура Slack_ПереименоватьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - Название = "testconv" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("title" , Название); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПереименоватьКанал", Опции); - - // END - - Обработать(Результат, "Slack", "ПереименоватьКанал", , Название); - -КонецПроцедуры - -Процедура Slack_АрхивироватьКанал(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_NewChannel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "АрхивироватьКанал", Опции); - - // END - - Обработать(Результат, "Slack", "АрхивироватьКанал"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокКаналов(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокКаналов", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокКаналов"); - -КонецПроцедуры - -Процедура Slack_ОткрытьДиалог(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Пользователь = ПараметрыФункции["Slack_User"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("users", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОткрытьДиалог", Опции); - - // END - - Обработать(Результат, "Slack", "ОткрытьДиалог", , ПараметрыФункции); - - Канал = Результат["channel"]["id"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - Опции.Вставить("text" , "Тест диалог"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); - - Обработать(Результат, "Slack", "ОткрытьДиалог", "Сообщение", ПараметрыФункции); - -КонецПроцедуры - -Процедура Slack_ЗакрытьДиалог(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Диалог = ПараметрыФункции["Slack_Dialog"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("conv" , Диалог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗакрытьДиалог", Опции); - - // END - - Обработать(Результат, "Slack", "ЗакрытьДиалог"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокФайлов"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); - - Обработать(Результат, "Slack", "ПолучитьСписокФайлов", "Все"); - -КонецПроцедуры - -Процедура Slack_ЗагрузитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - Файл = ПараметрыФункции["Document"]; // URL, Двоичные данные или Путь к файлу - - ИмяФайла = "megadoc.docx"; - Заголовок = "Новый файл"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); - - Обработать(Результат, "Slack", "ЗагрузитьФайл", , ПараметрыФункции, ИмяФайла); // SKIP - Обработать(Результат, "Slack", "СделатьФайлПубличным"); // SKIP - Обработать(Результат, "Slack", "СделатьФайлПриватным"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("channel" , Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); - - // END - - Обработать(Результат, "Slack", "ЗагрузитьФайл", "Канал", ПараметрыФункции, ИмяФайла); - OPI_Slack.УдалитьФайл(ПараметрыФункции["Slack_Token"], Результат["files"][0]["id"]); - -КонецПроцедуры - -Процедура Slack_СделатьФайлПубличным(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПубличным", Опции); - - // END - - Обработать(Результат, "Slack", "СделатьФайлПубличным", "Без записи"); - -КонецПроцедуры - -Процедура Slack_СделатьФайлПриватным(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПриватным", Опции); - - // END - - Обработать(Результат, "Slack", "СделатьФайлПриватным", "Без записи"); - -КонецПроцедуры - -Процедура Slack_ПолучитьДанныеФайла(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьДанныеФайла", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьДанныеФайла", , "megadoc.docx"); - -КонецПроцедуры - -Процедура Slack_УдалитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьФайл", Опции); - - // END - - Обработать(Результат, "Slack", "УдалитьФайл"); - -КонецПроцедуры - -Процедура Slack_ПолучитьСписокВнешнихФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("channel", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьСписокВнешнихФайлов"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); - - Обработать(Результат, "Slack", "ПолучитьСписокВнешнихФайлов", "Все"); - -КонецПроцедуры - -Процедура Slack_ДобавитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Заголовок = "Новый файл"; - Файл = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , Файл); - Опции.Вставить("title", Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ДобавитьВнешнийФайл", Опции); - - // END - - Обработать(Результат, "Slack", "ДобавитьВнешнийФайл", , ПараметрыФункции, Заголовок); - -КонецПроцедуры - -Процедура Slack_ПолучитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьВнешнийФайл", Опции); - - // END - - Обработать(Результат, "Slack", "ПолучитьВнешнийФайл"); - -КонецПроцедуры - -Процедура Slack_ОтправитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - Канал = ПараметрыФункции["Slack_Channel"]; - ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , ИдентификаторФайла); - Опции.Вставить("channels", Канал); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьВнешнийФайл", Опции); - - // END - - Обработать(Результат, "Slack", "ОтправитьВнешнийФайл"); - -КонецПроцедуры - -Процедура Slack_УдалитьВнешнийФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Slack_Token"]; - ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", ИдентификаторФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьВнешнийФайл", Опции); - - // END - - Обработать(Результат, "Slack", "УдалитьВнешнийФайл"); - -КонецПроцедуры - -#КонецОбласти - -#Область Airtable - -Процедура Airtable_СоздатьБазу(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - Область = ПараметрыФункции["Airtable_Workspace"]; - Наименование = "Тестовая база"; - - МассивПолей = Новый Массив; - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); - - ИмяТаблицы = "Тестовая таблица"; - - СоответствиеТаблиц = Новый Соответствие; - СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("ws" , Область); - Опции.Вставить("title" , Наименование); - Опции.Вставить("tablesdata", СоответствиеТаблиц); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьБазу", Опции); - - // END - - Обработать(Результат, "Airtable", "СоздатьБазу", , ПараметрыФункции, ИмяТаблицы); - -КонецПроцедуры - -Процедура Airtable_ПолучитьТаблицыБазы(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьТаблицыБазы", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьТаблицыБазы"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьСписокБаз(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокБаз", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьСписокБаз"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеНомера(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Номер"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеНомера"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеСтроковое(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Строковое"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСтроковое", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеСтроковое"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеВложения(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Вложение"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеВложения", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеВложения"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеФлажка(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Флажок"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеФлажка", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеФлажка"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеДаты(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Дата"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеДаты", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеДаты"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеТелефона(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Телефон"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеТелефона", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеТелефона"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеПочты(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Почта"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеПочты", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеПочты"); - -КонецПроцедуры - -Процедура Airtable_ПолучитьПолеСсылки(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("title", "Ссылка"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСсылки", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьПолеСсылки"); - -КонецПроцедуры - -Процедура Airtable_СоздатьТаблицу(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - - МассивПолей = Новый Массив; - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеВложения("Вложение")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеФлажка("Флажок")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеДаты("Дата")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеТелефона("Телефон")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеПочты("Почта")); - МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСсылки("Ссылка")); - - Наименование = "Тестовая таблица 2"; - Описание = "Новая таблица"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("title" , Наименование); - Опции.Вставить("fieldsdata" , МассивПолей); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьТаблицу", Опции); - - // END - - Обработать(Результат, "Airtable", "СоздатьТаблицу", , ПараметрыФункции, Наименование, Описание); - -КонецПроцедуры - -Процедура Airtable_ИзменитьТаблицу(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Наименование = "Тестовая таблица 2 (изм.)"; - Описание = "Новая таблица (изм.)"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("title" , Наименование); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьТаблицу", Опции); - - // END - - Обработать(Результат, "Airtable", "ИзменитьТаблицу", , Наименование, Описание); - -КонецПроцедуры - -Процедура Airtable_СоздатьПоле(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Имя = Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("title", Имя); - - Поле = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("fielddata", Поле); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьПоле", Опции); - - // END - - Обработать(Результат, "Airtable", "СоздатьПоле", , ПараметрыФункции, Имя); - -КонецПроцедуры - -Процедура Airtable_ИзменитьПоле(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Поле = ПараметрыФункции["Airtable_Field"]; - - Имя = Строка(Новый УникальныйИдентификатор) + "(изм.)"; - Описание = "Новое описание"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("field" , Поле); - Опции.Вставить("title" , Имя); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьПоле", Опции); - - // END - - Обработать(Результат, "Airtable", "ИзменитьПоле", , Имя, Описание); - -КонецПроцедуры - -Процедура Airtable_СоздатьЗаписи(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - - Номер = 10; - Строковое = "Привет"; - - ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Номер, Строковое); - ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Номер, Строковое); - - МассивОписаний = Новый Массив; - МассивОписаний.Добавить(ОписаниеСтроки1); - МассивОписаний.Добавить(ОписаниеСтроки2); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table", Таблица); - Опции.Вставить("data" , МассивОписаний); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); - - // END - - Обработать(Результат, "Airtable", "СоздатьЗаписи", , ПараметрыФункции); - - МассивУдаляемых = Новый Массив; - - Для Каждого Запись Из Результат["records"] Цикл - - ТекущаяЗапись = Запись["id"]; - МассивУдаляемых.Добавить(ТекущаяЗапись); - - КонецЦикла; - - OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых); - - // Одиночное - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table", Таблица); - Опции.Вставить("data" , ОписаниеСтроки1); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); - - Обработать(Результат, "Airtable", "СоздатьЗаписи", "Одиночная", ПараметрыФункции, Номер, Строковое); - -КонецПроцедуры - -Процедура Airtable_ПолучитьЗапись(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record", Запись); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьЗапись", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьЗапись", , Запись); - -КонецПроцедуры - -Процедура Airtable_СоздатьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Текст = "Тестовый комментарий"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record", Запись); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьКомментарий", Опции); - - // END - - Обработать(Результат, "Airtable", "СоздатьКомментарий", , ПараметрыФункции, Текст); - -КонецПроцедуры - -Процедура Airtable_ИзменитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Комментарий = ПараметрыФункции["Airtable_Comment"]; - - Текст = "Тестовый комментарий (изм.)"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record" , Запись); - Опции.Вставить("comment", Комментарий); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьКомментарий", Опции); - - // END - - Обработать(Результат, "Airtable", "ИзменитьКомментарий", , Текст); - -КонецПроцедуры - -Процедура Airtable_ПолучитьКомментарии(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record", Запись); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьКомментарии", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьКомментарии"); - -КонецПроцедуры - -Процедура Airtable_УдалитьКомментарий(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - Комментарий = ПараметрыФункции["Airtable_Comment"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("record" , Запись); - Опции.Вставить("comment", Комментарий); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьКомментарий", Опции); - - // END - - Обработать(Результат, "Airtable", "УдалитьКомментарий", , Комментарий); - -КонецПроцедуры - -Процедура Airtable_ПолучитьСписокЗаписей(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table", Таблица); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокЗаписей", Опции); - - // END - - Обработать(Результат, "Airtable", "ПолучитьСписокЗаписей"); - -КонецПроцедуры - -Процедура Airtable_УдалитьЗаписи(ПараметрыФункции) - - Токен = ПараметрыФункции["Airtable_Token"]; - База = ПараметрыФункции["Airtable_Base"]; - Таблица = ПараметрыФункции["Airtable_Table"]; - Запись = ПараметрыФункции["Airtable_Record"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("table" , Таблица); - Опции.Вставить("records", Запись); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьЗаписи", Опции); - - // END - - Обработать(Результат, "Airtable", "УдалитьЗаписи"); - -КонецПроцедуры - -#КонецОбласти - -#Область Twitter - -Процедура Twitter_ПолучитьТокен(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Код = "123456"; - - Опции = Новый Структура; - Опции.Вставить("code", Код); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьТокен", Опции); - - // END - - Обработать(Результат, "Twitter", "ПолучитьТокен"); - -КонецПроцедуры - -Процедура Twitter_ПолучитьСсылкуАвторизации(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьСсылкуАвторизации", Опции); - - // END - - Обработать(Результат, "Twitter", "ПолучитьСсылкуАвторизации"); - -КонецПроцедуры - -Процедура Twitter_ОбновитьТокен(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Опции = Новый Структура; - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "Twitter", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура Twitter_СоздатьТекстовыйТвит(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТекстовыйТвит", Опции); - - // END - - Обработать(Результат, "Twitter", "СоздатьТекстовыйТвит", , Текст); - -КонецПроцедуры - -Процедура Twitter_СоздатьТвитКартинки(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - - Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка); - МассивКартинок.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", МассивКартинок); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); - - Обработать(Результат, "Twitter", "СоздатьТвитКартинки", , Текст); // SKIP - - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", Картинка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); - - // END - - Обработать(Результат, "Twitter", "СоздатьТвитКартинки", "Одиночная", Текст); - - Картинка = OPI_ЗапросыHTTP.Get(Картинка); - - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("pictures", Картинка); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); - - Обработать(Результат, "Twitter", "СоздатьТвитКартинки", "Двоичные", Текст); - -КонецПроцедуры - -Процедура Twitter_СоздатьТвитВидео(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - - Видео = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу - Видео2 = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу - - МассивВидео = Новый Массив; - МассивВидео.Добавить(Видео); - МассивВидео.Добавить(Видео2); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("videos", МассивВидео); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); - - Обработать(Результат, "Twitter", "СоздатьТвитВидео", , Текст); // SKIP - - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("videos", Видео); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); - - // END - - Обработать(Результат, "Twitter", "СоздатьТвитВидео", "Одиночная", Текст); - - Видео = OPI_ЗапросыHTTP.Get(Видео); - - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("videos", Видео); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); - - Обработать(Результат, "Twitter", "СоздатьТвитВидео", "Двоичные", Текст); - -КонецПроцедуры - -Процедура Twitter_СоздатьТвитГифки(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - - Гифка = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу - Гифка2 = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу - - МассивГифок = Новый Массив; - МассивГифок.Добавить(Гифка); - МассивГифок.Добавить(Гифка2); - - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("gifs", МассивГифок); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); - - Обработать(Результат, "Twitter", "СоздатьТвитГифки", , Текст); // SKIP - - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("gifs", Гифка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); - - // END - - Обработать(Результат, "Twitter", "СоздатьТвитГифки", "Одиночная", Текст); - - Гифка = OPI_ЗапросыHTTP.Get(Гифка); - - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - Опции = Новый Структура; - Опции.Вставить("text", Текст); - Опции.Вставить("gifs", Гифка); - Опции.Вставить("auth", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); - - Обработать(Результат, "Twitter", "СоздатьТвитГифки", "Двоичные", Текст); - -КонецПроцедуры - -Процедура Twitter_СоздатьТвитОпрос(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить("Вариант 1"); - МассивОтветов.Добавить("Вариант 2"); - - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("options" , МассивОтветов); - Опции.Вставить("duration", 60); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитОпрос", Опции); - - // END - - Обработать(Результат, "Twitter", "СоздатьТвитОпрос", , Текст); - -КонецПроцедуры - -Процедура Twitter_СоздатьПроизвольныйТвит(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("files", МассивКартинок); - Опции.Вставить("type" , "tweet_image"); - Опции.Вставить("auth" , Параметры); - - МассивМедиа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); - Опции = Новый Структура; - Опции.Вставить("text" , Текст); - Опции.Вставить("media", МассивМедиа); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьПроизвольныйТвит", Опции); - - // END - - Обработать(Результат, "Twitter", "СоздатьПроизвольныйТвит", , Текст); - -КонецПроцедуры - -Процедура Twitter_ЗагрузитьМассивВложений(ПараметрыФункции) - - Параметры = ПолучитьПараметрыАвторизацииТвиттер(); - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу - - МассивКартинок = Новый Массив; - МассивКартинок.Добавить(Картинка1); - МассивКартинок.Добавить(Картинка2); - - Опции = Новый Структура; - Опции.Вставить("files", МассивКартинок); - Опции.Вставить("type" , "tweet_image"); - Опции.Вставить("auth" , Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); - - // END - - Обработать(Результат, "Twitter", "ЗагрузитьМассивВложений"); - -КонецПроцедуры - -#КонецОбласти - -#Область Notion - -Процедура Notion_СоздатьСтраницу(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Родитель = ПараметрыФункции["Notion_Parent"]; - Заголовок = "Тестовый заголовок"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("page" , Родитель); - Опции.Вставить("title", Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницу", Опции); - - // END - - Обработать(Результат, "Notion", "СоздатьСтраницу", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Notion_СоздатьБазуДанных(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Родитель = ПараметрыФункции["Notion_Parent"]; - Заголовок = "Тестовый заголовок"; - - Свойства = Новый Соответствие; - Свойства.Вставить("Имя" , "title"); - Свойства.Вставить("Описание" , "rich_text"); - Свойства.Вставить("Номер" , "number"); - Свойства.Вставить("Дата создания", "date"); - Свойства.Вставить("Картинка" , "files"); - Свойства.Вставить("Активен" , "checkbox"); - Свойства.Вставить("Сайт" , "url"); - Свойства.Вставить("Почта" , "email"); - Свойства.Вставить("Телефон" , "phone_number"); - Свойства.Вставить("Пользователь" , "people"); - - ВыборЗначения = Новый Соответствие; - ВыборЗначения.Вставить("Новый" , "green"); - ВыборЗначения.Вставить("В работе" , "yellow"); - ВыборЗначения.Вставить("Удаленный", "red"); - - Свойства.Вставить("Статус", ВыборЗначения); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("page" , Родитель); - Опции.Вставить("title", Заголовок); - Опции.Вставить("props", Свойства); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБазуДанных", Опции); - - // END - - Обработать(Результат, "Notion", "СоздатьБазуДанных", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Notion_ИзменитьСвойстваБазы(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - База = ПараметрыФункции["Notion_Base"]; - - Заголовок = "Тестовый заголовок"; - Описание = "Тестовое описание"; - - Свойства = Новый Соответствие; - Свойства.Вставить("Почта", "rich_text"); // Тип поля "Почта" будет изменен с email на текст - Свойства.Вставить("Сайт"); // Поле "Сайт" будет удалено - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("base" , База); - Опции.Вставить("props" , Свойства); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваБазы", Опции); - - // END - - Обработать(Результат, "Notion", "ИзменитьСвойстваБазы"); - -КонецПроцедуры - -Процедура Notion_ПолучитьСтраницу(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Страница = ПараметрыФункции["Notion_Page"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("page" , Страница); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьСтраницу", Опции); - - // END - - Обработать(Результат, "Notion", "ПолучитьСтраницу"); - -КонецПроцедуры - -Процедура Notion_ПолучитьБазуДанных(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - База = ПараметрыФункции["Notion_Base"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьБазуДанных", Опции); - - // END - - Обработать(Результат, "Notion", "ПолучитьБазуДанных"); - -КонецПроцедуры - -Процедура Notion_СоздатьСтраницуВБазу(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - База = ПараметрыФункции["Notion_Base"]; - Картинка_ = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу - - Картинка = Новый Соответствие; - Картинка.Вставить("Лого", Картинка_); - - Свойства = Новый Соответствие; - Свойства.Вставить("Имя" , "ООО Вектор"); - Свойства.Вставить("Описание" , "Наш первый клиент"); - Свойства.Вставить("Номер" , 1); - Свойства.Вставить("Дата создания", OPI_Инструменты.ПолучитьТекущуюДату()); - Свойства.Вставить("Картинка" , Картинка); - Свойства.Вставить("Активен" , Истина); - Свойства.Вставить("Сайт" , "https://vector.ru"); - Свойства.Вставить("Почта" , "mail@vector.ru"); - Свойства.Вставить("Телефон" , "88005553535"); - Свойства.Вставить("Статус" , "Новый"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("base" , База); - Опции.Вставить("data" , Свойства); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницуВБазу", Опции); - - // END - - Обработать(Результат, "Notion", "СоздатьСтраницуВБазу", , База); - -КонецПроцедуры - -Процедура Notion_ИзменитьСвойстваСтраницы(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Страница = ПараметрыФункции["Notion_Page"]; - Иконка = ПараметрыФункции["Picture"]; - Обложка = ПараметрыФункции["Picture2"]; - Архивировать = Ложь; - - Свойства = Новый Соответствие; - Свойства.Вставить("Активен", Ложь); - Свойства.Вставить("Почта" , "vector@mail.ru"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("page" , Страница); - Опции.Вставить("data" , Свойства); - Опции.Вставить("icon" , Иконка); - Опции.Вставить("cover" , Обложка); - Опции.Вставить("archive", Архивировать); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваСтраницы", Опции); - - // END - - Обработать(Результат, "Notion", "ИзменитьСвойстваСтраницы"); - -КонецПроцедуры - -Процедура Notion_ВернутьБлок(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Блок = ПараметрыФункции["Notion_Block"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("block", Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); - - // END - - Обработать(Результат, "Notion", "ВернутьБлок"); - -КонецПроцедуры - -Процедура Notion_СоздатьБлок(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Родитель = ПараметрыФункции["Notion_Parent"]; - Блок = ПараметрыФункции["Notion_Block"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("block", Блок); - - ДанныеБлока = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("page" , Родитель); - Опции.Вставить("block", ДанныеБлока); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБлок", Опции); - - // END - - Обработать(Результат, "Notion", "СоздатьБлок", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Notion_ВернутьДочерниеБлоки(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Блок = ПараметрыФункции["Notion_NewBlock"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("block", Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьДочерниеБлоки", Опции); - - // END - - Обработать(Результат, "Notion", "ВернутьДочерниеБлоки"); - -КонецПроцедуры - -Процедура Notion_УдалитьБлок(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Блок = ПараметрыФункции["Notion_NewBlock"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("block", Блок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "УдалитьБлок", Опции); - - // END - - Обработать(Результат, "Notion", "УдалитьБлок"); - -КонецПроцедуры - -Процедура Notion_СписокПользователей(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СписокПользователей", Опции); - - // END - - Обработать(Результат, "Notion", "СписокПользователей"); - -КонецПроцедуры - -Процедура Notion_ПолучитьДанныеПользователя(ПараметрыФункции) - - Токен = ПараметрыФункции["Notion_Token"]; - Пользователь = ПараметрыФункции["Notion_User"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("user" , Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьДанныеПользователя", Опции); - - // END - - Обработать(Результат, "Notion", "ПолучитьДанныеПользователя"); - -КонецПроцедуры - -#КонецОбласти - -#Область Dropbox - -Процедура Dropbox_ПолучитьСсылкуАвторизации(ПараметрыФункции) - - КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; - Опции = Новый Структура; - Опции.Вставить("appkey", КлючПриложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСсылкуАвторизации", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьСсылкуАвторизации"); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьТокен(ПараметрыФункции) - - КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; - СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; - Код = ПараметрыФункции["Dropbox_Code"]; - - Опции = Новый Структура; - Опции.Вставить("appkey" , КлючПриложения); - Опции.Вставить("appsecret", СекретПриложения); - Опции.Вставить("code" , Код); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьТокен", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьТокен"); - -КонецПроцедуры - -Процедура Dropbox_ОбновитьТокен(ПараметрыФункции) - - КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; - СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; - РефрешТокен = ПараметрыФункции["Dropbox_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("appkey" , КлючПриложения); - Опции.Вставить("appsecret", СекретПриложения); - Опции.Вставить("refresh" , РефрешТокен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "Dropbox", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) - - Путь = "/New/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("detail", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбОбъекте", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбОбъекте", , Путь); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьПревью(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/mydoc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьПревью", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьПревью"); - -КонецПроцедуры - -Процедура Dropbox_ЗагрузитьФайл(ПараметрыФункции) - - Путь = "/New/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - Картинка = ПараметрыФункции["Picture"]; - - КартинкаПуть = ПолучитьИмяВременногоФайла("png"); - КопироватьФайл(Картинка, КартинкаПуть); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , КартинкаПуть); - Опции.Вставить("path" , Путь); - Опции.Вставить("overwrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); - - // END - - Обработать(Результат, "Dropbox", "ЗагрузитьФайл", , Путь); - - OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); - - Если Не OPI_Инструменты.ЭтоOneScript() И ПараметрыФункции.Свойство("Big") Тогда - - БольшойФайл = ПараметрыФункции["Big"]; - - Путь = "/giant.tmp"; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("file" , БольшойФайл); - Опции.Вставить("path" , Путь); - Опции.Вставить("overwrite", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); - - Обработать(Результат, "Dropbox", "ЗагрузитьФайл", "Большой", Путь); - - КонецЕсли; - -КонецПроцедуры - -Процедура Dropbox_ЗагрузитьФайлПоURL(ПараметрыФункции) - - Путь = "/New/url_doc.docx"; - Токен = ПараметрыФункции["Dropbox_Token"]; - URL = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("url" , URL); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайлПоURL", Опции); - - // END - - Обработать(Результат, "Dropbox", "ЗагрузитьФайлПоURL", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - ИДРаботы = ПараметрыФункции["Dropbox_Job"]; - Статус = "in_progress"; - - Пока Статус = "in_progress" Цикл - - Результат = OPI_Dropbox.ПолучитьСтатусЗагрузкиПоURL(Токен, ИДРаботы); - Статус = Результат[".tag"]; - - OPI_Инструменты.Пауза(5); - - Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL", "Прогресс"); // SKIP - - КонецЦикла; - - // END - - Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL"); - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/url_doc.docx"; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - - Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL", "Удаление", Путь); - -КонецПроцедуры - -Процедура Dropbox_УдалитьОбъект(ПараметрыФункции) - - Путь = "/New/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - - // END - - Обработать(Результат, "Dropbox", "УдалитьОбъект", , Путь); - -КонецПроцедуры - -Процедура Dropbox_КопироватьОбъект(ПараметрыФункции) - - Оригинал = "/New/pic.png"; - Копия = "/New/pic_copy.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , Оригинал); - Опции.Вставить("to" , Копия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "КопироватьОбъект", Опции); - - // END - - Обработать(Результат, "Dropbox", "КопироватьОбъект", , Копия); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Копия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); - - Обработать(Результат, "Dropbox", "КопироватьОбъект", "Удаление", Копия); - -КонецПроцедуры - -Процедура Dropbox_ПереместитьОбъект(ПараметрыФункции) - - ОригинальныйПуть = "/New/pic.png"; - ЦелевойПуть = "/pic.png"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , ОригинальныйПуть); - Опции.Вставить("to" , ЦелевойПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПереместитьОбъект", , ЦелевойПуть); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("from" , ЦелевойПуть); - Опции.Вставить("to" , ОригинальныйПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); - - Обработать(Результат, "Dropbox", "ПереместитьОбъект", "Удаление", ОригинальныйПуть); - -КонецПроцедуры - -Процедура Dropbox_СоздатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/Новый каталог"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СоздатьПапку", Опции); - - // END - - Обработать(Результат, "Dropbox", "СоздатьПапку", , Путь); - - OPI_Dropbox.УдалитьОбъект(Токен, Путь); - -КонецПроцедуры - -Процедура Dropbox_СкачатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьФайл", Опции); - - // END - - Обработать(Результат, "Dropbox", "СкачатьФайл"); - -КонецПроцедуры - -Процедура Dropbox_СкачатьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьПапку", Опции); - - // END - - Обработать(Результат, "Dropbox", "СкачатьПапку"); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьСписокФайловПапки(ПараметрыФункции) - - Путь = "/New"; - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("detail", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокФайловПапки", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьСписокФайловПапки"); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("amount", 1); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокВерсийОбъекта", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьСписокВерсийОбъекта", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Dropbox_ВосстановитьОбъектКВерсии(ПараметрыФункции) - - Версия = ПараметрыФункции["Dropbox_FileRevision"]; - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("rev" , Версия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ВосстановитьОбъектКВерсии", Опции); - - // END - - Обработать(Результат, "Dropbox", "ВосстановитьОбъектКВерсии", , Путь); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьСписокТегов(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - - МассивПутей = Новый Массив; - МассивПутей.Добавить("/New/Dogs.mp3"); - МассивПутей.Добавить("/New/mydoc.docx"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("paths", МассивПутей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьСписокТегов", , ПараметрыФункции, МассивПутей); - -КонецПроцедуры - -Процедура Dropbox_ДобавитьТег(ПараметрыФункции) - - Тег = "Important"; - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/mydoc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("tag" , Тег); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); - - // END - - Обработать(Результат, "Dropbox", "ДобавитьТег"); - -КонецПроцедуры - -Процедура Dropbox_УдалитьТег(ПараметрыФункции) - - Тег = "Important"; - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New/mydoc.docx"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("tag" , Тег); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьТег", Опции); - - // END - - Обработать(Результат, "Dropbox", "УдалитьТег"); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбАккаунте"); - - IDАккаунта = Результат["account_id"]; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("account", IDАккаунта); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); - - Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбАккаунте", "По ID"); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьДанныеИспользованияПространства", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьДанныеИспользованияПространства"); - -КонецПроцедуры - -Процедура Dropbox_ДобавитьПользователейКФайлу(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Почта = ПараметрыФункции["Dropbox_OtherUser"]; - Файл = ПараметрыФункции["Dropbox_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , Файл); - Опции.Вставить("emails" , Почта); - Опции.Вставить("readonly", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); - - // END - - Обработать(Результат, "Dropbox", "ДобавитьПользователейКФайлу", , Почта, Ложь); - - Почты = Новый Массив; - Почты.Добавить(Почта); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid" , Файл); - Опции.Вставить("emails" , Почты); - Опции.Вставить("readonly", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); - - Обработать(Результат, "Dropbox", "ДобавитьПользователейКФайлу", , Почта, Истина); - -КонецПроцедуры - -Процедура Dropbox_ОпубликоватьПапку(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Путь = "/New"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОпубликоватьПапку", Опции); - - // END - - Обработать(Результат, "Dropbox", "ОпубликоватьПапку", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Dropbox_ОтменитьПубликациюПапки(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Папка = ПараметрыФункции["Dropbox_SharedFolder"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("folder", Папка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюПапки", Опции); - - Обработать(Результат, "Dropbox", "ОтменитьПубликациюПапки"); // SKIP - - ТекущийСтатус = "in_progress"; - IDРаботы = Результат["async_job_id"]; - - Пока ТекущийСтатус = "in_progress" Цикл - Результат = OPI_Dropbox.ПолучитьСтатусАсинхронногоИзменения(Токен, IDРаботы); - ТекущийСтатус = Результат[".tag"]; - OPI_Инструменты.Пауза(3); - КонецЦикла; - - // END - - Обработать(Результат, "Dropbox", "ОтменитьПубликациюПапки", "Окончание", ПараметрыФункции, IDРаботы); - -КонецПроцедуры - -Процедура Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - IDРаботы = ПараметрыФункции["Dropbox_NewJobID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("job" , IDРаботы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); - - // END - - Обработать(Результат, "Dropbox", "ПолучитьСтатусАсинхронногоИзменения"); - -КонецПроцедуры - -Процедура Dropbox_ДобавитьПользователейКПапке(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Почта = ПараметрыФункции["Dropbox_OtherUser"]; - Папка = ПараметрыФункции["Dropbox_SharedFolder"]; // shared_folder_id - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("folder" , Папка); - Опции.Вставить("emails" , Почта); - Опции.Вставить("readonly", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); - - // END - - Обработать(Результат, "Dropbox", "ДобавитьПользователейКПапке"); - - Почты = Новый Массив; - Почты.Добавить(Почта); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("folder" , Папка); - Опции.Вставить("emails" , Почты); - Опции.Вставить("readonly", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); - - Обработать(Результат, "Dropbox", "ДобавитьПользователейКПапке", "Дополнительный"); - -КонецПроцедуры - -Процедура Dropbox_ОтменитьПубликациюФайла(ПараметрыФункции) - - Токен = ПараметрыФункции["Dropbox_Token"]; - Файл = ПараметрыФункции["Dropbox_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюФайла", Опции); - - // END - - Обработать(Результат, "Dropbox", "ОтменитьПубликациюФайла"); - -КонецПроцедуры - -#КонецОбласти - -#Область Bitrix24 - -Процедура Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыФункции) - - Домен = ПараметрыФункции["Bitrix24_Domain"]; - ClientID = ПараметрыФункции["Bitrix24_ClientID"]; - - Опции = Новый Структура; - Опции.Вставить("domain" , Домен); - Опции.Вставить("clientid", ClientID); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСсылкуАвторизацииПриложения", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСсылкуАвторизацииПриложения"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Bitrix24_ClientID"]; - ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; - Code = ПараметрыФункции["Bitrix24_Code"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , ClientID); - Опции.Вставить("clientsecret", ClientSecret); - Опции.Вставить("code" , Code); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТокен", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьТокен"); - -КонецПроцедуры - -Процедура Bitrix24_ОбновитьТокен(ПараметрыФункции) - - ClientID = ПараметрыФункции["Bitrix24_ClientID"]; - ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; - Refresh = ПараметрыФункции["Bitrix24_Refresh"]; - - Опции = Новый Структура; - Опции.Вставить("clientid" , ClientID); - Опции.Вставить("clientsecret", ClientSecret); - Опции.Вставить("refresh" , Refresh); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОбновитьТокен", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОбновитьТокен"); - -КонецПроцедуры - -Процедура Bitrix24_СерверноеВремя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); - - Обработать(Результат, "Bitrix24", "СерверноеВремя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СерверноеВремя"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьНовость(ПараметрыФункции) - - Текст = "Текст новости"; - Заголовок = "Заголовок новости"; - Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные - - Файлы = Новый Соответствие; - Файлы.Вставить("1.png", Картинка1); - Файлы.Вставить("2.png", Картинка2); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("important", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьНовость", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("text" , Текст); - Опции.Вставить("files", Файлы); - Опции.Вставить("title", Заголовок); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьНовость", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьНовость(ПараметрыФункции) - - Текст = "Новый текст новости"; - Заголовок = "Новый заголовок новости"; - Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - - Файлы = Новый Соответствие; - Файлы.Вставить("1.png", Картинка1); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьНовость", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("text" , Текст); - Опции.Вставить("files" , Файлы); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьНовость"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьНовость(ПараметрыФункции) - - IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьНовость", "Хук"); // SKIP - - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьНовость"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыФункции) - - IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокПросмотревшихВажное", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокПросмотревшихВажное"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьНовости(ПараметрыФункции) - - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьНовости", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьНовости"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьКомментарийНовости(ПараметрыФункции) - - Текст = "Комментарий к новости"; - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьКомментарийНовости", "Хук"); // SKIP - - Текст = "Другой комментарий к новости"; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьКомментарийНовости"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьПолучателейКНовости(ПараметрыФункции) - - Видимость = "UA"; - IDНовости = ПараметрыФункции["Bitrix24_PostID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("vision", Видимость); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьПолучателейКНовости", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("postid", IDНовости); - Опции.Вставить("vision", Видимость); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьПолучателейКНовости"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьЗадачу(ПараметрыФункции) - - // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Час = 3600; - Сутки = 24; - Исполнитель = 1; - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); - СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "2"); - СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); - СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьЗадачу", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьЗадачу", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьЗадачу(ПараметрыФункции) - - // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() - - СтруктураЗадачи = Новый Структура; - СтруктураЗадачи.Вставить("TITLE" , "Другой заголовок задачи"); - СтруктураЗадачи.Вставить("DESCRIPTION", "Другое описание задачи"); - СтруктураЗадачи.Вставить("PRIORITY" , "1"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fields", СтруктураЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fields", СтруктураЗадачи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ПринятьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ПринятьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПринятьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ОтклонитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ОтклонитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтклонитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ЗавершитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ЗавершитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ЗавершитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ВозобновитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ВозобновитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВозобновитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ОтложитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ОтложитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтложитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_НачатьВыполнениеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "НачатьВыполнениеЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "НачатьВыполнениеЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); - - Обработать(Результат, "Bitrix24", "НачатьНаблюдатьЗаЗадачей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "НачатьНаблюдатьЗаЗадачей"); - -КонецПроцедуры - -Процедура Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); - - Обработать(Результат, "Bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПрекратитьНаблюдатьЗаЗадачей"); - -КонецПроцедуры - -Процедура Bitrix24_ПриостановитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ПриостановитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПриостановитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ДелегироватьЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - Опции.Вставить("user", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ДелегироватьЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДелегироватьЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьЗадачуВИзбранное", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьЗадачуВИзбранное"); - -КонецПроцедуры - -Процедура Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); - - Обработать(Результат, "Bitrix24", "УбратьЗадачуИзИзбранного", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УбратьЗадачуИзИзбранного"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьИсториюЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьИсториюЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьИсториюЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокЗадач(ПараметрыФункции) - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - // Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач - Фильтр = Новый Соответствие; - Фильтр.Вставить("CREATED_BY", 1); // Постановщик с ID 1 - Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10 - Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера - - Поля = Новый Массив; - Поля.Добавить("UF_CRM_TASK"); - Поля.Добавить("CREATED_BY"); - - Отступ = 1; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", Фильтр); - Опции.Вставить("select", Поля); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокЗадач", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("offset", Отступ); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокЗадач"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокХранилищ(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокХранилищ", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокХранилищ"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьХранилищеПриложения(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилищеПриложения", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьХранилищеПриложения", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыФункции) - - Наименование2 = "Картинка2.jpg"; - Наименование = "Картинка1.jpg"; - - Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные - Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные - - IDПриемника = 3; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование2); - Опции.Вставить("file" , Картинка2); - Опции.Вставить("storageid", IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); - - Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВХранилище", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("file" , Картинка); - Опции.Вставить("storageid", IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВХранилище", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_HookFileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьФайл", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьФайл"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьКаталогВХранилище(ПараметрыФункции) - - IDХранилища = 3; - Наименование = "Новый каталог"; - Наименование2 = "Новый каталог 2"; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьКаталогВХранилище", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьКаталогВХранилище", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьКаталог(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьКаталог", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьКаталог"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьХранилище(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDХранилища = 3; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьХранилище", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьХранилище"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDХранилища = 3; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСодержимоеХранилища", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСодержимоеХранилища"); - -КонецПроцедуры - -Процедура Bitrix24_ПереименоватьХранилище(ПараметрыФункции) - - Наименование = "Новое имя хранилища"; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDХранилища = ПараметрыФункции["Bitrix24_StorageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("storageid", IDХранилища); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьХранилище", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПереименоватьХранилище"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОКаталоге", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОКаталоге"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьПодкаталог(ПараметрыФункции) - - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - Наименование = "Новый подкаталог"; - Наименование2 = "Новый подкаталог 2"; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьПодкаталог", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьПодкаталог", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_СкопироватьКаталог(ПараметрыФункции) - - IDПриемника = ПараметрыФункции["Bitrix24_HookSubfolderID"]; - IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); - - Обработать(Результат, "Bitrix24", "СкопироватьКаталог", "Хук"); // SKIP - - IDПриемника = ПараметрыФункции["Bitrix24_SubfolderID"]; - IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - // END - - Обработать(Результат, "Bitrix24", "СкопироватьКаталог"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуКаталога", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуКаталога"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраКаталога", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("empty", Истина); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраКаталога"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьДочерниеЭлементыКаталога", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьДочерниеЭлементыКаталога"); - -КонецПроцедуры - -Процедура Bitrix24_ПоместитьКаталогВКорзину(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); - - Обработать(Результат, "Bitrix24", "ПоместитьКаталогВКорзину", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПоместитьКаталогВКорзину"); - -КонецПроцедуры - -Процедура Bitrix24_ВосстановитьКаталог(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); - - Обработать(Результат, "Bitrix24", "ВосстановитьКаталог", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВосстановитьКаталог"); - -КонецПроцедуры - -Процедура Bitrix24_ПереместитьКаталог(ПараметрыФункции) - - IDПриемника = ПараметрыФункции["Bitrix24_HookfolderID"]; - IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); - - Обработать(Результат, "Bitrix24", "ПереместитьКаталог", "Хук"); // SKIP - - IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("tagetid" , IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПереместитьКаталог"); - -КонецПроцедуры - -Процедура Bitrix24_ПереименоватьКаталог(ПараметрыФункции) - - Наименование = "Новый каталог"; - Наименование2 = "Новый каталог 2"; - - IDКаталога2 = ПараметрыФункции["Bitrix24_HookFolderID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога2); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); - - Обработать(Результат, "Bitrix24", "ПереименоватьКаталог", "Хук"); // SKIP - - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПереименоватьКаталог"); - -КонецПроцедуры - -Процедура Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции) - - Наименование2 = "Картинка2.jpg"; - Наименование = "Картинка1.jpg"; - - Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные - Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные - - IDПриемника = ПараметрыФункции["Bitrix24_FolderID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование2); - Опции.Вставить("file" , Картинка2); - Опции.Вставить("folderid", IDПриемника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - - Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВКаталог", "Хук", URL); // SKIP - - IDФайла = Результат["result"]["ID"]; // SKIP - OPI_Bitrix24.УдалитьФайл(URL, IDФайла); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("file" , Картинка); - Опции.Вставить("folderid", IDПриемника); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВКаталог", , URL, Токен); - - IDФайла = Результат["result"]["ID"]; - - OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен); - -КонецПроцедуры - -Процедура Bitrix24_СкопироватьФайл(ПараметрыФункции) - - IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); - - Обработать(Результат, "Bitrix24", "СкопироватьФайл", "Хук"); // SKIP - - IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СкопироватьФайл"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьИнформациюОФайле(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОФайле", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОФайле"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыФункции) - - OPI_Инструменты.Пауза(20); // SKIP - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуФайла", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуФайла"); - -КонецПроцедуры - -Процедура Bitrix24_ПоместитьФайлВКорзину(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); - - Обработать(Результат, "Bitrix24", "ПоместитьФайлВКорзину", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПоместитьФайлВКорзину"); - -КонецПроцедуры - -Процедура Bitrix24_ВосстановитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); - - Обработать(Результат, "Bitrix24", "ВосстановитьФайл", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВосстановитьФайл"); - -КонецПроцедуры - -Процедура Bitrix24_ПереименоватьФайл(ПараметрыФункции) - - Наименование = "Новое имя файла.jpg"; - Наименование2 = "Новое имя файла 2.jpg"; - - IDФайла2 = ПараметрыФункции["Bitrix24_HookFileID"]; - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла2); - Опции.Вставить("title" , Наименование2); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); - - Обработать(Результат, "Bitrix24", "ПереименоватьФайл", "Хук"); // SKIP - - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("title" , Наименование); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПереименоватьФайл"); - -КонецПроцедуры - -Процедура Bitrix24_ПереместитьФайлВКаталог(ПараметрыФункции) - - IDКаталога = ПараметрыФункции["Bitrix24_HookSubFolderID"]; - IDФайла = ПараметрыФункции["Bitrix24_FileID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid", IDКаталога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); - - Обработать(Результат, "Bitrix24", "ПереместитьФайлВКаталог", "Хук"); // SKIP - - IDКаталога = ПараметрыФункции["Bitrix24_SubFolderID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПереместитьФайлВКаталог"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьФайлВЗадачу(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDФайла = ПараметрыФункции["Bitrix24_TaskFileID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьФайлВЗадачу", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьФайлВЗадачу"); - -КонецПроцедуры - -Процедура Bitrix24_ПроверитьДоступКЗадаче(ПараметрыФункции) - - МассивПользователей = Новый Массив; - МассивПользователей.Добавить("1"); - МассивПользователей.Добавить("10"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("users", МассивПользователей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); - - Обработать(Результат, "Bitrix24", "ПроверитьДоступКЗадаче", "Хук", МассивПользователей.Количество()); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("users", МассивПользователей); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПроверитьДоступКЗадаче", , МассивПользователей.Количество()); - -КонецПроцедуры - -Процедура Bitrix24_ОтключитьЗвукЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ОтключитьЗвукЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтключитьЗвукЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ВключитьЗвукЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ВключитьЗвукЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВключитьЗвукЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Текст = "Задача невыполнима, расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - Опции.Вставить("text", Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьКомментарийЗадачи", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Текст = "Задача выполнима, не расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("text" , Текст); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьКомментарийЗадачи", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьКомментарийЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьКомментарийЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьРезультатИзКомментария(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьРезультатИзКомментария", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьРезультатИзКомментария"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьРезультатИзКомментария(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьРезультатИзКомментария", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьРезультатИзКомментария"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокРезультатов(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокРезультатов", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокРезультатов"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокКомментариевЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокКомментариевЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомментарийЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьКомментарийЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомментарийЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьКомментарийЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; - IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; - - Текст = "Задача изменена, не расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьКомментарийЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; - - Текст = "Задача изменена, расходимся"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("comment", IDКомментария); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьКомментарийЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьЗависимостьЗадач(ПараметрыФункции) - - IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; - ТипСвязи = 0; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom", IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype", ТипСвязи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьЗависимостьЗадач", "Хук"); // SKIP - - OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); // SKIP - - IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; - ТипСвязи = 2; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom", IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype", ТипСвязи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьЗависимостьЗадач"); - - OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьЗависимостьЗадач(ПараметрыФункции) - - IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; - ТипСвязи = 0; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); // SKIP - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom", IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype", ТипСвязи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьЗависимостьЗадач", "Хук"); // SKIP - - IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; - IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; - ТипСвязи = 2; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); // SKIP - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("taskfrom", IDИсточника); - Опции.Вставить("taskto" , IDПриемника); - Опции.Вставить("linktype", ТипСвязи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьЗависимостьЗадач"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьСтадиюКанбана(ПараметрыФункции) - - Наименование = "Новая стадия"; - Цвет = "0026FF"; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("color" , Цвет); - Опции.Вставить("prevstage", 6); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьСтадиюКанбана", "Хук", ПараметрыФункции); // SKIP - - Наименование = "Новая стадия 2"; - Цвет = "0026FF"; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПредыдущей = Результат["result"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("color" , Цвет); - Опции.Вставить("prevstage", IDПредыдущей); - Опции.Вставить("admin" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьСтадиюКанбана", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьСтадиюКанбана(ПараметрыФункции) - - IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("stage", IDСтадии); - Опции.Вставить("admin", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьСтадиюКанбана", "Хук"); // SKIP - - IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("stage", IDСтадии); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьСтадиюКанбана"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтадииКанбана(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("admin", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтадииКанбана", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтадииКанбана"); - -КонецПроцедуры - -Процедура Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыФункции) - - IDЗадачи = ПараметрыФункции["Bitrix24_KanbanTaskID"]; - IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("stage", IDСтадии); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); - - Обработать(Результат, "Bitrix24", "ПеренестиЗадачуВСтадиюКанбана", "Хук"); // SKIP - - IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("stage", IDСтадии); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПеренестиЗадачуВСтадиюКанбана"); - - OPI_Bitrix24.ПеренестиЗадачуВСтадиюКанбана(URL, IDЗадачи, 2, , , Токен); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьСтадиюКанбана(ПараметрыФункции) - - Наименование = "Новое имя стадии стадии"; - Цвет = "000000"; - IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title", Наименование); - Опции.Вставить("stage", IDСтадии); - Опции.Вставить("color", Цвет); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьСтадиюКанбана", "Хук"); // SKIP - - Наименование = "Новое имя стадии стадии 2"; - Цвет = "000000"; - IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("stage" , IDСтадии); - Опции.Вставить("color" , Цвет); - Опции.Вставить("prevstage", 6); - Опции.Вставить("admin" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьСтадиюКанбана"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Текст = "Пункт чек-листа"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("text" , Текст); - Опции.Вставить("complete", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьЭлементЧеклистаЗадачи", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("text" , Текст); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьЭлементЧеклистаЗадачи", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Текст = "Новый текст пункта чек-листа"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьЭлементЧеклистаЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - Опции.Вставить("text" , Текст); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьЭлементЧеклистаЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьЭлементЧеклистаЗадачи", "Хук"); // SKIP - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьЭлементЧеклистаЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьЧеклистЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьЧеклистЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьЭлементЧеклистаЗадачи", "Хук"); // SKIP - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьЭлементЧеклистаЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", "Хук"); // SKIP - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВыполнитьЭлементЧеклистаЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", "Хук"); // SKIP - - IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; - IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("element", IDЭлемента); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВозобновитьЭлементЧеклистаЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - - Время = 3600; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("amount", Время); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьТрудозатратыЗадачи", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Текст = "Трудозатраты по обработке"; - IDПользователя = 10; - Время = 7200; - ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("amount", Время); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("date" , ДатаУстановки); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьТрудозатратыЗадачи", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; - - Текст = "Забытый в прошлый раз текст"; - Время = 4800; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record", IDЗаписи); - Опции.Вставить("amount", Время); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьТрудозатратыЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; - - Текст = "Новые трудозатраты по обработке"; - Время = 4800; - ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record", IDЗаписи); - Опции.Вставить("amount", Время); - Опции.Вставить("text" , Текст); - Опции.Вставить("date" , ДатаУстановки); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьТрудозатратыЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record", IDЗаписи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьТрудозатратыЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record", IDЗаписи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьТрудозатратыЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record", IDЗаписи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьТрудозатратыЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("record", IDЗаписи); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьТрудозатратыЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task", IDЗадачи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокТрудозатратЗадачи", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("task" , IDЗадачи); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокТрудозатратЗадачи"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьПланЗадачНаДень", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьПланЗадачНаДень"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьЧат(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); - - B64Картинка = ПолучитьBase64СтрокуИзДвоичныхДанных(Картинка); - - МассивУчастников = Новый Массив; - МассивУчастников.Добавить(10); - МассивУчастников.Добавить(1); - - СтруктураЧата = Новый Структура; - СтруктураЧата.Вставить("TYPE" , "OPEN"); - СтруктураЧата.Вставить("TITLE" , "Новый чат"); - СтруктураЧата.Вставить("DESCRIPTION", "Это новый чат"); - СтруктураЧата.Вставить("COLOR" , "GREEN"); - СтруктураЧата.Вставить("MESSAGE" , "Добро пожаловать в новый чат"); - СтруктураЧата.Вставить("USERS" , МассивУчастников); - СтруктураЧата.Вставить("AVATAR" , B64Картинка); - СтруктураЧата.Вставить("OWNER_ID" , 1); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьЧат", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - СтруктураЧата = Новый Структура; - СтруктураЧата.Вставить("TYPE" , "CHAT"); - СтруктураЧата.Вставить("TITLE", "Закрытый чат"); - СтруктураЧата.Вставить("USERS", МассивУчастников); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураЧата); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьЧат", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ПокинутьЧат(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); - - Обработать(Результат, "Bitrix24", "ПокинутьЧат", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПокинутьЧат"); - -КонецПроцедуры - -Процедура Bitrix24_ИсключитьПользователяИзЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("user", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); - - Обработать(Результат, "Bitrix24", "ИсключитьПользователяИзЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИсключитьПользователяИзЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьПользователейВЧат(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - IDПользователей = Новый Массив; - IDПользователей.Добавить(10); - IDПользователей.Добавить(12); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("users", IDПользователей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); - - Обработать(Результат, "Bitrix24", "ДобавитьПользователейВЧат", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("users", IDПользователя); - Опции.Вставить("hide" , Истина); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ДобавитьПользователейВЧат"); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьЗаголовокЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Заголовок = "Новый заголовок чата"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("title", Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьЗаголовокЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Заголовок = "Другой заголовок чата"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("title", Заголовок); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьЗаголовокЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьЦветЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Цвет = "AZURE"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("color", Цвет); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьЦветЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Цвет = "PURPLE"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("color", Цвет); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьЦветЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьКартинкуЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Картинка = ПараметрыФункции["Picture2"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьКартинкуЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("picture", Картинка); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьКартинкуЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ОтключитьУведомленияЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); - - Обработать(Результат, "Bitrix24", "ОтключитьУведомленияЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтключитьУведомленияЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ВключитьУведомленияЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); - - Обработать(Результат, "Bitrix24", "ВключитьУведомленияЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ВключитьУведомленияЧата"); - -КонецПроцедуры - -Процедура Bitrix24_СменитьВладельцаЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - Опции.Вставить("user", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); - - Обработать(Результат, "Bitrix24", "СменитьВладельцаЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СменитьВладельцаЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = "chat4"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокСообщенийЧата", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("first", 0); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокСообщенийЧата", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - СтрокаЧата = "chat" + IDЧата; - - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , СтрокаЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); - - Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакПрочитанное", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакПрочитанное"); - -КонецПроцедуры - -Процедура Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - - СтрокаЧата = "chat" + IDЧата; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , СтрокаЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); - - Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакНепрочитанное", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакНепрочитанное"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьДиалог(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - - СтрокаЧата = "chat" + IDЧата; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", СтрокаЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьДиалог", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьДиалог"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - - СтрокаЧата = "chat" + IDЧата; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", СтрокаЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейДиалога", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейДиалога"); - -КонецПроцедуры - -Процедура Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - - СтрокаЧата = "chat" + IDЧата; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", СтрокаЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); - - Обработать(Результат, "Bitrix24", "ОтправитьУведомлениеОВводе", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтправитьУведомлениеОВводе"); - -КонецПроцедуры - -Процедура Bitrix24_ПрочитатьВсе(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); - - Обработать(Результат, "Bitrix24", "ПрочитатьВсе", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПрочитатьВсе"); - -КонецПроцедуры - -Процедура Bitrix24_ОтправитьСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - - СтрокаЧата = "chat" + IDЧата; - Текст = "Текст сообщения"; - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , СтрокаЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks", Вложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); - - Обработать(Результат, "Bitrix24", "ОтправитьСообщение", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтправитьСообщение", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьСообщение", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks" , Вложения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьСообщение"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьСообщение", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьСообщение"); - -КонецПроцедуры - -Процедура Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); - - Обработать(Результат, "Bitrix24", "УстановитьРеакциюНаСообщение", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УстановитьРеакциюНаСообщение"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьКаталогФайловЧата", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьКаталогФайловЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ОтправитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; - Файл = ПараметрыФункции["Document"]; // Двоичные данные, URL или путь к файлу - Описание = "Очень важный файл"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat", IDЧата); - - Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - IDКаталога = Каталог["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , "Важный документ.docx"); - Опции.Вставить("file" , Файл); - Опции.Вставить("folderid", IDКаталога); - - ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - IDФайла = ЗагруженныйФайл["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("description", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); - - Обработать(Результат, "Bitrix24", "ОтправитьФайл", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("token", Токен); - - Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); - IDКаталога = Каталог["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , "Важный документ.docx"); - Опции.Вставить("file" , Файл); - Опции.Вставить("folderid", IDКаталога); - Опции.Вставить("token" , Токен); - - ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); - IDФайла = ЗагруженныйФайл["result"]["ID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("fileid" , IDФайла); - Опции.Вставить("description", Описание); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ОтправитьФайл"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - МассивПользователей = Новый Массив; - - МассивПользователей.Добавить(1); - МассивПользователей.Добавить(10); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users", МассивПользователей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьПользователей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователей = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users", IDПользователей); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьПользователей"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтатусПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтатусПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтатусПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_УстановитьСтатусПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - Статус = "dnd"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("status", Статус); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); - - Обработать(Результат, "Bitrix24", "УстановитьСтатусПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Статус = "away"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("status", Статус); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УстановитьСтатусПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьПерсональноеУведомление(ПараметрыФункции) - - IDПользователя = 1; - - URL = ПараметрыФункции["Bitrix24_URL"]; - Текст = "Текст сообщения"; - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks", Вложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьПерсональноеУведомление", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Тег = "Новый"; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("tag" , Тег); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьПерсональноеУведомление", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьСистемноеУведомление(ПараметрыФункции) - - IDПользователя = 1; - - URL = ПараметрыФункции["Bitrix24_URL"]; - Текст = "Текст сообщения"; - Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; - Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; - - Вложения = Новый Массив; - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); - Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("blocks", Вложения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьСистемноеУведомление", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Тег = "Новый"; - IDПользователя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("text" , Текст); - Опции.Вставить("tag" , Тег); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьСистемноеУведомление", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьУведомление(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDУведомления = ПараметрыФункции["Bitrix24_PersonalHookNotifyID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("notif", IDУведомления); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьУведомление", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDУведомления = ПараметрыФункции["Bitrix24_PersonalNotifyID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("notif", IDУведомления); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьУведомление"); - -КонецПроцедуры - -Процедура Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Тип = "date"; - Имя = "BIRTHDAY_FIELD"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("type" , Тип); - Опции.Вставить("fieldname", Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Тип = "string"; - Имя = "TEXT_FIELD"; - ВнешнийКод = "BITRIX_TEXT_FIELD"; - Заголовок = "Поле для текста"; - Подпись = Новый Структура("en,ru", "Some field", "Некоторое поле"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("type" , Тип); - Опции.Вставить("fieldname" , Имя); - Опции.Вставить("externalid", ВнешнийКод); - Опции.Вставить("title" , Заголовок); - Опции.Вставить("label" , Подпись); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; - Заголовок = "Новый заголовок"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - Опции.Вставить("title" , Заголовок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; - ВнешнийКод = "NEW_TEXT_FIELD"; - Подпись = Новый Структура("en,ru", "Updated field", "Измененное поле"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid" , IDПоля); - Опции.Вставить("externalid", ВнешнийКод); - Опции.Вставить("label" , Подпись); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fieldid", IDПоля); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_СоздатьПодразделение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Наименование = "Главное подразделение"; - IDРодителя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("parentid", IDРодителя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьПодразделение", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Наименование = "Подчиненное подразделение"; - IDРодителя = ПараметрыФункции["Bitrix24_HookDepID"]; - IDРуководителя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("title" , Наименование); - Опции.Вставить("parentid", IDРодителя); - Опции.Вставить("headid" , IDРуководителя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьПодразделение", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьПодразделение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; - IDРодителя = 7; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - Опции.Вставить("parentid", IDРодителя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьПодразделение", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; - Наименование = "Новое подразделение"; - IDРодителя = 1; - IDРуководителя = 10; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid" , IDПодразделения); - Опции.Вставить("title" , Наименование); - Опции.Вставить("parentid", IDРодителя); - Опции.Вставить("headid" , IDРуководителя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьПодразделение"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьПодразделение(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid", IDПодразделения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьПодразделение", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid", IDПодразделения); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьПодразделение"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьПодразделения(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("depid", IDПодразделения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьПодразделения", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDРуководителя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headid", IDРуководителя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьПодразделения"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьТекущегоПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьТекущегоПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьТекущегоПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; - - // Полную структуру можно получить функцией ПолучитьСтруктуруПользователя - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьПользователя", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("NAME" , "Виталий"); - СтруктураПользователя.Вставить("LAST_NAME" , "Альпака"); - СтруктураПользователя.Вставить("PERSONAL_MOBILE", "88003553535"); - СтруктураПользователя.Вставить("UF_DEPARTMENT" , 1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьПользователя", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; - - // Полную структуру можно получить функцией ПолучитьСтруктуруПользователя - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("UF_DEPARTMENT", 1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fields", СтруктураПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("EMAIL" , Почта); - СтруктураПользователя.Вставить("NAME" , "Олег"); - СтруктураПользователя.Вставить("LAST_NAME" , "Лама"); - СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fields", СтруктураПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьСтатусПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fire" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьСтатусПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("fire" , Истина); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьСтатусПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_НайтиПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - СтруктураФильтра = Новый Структура; - СтруктураФильтра.Вставить("NAME" , "Виталий"); - СтруктураФильтра.Вставить("LAST_NAME" , "Альпака"); - СтруктураФильтра.Вставить("WORK_POSITION" , "DevOps инженер"); - СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Отдел маркетинга"); - СтруктураФильтра.Вставить("USER_TYPE" , "employee"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", СтруктураФильтра); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); - - Обработать(Результат, "Bitrix24", "НайтиПользователей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - СтруктураФильтра = Новый Структура; - СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Битрикс"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "НайтиПользователей"); - -КонецПроцедуры - -Процедура Bitrix24_НачатьУчетВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); - - Час = 3600; - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - Время = OPI_Инструменты.ПолучитьТекущуюДату() - Час; - Отчет = "Опоздание"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("time" , Время); - Опции.Вставить("report", Отчет); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_ЗавершитьУчетВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - Время = OPI_Инструменты.ПолучитьТекущуюДату(); - Отчет = "Отгул"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("time" , Время); - Опции.Вставить("report", Отчет); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); - -КонецПроцедуры - -Процедура Bitrix24_ПриостановитьУчетВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDПользователя = 1; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("userid", IDПользователя); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); - - // END - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЛидов", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраЛидов"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруЛида(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЛида", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЛида"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьЛид(ПараметрыФункции) - - МассивПочт = Новый Массив; - МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); - МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); - - МассивНомеров = Новый Массив; - МассивНомеров.Добавить(Новый Структура("VALUE,VALUE_TYPE", "88005553535", "WORK")); - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ADDRESS" , "ул. Пушкина, д. 10"); - СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Россия"); - СтруктураПолей.Вставить("EMAIL" , МассивПочт); - СтруктураПолей.Вставить("NAME" , "Петр"); - СтруктураПолей.Вставить("LAST_NAME" , "Петров"); - СтруктураПолей.Вставить("PHONE" , МассивНомеров); - СтруктураПолей.Вставить("TITLE" , "Мегаклиент"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьЛид", "Хук", ПараметрыФункции); // SKIP - - СтруктураПолей.Вставить("NAME" , "Иван"); - СтруктураПолей.Вставить("LAST_NAME", "Иванов"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьЛид", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьЛид(ПараметрыФункции) - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ADDRESS" , "ул. Лермонтова, д. 20"); - СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Беларусь"); - СтруктураПолей.Вставить("TITLE" , "Суперклиент"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьЛид", "Хук"); // SKIP - - СтруктураПолей.Вставить("NAME" , "Евгений"); - СтруктураПолей.Вставить("LAST_NAME", "Евгеньев"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьЛид"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьЛид(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead", IDЛида); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьЛид", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьЛид"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьЛид(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead", IDЛида); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьЛид", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("lead" , IDЛида); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьЛид"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокЛидов(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокЛидов", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Фильтр = Новый Структура; - Фильтр.Вставить("TITLE" , "Мегаклиент"); - Фильтр.Вставить("HAS_EMAIL", "Y"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", Фильтр); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокЛидов"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСделок", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСделок"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруСделки(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСделки", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСделки"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьСделку(ПараметрыФункции) - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("TITLE" , "Плановая продажа"); - СтруктураПолей.Вставить("TYPE_ID" , "GOODS"); - СтруктураПолей.Вставить("STAGE_ID" , "NEW"); - СтруктураПолей.Вставить("COMPANY_ID" , 1); - СтруктураПолей.Вставить("CONTACT_ID" , 3); - СтруктураПолей.Вставить("OPENED" , "Y"); - СтруктураПолей.Вставить("ASSIGNED_BY_ID", 1); - СтруктураПолей.Вставить("PROBABILITY" , 30); - СтруктураПолей.Вставить("CURRENCY_ID" , "USD"); - СтруктураПолей.Вставить("OPPORTUNITY" , 5000); - СтруктураПолей.Вставить("CATEGORY_ID" , 5); - СтруктураПолей.Вставить("BEGINDATE" , "2024-01-01"); - СтруктураПолей.Вставить("CLOSEDATE" , "2030-01-01"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьСделку", "Хук", ПараметрыФункции); // SKIP - - СтруктураПолей.Вставить("TITLE" , "Другая сделка"); - СтруктураПолей.Вставить("CLOSEDATE", "2031-01-01"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьСделку", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьСделку(ПараметрыФункции) - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("TITLE" , "Продажа в RUB"); - СтруктураПолей.Вставить("CURRENCY_ID", "RUB"); - СтруктураПолей.Вставить("OPPORTUNITY", 50000); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("fields", СтруктураПолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьСделку", "Хук"); // SKIP - - СтруктураПолей.Вставить("TITLE" , "Будущая сделка в RUB"); - СтруктураПолей.Вставить("BEGINDATE", "2025-01-01"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСделки = ПараметрыФункции["Bitrix24_DealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("fields", СтруктураПолей); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьСделку"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСделку(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal", IDСделки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСделку", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСделку"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьСделку(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal", IDСделки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьСделку", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСделки = ПараметрыФункции["Bitrix24_DealID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("deal" , IDСделки); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьСделку"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокСделок(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокСделок", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Фильтр = Новый Структура; - Фильтр.Вставить("TITLE" , "Продажа в RUB"); - Фильтр.Вставить("CURRENCY_ID", "RUB"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("filter", Фильтр); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокСделок"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЗадач", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраЗадач"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКомментария", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКомментария"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруЧата(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЧата", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЧата"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьБлокКартинки(ПараметрыФункции) - - Наименование = "Картинка"; - URL = ПараметрыФункции["Picture"]; - - Опции = Новый Структура; - Опции.Вставить("title", Наименование); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьБлокКартинки"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьБлокФайла(ПараметрыФункции) - - Наименование = "Картинка"; - URL = ПараметрыФункции["Document"]; - - Опции = Новый Структура; - Опции.Вставить("title", Наименование); - Опции.Вставить("url" , URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьБлокФайла"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраПользователей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраПользователей"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьКалендарь(ПараметрыФункции) - - IDПользователя = 1; - - СтруктураКалендаря = Новый Структура; - СтруктураКалендаря.Вставить("type" , "user"); - СтруктураКалендаря.Вставить("ownerId" , IDПользователя); - СтруктураКалендаря.Вставить("name" , "Новый календарь"); - СтруктураКалендаря.Вставить("description", "Мой новый календарь"); - СтруктураКалендаря.Вставить("color" , "#FFFFFF"); - СтруктураКалендаря.Вставить("text_color" , "#000000"); - - СтруктураЭкспорта = Новый Структура; - СтруктураЭкспорта.Вставить("ALLOW", "Истина"); - СтруктураЭкспорта.Вставить("SET" , "all"); - - СтруктураКалендаря.Вставить("export", СтруктураЭкспорта); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураКалендаря); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьКалендарь", "Хук", ПараметрыФункции); // SKIP - - СтруктураКалендаря.Вставить("name" , "Другой календарь"); - СтруктураКалендаря.Вставить("description", "Мой другой новый календарь"); - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураКалендаря); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьКалендарь", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьКалендарь(ПараметрыФункции) - - IDПользователя = 1; - - СтруктураКалендаря = Новый Структура; - СтруктураКалендаря.Вставить("type" , "user"); - СтруктураКалендаря.Вставить("ownerId" , IDПользователя); - СтруктураКалендаря.Вставить("name" , "Новое имя календаря"); - СтруктураКалендаря.Вставить("description", "Этот календарь был изменен"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("fields" , СтруктураКалендаря); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьКалендарь", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("fields" , СтруктураКалендаря); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьКалендарь"); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьКалендарь(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - IDВладельца = 1; - Тип = "user"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьКалендарь", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("calendar", IDКалендаря); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьКалендарь"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКалендаря"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКалендаря", "Пустая"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСписокКалендарей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDВладельца = 1; - Тип = "user"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner", IDВладельца); - Опции.Вставить("type" , Тип); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСписокКалендарей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner", IDВладельца); - Опции.Вставить("type" , Тип); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСписокКалендарей"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруНастроекКалендаря", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруНастроекКалендаря"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКалендаря(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", "Пустая"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря"); - -КонецПроцедуры - -Процедура Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) - - СтруктураКалендаря = Новый Структура; - СтруктураКалендаря.Вставить("view" , "month"); - СтруктураКалендаря.Вставить("showDeclined" , "Y"); - СтруктураКалендаря.Вставить("collapseOffHours" , "N"); - СтруктураКалендаря.Вставить("showCompletedTasks", "N"); - - URL = ПараметрыФункции["Bitrix24_URL"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("settings", СтруктураКалендаря); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("settings", СтруктураКалендаря); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УстановитьПользовательскиеНастройкиКалендаря"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - - Пользователь = 1; - - Неделя = 604800; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - ДатаНачала = ТекущаяДата; - ДатаОкончания = ТекущаяДата + Неделя; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users", Пользователь); - Опции.Вставить("from" , ДатаНачала); - Опции.Вставить("to" , ДатаОкончания); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьЗанятостьПользователей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("users", Пользователь); - Опции.Вставить("from" , ДатаНачала); - Опции.Вставить("to" , ДатаОкончания); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьЗанятостьПользователей"); - -КонецПроцедуры - -Процедура Bitrix24_СоздатьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; - - Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; - Час = 3600; - - СтруктураСобытия = Новый Структура; - - СтруктураСобытия.Вставить("type" , "user"); - СтруктураСобытия.Вставить("ownerId" , 1); - СтруктураСобытия.Вставить("from" , XMLСтрока(Завтра)); - СтруктураСобытия.Вставить("to" , XMLСтрока(Завтра + Час)); - СтруктураСобытия.Вставить("section" , IDКалендаря); - СтруктураСобытия.Вставить("name" , "Новое событие"); - СтруктураСобытия.Вставить("skip_time" , "N"); - СтруктураСобытия.Вставить("timezone_from", "Europe/Minsk"); - СтруктураСобытия.Вставить("timezone_to" , "Europe/Minsk"); - СтруктураСобытия.Вставить("description" , "Описание события"); - СтруктураСобытия.Вставить("color" , "%23000000>"); - СтруктураСобытия.Вставить("text_color" , "%23FFFFFF"); - СтруктураСобытия.Вставить("accessibility", "quest"); - СтруктураСобытия.Вставить("importance" , "normal"); - СтруктураСобытия.Вставить("private_event", "Y"); - - СтруктураПовторяемости = Новый Структура; - СтруктураПовторяемости.Вставить("FREQ" , "DAILY"); - СтруктураПовторяемости.Вставить("COUNT" , 3); - СтруктураПовторяемости.Вставить("INTERVAL", 10); - - МассивДней = Новый Массив; - МассивДней.Добавить("SA"); - МассивДней.Добавить("MO"); - - СтруктураПовторяемости.Вставить("BYDAY", МассивДней); - СтруктураПовторяемости.Вставить("UNTIL", XMLСтрока(Завтра + Час * 24 * 10)); - - СтруктураСобытия.Вставить("rrule" , СтруктураПовторяемости); - СтруктураСобытия.Вставить("is_meeting", "Y"); - СтруктураСобытия.Вставить("location" , "Офис"); - - МассивНапоминаний = Новый Массив; - - СтруктураНапоминания = Новый Структура; - СтруктураНапоминания.Вставить("type" , "day"); - СтруктураНапоминания.Вставить("count", 1); - - МассивНапоминаний.Добавить(СтруктураНапоминания); - - СтруктураСобытия.Вставить("remind" , МассивНапоминаний); - СтруктураСобытия.Вставить("attendees", СтрРазделить("1,10", ",")); - СтруктураСобытия.Вставить("host" , 1); - - СтруктураВстречи = Новый Структура; - СтруктураВстречи.Вставить("notify" , "Y"); - СтруктураВстречи.Вставить("reinvite" , "Y"); - СтруктураВстречи.Вставить("allow_invite", "N"); - СтруктураВстречи.Вставить("hide_guests" , "N"); - - СтруктураСобытия.Вставить("meeting", СтруктураВстречи); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "СоздатьСобытиеКалендаря", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - СтруктураСобытия.Вставить("section", IDКалендаря); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("fields", СтруктураСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "СоздатьСобытиеКалендаря", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - СтруктураСобытия = Новый Структура; - - СтруктураСобытия.Вставить("ownerId" , 1); - СтруктураСобытия.Вставить("type" , "user"); - СтруктураСобытия.Вставить("name" , "Измененное событие"); - СтруктураСобытия.Вставить("description" , "Новое описание события"); - СтруктураСобытия.Вставить("importance" , "low"); - СтруктураСобытия.Вставить("private_event", "Y"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("fields", СтруктураСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ИзменитьСобытиеКалендаря", "Хук", ПараметрыФункции); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("fields", СтруктураСобытия); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ИзменитьСобытиеКалендаря", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Bitrix24_УдалитьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event", IDСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "УдалитьСобытиеКалендаря", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event", IDСобытия); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УдалитьСобытиеКалендаря"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event", IDСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСобытиеКалендаря", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event", IDСобытия); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСобытиеКалендаря"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСобытияКалендарей(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDВладельца = 1; - Тип = "user"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner", IDВладельца); - Опции.Вставить("type" , Тип); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСобытияКалендарей", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - IDКалендаря1 = ПараметрыФункции["Bitrix24_HookCalendarID"]; - IDКалендаря2 = ПараметрыФункции["Bitrix24_CalendarID"]; - - Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; - Послезавтра = Завтра + 86400; - - МассивКалендарей = Новый Массив; - МассивКалендарей.Добавить(IDКалендаря1); - МассивКалендарей.Добавить(IDКалендаря2); - - Фильтр = Новый Структура; - Фильтр.Вставить("from" , Завтра); - Фильтр.Вставить("to" , Послезавтра); - Фильтр.Вставить("section", МассивКалендарей); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("owner" , IDВладельца); - Опции.Вставить("type" , Тип); - Опции.Вставить("filter", Фильтр); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСобытияКалендарей"); - -КонецПроцедуры - -Процедура Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - Статус = "Y"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("status", Статус); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); - - Обработать(Результат, "Bitrix24", "УстановитьСтатусУчастияПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event" , IDСобытия); - Опции.Вставить("status", Статус); - Опции.Вставить("token" , Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "УстановитьСтатусУчастияПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["Bitrix24_URL"]; - IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event", IDСобытия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтатусУчастияПользователя", "Хук"); // SKIP - - URL = ПараметрыФункции["Bitrix24_Domain"]; - Токен = ПараметрыФункции["Bitrix24_Token"]; - IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("event", IDСобытия); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтатусУчастияПользователя"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСобытияКалендаря"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСобытияКалендаря", "Пустая"); - -КонецПроцедуры - -Процедура Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); - - // END - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); - - Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", "Пустая"); - -КонецПроцедуры - -#КонецОбласти - -#Область VKTeams - -Процедура VKTeams_ПроверитьТокен(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПроверитьТокен", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПроверитьТокен"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьСобытия(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDПоследнего = 0; - - Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл - - Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3); - - Обработать(Результат, "VKTeams", "ПолучитьСобытия"); // SKIP - - События = Результат["events"]; - - // Обработка событий... - - Если Не События.Количество() = 0 Тогда - - IDПоследнего = События[События.ВГраница()]["eventId"]; - - КонецЕсли; - - КонецЦикла; - - // END - - OPI_Инструменты.Пауза(3); - -КонецПроцедуры - -Процедура VKTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - Текст = "Текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "VKTeams", "ОтправитьТекстовоеСообщение", "Простое", ПараметрыФункции); // SKIP - - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; - Текст = "Полужирный текст сообщения"; - Разметка = "HTML"; - - Клавиатура = Новый Массив; - МассивСтрокиКнопок = Новый Массив; - - МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка1", "НажатиеКнопки1", , "attention")); - - МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка2", , "https://openintegrations.dev")); - - // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP - Клавиатура.Добавить(МассивСтрокиКнопок); - Клавиатура.Добавить(МассивСтрокиКнопок); - // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("reply" , IDЦитируемого); - Опции.Вставить("keyboard", Клавиатура); - Опции.Вставить("parsemod", Разметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); - -КонецПроцедуры - -Процедура VKTeams_ПереслатьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - IDЧатаИсточника = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("fromid" , IDЧатаИсточника); - Опции.Вставить("chatid" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); - - Обработать(Результат, "VKTeams", "ПереслатьСообщение", "Простое"); // SKIP - - Текст = "Дополнительный текст"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("fromid" , IDЧатаИсточника); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПереслатьСообщение"); - -КонецПроцедуры - -Процедура VKTeams_ОтправитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - Текст = "Подпись к файлу"; - - Файл = ПараметрыФункции["Document"]; // URL - ФайлПуть = ПолучитьИмяВременногоФайла("docx"); // Путь - - КопироватьФайл(Файл, ФайлПуть); - - ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); - - Обработать(Результат, "VKTeams", "ОтправитьФайл", "URL", ПараметрыФункции); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , ФайлПуть); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); - - Обработать(Результат, "VKTeams", "ОтправитьФайл", "Путь", ПараметрыФункции); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("file" , ФайлДД); - Опции.Вставить("text" , Текст); - Опции.Вставить("filename", "ВажныйДокумент.docx"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); - - // END - - Обработать(Результат, "VKTeams", "ОтправитьФайл", , ПараметрыФункции); - - OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура VKTeams_ПереслатьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - IDФайла = ПараметрыФункции["VkTeams_FileID"]; - Текст = "Подпись к файлу"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("fileid", IDФайла); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьФайл", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПереслатьФайл"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьИнформациюОФайле(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDФайла = ПараметрыФункции["VkTeams_FileID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОФайле", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПолучитьИнформациюОФайле"); - -КонецПроцедуры - -Процедура VKTeams_ИзменитьТекстСообщения(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); - - Обработать(Результат, "VKTeams", "ИзменитьТекстСообщения", "Путь"); // SKIP - - Текст = "Новый полужирный текст сообщения"; - Разметка = "HTML"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - Опции.Вставить("text" , Текст); - Опции.Вставить("parsemod" , Разметка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); - - // END - - Обработать(Результат, "VKTeams", "ИзменитьТекстСообщения"); - -КонецПроцедуры - -Процедура VKTeams_УдалитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УдалитьСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "УдалитьСообщение"); - -КонецПроцедуры - -Процедура VKTeams_ОтправитьГолосовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; - - Файл = ПараметрыФункции["Audio2"]; // URL - ФайлПуть = ПолучитьИмяВременногоФайла("m4a"); // Путь - - КопироватьФайл(Файл, ФайлПуть); - - ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); - - Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", "URL", ПараметрыФункции); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , ФайлПуть); - Опции.Вставить("reply" , IDЦитируемого); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); - - Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", "Путь", ПараметрыФункции); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , ФайлДД); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", , ПараметрыФункции); - - OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура VKTeams_ПереслатьГолосовоеСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - IDФайла = ПараметрыФункции["VkTeams_VoiceID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("fileid", IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьГолосовоеСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПереслатьГолосовоеСообщение"); - -КонецПроцедуры - -Процедура VKTeams_ИсключитьПользователейЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("members", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИсключитьПользователейЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ИсключитьПользователейЧата"); - -КонецПроцедуры - -Процедура VKTeams_ИзменитьАватарЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Файл = ПараметрыФункции["Picture3"]; // URL - ФайлПуть = ПолучитьИмяВременногоФайла("png"); // Путь - - КопироватьФайл(Файл, ФайлПуть); - - ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , Файл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); - - Обработать(Результат, "VKTeams", "ИзменитьАватарЧата", "URL"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , ФайлПуть); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); - - Обработать(Результат, "VKTeams", "ИзменитьАватарЧата", "Путь"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("file" , ФайлДД); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ИзменитьАватарЧата"); - - OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьИнформациюОЧате(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОЧате", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПолучитьИнформациюОЧате"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьАдминистраторовЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьАдминистраторовЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПолучитьАдминистраторовЧата"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьПользователейЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьПользователейЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПолучитьПользователейЧата"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗаблокированныхПользователейЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПолучитьЗаблокированныхПользователейЧата"); - -КонецПроцедуры - -Процедура VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗапросыВступленияЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ПолучитьЗапросыВступленияЧата"); - -КонецПроцедуры - -Процедура VKTeams_ЗаблокироватьПользователяЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("userid" , Пользователь); - Опции.Вставить("dellast", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗаблокироватьПользователяЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "ЗаблокироватьПользователяЧата"); - -КонецПроцедуры - -Процедура VKTeams_РазблокироватьПользователяЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("userid", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "РазблокироватьПользователяЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "РазблокироватьПользователяЧата"); - -КонецПроцедуры - -Процедура VKTeams_ЗакрепитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗакрепитьСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "ЗакрепитьСообщение"); - -КонецПроцедуры - -Процедура VKTeams_ОткрепитьСообщение(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid" , IDЧата); - Опции.Вставить("messageid", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОткрепитьСообщение", Опции); - - // END - - Обработать(Результат, "VKTeams", "ОткрепитьСообщение"); - -КонецПроцедуры - -Процедура VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("userid", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); - - Обработать(Результат, "VKTeams", "ОдобритьЗаявкуНаВступление", "Один"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); - - // END - - Обработать(Результат, "VKTeams", "ОдобритьЗаявкуНаВступление"); - -КонецПроцедуры - -Процедура VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Пользователь = 1011987091; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("userid", Пользователь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); - - Обработать(Результат, "VKTeams", "ОтклонитьЗаявкуНаВступление", "Один"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); - - // END - - Обработать(Результат, "VKTeams", "ОтклонитьЗаявкуНаВступление"); - -КонецПроцедуры - -Процедура VKTeams_УстановитьЗаголовокЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Текст = "Новый заголовок"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьЗаголовокЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "УстановитьЗаголовокЧата"); - -КонецПроцедуры - -Процедура VKTeams_УстановитьОписаниеЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Текст = "Новое описание"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьОписаниеЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "УстановитьОписаниеЧата"); - -КонецПроцедуры - -Процедура VKTeams_УстановитьПравилаЧата(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; - Текст = "Текст новых правил"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("chatid", IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); - - // END - - Обработать(Результат, "VKTeams", "УстановитьПравилаЧата"); - -КонецПроцедуры - -Процедура VKTeams_ОтветитьНаСобытиеКлавиатуры(ПараметрыФункции) - - Токен = ПараметрыФункции["VkTeams_Token"]; - IDПоследнего = 0; - - Для Н = 1 По 5 Цикл - - Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3); - События = Результат["events"]; - - Если Не События.Количество() = 0 Тогда - - Для Каждого Событие Из События Цикл - - ДанныеСобытия = Событие["payload"]; - - Если ДанныеСобытия["callbackData"] = "НажатиеКнопки1" Тогда - - IDСобытия = ДанныеСобытия["queryId"]; - Результат = OPI_VKTeams.ОтветитьНаСобытиеКлавиатуры(Токен, IDСобытия, "Получено!"); - - Обработать(Результат, "VKTeams", "ОтветитьНаСобытиеКлавиатуры"); // SKIP - - КонецЕсли; - - КонецЦикла; - - IDПоследнего = События[События.ВГраница()]["eventId"]; - - КонецЕсли; - - КонецЦикла; - - // END - - OPI_Инструменты.Пауза(3); - -КонецПроцедуры - -Процедура VKTeams_СформироватьКнопкуДействия(ПараметрыФункции) - - Клавиатура = Новый Массив; - МассивСтрокиКнопок = Новый Массив; - - МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка1", "НажатиеКнопки1", , "attention")); - - МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка2", , "https://openintegrations.dev")); - - // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP - Клавиатура.Добавить(МассивСтрокиКнопок); - Клавиатура.Добавить(МассивСтрокиКнопок); - // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP - - // END - -КонецПроцедуры - -#КонецОбласти - -#Область Neocities - -Процедура Neocities_ЗагрузитьФайл(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - Данные = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Путь = "testfolder/test_pic.png"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - Опции.Вставить("file" , Данные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайл", Опции); - - // END - - Обработать(Результат, "Neocities", "ЗагрузитьФайл"); - -КонецПроцедуры - -Процедура Neocities_ЗагрузитьФайлы(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - - Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные - Гифка = ПараметрыФункции["Gif"]; // URL, Путь или Двоичные данные - - СоответствиеФайлов = Новый Соответствие; - СоответствиеФайлов.Вставить("test/pic1.png", Картинка1); - СоответствиеФайлов.Вставить("test/gif.gif" , Картинка2); - СоответствиеФайлов.Вставить("pic2.png" , Гифка); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("files", СоответствиеФайлов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайлы", Опции); - - // END - - Обработать(Результат, "Neocities", "ЗагрузитьФайлы"); - -КонецПроцедуры - -Процедура Neocities_УдалитьВыбранныеФайлы(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - - Пути = Новый Массив; - Пути.Добавить("/test/pic1.png"); - Пути.Добавить("/test/gif.gif"); - Пути.Добавить("/pic2.png"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("paths", Пути); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); - - // END - - Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("paths", "/testfolder"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); - - Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы", "Каталог 1"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("paths", "/test"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); - - Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы", "Каталог 2"); - -КонецПроцедуры - -Процедура Neocities_ПолучитьСписокФайлов(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - Путь = "test"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("path" , Путь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); - - // END - - Обработать(Результат, "Neocities", "ПолучитьСписокФайлов"); - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); - - Обработать(Результат, "Neocities", "ПолучитьСписокФайлов", "Все"); - -КонецПроцедуры - -Процедура Neocities_ПолучитьДанныеОСайте(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - Сайт = "2athenaeum"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); - - Обработать(Результат, "Neocities", "ПолучитьДанныеОСайте"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("sitename", Сайт); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); - - // END - - Обработать(Результат, "Neocities", "ПолучитьДанныеОСайте", "Сайт"); - -КонецПроцедуры - -Процедура Neocities_ПолучитьТокен(ПараметрыФункции) - - Логин = ПараметрыФункции["NC_Login"]; - Пароль = ПараметрыФункции["NC_Password"]; - - Опции = Новый Структура; - Опции.Вставить("login" , Логин); - Опции.Вставить("password", Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьТокен", Опции); - - // END - - Результат["api_key"] = "***"; - - Обработать(Результат, "Neocities", "ПолучитьТокен"); - -КонецПроцедуры - -Процедура Neocities_СинхронизироватьКаталоги(ПараметрыФункции) - - Токен = ПараметрыФункции["NC_Token"]; - - ЛокальныйКаталог = "C:\test_site"; - УдаленныйКаталог = "test_sync"; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("local" , ЛокальныйКаталог); - Опции.Вставить("remote", УдаленныйКаталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "СинхронизироватьКаталоги", Опции); - - // END - - Обработать(Результат, "Neocities", "СинхронизироватьКаталоги"); - -КонецПроцедуры - -#КонецОбласти - -#Область CDEK - -Процедура CDEK_ПолучитьТокен(ПараметрыФункции) - - Аккаунт = ПараметрыФункции["CDEK_Account"]; - Пароль = ПараметрыФункции["CDEK_Password"]; - - Опции = Новый Структура; - Опции.Вставить("account", Аккаунт); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьТокен", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьТокен", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаказа"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); - - Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаказа", "Пустая"); - -КонецПроцедуры - -Процедура CDEK_СоздатьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - - ОписаниеЗаказа = Новый Структура; - - ЛокацияОтправления = Новый Структура; - ЛокацияОтправления.Вставить("code" , "44"); - ЛокацияОтправления.Вставить("city" , "Москва"); - ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4"); - - ЛокацияНазначения = Новый Структура; - ЛокацияНазначения.Вставить("code" , "270"); - ЛокацияНазначения.Вставить("city" , "Новосибирск"); - ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32"); - - Получатель = Новый Структура; - - Телефоны = Новый Массив; - Телефоны.Добавить(Новый Структура("number", "+79134637228")); - - Получатель.Вставить("phones", Телефоны); - Получатель.Вставить("name" , "Иванов Иван"); - - Отправитель = Новый Структура("name", "Петров Петр"); - - Услуги = Новый Массив; - - Услуга = Новый Структура; - Услуга.Вставить("code" , "SECURE_PACKAGE_A2"); - Услуга.Вставить("parameter", 10); - - Услуги.Добавить(Услуга); - - Пакеты = Новый Массив; - - Пакет = Новый Структура; - - Позиции = Новый Массив; - - Позиция = Новый Структура; - - Оплата = Новый Структура; - Оплата.Вставить("value", 3000); - - Позиция.Вставить("payment" , Оплата); - Позиция.Вставить("ware_key", "00055"); - Позиция.Вставить("name" , "Товар"); - Позиция.Вставить("cost" , 300); - Позиция.Вставить("amount" , 2); - Позиция.Вставить("weight" , 700); - Позиция.Вставить("url" , "www.item.ru"); - - Позиции.Добавить(Позиция); - - Пакет.Вставить("items" , Позиции); - Пакет.Вставить("number" , "bar-001"); - Пакет.Вставить("comment", "Упаковка"); - Пакет.Вставить("height" , 10); - Пакет.Вставить("length" , 10); - Пакет.Вставить("weight" , "4000"); - Пакет.Вставить("width" , 10); - - Пакеты.Добавить(Пакет); - - ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления); - ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения); - ОписаниеЗаказа.Вставить("packages" , Пакеты); - ОписаниеЗаказа.Вставить("recipient" , Получатель); - ОписаниеЗаказа.Вставить("sender" , Отправитель); - ОписаниеЗаказа.Вставить("services" , Услуги); - - ОписаниеЗаказа.Вставить("number" , Строка(Новый УникальныйИдентификатор)); - ОписаниеЗаказа.Вставить("comment" , "Новый заказ"); - ОписаниеЗаказа.Вставить("tariff_code", 139); - - ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value" , 50)); - ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200)); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("order" , ОписаниеЗаказа); - Опции.Вставить("ostore" , Истина); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаказ", Опции); - - // END - - Обработать(Результат, "CDEK", "СоздатьЗаказ", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказ", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьЗаказ", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - - НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"]; - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("number" , НомерЗаказа); - Опции.Вставить("internal", Истина); - Опции.Вставить("testapi" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказПоНомеру", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьЗаказПоНомеру"); - -КонецПроцедуры - -Процедура CDEK_ИзменитьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - ОписаниеЗаказа = Новый Структура("comment", "Новый комментарий"); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("order" , ОписаниеЗаказа); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ИзменитьЗаказ", Опции); - - // END - - Обработать(Результат, "CDEK", "ИзменитьЗаказ"); - -КонецПроцедуры - -Процедура CDEK_УдалитьЗаказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаказ", Опции); - - // END - - Обработать(Результат, "CDEK", "УдалитьЗаказ"); - -КонецПроцедуры - -Процедура CDEK_ОформитьКлиентскийВозврат(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - Тариф = 139; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("tariff" , Тариф); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ОформитьКлиентскийВозврат", Опции); - - // END - - Обработать(Результат, "CDEK", "ОформитьКлиентскийВозврат"); - -КонецПроцедуры - -Процедура CDEK_СоздатьОтказ(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьОтказ", Опции); - - // END - - Обработать(Результат, "CDEK", "СоздатьОтказ"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаявкиКурьера"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); - - Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаявкиКурьера", "Пустая"); - -КонецПроцедуры - -Процедура CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - ОписаниеЗаявки = Новый Структура; - ОписаниеЗаявки.Вставить("intake_date" , Формат(ТекущаяДата + 60 * 60 * 24, "ДФ=yyyy-MM-dd")); - ОписаниеЗаявки.Вставить("intake_time_from", "10:00"); - ОписаниеЗаявки.Вставить("intake_time_to" , "17:00"); - ОписаниеЗаявки.Вставить("name" , "Консолидированный груз"); - ОписаниеЗаявки.Вставить("weight" , 1000); - ОписаниеЗаявки.Вставить("length" , 10); - ОписаниеЗаявки.Вставить("width" , 10); - ОписаниеЗаявки.Вставить("height" , 10); - ОписаниеЗаявки.Вставить("comment" , "Комментарий курьеру"); - ОписаниеЗаявки.Вставить("need_call" , Ложь); - - Отправитель = Новый Структура; - Отправитель.Вставить("company", "Компания"); - Отправитель.Вставить("name" , "Иванов Иван"); - - Телефоны = Новый Массив; - Телефон = Новый Структура("number", "+79589441654"); - Телефоны.Добавить(Телефон); - - Отправитель.Вставить("phones", Телефоны); - - ОписаниеЗаявки.Вставить("sender", Отправитель); - - ТочкаОтправления = Новый Структура; - ТочкаОтправления.Вставить("code" , "44"); - ТочкаОтправления.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); - ТочкаОтправления.Вставить("postal_code" , "109004"); - ТочкаОтправления.Вставить("longitude" , 37.6204); - ТочкаОтправления.Вставить("latitude" , 55.754); - ТочкаОтправления.Вставить("country_code", "RU"); - ТочкаОтправления.Вставить("region" , "Москва"); - ТочкаОтправления.Вставить("sub_region" , "Москва"); - ТочкаОтправления.Вставить("city" , "Москва"); - ТочкаОтправления.Вставить("kladr_code" , "7700000000000"); - ТочкаОтправления.Вставить("address" , "ул. Блюхера, 32"); - - ОписаниеЗаявки.Вставить("from_location", ТочкаОтправления); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("intake" , ОписаниеЗаявки); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаявкуНаВызовКурьера", Опции); - - // END - - Обработать(Результат, "CDEK", "СоздатьЗаявкуНаВызовКурьера", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_IntakeUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаявкуНаВызовКурьера", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьЗаявкуНаВызовКурьера"); - -КонецПроцедуры - -Процедура CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_IntakeUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаявкуНаВызовКурьера", Опции); - - // END - - Обработать(Результат, "CDEK", "УдалитьЗаявкуНаВызовКурьера"); - -КонецПроцедуры - -Процедура CDEK_СформироватьКвитанцию(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - Тип = "tpl_russia"; - Копий = 1; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuids" , UUID); - Опции.Вставить("type" , Тип); - Опции.Вставить("count" , Копий); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьКвитанцию", Опции); - - // END - - Обработать(Результат, "CDEK", "СформироватьКвитанцию", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьКвитанцию(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_PrintUUID"]; - - Результат = OPI_CDEK.ПолучитьКвитанцию(Токен, UUID, , Истина); // Ответ сервера с ссылкой - - // END - - Обработать(Результат, "CDEK", "ПолучитьКвитанцию"); - -КонецПроцедуры - -Процедура CDEK_СформироватьШтрихкод(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - Формат = "A5"; - Копий = 1; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuids" , UUID); - Опции.Вставить("count" , Копий); - Опции.Вставить("format" , Формат); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьШтрихкод", Опции); - - // END - - Обработать(Результат, "CDEK", "СформироватьШтрихкод", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьШтрихкод(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_BarcodeUUID"]; - - Результат = OPI_CDEK.ПолучитьШтрихкод(Токен, UUID, , Истина); // Ответ сервера с ссылкой - - // END - - Обработать(Результат, "CDEK", "ПолучитьШтрихкод"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоступныеИнтервалыДоставки", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьДоступныеИнтервалыДоставки"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьОписаниеДоговоренности(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьОписаниеДоговоренности"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); - - Обработать(Результат, "CDEK", "ПолучитьОписаниеДоговоренности", "Пустая"); - -КонецПроцедуры - -Процедура CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUIDЗаказа = ПараметрыФункции["CDEK_OrderUUID"]; - - Сутки = 60 * 60 * 24; - ТекущаяДата = НачалоДня(OPI_Инструменты.ПолучитьТекущуюДату()); - ДатаДоставки = ТекущаяДата + Сутки * 14; - - Пока ДеньНедели(ДатаДоставки) > 5 Цикл - ДатаДоставки = ДатаДоставки + Сутки; - КонецЦикла; - - Договоренность = Новый Структура; - - Договоренность.Вставить("cdek_number", "1106207236"); - Договоренность.Вставить("order_uuid" , UUIDЗаказа); - Договоренность.Вставить("date" , Формат(ДатаДоставки, "ДФ=yyyy-MM-dd")); - Договоренность.Вставить("time_from" , "10:00"); - Договоренность.Вставить("time_to" , "17:00"); - Договоренность.Вставить("comment" , "Офис группы компаний"); - - МестоДоставки = Новый Структура; - МестоДоставки.Вставить("code" , "270"); - МестоДоставки.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); - МестоДоставки.Вставить("postal_code" , "109004"); - МестоДоставки.Вставить("longitude" , 37.6204); - МестоДоставки.Вставить("latitude" , 55.754); - МестоДоставки.Вставить("country_code", "RU"); - МестоДоставки.Вставить("region" , "Новосибирск"); - МестоДоставки.Вставить("sub_region" , "Новосибирск"); - МестоДоставки.Вставить("city" , "Новосибирск"); - МестоДоставки.Вставить("kladr_code" , "7700000000000"); - МестоДоставки.Вставить("address" , "ул. Блюхера, 33"); - - Договоренность.Вставить("to_location", МестоДоставки); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("appt" , Договоренность); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ЗафиксироватьДоговоренностьОДоставке", Опции); - - // END - - Обработать(Результат, "CDEK", "ЗафиксироватьДоговоренностьОДоставке", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_ApptUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоговоренностьОДоставке", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьДоговоренностьОДоставке"); - -КонецПроцедуры - -Процедура CDEK_СоздатьПреалерт(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - ПВЗ = "NSK27"; - ДатаПередачи = OPI_Инструменты.ПолучитьТекущуюДату() + 60 * 60 * 24; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuids" , UUID); - Опции.Вставить("date" , ДатаПередачи); - Опции.Вставить("point" , ПВЗ); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьПреалерт", Опции); - - // END - - Обработать(Результат, "CDEK", "СоздатьПреалерт", , ПараметрыФункции); - -КонецПроцедуры - -Процедура CDEK_ПолучитьПреалерт(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_PrealertUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПреалерт", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьПреалерт"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСтатусПаспортныхДанных", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьСтатусПаспортныхДанных"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьЧекЗаказа(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - UUID = ПараметрыФункции["CDEK_OrderUUID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("uuid" , UUID); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекЗаказа", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьЧекЗаказа"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьЧекиНаДату(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("date" , ДатаПолучения); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекиНаДату", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьЧекиНаДату"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("date" , ДатаПолучения); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьРеестрыПлатежейНаДату", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьРеестрыПлатежейНаДату"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("date" , ДатаПолучения); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПереводыПлатежейНаДату", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьПереводыПлатежейНаДату"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьОписаниеФильтраОфисов"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); - - Обработать(Результат, "CDEK", "ПолучитьОписаниеФильтраОфисов", "Пустая"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьСписокОфисов(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - Фильтр = Новый Структура; - Фильтр.Вставить("weight_max" , 50); - Фильтр.Вставить("city_code" , 270); - Фильтр.Вставить("allowed_cod", Истина); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("filter" , Фильтр); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокОфисов", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьСписокОфисов"); - -КонецПроцедуры - -Процедура CDEK_ПолучитьСписокРегионов(ПараметрыФункции) - - Токен = ПараметрыФункции["CDEK_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("testapi", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокРегионов", Опции); - - // END - - Обработать(Результат, "CDEK", "ПолучитьСписокРегионов"); - -КонецПроцедуры - -#КонецОбласти - -#Область YandexMetrika - -Процедура YandexMetrika_ПолучитьСписокМеток(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокМеток", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ПолучитьСписокМеток"); - -КонецПроцедуры - -Процедура YandexMetrika_СоздатьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - Наименование = "Новая метка"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("title", Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьМетку", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "СоздатьМетку", , ПараметрыФункции, Наименование); - -КонецПроцедуры - -Процедура YandexMetrika_УдалитьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDМетки = ПараметрыФункции["Metrika_LabelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("label", IDМетки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьМетку", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "УдалитьМетку"); - -КонецПроцедуры - -Процедура YandexMetrika_ИзменитьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDМетки = ПараметрыФункции["Metrika_LabelID"]; - Наименование = "Новое имя метки"; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("label", IDМетки); - Опции.Вставить("title", Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьМетку", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ИзменитьМетку", , Наименование); - -КонецПроцедуры - -Процедура YandexMetrika_ПолучитьМетку(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDМетки = ПараметрыФункции["Metrika_LabelID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - Опции.Вставить("label", IDМетки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьМетку", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ПолучитьМетку"); - -КонецПроцедуры - -Процедура YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыФункции) - - Пустая = Ложь; - Опции = Новый Структура; - Опции.Вставить("empty", Пустая); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСтруктуруСчетчика", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ПолучитьСтруктуруСчетчика"); - -КонецПроцедуры - -Процедура YandexMetrika_СоздатьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - - СтруктураСчетчика = Новый Структура; - СтруктураСчетчика.Вставить("autogoals_enabled", Истина); - - СтруктураНастроекКода = Новый Структура; - СтруктураНастроекКода.Вставить("async" , 0); - СтруктураНастроекКода.Вставить("clickmap" , 1); - СтруктураНастроекКода.Вставить("ecommerce" , 1); - СтруктураНастроекКода.Вставить("in_one_line" , 0); - СтруктураНастроекКода.Вставить("track_hash" , 1); - СтруктураНастроекКода.Вставить("visor" , 1); - СтруктураНастроекКода.Вставить("xml_site" , 0); - СтруктураНастроекКода.Вставить("ytm" , 0); - СтруктураНастроекКода.Вставить("alternative_cdn", 1); - - СтруктураИнформера = Новый Структура; - СтруктураИнформера.Вставить("color_arrow", 1); - СтруктураИнформера.Вставить("color_end" , "EFEFEFFE"); - СтруктураИнформера.Вставить("color_start", "EEEEEEEE"); - СтруктураИнформера.Вставить("color_text" , 0); - СтруктураИнформера.Вставить("enabled" , 1); - СтруктураИнформера.Вставить("indicator" , "uniques"); - СтруктураИнформера.Вставить("size" , 2); - СтруктураИнформера.Вставить("type" , "ext"); - - СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); - - СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); - - СтруктураФлагов = Новый Структура; - СтруктураФлагов.Вставить("collect_first_party_data" , Истина); - СтруктураФлагов.Вставить("measurement_enabled" , Истина); - СтруктураФлагов.Вставить("use_in_benchmarks" , Истина); - СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Истина); - - СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); - СтруктураСчетчика.Вставить("favorite" , 1); - СтруктураСчетчика.Вставить("filter_robots" , 2); - СтруктураСчетчика.Вставить("gdpr_agreement_accepted", 1); - - СтруктураДомена = Новый Структура("site", "openintegrations.dev"); - - СтруктураСчетчика.Вставить("site2", СтруктураДомена); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("fields", СтруктураСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьСчетчик", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "СоздатьСчетчик", , ПараметрыФункции); - -КонецПроцедуры - -Процедура YandexMetrika_УдалитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьСчетчик", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "УдалитьСчетчик"); - -КонецПроцедуры - -Процедура YandexMetrika_ИзменитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - СтруктураСчетчика = Новый Структура; - СтруктураСчетчика.Вставить("autogoals_enabled", Истина); - - СтруктураФлагов = Новый Структура; - СтруктураФлагов.Вставить("collect_first_party_data" , Ложь); - СтруктураФлагов.Вставить("measurement_enabled" , Ложь); - СтруктураФлагов.Вставить("use_in_benchmarks" , Ложь); - СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Ложь); - - СтруктураСчетчика.Вставить("counter_flags", СтруктураФлагов); - СтруктураСчетчика.Вставить("favorite" , 0); - СтруктураСчетчика.Вставить("filter_robots", 1); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - Опции.Вставить("fields" , СтруктураСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьСчетчик", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ИзменитьСчетчик"); - -КонецПроцедуры - -Процедура YandexMetrika_ПолучитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСчетчик", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ПолучитьСчетчик"); - -КонецПроцедуры - -Процедура YandexMetrika_ВосстановитьСчетчик(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ВосстановитьСчетчик", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ВосстановитьСчетчик"); - -КонецПроцедуры - -Процедура YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); - - Обработать(Результат, "YandexMetrika", "ПолучитьСписокСчетчиков"); // SKIP - - // Фильтр по списку ID - - Фильтр = Новый Структура; - - МассивСчетчиков = Новый Массив; - МассивСчетчиков.Добавить(IDСчетчика); - - Фильтр.Вставить("counter_ids", МассивСчетчиков); - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("filter", Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ПолучитьСписокСчетчиков", "Фильтр"); - -КонецПроцедуры - -Процедура YandexMetrika_ПолучитьСписокОпераций(ПараметрыФункции) - - Токен = ПараметрыФункции["Metrika_Token"]; - IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; - - Опции = Новый Структура; - Опции.Вставить("token" , Токен); - Опции.Вставить("counter", IDСчетчика); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокОпераций", Опции); - - // END - - Обработать(Результат, "YandexMetrika", "ПолучитьСписокОпераций"); - -КонецПроцедуры - -#КонецОбласти - -#Область S3 - -Процедура S3_ПолучитьСтруктуруДанных(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьСтруктуруДанных"); - -КонецПроцедуры - -Процедура S3_ОтправитьЗапросБезТела(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"] + "/opi-newbucket2"; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - Метод = "GET"; - - Опции = Новый Структура; - Опции.Вставить("method", Метод); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции); - - // END - - Обработать(Результат, "S3", "ОтправитьЗапросБезТела"); - -КонецПроцедуры - -Процедура S3_ОтправитьЗапросСТелом(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Метод = "PUT"; - Тело = "C:\test_data\document.docx"; // URL, Путь или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("method", Метод); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("body" , Тело); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросСТелом", Опции); - - // END - - Обработать(Результат, "S3", "ОтправитьЗапросСТелом"); - -КонецПроцедуры - -Процедура S3_СоздатьБакет(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Результат = OPI_S3.УдалитьБакет(Наименование, ОсновныеДанные, Каталог); // SKIP - Обработать(Результат, "S3", "СоздатьБакет", "Удаление"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); - - // END - - Обработать(Результат, "S3", "СоздатьБакет"); - -КонецПроцедуры - -Процедура S3_УдалитьБакет(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); - - // END - - Обработать(Результат, "S3", "УдалитьБакет"); - -КонецПроцедуры - -Процедура S3_ПолучитьСписокБакетов(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - Опции = Новый Структура; - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокБакетов", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьСписокБакетов"); - -КонецПроцедуры - -Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); - - Обработать(Результат, "S3", "ПроверитьДоступностьБакета"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - Опции.Вставить("account", "1234"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); - - // END - - Обработать(Результат, "S3", "ПроверитьДоступностьБакета", "Аккаунт"); - -КонецПроцедуры - -Процедура S3_ПолучитьШифрованиеБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьШифрованиеБакета"); - -КонецПроцедуры - -Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьШифрованиеБакета", Опции); - - // END - - Обработать(Результат, "S3", "УдалитьШифрованиеБакета"); - -КонецПроцедуры - -Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - XMLКонфигурация = " - | - | - | AES256 - | - | - |"; - - ИВФ = ПолучитьИмяВременногоФайла("xml"); // SKIP - ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация).Записать(ИВФ); // SKIP - XMLКонфигурация = ИВФ; // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("conf" , XMLКонфигурация); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьШифрованиеБакета", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(XMLКонфигурация, "Ошибка удаления файла после теста"); - - Обработать(Результат, "S3", "УстановитьШифрованиеБакета"); - -КонецПроцедуры - -Процедура S3_ПолучитьТегиБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьТегиБакета"); - -КонецПроцедуры - -Процедура S3_УстановитьТегиБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - СтруктураТегов = Новый Структура; - СтруктураТегов.Вставить("MyTag1", "SomeValue"); - СтруктураТегов.Вставить("MyTag2", "AnotherOne"); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("tagset", СтруктураТегов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); - - // END - - Обработать(Результат, "S3", "УстановитьТегиБакета"); - -КонецПроцедуры - -Процедура S3_УдалитьТегиБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); - - // END - - Обработать(Результат, "S3", "УдалитьТегиБакета"); - -КонецПроцедуры - -Процедура S3_ПолучитьНастройкиВерсионированияБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic", ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкиВерсионированияБакета", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьНастройкиВерсионированияБакета"); - -КонецПроцедуры - -Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - Статус = Истина; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Наименование = ПараметрыФункции["S3_DB"]; - Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("status", Статус); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); - - // END - - Обработать(Результат, "S3", "УстановитьНастройкиВерсионированияБакета"); - -КонецПроцедуры - -Процедура S3_ЗагрузитьОбъект(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Наименование = "picture.jpg"; - Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("data" , Содержимое); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); - - Обработать(Результат, "S3", "ЗагрузитьОбъект"); // SKIP - - Наименование = "fileChunked.mp3"; - Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные - - ОсновныеДанные.Вставить("ChunkSize", 5242880); // Размер части для загрузки в несколько запросов - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("data" , Содержимое); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); - - // END - - Обработать(Результат, "S3", "ЗагрузитьОбъект", "Частями"); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные, , , Каталог); - -КонецПроцедуры - -Процедура S3_ЗагрузитьОбъектЦеликом(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "pictureSmall.jpg"; - Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("data" , Содержимое); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъектЦеликом", Опции); - - // END - - Обработать(Результат, "S3", "ЗагрузитьОбъектЦеликом"); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные, , , Каталог); - -КонецПроцедуры - -Процедура S3_УдалитьОбъект(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьОбъект", Опции); - - // END - - Обработать(Результат, "S3", "УдалитьОбъект"); - -КонецПроцедуры - -Процедура S3_ПолучитьОписаниеОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьОписаниеОбъекта"); - -КонецПроцедуры - -Процедура S3_КопироватьОбъект(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - ПутьИсточник = "picture.jpg"; - БакетИсточник = "newbucket2"; - - ПутьПриемник = "new_picture.jpg"; - БакетПриемник = ПараметрыФункции["S3_DB"]; - БакетПриемник = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("sname" , ПутьИсточник); - Опции.Вставить("sbucket", БакетИсточник); - Опции.Вставить("name" , ПутьПриемник); - Опции.Вставить("bucket" , БакетПриемник); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "КопироватьОбъект", Опции); - - // END - - Обработать(Результат, "S3", "КопироватьОбъект"); - - OPI_S3.УдалитьОбъект(ПутьПриемник, БакетПриемник, ОсновныеДанные, , , Каталог); - -КонецПроцедуры - -Процедура S3_УстановитьТегиОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - СтруктураТегов = Новый Структура; - - СтруктураТегов.Вставить("MyTag1", "SomeValue"); - СтруктураТегов.Вставить("MyTag2", "AnotherOne"); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("tagset", СтруктураТегов); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиОбъекта", Опции); - - // END - - Обработать(Результат, "S3", "УстановитьТегиОбъекта"); - -КонецПроцедуры - -Процедура S3_ПолучитьТегиОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиОбъекта", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьТегиОбъекта"); - -КонецПроцедуры - -Процедура S3_УдалитьТегиОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиОбъекта", Опции); - - // END - - Обработать(Результат, "S3", "УдалитьТегиОбъекта"); - -КонецПроцедуры - -Процедура S3_ПолучитьСписокОбъектов(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокОбъектов", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьСписокОбъектов"); - -КонецПроцедуры - -Процедура S3_ПолучитьСписокВерсийОбъектов(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Префикс = "pic"; - Опции = Новый Структура; - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("prefix", Префикс); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокВерсийОбъектов", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьСписокВерсийОбъектов"); - -КонецПроцедуры - -Процедура S3_ПолучитьОбъект(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; // SKIP - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP - НеобходимыйРазмер = Картинка.Размер(); // SKIP - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - Обработать(Результат, "S3", "ПолучитьОбъект", , НеобходимыйРазмер); // SKIP - - ВременныйФайл = ПолучитьИмяВременногоФайла(); - ОсновныеДанные.Вставить("ChunkSize", 200000); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("out" , ВременныйФайл); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьОбъект", "Файл", НеобходимыйРазмер); - - Наименование = "bigfile.exe"; - Бакет = "newbucket2"; - - ВременныйФайлБольшой = ПолучитьИмяВременногоФайла(); - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("out" , ВременныйФайлБольшой); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - Обработать(Результат, "S3", "ПолучитьОбъект", "Большой файл", 34432400); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); - - Обработать(Результат, "S3", "ПолучитьОбъект", "Большой ДД", 34432400); - - OPI_Инструменты.УдалитьФайлВПопытке(ВременныйФайлБольшой, "Не удалось удалить временный файл после теста!"); - OPI_Инструменты.УдалитьФайлВПопытке(ВременныйФайл , "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура S3_ИнициализироватьЗагрузкуЧастями(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "fileChunked.mp3"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные - Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями"); // SKIP - - IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; - ОбщийРазмер = Содержимое.Размер(); - РазмерУчастка = 5242880; - ПрочитаноБайт = 0; - НомерЧасти = 1; - - ЧтениеДанных = Новый ЧтениеДанных(Содержимое); - ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); - МассивТегов = Новый Массив; - - Пока ПрочитаноБайт < ОбщийРазмер Цикл - - ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); - ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); - - Если ТекущиеДанные.Размер() = 0 Тогда - Прервать; - КонецЕсли; - - Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование - , Бакет - , ОсновныеДанные - , IDЗагрузки - , НомерЧасти - , ТекущиеДанные - , Каталог); - - Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями", "Часть"); // SKIP - - ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); - - ETag = Результат["headers"]["Etag"]; - ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); - - МассивТегов.Добавить(ETag); - - НомерЧасти = НомерЧасти + 1; - - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload", IDЗагрузки); - Опции.Вставить("tags" , МассивТегов); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); - - // END - - Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями", "Завершение"); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -Процедура S3_ЗавершитьЗагрузкуЧастями(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "fileChunked.mp3"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные - Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); - - Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями", "Начало"); // SKIP - - IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; - ОбщийРазмер = Содержимое.Размер(); - РазмерУчастка = 5242880; - ПрочитаноБайт = 0; - НомерЧасти = 1; - - ЧтениеДанных = Новый ЧтениеДанных(Содержимое); - ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); - МассивТегов = Новый Массив; - - Пока ПрочитаноБайт < ОбщийРазмер Цикл - - ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); - ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); - - Если ТекущиеДанные.Размер() = 0 Тогда - Прервать; - КонецЕсли; - - Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование - , Бакет - , ОсновныеДанные - , IDЗагрузки - , НомерЧасти - , ТекущиеДанные - , Каталог); - - Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями", "Часть"); // SKIP - - ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); - - ETag = Результат["headers"]["Etag"]; - ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); - - МассивТегов.Добавить(ETag); - - НомерЧасти = НомерЧасти + 1; - - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload", IDЗагрузки); - Опции.Вставить("tags" , МассивТегов); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - // END - - Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями"); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -Процедура S3_ЗагрузитьЧастьОбъекта(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "fileChunked.mp3"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные - Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); - - Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта", "Начало"); // SKIP - - IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; - ОбщийРазмер = Содержимое.Размер(); - РазмерУчастка = 5242880; - ПрочитаноБайт = 0; - НомерЧасти = 1; - - ЧтениеДанных = Новый ЧтениеДанных(Содержимое); - ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); - МассивТегов = Новый Массив; - - Пока ПрочитаноБайт < ОбщийРазмер Цикл - - ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); - ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); - - Если ТекущиеДанные.Размер() = 0 Тогда - Прервать; - КонецЕсли; - - Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование - , Бакет - , ОсновныеДанные - , IDЗагрузки - , НомерЧасти - , ТекущиеДанные - , Каталог); - - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта"); // SKIP - - ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); - - ETag = Результат["headers"]["Etag"]; - ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); - - МассивТегов.Добавить(ETag); - - НомерЧасти = НомерЧасти + 1; - - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload", IDЗагрузки); - Опции.Вставить("tags" , МассивТегов); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); - - // END - - Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта", "Завершение"); // SKIP - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -Процедура S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции) - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "fileChunked.mp3"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("dir" , Каталог); - - Начало = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); - IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"]; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("upload", IDЗагрузки); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтменитьЗагрузкуЧастями", Опции); - - // END - - Обработать(Результат, "S3", "ОтменитьЗагрузкуЧастями"); - -КонецПроцедуры - -Процедура S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; // SKIP - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP - НеобходимыйРазмер = Картинка.Размер(); // SKIP - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "picture.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = ПараметрыФункции["S3_DB"]; - Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket" , Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("expires", 7200); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуСкачиванияОбъекта", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьСсылкуСкачиванияОбъекта"); - - Результат = OPI_ЗапросыHTTP.Get(Результат); - - Обработать(Результат, "S3", "ПолучитьСсылкуСкачиванияОбъекта", "Проверка", НеобходимыйРазмер); - -КонецПроцедуры - -Процедура S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; // SKIP - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP - НеобходимыйРазмер = Картинка.Размер(); // SKIP - - URL = ПараметрыФункции["S3_URL"]; - AccessKey = ПараметрыФункции["S3_AccessKey"]; - SecretKey = ПараметрыФункции["S3_SecretKey"]; - Region = "BTC"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("access", AccessKey); - Опции.Вставить("secret", SecretKey); - Опции.Вставить("region", Region); - - ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); - - Наименование = "pictureU.jpg"; - - Каталог = Истина; // Формирование URL в path-style - Каталог = ПараметрыФункции["Directory"]; // SKIP - - Бакет = "newbucket2"; - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket" , Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - Опции.Вставить("expires", 7200); - Опции.Вставить("dir" , Каталог); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуЗагрузкиОбъекта", Опции); - - // END - - Обработать(Результат, "S3", "ПолучитьСсылкуЗагрузкиОбъекта"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(Результат) - .УстановитьДвоичноеТело(Картинка) - .ОбработатьЗапрос("PUT"); - - Обработать(Результат, "S3", "ПолучитьСсылкуЗагрузкиОбъекта", "Загрузка"); - - Опции = Новый Структура; - Опции.Вставить("name" , Наименование); - Опции.Вставить("bucket", Бакет); - Опции.Вставить("basic" , ОсновныеДанные); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); - - Обработать(Проверка, "S3", "ПолучитьСсылкуЗагрузкиОбъекта", "Проверка", НеобходимыйРазмер); - - OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); - -КонецПроцедуры - -#КонецОбласти - -#Область TCP - -Процедура TCP_ОткрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - - Обработать(Соединение, "TCP", "ОткрытьСоединение"); // SKIP - - OPI_TCP.ЗакрытьСоединение(Соединение); - - Адрес = "tcpbin.com:4243"; - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); - - ПроксиПользователь = ПараметрыФункции["Proxy_User"]; - ПроксиПароль = ПараметрыФункции["Proxy_Password"]; - ПроксиАдрес = ПараметрыФункции["Socks5_IP"]; - ПроксиПорт = ПараметрыФункции["Socks5_Port"]; - - ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , ПроксиАдрес); - Опции.Вставить("port" , ПроксиПорт); - Опции.Вставить("type" , "socks5"); - Опции.Вставить("login", ПроксиПользователь); - Опции.Вставить("pass" , ПроксиПароль); - - Прокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); - - Соединение = OPI_TCP.ОткрытьСоединение(Адрес, TLS, Прокси); - - // END - - Обработать(Соединение, "TCP", "ОткрытьСоединение", "TLS"); - -КонецПроцедуры - -Процедура TCP_ЗакрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - - Результат = OPI_TCP.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "TCP", "ЗакрытьСоединение"); - -КонецПроцедуры - -Процедура TCP_ПрочитатьДвоичныеДанные(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - Сообщение = "Hello server!" + Символы.ПС; - Данные = ПолучитьДвоичныеДанныеИзСтроки(Сообщение); - - OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); - - // Маркер конца сообщения для исключения ожидания конца таймаута - Маркер = Символы.ПС; - Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , Маркер); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - OPI_TCP.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "TCP", "ПрочитатьДвоичныеДанные", , Сообщение); - - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - - OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); - Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , , 50000); - - OPI_TCP.ЗакрытьСоединение(Соединение); - - Обработать(Результат, "TCP", "ПрочитатьДвоичныеДанные", "Таймаут", Сообщение); - -КонецПроцедуры - -Процедура TCP_ОтправитьДвоичныеДанные(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - Сообщение = "Hello server!" + Символы.ПС; - Данные = ПолучитьДвоичныеДанныеИзСтроки(Сообщение); - - Результат = OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - // Маркер конца сообщения для исключения ожидания конца таймаута - Маркер = Символы.ПС; - Ответ = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , Маркер); - - OPI_TCP.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Ответ, "TCP", "ОтправитьДвоичныеДанные", , Сообщение); - - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - - OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); - Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , , 50000); - - OPI_TCP.ЗакрытьСоединение(Соединение); - - Обработать(Результат, "TCP", "ОтправитьДвоичныеДанные", "Таймаут", Сообщение); - -КонецПроцедуры - -Процедура TCP_ОбработатьЗапрос(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Данные = "Echo this!" + Символы.ПС; - - Опции = Новый Структура; - Опции.Вставить("address", Адрес); - Опции.Вставить("data" , Данные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); - - Обработать(Результат, "TCP", "ОбработатьЗапрос", , "Echo this!" + Символы.ПС); // SKIP - - Адрес = ПараметрыФункции["TCP_AddressTLS"]; - - ПроксиПользователь = ПараметрыФункции["Proxy_User"]; - ПроксиПароль = ПараметрыФункции["Proxy_Password"]; - ПроксиАдрес = ПараметрыФункции["Socks5_IP"]; - ПроксиПорт = ПараметрыФункции["Socks5_Port"]; - - ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , ПроксиАдрес); - Опции.Вставить("port" , ПроксиПорт); - Опции.Вставить("type" , "socks5"); - Опции.Вставить("login", ПроксиПользователь); - Опции.Вставить("pass" , ПроксиПароль); - - Прокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); - - Опции = Новый Структура; - Опции.Вставить("address", Адрес); - Опции.Вставить("data" , Данные); - Опции.Вставить("tls" , Tls); - Опции.Вставить("proxy" , Прокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); - - // END - - Обработать(Результат, "TCP", "ОбработатьЗапрос", "TLS", "Echo this!" + Символы.ПС); - -КонецПроцедуры - -Процедура TCP_ПрочитатьСтроку(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - Данные = "Hello server!" + Символы.ПС; - - OPI_TCP.ОтправитьСтроку(Соединение, Данные); - - // Маркер конца сообщения для исключения ожидания конца таймаута - Маркер = Символы.ПС; - Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , Маркер); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - OPI_TCP.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "TCP", "ПрочитатьСтроку", , Данные); - - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - - OPI_TCP.ОтправитьСтроку(Соединение, Данные); - Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , , 50000); - - OPI_TCP.ЗакрытьСоединение(Соединение); - - Обработать(Результат, "TCP", "ПрочитатьСтроку", "Таймаут", Данные); - -КонецПроцедуры - -Процедура TCP_ОтправитьСтроку(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - Данные = "Hello server!" + Символы.ПС; - - Результат = OPI_TCP.ОтправитьСтроку(Соединение, Данные); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - // Маркер конца сообщения для исключения ожидания конца таймаута - Маркер = Символы.ПС; - Ответ = OPI_TCP.ПрочитатьСтроку(Соединение, , Маркер); - - OPI_TCP.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Ответ, "TCP", "ОтправитьСтроку", , Данные); - - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - - OPI_TCP.ОтправитьСтроку(Соединение, Данные); - Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , , 50000); - - OPI_TCP.ЗакрытьСоединение(Соединение); - - Обработать(Результат, "TCP", "ОтправитьСтроку", "Таймаут", Данные); - -КонецПроцедуры - -Процедура TCP_ПолучитьНастройкиTLS(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); - - // END - - Обработать(Результат, "TCP", "ПолучитьНастройкиTLS"); - -КонецПроцедуры - -Процедура TCP_ПолучитьПоследнююОшибку(ПараметрыФункции) - - Адрес = ПараметрыФункции["TCP_Address"]; - Соединение = OPI_TCP.ОткрытьСоединение(Адрес); - Данные = "Hello server!" + Символы.ПС; - - Отправка = OPI_TCP.ОтправитьСтроку(Соединение, Данные); - Результат = OPI_TCP.ПолучитьПоследнююОшибку(Соединение); // SKIP - - // END - - Обработать(Результат, "TCP", "ПолучитьПоследнююОшибку"); - -КонецПроцедуры - -Процедура TCP_ПолучитьНастройкиПрокси(ПараметрыФункции) - - ТипПрокси = "socks5"; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Socks5_IP"]; - ПортПрокси = ПараметрыФункции["Socks5_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); - - // END - - Обработать(Результат, "TCP", "ПолучитьНастройкиПрокси"); - -КонецПроцедуры - -Процедура TCP_ЗапуститьСервер(ПараметрыФункции) - - Порт = 9876; - РазмерПула = 10; - - Сервер = OPI_TCP.ЗапуститьСервер(Порт, РазмерПула); - - // END - - Обработать(Сервер, "TCP", "ЗапуститьСервер"); - - OPI_TCP.ОстановитьСервер(Сервер); - -КонецПроцедуры - -Процедура TCP_ОстановитьСервер(ПараметрыФункции) - - Порт = 9877; - Сервер = OPI_TCP.ЗапуститьСервер(Порт); - - Результат = OPI_TCP.ОстановитьСервер(Сервер); - - // END - - Обработать(Результат, "TCP", "ОстановитьСервер"); - - РезультатСписка = OPI_TCP.ПолучитьСписокСоединений(Сервер); - - Обработать(РезультатСписка, "TCP", "ОстановитьСервер", "Список"); - - OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); - - Адрес = СтрШаблон("127.0.0.1:%1", Порт); - Клиент = OPI_TCP.ОткрытьСоединение(Адрес); - - Обработать(Клиент, "TCP", "ОстановитьСервер", "Подключение"); - -КонецПроцедуры - -Процедура TCP_ПолучитьДанныеОчередногоСоединения(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Отправляем сообщение от клиента - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - Иначе - Сообщение = "Hello from client!" + Символы.ПС; - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - КонецЕсли; - - // Получаем сообщение на сервере - Результат = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000, 8192); - - // END - - OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); - - Обработать(Результат, "TCP", "ПолучитьДанныеОчередногоСоединения", , Сообщение); - - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); - - Результат = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000, 8192); - - Обработать(Результат, "TCP", "ПолучитьДанныеОчередногоСоединения", "Закрытое", Сообщение); - - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ПолучитьДанныеСоединения(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - КонецЕсли; - - OPI_Инструменты.Пауза(1); // SKIP - - // Получаем список соединений сервера - СписокСоединений = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - - Если Не СписокСоединений["result"] Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(СписокСоединений); - КонецЕсли; - - Если СписокСоединений["connections"].Количество() = 0 Тогда - ВызватьИсключение "Список соединений пуст"; - Иначе - IDСоединения = СписокСоединений["connections"][0]["connectionId"]; - КонецЕсли; - - РезультатПустой = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); // SKIP - Обработать(РезультатПустой, "TCP", "ПолучитьДанныеСоединения", "Пустое"); // SKIP - - Для Н = 0 По 5 Цикл - - // Отправляем из клиента - ТекущееСообщение = СтрШаблон("Message no. %1%2", Н, Символы.ПС); - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, ТекущееСообщение); - - // Получем на сервере - Результат = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); - - Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", , ТекущееСообщение); // SKIP - - КонецЦикла; - - // END - - OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); - - Результат = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); - - Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", "Закрытое"); - - Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - - Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", "ПустойСписок"); - - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ОтправитьДанные(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - КонецЕсли; - - Сообщение = "Hello!" + Символы.ПС; - - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - - // Получаем сообщение и ID соединения - ОчередноеСообщение = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000); - IDСоединения = ОчередноеСообщение["connectionId"]; - - // Отправляем ответ от сервера - ОтветСервера = "Response from server!" + Символы.ПС; - Результат = OPI_TCP.ОтправитьДанные(ОбъектСервера, IDСоединения, ОтветСервера); - - // END - - Обработать(Результат, "TCP", "ОтправитьДанные"); - - // Проверяем получение на клиенте - ОтветКлиента = OPI_TCP.ПрочитатьСтроку(ОбъектКлиента, , Символы.ПС); - - Обработать(ОтветКлиента, "TCP", "ОтправитьДанные", "Проверка", ОтветСервера); - - OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ЗакрытьВходящееСоединение(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - КонецЕсли; - - Сообщение = "Hello!" + Символы.ПС; - - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - - // Получаем ID соединения - ПервоеСообщение = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000); - IDСоединения = ПервоеСообщение["connectionId"]; - - // Закрываем соединение со стороны сервера - Результат = OPI_TCP.ЗакрытьВходящееСоединение(ОбъектСервера, IDСоединения); - - // END - - Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение"); - - Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - - Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение", "ПустойСписок"); - - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - Результат = OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - - Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение", "ОтправкаВЗакрытое"); - - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ЗавершитьОтправку(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - OPI_Инструменты.Пауза(1); // SKIP - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - КонецЕсли; - - АктивныеСоединения = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - IDСоединения = АктивныеСоединения["connections"][0]["connectionId"]; - - // Завершаем отправку со стороны сервера - Результат = OPI_TCP.ЗавершитьОтправку(ОбъектСервера, IDСоединения); - - // END - - Обработать(Результат, "TCP", "ЗавершитьОтправку"); - - Сообщение = "Hello" + Символы.ПС; - - OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - Результат = OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); - - Обработать(Результат, "TCP", "ЗавершитьОтправку", "ОтправкаКлиент"); - - ОтветСервера = "Response from server!" + Символы.ПС; - Результат = OPI_TCP.ОтправитьДанные(ОбъектСервера, IDСоединения, ОтветСервера); - - Обработать(Результат, "TCP", "ЗавершитьОтправку", "ОтправкаСервер"); - - OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ПолучитьСписокСоединений(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - - Клиент1 = OPI_TCP.ОткрытьСоединение(АдресПодключения); - Клиент2 = OPI_TCP.ОткрытьСоединение(АдресПодключения); - - Если Не OPI_TCP.ЭтоОбъектКлиента(Клиент1) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент1); - КонецЕсли; - - Если Не OPI_TCP.ЭтоОбъектКлиента(Клиент2) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент2); - КонецЕсли; - - Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - - // END - - Обработать(Результат, "TCP", "ПолучитьСписокСоединений"); - - OPI_TCP.ЗакрытьСоединение(Клиент1); - OPI_TCP.ЗакрытьСоединение(Клиент2); - - Клиент3 = OPI_TCP.ОткрытьСоединение(АдресПодключения); - Клиент4 = OPI_TCP.ОткрытьСоединение(АдресПодключения); - - OPI_TCP.ОтправитьСтроку(Клиент3, "Yo" + Символы.ПС); - - OPI_TCP.ЗакрытьСоединение(Клиент3); - OPI_TCP.ЗакрытьСоединение(Клиент4); - - Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - - Обработать(Результат, "TCP", "ПолучитьСписокСоединений", "Закрытые"); - - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ЗавершитьПолучение(ПараметрыФункции) - - ПортЗапуска = 9877; - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - OPI_Инструменты.Пауза(1); // SKIP - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - КонецЕсли; - - АктивныеСоединения = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); - IDСоединения = АктивныеСоединения["connections"][0]["connectionId"]; - - // Завершаем получение со стороны сервера - Результат = OPI_TCP.ЗавершитьПолучение(ОбъектСервера, IDСоединения); - - // END - - Обработать(Результат, "TCP", "ЗавершитьПолучение"); - - OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); - OPI_TCP.ОстановитьСервер(ОбъектСервера); - -КонецПроцедуры - -Процедура TCP_ЭтоОбъектСервера(ПараметрыФункции) - - Порт = 9884; - Сервер = OPI_TCP.ЗапуститьСервер(Порт); - - Результат = OPI_TCP.ЭтоОбъектСервера(Сервер); - - // END - - Обработать(Результат, "TCP", "ЭтоОбъектСервера"); - - OPI_TCP.ОстановитьСервер(Сервер); - - // Проверка с неправильным объектом - Результат = OPI_TCP.ЭтоОбъектСервера("Не сервер"); - - Обработать(Результат, "TCP", "ЭтоОбъектСервера", "Ложь"); - -КонецПроцедуры - -Процедура TCP_ПолучитьЛог(ПараметрыФункции) - - ПортЗапуска = 9877; - ФайлЛога = ПолучитьИмяВременногоФайла("txt"); - НастройкиЛогирования = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога); - ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска, , НастройкиЛогирования); - - // Подключаемся к запущенному серверу - АдресПодключения = "127.0.0.1:9877"; - ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); - OPI_Инструменты.Пауза(1); // SKIP - - Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); - КонецЕсли; - - Результат = OPI_TCP.ПолучитьЛог(ОбъектСервера); - - // END - - Обработать(Результат, "TCP", "ПолучитьЛог", , ФайлЛога); - -КонецПроцедуры - -Процедура TCP_ПолучитьНастройкиЛогирования(ПараметрыФункции) - - Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 100, ПолучитьИмяВременногоФайла()); - - // END - - Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования"); - - Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Ложь, , ПолучитьИмяВременногоФайла()); - - Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования", "Файл"); - - Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Истина); - - Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования", "Память"); - -КонецПроцедуры - -#КонецОбласти - -#Область SQLite - -Процедура SQLite_ОткрытьСоединение(ПараметрыФункции) - - ИВФ = ПолучитьИмяВременногоФайла("sqlite"); - - БазаНаДиске = OPI_SQLite.ОткрытьСоединение(ИВФ); - БазаВПамяти = OPI_SQLite.ОткрытьСоединение(); - - // END - - Обработать(БазаНаДиске, "SQLite", "ОткрытьСоединение"); - Обработать(БазаВПамяти, "SQLite", "ОткрытьСоединение", "IM"); - - Закрытие = OPI_SQLite.ЗакрытьСоединение(БазаНаДиске); - - Обработать(Закрытие, "SQLite", "ОткрытьСоединение", "Закрытие"); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); - -КонецПроцедуры - -Процедура SQLite_ЗакрытьСоединение(ПараметрыФункции) - - ИВФ = ПолучитьИмяВременногоФайла("sqlite"); - - Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ); - - Обработать(Соединение, "SQLite", "ЗакрытьСоединение", "Открытие"); // SKIP - - Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Закрытие, "SQLite", "ЗакрытьСоединение"); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); - -КонецПроцедуры - -Процедура SQLite_ВыполнитьЗапросSQL(ПараметрыФункции) - - ИВФ = ПолучитьИмяВременногоФайла("sqlite"); - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ); - - Обработать(Соединение, "SQLite", "ВыполнитьЗапросSQL", "Открытие"); // SKIP - - // CREATE - - ТекстЗапроса = " - |CREATE TABLE test_table ( - |id INTEGER PRIMARY KEY, - |name TEXT, - |age INTEGER, - |salary REAL, - |is_active BOOLEAN, - |created_at DATETIME, - |data BLOB - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("db" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Create"); // SKIP - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (name, age, salary, is_active, created_at, data) - |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить("Vitaly"); // TEXT - МассивПараметров.Добавить(25); // INTEGER - МассивПараметров.Добавить(1000.12); // REAL - МассивПараметров.Добавить(Истина); // BOOL - МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME - МассивПараметров.Добавить(Новый Структура("blob", Картинка)); // BLOB - - Опции = Новый Структура; - Опции.Вставить("sql" , ТекстЗапроса); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("db" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Insert"); // SKIP - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("db" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", , Картинка); // SKIP - - // Транзакция - - ТекстЗапроса = "BEGIN TRANSACTION; - | CREATE TABLE IF NOT EXISTS users ( - | id INTEGER PRIMARY KEY AUTOINCREMENT, - | name TEXT NOT NULL, - | age INTEGER NOT NULL - | ); - | INSERT INTO users (name, age) VALUES ('Alice', 30); - | INSERT INTO users (name, age) VALUES ('Bob', 25); - | INSERT INTO users (name, age) VALUES ('Charlie', 35); - | COMMIT;"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("db" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Transaction"); // SKIP - - // С расширением - - Если OPI_Инструменты.ЭтоWindows() Тогда - Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные - Иначе - Расширение = ПараметрыФункции["SQLite_ExtLinux"]; // URL, Путь или Двоичные данные - КонецЕсли; - - ТочкаВхода = "sqlite3_uuid_init"; - - СоответствиеРасширений = Новый Соответствие; - СоответствиеРасширений.Вставить(Расширение, ТочкаВхода); - - ТекстЗапроса = "SELECT uuid4();"; - - Опции = Новый Структура; - Опции.Вставить("sql" , ТекстЗапроса); - Опции.Вставить("db" , Соединение); - Опции.Вставить("exts", СоответствиеРасширений); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Расширение"); // SKIP - - Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Закрытие"); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); - -КонецПроцедуры - -Процедура SQLite_ЭтоКоннектор(ПараметрыФункции) - - Соединение = OPI_SQLite.ОткрытьСоединение(); - Результат = OPI_SQLite.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "SQLite", "ЭтоКоннектор"); - -КонецПроцедуры - -Процедура SQLite_СоздатьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); - СтруктураКолонок.Вставить("name" , "TEXT"); - СтруктураКолонок.Вставить("age" , "INTEGER"); - СтруктураКолонок.Вставить("salary" , "REAL"); - СтруктураКолонок.Вставить("is_active" , "BOOLEAN"); - СтруктураКолонок.Вставить("created_at", "DATETIME"); - СтруктураКолонок.Вставить("data" , "BLOB"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); - - // END - - Обработать(Результат, "SQLite", "СоздатьТаблицу"); - - СоответствиеКолонок = Новый Соответствие; - СоответствиеКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); - СоответствиеКолонок.Вставить("[Непонятная колонка]", "TEXT"); - - Опции = Новый Структура; - Опции.Вставить("table", "test1"); - Опции.Вставить("cols" , СоответствиеКолонок); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); - - Обработать(Результат, "SQLite", "СоздатьТаблицу", "Непонятная колонка"); - -КонецПроцедуры - -Процедура SQLite_ДобавитьЗаписи(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - ФайлКартинки = ПолучитьИмяВременногоФайла("png"); - Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - МассивДанных = Новый Массив; - - СтруктураСтроки1 = Новый Структура; - СтруктураСтроки1.Вставить("name" , "Vitaly"); // TEXT - СтруктураСтроки1.Вставить("age" , 25); // INTEGER - СтруктураСтроки1.Вставить("salary" , 1000.12); // REAL - СтруктураСтроки1.Вставить("is_active" , Истина); // BOOL - СтруктураСтроки1.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME - СтруктураСтроки1.Вставить("data" , Новый Структура("blob", Картинка)); // BLOB - - СтруктураСтроки2 = Новый Структура; - СтруктураСтроки2.Вставить("name" , "Lesha"); // TEXT - СтруктураСтроки2.Вставить("age" , 20); // INTEGER - СтруктураСтроки2.Вставить("salary" , 200.20); // REAL - СтруктураСтроки2.Вставить("is_active" , Ложь); // BOOL - СтруктураСтроки2.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME - СтруктураСтроки2.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB - - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки2); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - - // END - - Обработать(Результат, "SQLite", "ДобавитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("trn" , Ложь); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - - Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Без транзакции"); - - СтруктураСтроки2.Вставить("error", "Lesha"); - МассивДанных.Добавить(СтруктураСтроки2); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка поля"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("trn" , Ложь); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка без транзакции"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , "not valid json"); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка JSON"); - - СоответствиеСтроки = Новый Соответствие; - СоответствиеСтроки.Вставить("[Непонятная колонка]", "yo"); - - Опции = Новый Структура; - Опции.Вставить("table", "test1"); - Опции.Вставить("rows" , СоответствиеСтроки); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); - Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Непонятная колонка"); - - OPI_Инструменты.УдалитьФайлВПопытке(ФайлКартинки, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура SQLite_ПолучитьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Поля = Новый Массив; - Поля.Добавить("name"); - Поля.Добавить("salary"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "name"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Vitaly"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "age"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 30"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("created_at", "DESC"); - Количество = 1; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - // END - - Обработать(Результат, "SQLite", "ПолучитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Без параметров"); - - СтруктураФильтра2.Вставить("type", "SOMETHING"); - Фильтры.Добавить(СтруктураФильтра2); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Ошибка"); - - Опции = Новый Структура; - Опции.Вставить("table", "test1"); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Непонятная колонка"); - -КонецПроцедуры - -Процедура SQLite_ОбновитьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("name" , "Vitaly A."); - СтруктураПолей.Вставить("salary", "999999"); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "name"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", "Vitaly"); - СтруктураФильтра.Вставить("union", "AND"); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОбновитьЗаписи", Опции); - - // END - - Обработать(Результат, "SQLite", "ОбновитьЗаписи"); - - СтруктураФильтра.Вставить("value", "Vitaly A."); - - Фильтры = Новый Массив; - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','salary']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - Обработать(Проверка, "SQLite", "ОбновитьЗаписи", "Проверка", СтруктураПолей); - -КонецПроцедуры - -Процедура SQLite_УдалитьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "name"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", "Vitaly A."); - СтруктураФильтра.Вставить("union", "AND"); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьЗаписи", Опции); - - // END - - Обработать(Результат, "SQLite", "УдалитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['name','salary']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - Обработать(Проверка, "SQLite", "УдалитьЗаписи", "Проверка"); - -КонецПроцедуры - -Процедура SQLite_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - // END - - Обработать(Результат, "SQLite", "ПолучитьИнформациюОТаблице"); - -КонецПроцедуры - -Процедура SQLite_ГарантироватьЗаписи(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test_merge"; - - СтруктураКолонок = Новый Структура; // SKIP - СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); // SKIP - СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP - СтруктураКолонок.Вставить("age" , "INTEGER"); // SKIP - СтруктураКолонок.Вставить("salary" , "REAL"); // SKIP - OPI_SQLite.СоздатьТаблицу(Таблица, СтруктураКолонок, База); // SKIP - - МассивДанных = Новый Массив; - - СтруктураСтроки1 = Новый Структура; - СтруктураСтроки1.Вставить("id" , 1); - СтруктураСтроки1.Вставить("name" , "Vitaly"); - СтруктураСтроки1.Вставить("age" , 25); - СтруктураСтроки1.Вставить("salary", 1000.12); - - СтруктураСтроки2 = Новый Структура; - СтруктураСтроки2.Вставить("id" , 2); - СтруктураСтроки2.Вставить("name" , "Lesha"); - СтруктураСтроки2.Вставить("age" , 20); - СтруктураСтроки2.Вставить("salary", 200.20); - - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки2); - - КлючевыеПоля = Новый Массив; - КлючевыеПоля.Добавить("id"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("unique", КлючевыеПоля); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьЗаписи", Опции); - - // END - - Обработать(Результат, "SQLite", "ГарантироватьЗаписи", "Вставка"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "SQLite", "ГарантироватьЗаписи", "Проверка вставки"); - - СтруктураСтроки1.Вставить("name" , "Vitaly Updated"); - СтруктураСтроки1.Вставить("salary", 1500.50); - - СтруктураСтроки3 = Новый Структура; - СтруктураСтроки3.Вставить("id" , 3); - СтруктураСтроки3.Вставить("name" , "Anton"); - СтруктураСтроки3.Вставить("age" , 30); - СтруктураСтроки3.Вставить("salary", 3000.00); - - МассивДанных = Новый Массив; - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки3); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("unique", КлючевыеПоля); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьЗаписи", Опции); - - Обработать(Результат, "SQLite", "ГарантироватьЗаписи", "Обновление"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "SQLite", "ГарантироватьЗаписи", "Проверка обновления"); - - OPI_SQLite.УдалитьТаблицу(Таблица, База); - -КонецПроцедуры - -Процедура SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - // END - - Обработать(Результат, "SQLite", "ПолучитьСтруктуруФильтраЗаписей"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - Обработать(Результат, "SQLite", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); - -КонецПроцедуры - -Процедура SQLite_УдалитьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьТаблицу", Опции); - - // END - - Обработать(Результат, "SQLite", "УдалитьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "SQLite", "УдалитьТаблицу", "Проверка"); - - OPI_SQLite.УдалитьТаблицу("test1", База); - -КонецПроцедуры - -Процедура SQLite_ОчиститьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОчиститьТаблицу", Опции); - - // END - - Обработать(Результат, "SQLite", "ОчиститьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "SQLite", "ОчиститьТаблицу", "Таблица"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); - - Обработать(Проверка, "SQLite", "ОчиститьТаблицу", "Проверка"); - -КонецПроцедуры - -Процедура SQLite_ПодключитьРасширение(ПараметрыФункции) - - Если OPI_Инструменты.ЭтоWindows() Тогда - Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные - Иначе - Расширение = ПараметрыФункции["SQLite_ExtLinux"]; // URL, Путь или Двоичные данные - КонецЕсли; - - База = ПараметрыФункции["SQLite_DB"]; - ТочкаВхода = "sqlite3_uuid_init"; - - Соединение = OPI_SQLite.ОткрытьСоединение(База); - Результат = OPI_SQLite.ПодключитьРасширение(Расширение, ТочкаВхода, Соединение); - - // END - - Обработать(Результат, "SQLite", "ПодключитьРасширение"); - - ИВФ = ПолучитьИмяВременногоФайла("dll"); - КопироватьФайл(Расширение, ИВФ); - - Результат = OPI_SQLite.ПодключитьРасширение(ИВФ, ТочкаВхода, Соединение); - - Обработать(Результат, "SQLite", "ПодключитьРасширение", "Путь"); - - Результат = OPI_SQLite.ПодключитьРасширение(Новый ДвоичныеДанные(ИВФ), ТочкаВхода, Соединение); - - Обработать(Результат, "SQLite", "ПодключитьРасширение", "Двоичные"); - - Результат = OPI_SQLite.ЗакрытьСоединение(Соединение); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла расширение"); - -КонецПроцедуры - -Процедура SQLite_ДобавитьКолонкуТаблицы(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - Имя = "new_col"; - ТипДанных = "TEXT"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name" , Имя); - Опции.Вставить("type" , ТипДанных); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "SQLite", "ДобавитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "SQLite", "ДобавитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура SQLite_УдалитьКолонкуТаблицы(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - Таблица = "test"; - Имя = "new_col"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name" , Имя); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "SQLite", "УдалитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "SQLite", "УдалитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура SQLite_ГарантироватьТаблицу(ПараметрыФункции) - - База = ПараметрыФункции["SQLite_DB"]; - - Таблица = "test"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("id" , "INTEGER"); - СтруктураКолонок.Вставить("code" , "INTEGER"); - СтруктураКолонок.Вставить("name" , "TEXT"); - СтруктураКолонок.Вставить("age" , "INTEGER"); - СтруктураКолонок.Вставить("info" , "TEXT"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьТаблицу", Опции); - - // END - - Обработать(Результат, "SQLite", "ГарантироватьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "SQLite", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - - Таблица = "test_new"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьТаблицу", Опции); - - Обработать(Результат, "SQLite", "ГарантироватьТаблицу", "Новая"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("db" , База); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "SQLite", "ГарантироватьТаблицу", "Проверка 2", СтруктураКолонок); - -КонецПроцедуры - -#КонецОбласти - -#Область PostgreSQL - -Процедура PostgreSQL_СформироватьСтрокуПодключения(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - // END - - Результат = СтрЗаменить(Результат, Пароль, "***"); - Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); - - Обработать(Результат, "PostgreSQL", "СформироватьСтрокуПодключения"); - -КонецПроцедуры - -Процедура PostgreSQL_ОткрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Результат = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - // END - - OPI_PostgreSQL.ЗакрытьСоединение(Результат); - - Обработать(Результат, "PostgreSQL", "ОткрытьСоединение"); - -КонецПроцедуры - -Процедура PostgreSQL_ЗакрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - Результат = OPI_PostgreSQL.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "PostgreSQL", "ЗакрытьСоединение"); - -КонецПроцедуры - -Процедура PostgreSQL_ЭтоКоннектор(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - Результат = OPI_PostgreSQL.ЭтоКоннектор(Соединение); - - OPI_PostgreSQL.ЗакрытьСоединение(Результат); - - // END - - Обработать(Результат, "PostgreSQL", "ЭтоКоннектор"); - -КонецПроцедуры - -Процедура PostgreSQL_ВыполнитьЗапросSQL(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - OPI_PostgreSQL.УдалитьТаблицу("users" , Соединение); // SKIP - OPI_PostgreSQL.УдалитьТаблицу("test_data" , Соединение); // SKIP - OPI_PostgreSQL.УдалитьТаблицу("test_table", Соединение); // SKIP - - Обработать(Соединение, "PostgreSQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP - - // CREATE - - ТекстЗапроса = " - |CREATE TABLE test_table ( - |id SERIAL PRIMARY KEY, - |name NAME, - |age INT, - |salary REAL, - |is_active BOOL, - |created_at DATE, - |data BYTEA - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Create"); // SKIP - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (name, age, salary, is_active, created_at, data) - |VALUES ($1, $2, $3, $4, $5, $6);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly")); - МассивПараметров.Добавить(Новый Структура("INT" , 25)); - МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12)); - МассивПараметров.Добавить(Новый Структура("BOOL" , Истина)); - МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); - МассивПараметров.Добавить(Новый Структура("BYTEA", Картинка)); - - Опции = Новый Структура; - Опции.Вставить("sql" , ТекстЗапроса); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("dbc" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP - - // DO + Транзакция - - ТекстЗапроса = "DO $$ - |BEGIN - | CREATE TABLE users ( - | id SMALLSERIAL, - | name TEXT NOT NULL, - | age INT NOT NULL - | ); - | INSERT INTO users (name, age) VALUES ('Alice', 30); - | INSERT INTO users (name, age) VALUES ('Bob', 25); - | INSERT INTO users (name, age) VALUES ('Charlie', 35); - |END $$ LANGUAGE plpgsql;"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Transaction"); // SKIP - - // SQL запрос из файла - - ФайлSQL = ПараметрыФункции["SQL"]; // Двоичные данные, URL или путь к файлу - - Опции = Новый Структура; - Опции.Вставить("sql", ФайлSQL); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP - - Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Закрытие"); - -КонецПроцедуры - -Процедура PostgreSQL_СоздатьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - База = "testbase1"; - - Удаление = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP - OPI_ПолучениеДанныхТестов.ВывестиСлужебнуюИнформацию(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных"); - - Подключение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - Обработать(Подключение, "PostgreSQL", "СоздатьБазуДанных", "Открытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); - - Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных", "Существующая"); - - База = "testbase2"; - - OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); - - Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных", "Новая"); - - OPI_PostgreSQL.ЗакрытьСоединение(Подключение); - -КонецПроцедуры - -Процедура PostgreSQL_СоздатьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("bool_field" , "BOOL"); - СтруктураКолонок.Вставить("oldchar_field" , """char"""); - СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); - СтруктураКолонок.Вставить("smallserial_field", "SMALLSERIAL"); - СтруктураКолонок.Вставить("int_field" , "INT"); - СтруктураКолонок.Вставить("serial_field" , "SERIAL"); - СтруктураКолонок.Вставить("oid_field" , "OID"); - СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); - СтруктураКолонок.Вставить("bigserial_field" , "BIGSERIAL"); - СтруктураКолонок.Вставить("real_field" , "REAL"); - СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION"); - СтруктураКолонок.Вставить("text_field" , "TEXT"); - СтруктураКолонок.Вставить("varchar_field" , "VARCHAR"); - СтруктураКолонок.Вставить("charn_field" , "CHAR(3)"); - СтруктураКолонок.Вставить("char_field" , "CHAR"); - СтруктураКолонок.Вставить("name_field" , "NAME"); - СтруктураКолонок.Вставить("bytea_field" , "BYTEA"); - СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP"); - СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); - СтруктураКолонок.Вставить("ip_field" , "INET"); - СтруктураКолонок.Вставить("json_field" , "JSON"); - СтруктураКолонок.Вставить("jsonb_field" , "JSONB"); - СтруктураКолонок.Вставить("date_field" , "DATE"); - СтруктураКолонок.Вставить("time_field" , "TIME"); - СтруктураКолонок.Вставить("uuid_field" , "UUID"); - СтруктураКолонок.Вставить("numeric_field" , "NUMERIC(15, 2)"); - - OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols", СтруктураКолонок); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "СоздатьТаблицу"); - - Таблица = "АБВ ГДЕ"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); - - Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка имени"); - - Таблица = "somename"; - СтруктураКолонок.Вставить("wtf_field", "WTF"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); - - Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка типа"); - -КонецПроцедуры - -Процедура PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ПолучитьИнформациюОТаблице"); - - Таблица = "heyho"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "PostgreSQL", "ПолучитьИнформациюОТаблице", "Ошибка"); - -КонецПроцедуры - -Процедура PostgreSQL_ДобавитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - МассивЗаписей = Новый Массив; - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10); - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); - - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина)); - СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char" - СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 5)); - СтруктураЗаписи.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 6)); - СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100)); - СтруктураЗаписи.Вставить("serial_field" , Новый Структура("SERIAL" , 100)); - СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576)); - СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999)); - СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999)); - СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2)); - СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0002)); // или DOUBLE PRECISION - СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); - СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar")); - СтруктураЗаписи.Вставить("charn_field" , Новый Структура("CHAR" , "AAA")); - СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A")); - СтруктураЗаписи.Вставить("name_field" , Новый Структура("NAME" , "Vitaly")); - СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка)); - СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , ТекущаяДата)); - СтруктураЗаписи.Вставить("tswtz_field" , Новый Структура("TIMESTAMP_WITH_TIME_ZONE", ТекущаяДатаЧП)); // или TIMESTAMP WITH TIME ZONE - СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1")); - СтруктураЗаписи.Вставить("json_field" , Новый Структура("JSON" , СлучайнаяСтруктура)); - СтруктураЗаписи.Вставить("jsonb_field" , Новый Структура("JSONB" , СлучайнаяСтруктура)); - СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); - СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор)); - СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , "15.2")); - - МассивЗаписей.Добавить(СтруктураЗаписи); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows", МассивЗаписей); - Опции.Вставить("trn", Истина); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьЗаписи", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ДобавитьЗаписи"); - -КонецПроцедуры - -Процедура PostgreSQL_ПолучитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - // Все записи без отборов - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "PostgreSQL", "ПолучитьЗаписи"); // SKIP - - // Отборы, выбранные поля, количество и сортировка - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , "test_data"); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Таблица = "test_data"; - - Поля = Новый Массив; - Поля.Добавить("first_name"); - Поля.Добавить("last_name"); - Поля.Добавить("email"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "gender"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Male"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "id"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 50"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("ip_address", "DESC"); - Количество = 5; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ПолучитьЗаписи", "Отборы"); - -КонецПроцедуры - -Процедура PostgreSQL_ОбновитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "test_data"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Количество = OPI_PostgreSQl.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения); // SKIP - Обработать(Количество, "PostgreSQL", "ОбновитьЗаписи", "Количество"); // SKIP - Количество = Количество["data"].Количество(); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Результат = OPI_PostgreSQl.ОбновитьЗаписи(Таблица - , СтруктураПолей - , СтруктураФильтра - , СтрокаПодключения - , НастройкиTLS); - - // END - - Обработать(Результат, "PostgreSQL", "ОбновитьЗаписи"); - - Проверка = OPI_PostgreSQl.ПолучитьЗаписи(Таблица, "['ip_address']", Фильтры, , , СтрокаПодключения); - - Обработать(Проверка, "PostgreSQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); - -КонецПроцедуры - -Процедура PostgreSQL_УдалитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "test_data"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - СтруктураФильтра.Вставить("union", "AND"); - - Фильтры.Добавить(СтруктураФильтра); - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "ip_address"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Получение = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьЗаписи", Опции); - - // END - - Обработать(Получение, "PostgreSQL", "УдалитьЗаписи", "Получение"); - - Количество = Получение["data"].Количество(); - Остаток = 100 - Количество; - - Обработать(Результат, "PostgreSQL", "УдалитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьЗаписи", "Проверка", Остаток); - -КонецПроцедуры - -Процедура PostgreSQL_УдалитьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "УдалитьТаблицу"); - - База = "test_data"; - Таблица = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьТаблицу", "Тест"); - -КонецПроцедуры - -Процедура PostgreSQL_УдалитьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "postgres"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - База = "testbase1"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных"); - - База = "testbase2"; - - Подключение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - Обработать(Подключение, "PostgreSQL", "УдалитьБазуДанных", "Открытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Отключение"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Удаление"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Ошибка"); - - Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Подключение); - - Обработать(Закрытие, "PostgreSQL", "УдалитьБазуДанных", "Закрытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Ошибка подключения"); - -КонецПроцедуры - -Процедура PostgreSQL_ОчиститьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОчиститьТаблицу", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ОчиститьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "PostgreSQL", "ОчиститьТаблицу", "Проверка"); - -КонецПроцедуры - -Процедура PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ОтключитьВсеСоединенияБазыДанных"); - -КонецПроцедуры - -Процедура PostgreSQL_ГарантироватьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "test_merge"; - - СтруктураКолонок = Новый Структура; // SKIP - СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP - СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP - СтруктураКолонок.Вставить("age" , "INT"); // SKIP - СтруктураКолонок.Вставить("salary", "REAL"); // SKIP - OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP - - МассивДанных = Новый Массив; - - СтруктураСтроки1 = Новый Структура; - СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); - СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT", "Vitaly")); - СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); - СтруктураСтроки1.Вставить("salary", Новый Структура("REAL", 1000.12)); - - СтруктураСтроки2 = Новый Структура; - СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); - СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT", "Lesha")); - СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); - СтруктураСтроки2.Вставить("salary", Новый Структура("REAL", 200.20)); - - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки2); - - КлючевыеПоля = Новый Массив; - КлючевыеПоля.Добавить("id"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("unique", КлючевыеПоля); - Опции.Вставить("db" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьЗаписи", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ГарантироватьЗаписи", "Вставка"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "PostgreSQL", "ГарантироватьЗаписи", "Проверка вставки"); - - СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT", "Vitaly Updated")); - СтруктураСтроки1.Вставить("salary", Новый Структура("REAL", 1500.50)); - - СтруктураСтроки3 = Новый Структура; - СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); - СтруктураСтроки3.Вставить("name" , Новый Структура("TEXT", "Anton")); - СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); - СтруктураСтроки3.Вставить("salary", Новый Структура("REAL", 3000.00)); - - МассивДанных = Новый Массив; - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки3); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("unique", КлючевыеПоля); - Опции.Вставить("db" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьЗаписи", Опции); - - Обработать(Результат, "PostgreSQL", "ГарантироватьЗаписи", "Обновление"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "PostgreSQL", "ГарантироватьЗаписи", "Проверка обновления"); - - OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); - -КонецПроцедуры - -Процедура PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ПолучитьСтруктуруФильтраЗаписей"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - Обработать(Результат, "PostgreSQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); - -КонецПроцедуры - -Процедура PostgreSQL_ПолучитьНастройкиTLS(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ПолучитьНастройкиTLS"); - -КонецПроцедуры - -Процедура PostgreSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - Имя = "new_field"; - ТипДанных = "TEXT"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name" , Имя); - Опции.Вставить("type" , ТипДанных); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ДобавитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "PostgreSQL", "ДобавитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура PostgreSQL_УдалитьКолонкуТаблицы(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - Имя = "new_field"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name" , Имя); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "УдалитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "PostgreSQL", "УдалитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура PostgreSQL_ГарантироватьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 5432; - Порт = ?(TLS, 5433, 5432); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); - СтруктураКолонок.Вставить("uuid_field" , "uuid"); - СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); - СтруктураКолонок.Вставить("custom_field" , "TEXT"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьТаблицу", Опции); - - // END - - Обработать(Результат, "PostgreSQL", "ГарантироватьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "PostgreSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - - Таблица = "test_new"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьТаблицу", Опции); - - Обработать(Результат, "PostgreSQL", "ГарантироватьТаблицу", "Новая"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "PostgreSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - -КонецПроцедуры - -#КонецОбласти - -#Область MySQL - -Процедура MySQL_СформироватьСтрокуПодключения(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - // END - - Результат = СтрЗаменить(Результат, Пароль, "***"); - Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); - - Обработать(Результат, "MySQL", "СформироватьСтрокуПодключения"); - -КонецПроцедуры - -Процедура MySQL_ОткрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Результат = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - // END - - OPI_MySQL.ЗакрытьСоединение(Результат); - Обработать(Результат, "MySQL", "ОткрытьСоединение"); - -КонецПроцедуры - -Процедура MySQL_ЗакрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - Результат = OPI_MySQL.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "MySQL", "ЗакрытьСоединение"); - -КонецПроцедуры - -Процедура MySQL_ЭтоКоннектор(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - Результат = OPI_MySQL.ЭтоКоннектор(Соединение); - - OPI_MySQL.ЗакрытьСоединение(Результат); - - // END - - Обработать(Результат, "MySQL", "ЭтоКоннектор"); - -КонецПроцедуры - -Процедура MySQL_ВыполнитьЗапросSQL(ПараметрыФункции) - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - OPI_MySQL.УдалитьТаблицу("users" , Соединение); // SKIP - OPI_MySQL.УдалитьТаблицу("test_data" , Соединение); // SKIP - OPI_MySQL.УдалитьТаблицу("test_table", Соединение); // SKIP - - Обработать(Соединение, "MySQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP - - // CREATE - - ТекстЗапроса = " - |CREATE TABLE test_table ( - |id INT AUTO_INCREMENT PRIMARY KEY, - |name VARCHAR(255), - |age INT, - |salary DOUBLE, - |amount FLOAT, - |type TINYINT UNSIGNED, - |date DATE, - |time TIME, - |data MEDIUMBLOB - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Create"); // SKIP - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) - |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly")); - МассивПараметров.Добавить(Новый Структура("INT" , 25)); - МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12)); - МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12)); - МассивПараметров.Добавить(Новый Структура("UINT" , 1)); - МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); - МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату())); - МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка)); - - Опции = Новый Структура; - Опции.Вставить("sql" , ТекстЗапроса); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("dbc" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP - - Результат = OPI_MySQL.ВыполнитьЗапросSQL("create table test_data (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Соединение); // SKIP - Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Test data"); // SKIP - - // SQL запрос из файла - - ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу - - Опции = Новый Структура; - Опции.Вставить("sql", ФайлSQL); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP - - Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Закрытие, "MySQL", "ВыполнитьЗапросSQL", "Закрытие"); // SKIP - -КонецПроцедуры - -Процедура MySQL_СоздатьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - База = "testbase1"; - - OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); - - // END - - Обработать(Результат, "MySQL", "СоздатьБазуДанных"); - - База = "testbase2"; - OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); - - Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - Обработать(Подключение, "MySQL", "СоздатьБазуДанных", "Открытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); - - Обработать(Результат, "MySQL", "СоздатьБазуДанных", "Создание"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); - - Обработать(Результат, "MySQL", "СоздатьБазуДанных", "Существующая"); - - OPI_MySQL.ЗакрытьСоединение(Подключение); - -КонецПроцедуры - -Процедура MySQL_СоздатьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("char_field" , "CHAR(5)"); - СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)"); - СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT"); - СтруктураКолонок.Вставить("text_field" , "TEXT"); - СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT"); - СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT"); - СтруктураКолонок.Вставить("tinyint_field" , "TINYINT"); - СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); - СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT"); - СтруктураКолонок.Вставить("int_field" , "INT"); - СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED"); - СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); - СтруктураКолонок.Вставить("float_field" , "FLOAT"); - СтруктураКолонок.Вставить("double_field" , "DOUBLE"); - СтруктураКолонок.Вставить("date_field" , "DATE"); - СтруктураКолонок.Вставить("time_field" , "TIME"); - СтруктураКолонок.Вставить("datetime_field" , "DATETIME"); - СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP"); - СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB"); - СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')"); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols", СтруктураКолонок); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); - - // END - - Обработать(Результат, "MySQL", "СоздатьТаблицу"); - - Таблица = "АБВ ГДЕ"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); - - Обработать(Результат, "MySQL", "СоздатьТаблицу", "Ошибка имени"); - - Таблица = "somename"; - СтруктураКолонок.Вставить("wtf_field", "WTF"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); - - Обработать(Результат, "MySQL", "СоздатьТаблицу", "Ошибка типа"); - -КонецПроцедуры - -Процедура MySQL_ДобавитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - МассивЗаписей = Новый Массив; - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA")); - СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar")); - СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text")); - СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); - СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text")); - СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text")); - СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127)); - СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767)); - СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607)); - СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647)); - СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295)); - СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807)); - СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50)); - СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123)); - СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); - СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка)); - СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one")); - - МассивЗаписей.Добавить(СтруктураЗаписи); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows", МассивЗаписей); - Опции.Вставить("trn", Истина); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); - - // END - - Обработать(Результат, "MySQL", "ДобавитьЗаписи"); - -КонецПроцедуры - -Процедура MySQL_ПолучитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - // Все записи без отборов - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "MySQL", "ПолучитьЗаписи"); // SKIP - - // Отборы, выбранные поля, количество и сортировка - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , "test_data"); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "test_data"; - - Поля = Новый Массив; - Поля.Добавить("first_name"); - Поля.Добавить("last_name"); - Поля.Добавить("email"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "gender"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Male"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "id"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 50"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("ip_address", "DESC"); - Количество = 5; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - // END - - Обработать(Результат, "MySQL", "ПолучитьЗаписи", "Отборы"); - -КонецПроцедуры - -Процедура MySQL_ОбновитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "test_data"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Количество = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP - Обработать(Количество, "MySQL", "ОбновитьЗаписи", "Количество"); // SKIP - Количество = Количество["data"].Количество(); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); - - // END - - Обработать(Результат, "MySQL", "ОбновитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['ip_address']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - Обработать(Проверка, "MySQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); - -КонецПроцедуры - -Процедура MySQL_УдалитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "test_data"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - СтруктураФильтра.Вставить("union", "AND"); - - Фильтры.Добавить(СтруктураФильтра); - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "ip_address"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Получение = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьЗаписи", Опции); - - // END - - Обработать(Получение, "MySQL", "УдалитьЗаписи", "Получение"); - - Количество = Получение["data"].Количество(); - Остаток = 100 - Количество; - - Обработать(Результат, "MySQL", "УдалитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "MySQL", "УдалитьЗаписи", "Проверка", Остаток); - -КонецПроцедуры - -Процедура MySQL_УдалитьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); - - // END - - Обработать(Результат, "MySQL", "УдалитьТаблицу"); - - База = "test_data"; - Таблица = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); - - Обработать(Результат, "MySQL", "УдалитьТаблицу", "Тест"); - -КонецПроцедуры - -Процедура MySQL_УдалитьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - База = "testbase1"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); - - // END - - Обработать(Результат, "MySQL", "УдалитьБазуДанных"); - - База = "testbase2"; - - Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - Обработать(Подключение, "MySQL", "УдалитьБазуДанных", "Открытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Удаление"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Ошибка"); - - Закрытие = OPI_MySQL.ЗакрытьСоединение(Подключение); - - Обработать(Закрытие, "MySQL", "УдалитьБазуДанных", "Закрытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Ошибка подключения"); - -КонецПроцедуры - -Процедура MySQL_ОчиститьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); - - // END - - Обработать(Результат, "MySQL", "ОчиститьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "MySQL", "ОчиститьТаблицу", "Проверка"); - -КонецПроцедуры - -Процедура MySQL_ГарантироватьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "test_merge"; - - СтруктураКолонок = Новый Структура; // SKIP - СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP - СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP - СтруктураКолонок.Вставить("age" , "INT"); // SKIP - СтруктураКолонок.Вставить("salary", "DOUBLE"); // SKIP - OPI_MySQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP - - МассивДанных = Новый Массив; - - СтруктураСтроки1 = Новый Структура; - СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); - СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly")); - СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); - СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1000.12)); - - СтруктураСтроки2 = Новый Структура; - СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); - СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT" , "Lesha")); - СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); - СтруктураСтроки2.Вставить("salary", Новый Структура("DOUBLE", 200.20)); - - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки2); - - КлючевыеПоля = Новый Массив; - КлючевыеПоля.Добавить("id"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("db" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьЗаписи", Опции); - - // END - - Обработать(Результат, "MySQL", "ГарантироватьЗаписи", "Вставка"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "MySQL", "ГарантироватьЗаписи", "Проверка вставки"); - - СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly Updated")); - СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1500.50)); - - СтруктураСтроки3 = Новый Структура; - СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); - СтруктураСтроки3.Вставить("name" , Новый Структура("TEXT" , "Anton")); - СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); - СтруктураСтроки3.Вставить("salary", Новый Структура("DOUBLE", 3000.00)); - - МассивДанных = Новый Массив; - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки3); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("db" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьЗаписи", Опции); - - Обработать(Результат, "MySQL", "ГарантироватьЗаписи", "Обновление"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "MySQL", "ГарантироватьЗаписи", "Проверка обновления"); - - OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); - -КонецПроцедуры - -Процедура MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - // END - - Обработать(Результат, "MySQL", "ПолучитьСтруктуруФильтраЗаписей"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - Обработать(Результат, "MySQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); - -КонецПроцедуры - -Процедура MySQL_ПолучитьНастройкиTLS(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - - // END - - Обработать(Результат, "MySQL", "ПолучитьНастройкиTLS"); - -КонецПроцедуры - -Процедура MySQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - // END - - Обработать(Результат, "MySQL", "ПолучитьИнформациюОТаблице"); - - Таблица = "heyho"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "MySQL", "ПолучитьИнформациюОТаблице", "Ошибка"); - -КонецПроцедуры - -Процедура MySQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - Имя = "new_field"; - ТипДанных = "MEDIUMTEXT"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name", Имя); - Опции.Вставить("type", ТипДанных); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "MySQL", "ДобавитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "MySQL", "ДобавитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура MySQL_УдалитьКолонкуТаблицы(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - Имя = "new_field"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name", Имя); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "MySQL", "УдалитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "MySQL", "УдалитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура MySQL_ГарантироватьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - TLS = Истина; - TLS = ПараметрыФункции["TLS"]; // SKIP - - Порт = 3306; - Порт = ?(TLS, 3307, 3306); // SKIP - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("port" , Порт); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); - - Если TLS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); - Иначе - НастройкиTLS = Неопределено; - КонецЕсли; - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); - СтруктураКолонок.Вставить("double_field" , "DOUBLE"); - СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); - СтруктураКолонок.Вставить("custom_field" , "TEXT"); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols", СтруктураКолонок); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьТаблицу", Опции); - - // END - - Обработать(Результат, "MySQL", "ГарантироватьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "MySQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - - Таблица = "test_new"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьТаблицу", Опции); - - Обработать(Результат, "MySQL", "ГарантироватьТаблицу", "Новая"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "MySQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - -КонецПроцедуры - -#КонецОбласти - -#Область GreenAPI - -Процедура GreenAPI_СформироватьПараметрыДоступа(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - // END - - Обработать(Результат, "GreenAPI", "СформироватьПараметрыДоступа"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьНастройкиИнстанса", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьНастройкиИнстанса", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОбАккаунте", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьИнформациюОбАккаунте"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьСтруктуруНастроекИнстанса"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); - - Обработать(Результат, "GreenAPI", "ПолучитьСтруктуруНастроекИнстанса", "Пустая"); - -КонецПроцедуры - -Процедура GreenAPI_УстановитьНастройкиИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - СтруктураНастроек = Новый Структура; - СтруктураНастроек.Вставить("pollMessageWebhook" , "yes"); - СтруктураНастроек.Вставить("incomingBlockWebhook" , "no"); - СтруктураНастроек.Вставить("incomingCallWebhook" , "no"); - СтруктураНастроек.Вставить("editedMessageWebhook" , "yes"); - СтруктураНастроек.Вставить("deletedMessageWebhook" , "yes"); - СтруктураНастроек.Вставить("outgoingAPIMessageWebhook", "yes"); - - Опции = Новый Структура; - Опции.Вставить("settings", СтруктураНастроек); - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьНастройкиИнстанса", Опции); - - // END - - Обработать(Результат, "GreenAPI", "УстановитьНастройкиИнстанса"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСостояниеИнстанса", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьСостояниеИнстанса"); - -КонецПроцедуры - -Процедура GreenAPI_ПерезапуститьИнстанс(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПерезапуститьИнстанс", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПерезапуститьИнстанс"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьQR(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьQR", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьQR"); - -КонецПроцедуры - -Процедура GreenAPI_РазлогинитьИнстанс(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазлогинитьИнстанс", Опции); - - // END - - Обработать(Результат, "GreenAPI", "РазлогинитьИнстанс"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьКодАвторизации(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - НомерТелефона = 441234567890; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("phone" , НомерТелефона); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьКодАвторизации", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьКодАвторизации"); - -КонецПроцедуры - -Процедура GreenAPI_УстановитьКартинкуПрофиля(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуПрофиля", Опции); - - // END - - Обработать(Результат, "GreenAPI", "УстановитьКартинкуПрофиля"); - -КонецПроцедуры - -Процедура GreenAPI_СоздатьГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Имя = "New group"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("name" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СоздатьГруппу", Опции); - - // END - - Обработать(Результат, "GreenAPI", "СоздатьГруппу", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_ПокинутьГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПокинутьГруппу", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПокинутьГруппу"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОГруппе", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьИнформациюОГруппе"); - -КонецПроцедуры - -Процедура GreenAPI_ИзменитьИмяГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - Имя = "New name"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("name" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьИмяГруппы", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ИзменитьИмяГруппы"); - -КонецПроцедуры - -Процедура GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ДобавитьУчастникаВГруппу", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ДобавитьУчастникаВГруппу"); - -КонецПроцедуры - -Процедура GreenAPI_ИсключитьУчастникаГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИсключитьУчастникаГруппы", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ИсключитьУчастникаГруппы"); - -КонецПроцедуры - -Процедура GreenAPI_НазначитьПраваАдминистратора(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "НазначитьПраваАдминистратора", Опции); - - // END - - Обработать(Результат, "GreenAPI", "НазначитьПраваАдминистратора"); - -КонецПроцедуры - -Процедура GreenAPI_ОтозватьПраваАдминистратора(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - IDПользователя = "123123123@c.us"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтозватьПраваАдминистратора", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтозватьПраваАдминистратора"); - -КонецПроцедуры - -Процедура GreenAPI_УстановитьКартинкуГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("group" , IDГруппы); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуГруппы", Опции); - - // END - - Обработать(Результат, "GreenAPI", "УстановитьКартинкуГруппы"); - -КонецПроцедуры - -Процедура GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Текст = "Новое сообщение"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("quoted", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); - - Обработать(Результат, "GreenAPI", "ОтправитьТекстовоеСообщение", "Цитата"); - -КонецПроцедуры - -Процедура GreenAPI_УдалитьСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьСообщение", Опции); - - // END - - Обработать(Результат, "GreenAPI", "УдалитьСообщение"); - -КонецПроцедуры - -Процедура GreenAPI_ИзменитьТекстСообщения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; - Текст = "Новый текст сообщения"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьТекстСообщения", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ИзменитьТекстСообщения"); - -КонецПроцедуры - -Процедура GreenAPI_ОтправитьФайл(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - ИмяФайла = "photo.jpg"; - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Описание = "Описание файла"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтправитьФайл", , ПараметрыФункции); - - Файл = ПараметрыФункции["Video"]; - ИмяФайла = "vid.mp4"; - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); - - Обработать(Результат, "GreenAPI", "ОтправитьФайл", "Цитата"); - -КонецПроцедуры - -Процедура GreenAPI_ОтправитьФайлПоURL(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Файл = ПараметрыФункции["Picture"]; - ИмяФайла = "photo.jpg"; - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Описание = "Описание файла"; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("url" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтправитьФайлПоURL", , ПараметрыФункции); - - Файл = ПараметрыФункции["Video"]; - ИмяФайла = "vid.mp4"; - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("url" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); - - Обработать(Результат, "GreenAPI", "ОтправитьФайлПоURL", "Цитата"); - -КонецПроцедуры - -Процедура GreenAPI_ОтправитьОпрос(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - Текст = "Какой ваш любимый цвет?"; - - Варианты = Новый Массив; - Варианты.Добавить("Красный"); - Варианты.Добавить("Желтый"); - Варианты.Добавить("Зеленый"); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("options", Варианты); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтправитьОпрос", , ПараметрыФункции); - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("options", Варианты); - Опции.Вставить("multi" , Истина); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); - - Обработать(Результат, "GreenAPI", "ОтправитьОпрос", "Цитата"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьОписаниеЛокации(ПараметрыФункции) - - Широта = 53.908522; - Долгота = 27.574821; - Адрес = "Площадь Победы, Минск"; - Название = "пл. Победы"; - - Опции = Новый Структура; - Опции.Вставить("lat" , Широта); - Опции.Вставить("long", Долгота); - Опции.Вставить("addr", Адрес); - Опции.Вставить("name", Название); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьОписаниеЛокации"); - -КонецПроцедуры - -Процедура GreenAPI_ОтправитьЛокацию(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Широта = 53.908522; - Долгота = 27.574821; - Адрес = "Площадь Победы, Минск"; - Название = "пл. Победы"; - - Опции = Новый Структура; - Опции.Вставить("lat" , Широта); - Опции.Вставить("long", Долгота); - Опции.Вставить("addr", Адрес); - Опции.Вставить("name", Название); - - Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("loc" , Локация); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтправитьЛокацию", , ПараметрыФункции); - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("lat" , Широта); - Опции.Вставить("long", Долгота); - - Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("loc" , Локация); - Опции.Вставить("quoted", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); - - Обработать(Результат, "GreenAPI", "ОтправитьЛокацию", "Цитата"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыФункции) - - Телефон = 79001234568; - Имя = "Артем"; - Фамилия = "Евпаторийский"; - Отчество = "Петрович"; - Компания = "Велосипед"; - - Опции = Новый Структура; - Опции.Вставить("phone" , Телефон); - Опции.Вставить("name" , Имя); - Опции.Вставить("surname", Фамилия); - Опции.Вставить("midname", Отчество); - Опции.Вставить("company", Компания); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьОписаниеКонтакта"); - -КонецПроцедуры - -Процедура GreenAPI_ОтправитьКонтакт(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Телефон = 79001234568; - Имя = "Артем"; - Фамилия = "Евпаторийский"; - Отчество = "Петрович"; - Компания = "Велосипед"; - - Опции = Новый Структура; - Опции.Вставить("phone" , Телефон); - Опции.Вставить("name" , Имя); - Опции.Вставить("surname", Фамилия); - Опции.Вставить("midname", Отчество); - Опции.Вставить("company", Компания); - - Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("contact", Контакт); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОтправитьКонтакт", , ПараметрыФункции); - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("phone" , Телефон); - Опции.Вставить("company", Компания); - - Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("contact", Контакт); - Опции.Вставить("quoted" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); - - Обработать(Результат, "GreenAPI", "ОтправитьКонтакт", "Цитата"); - -КонецПроцедуры - -Процедура GreenAPI_ПереслатьСообщения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Откуда = "11001234567@c.us"; - Откуда = ПараметрыФункции["GreenAPI_TestGroupID"]; // SKIP - Куда = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Сообщение = ПараметрыФункции["GreenAPI_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("from" , Откуда); - Опции.Вставить("to" , Куда); - Опции.Вставить("msgs" , Сообщение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПереслатьСообщения", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПереслатьСообщения"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьУведомление(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьУведомление", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьУведомление", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDДоставки = ПараметрыФункции["GreenAPI_ReceiptID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("receipt", IDДоставки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьУведомлениеИзОчереди", Опции); - - // END - - Обработать(Результат, "GreenAPI", "УдалитьУведомлениеИзОчереди"); - -КонецПроцедуры - -Процедура GreenAPI_СкачатьФайлСообщения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_FileMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СкачатьФайлСообщения", Опции); - - // END - - Обработать(Результат, "GreenAPI", "СкачатьФайлСообщения"); - -КонецПроцедуры - -Процедура GreenAPI_УстановитьОтметкуПрочтения(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_FileMessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьОтметкуПрочтения", Опции); - - // END - - Обработать(Результат, "GreenAPI", "УстановитьОтметкуПрочтения"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьОчередьСообщений"); - -КонецПроцедуры - -Процедура GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ОчиститьОчередьСообщений"); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИсториюЧата", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьИсториюЧата", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("msg" , IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСообщение", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьСообщение", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьЖурналВходящихСообщений", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции); - - // END - - Обработать(Результат, "GreenAPI", "ПолучитьЖурналИсходящихСообщений", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenAPI_АрхивироватьЧат(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - - OPI_GreenAPI.РазархивироватьЧат(ПараметрыДоступа, IDЧата); // SKIP - - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "АрхивироватьЧат", Опции); - - // END - - Обработать(Результат, "GreenAPI", "АрхивироватьЧат"); - -КонецПроцедуры - -Процедура GreenAPI_РазархивироватьЧат(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; - IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; - - IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазархивироватьЧат", Опции); - - // END - - Обработать(Результат, "GreenAPI", "РазархивироватьЧат"); - -КонецПроцедуры - -#КонецОбласти - -#Область RCON - -Процедура RCON_СформироватьПараметрыСоединения(ПараметрыФункции) - - URL = ПараметрыФункции["RCON_URL"]; - Пароль = ПараметрыФункции["RCON_Password"]; - ТаймаутЗаписи = 20; - ТаймаутЧтения = 20; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("rtout", ТаймаутЧтения); - Опции.Вставить("wtout", ТаймаутЗаписи); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); - - // END - - Обработать(Результат, "RCON", "СформироватьПараметрыСоединения"); - -КонецПроцедуры - -Процедура RCON_ОткрытьСоединение(ПараметрыФункции) - - URL = ПараметрыФункции["RCON_URL"]; - Пароль = ПараметрыФункции["RCON_Password"]; - ТаймаутЗаписи = 20; - ТаймаутЧтения = 20; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("rtout", ТаймаутЧтения); - Опции.Вставить("wtout", ТаймаутЗаписи); - - ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); - Результат = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); - - // END - - Обработать(Результат, "RCON", "ОткрытьСоединение"); - -КонецПроцедуры - -Процедура RCON_ВыполнитьКоманду(ПараметрыФункции) - - URL = ПараметрыФункции["RCON_URL"]; - Пароль = ПараметрыФункции["RCON_Password"]; - ТаймаутЗаписи = 20; - ТаймаутЧтения = 20; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("rtout", ТаймаутЧтения); - Опции.Вставить("wtout", ТаймаутЗаписи); - - ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); - Соединение = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); - - Команда = "list"; - Опции = Новый Структура; - Опции.Вставить("exec", Команда); - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); - - // END - - Обработать(Результат, "RCON", "ВыполнитьКоманду"); - - Команда = "list"; - Опции = Новый Структура; - Опции.Вставить("exec", Команда); - Опции.Вставить("conn", ПараметрыСоединения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); - - Обработать(Результат, "RCON", "ВыполнитьКоманду", "Без соединения"); - -КонецПроцедуры - -Процедура RCON_ЭтоКоннектор(ПараметрыФункции) - - URL = ПараметрыФункции["RCON_URL"]; - Пароль = ПараметрыФункции["RCON_Password"]; - ТаймаутЗаписи = 20; - ТаймаутЧтения = 20; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("rtout", ТаймаутЧтения); - Опции.Вставить("wtout", ТаймаутЗаписи); - - ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); - Соединение = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); - Результат = OPI_RCON.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "RCON", "ЭтоКоннектор"); - -КонецПроцедуры - -#КонецОбласти - -#Область Ollama - -Процедура Ollama_ПолучитьОтвет(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Промпт = "What is 1C:Enterprise?"; - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("prompt" , Промпт); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); - - Обработать(Результат, "Ollama", "ПолучитьОтвет"); // SKIP - - // С параметрами - - Промпт = "Ollama is 22 years old and is busy saving the world. Respond using JSON"; - - Формат = OPI_Инструменты.JSONВСтруктуру(" - |{ - |""type"": ""object"", - |""properties"": { - | ""age"": { - | ""type"": ""integer"" - | }, - | ""available"": { - | ""type"": ""boolean"" - | } - |}, - |""required"": [ - | ""age"", - | ""available"" - |] - |}"); - - ДопПараметры = Новый Структура("format", Формат); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("prompt" , Промпт); - Опции.Вставить("options", ДопПараметры); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьОтвет", "Параметры"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьОтветВКонтексте(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Модель = "tinyllama"; - - МассивСообщений = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("role", "user"); - Опции.Вставить("text", "What is 1C:Enterprise?"); - - Вопрос1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); - Вопрос2 = OPI_Ollama.ПолучитьСтруктуруСообщенияКонтекста("user", "When the first version was released?"); // Вопрос без конкретики - - // Добавляем первый вопрос в контекст - МассивСообщений.Добавить(Вопрос1); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("headers", ДопЗаголовки); - - Ответ1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - Обработать(Ответ1, "Ollama", "ПолучитьОтветВКонтексте", "Предварительный"); // SKIP - - МассивСообщений.Добавить(Ответ1["message"]); // Добавляем ответ на первый вопрос в контекст - МассивСообщений.Добавить(Вопрос2); // Добавляем второй вопрос в контекст - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("headers", ДопЗаголовки); - - Ответ2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - МассивСообщений.Добавить(Ответ2["message"]); - - // ... - - // END - - Обработать(Ответ2, "Ollama", "ПолучитьОтветВКонтексте"); - - МассивСообщений = Новый Массив; - - Вопрос = Новый Структура("role,content", "user", "Hello!"); - МассивСообщений.Добавить(Вопрос); - - Опции = Новый Структура("seed,temperature", 101, 0); - ДопПараметры = Новый Структура("options", Опции); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("options", ДопПараметры); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 1"); - - Сообщение1 = Результат["message"]["content"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("options", ДопПараметры); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 2"); - - Сообщение2 = Результат["message"]["content"]; - - Опции = Новый Структура("seed,temperature", 555, 10); - ДопПараметры = Новый Структура("options", Опции); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("msgs" , МассивСообщений); - Опции.Вставить("options", ДопПараметры); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); - - Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 3"); - - Сообщение3 = Результат["message"]["content"]; - - Обработать(Сообщение3, "Ollama", "ПолучитьОтветВКонтексте", "Сравнение", Сообщение1, Сообщение2, Сообщение3); - -КонецПроцедуры - -Процедура Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "tinyllama"; - Период = 500; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("keep" , Период); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ЗагрузитьМодельВПамять", Опции); - - // END - - Обработать(Результат, "Ollama", "ЗагрузитьМодельВПамять"); - -КонецПроцедуры - -Процедура Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ВыгрузитьМодельИзПамяти", Опции); - - // END - - Обработать(Результат, "Ollama", "ВыгрузитьМодельИзПамяти"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровЗапроса"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровЗапроса", "Пустая"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровВКонтексте"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровВКонтексте", "Пустая"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("role", "user"); - Опции.Вставить("text", "Hello!"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруСообщенияКонтекста"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруНастроекМодели"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруНастроекМодели", "Пустая"); - -КонецПроцедуры - -Процедура Ollama_СоздатьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Настройки = Новый Структура("from,system", "tinyllama", "You are Mario from Super Mario Bros."); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("settings", Настройки); - Опции.Вставить("headers" , ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СоздатьМодель", Опции); - - // END - - Обработать(Результат, "Ollama", "СоздатьМодель"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("prompt" , "How are you?"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); - - Обработать(Результат, "Ollama", "СоздатьМодель", "Запрос"); - -КонецПроцедуры - -Процедура Ollama_УдалитьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); - - // END - - Обработать(Результат, "Ollama", "УдалитьМодель"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , "library/tinyllama:latest"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); - Обработать(Результат, "Ollama", "УдалитьМодель", "Tiny"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , "bayselonarrend/tinyllama:latest"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); - Обработать(Результат, "Ollama", "УдалитьМодель", "Tiny, аккаунт"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); - - Обработать(Результат, "Ollama", "УдалитьМодель", "Список"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСписокМоделей(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСписокМоделей"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокЗапущенныхМоделей", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСписокЗапущенныхМоделей"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьИнформациюОМодели(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("verbose", Ложь); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьИнформациюОМодели", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьИнформациюОМодели"); - -КонецПроцедуры - -Процедура Ollama_КопироватьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "mario"; - Имя = "mario2"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("name" , Имя); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "КопироватьМодель", Опции); - - // END - - Обработать(Результат, "Ollama", "КопироватьМодель"); - - OPI_Ollama.УдалитьМодель(URL, Имя, ДопЗаголовки); - -КонецПроцедуры - -Процедура Ollama_ПолучитьВерсию(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьВерсию", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьВерсию"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьПредставления(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("Why is the sky blue?"); - МассивСтрок.Добавить("Why is the grass green?"); - - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("input" , МассивСтрок); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьПредставления", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьПредставления"); - -КонецПроцедуры - -Процедура Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); - - // END - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровПредставлений"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); - - Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровПредставлений", "Пустая"); - -КонецПроцедуры - -Процедура Ollama_ОтправитьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "bayselonarrend/tinyllama:latest"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьМодель", Опции); - - // END - - Обработать(Результат, "Ollama", "ОтправитьМодель"); - -КонецПроцедуры - -Процедура Ollama_СкачатьМодель(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Модель = "tinyllama"; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , Модель); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); - - // END - - Обработать(Результат, "Ollama", "СкачатьМодель"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("model" , "bayselonarrend/tinyllama:latest"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); - - Обработать(Результат, "Ollama", "СкачатьМодель", "Аккаунт"); - -КонецПроцедуры - -Процедура Ollama_ОтправитьBlob(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка, Истина); // SKIP - Рандом = ПолучитьДвоичныеДанныеИзСтроки(Строка(Новый УникальныйИдентификатор)); // SKIP - Картинка = OPI_Инструменты.СклеитьДанные(Картинка, Рандом); // SKIP - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("data" , Картинка); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьBlob", Опции); - - // END - - Обработать(Результат, "Ollama", "ОтправитьBlob", , ПараметрыФункции); - -КонецПроцедуры - -Процедура Ollama_ПроверитьBlob(ПараметрыФункции) - - URL = ПараметрыФункции["Ollama_URL"]; - Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama - SHA256 = ПараметрыФункции["Ollama_Blob"]; - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("digest" , SHA256); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); - - // END - - Обработать(Результат, "Ollama", "ПроверитьBlob"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("digest" , "yoyoyo"); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); - - Обработать(Результат, "Ollama", "ПроверитьBlob", "Ошибка"); - -КонецПроцедуры - -#КонецОбласти - -#Область HTTP - -Процедура HTTP_Инициализировать(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP - .НовыйЗапрос() - .Инициализировать(URL) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "Инициализировать"); - - HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .ОбработатьЗапрос("POST", Ложь); - - Обработать(HTTPКлиент, "HTTP", "Инициализировать", "Проверка 1", ПараметрыФункции); - - ДругойЗапрос = HTTPКлиент.УстановитьURL(ПараметрыФункции["HTTP_URL"] + "/post") - .ОбработатьЗапрос("POST", Ложь) - .ВернутьЗапрос(); - - Обработать(ДругойЗапрос, "HTTP", "Инициализировать", "Проверка 2"); - -КонецПроцедуры - -Процедура HTTP_УстановитьURL(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьURL"); - - HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("POST", Ложь); - - Обработать(HTTPКлиент, "HTTP", "УстановитьURL", "Проверка", ПараметрыФункции); - -КонецПроцедуры - -Процедура HTTP_УстановитьПараметрыURL(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - СтруктураПараметров = Новый Структура("param1,param2", "text", 10); - - Результат = OPI_ЗапросыHTTP - .НовыйЗапрос() - .Инициализировать(URL) - .УстановитьПараметрыURL(СтруктураПараметров) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьПараметрыURL", , ПараметрыФункции); - - HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьПараметрыURL(СтруктураПараметров) - .ОбработатьЗапрос("POST", Ложь); - - HTTPЗапрос = HTTPКлиент.ВернутьЗапрос(); - - Обработать(HTTPЗапрос, "HTTP", "УстановитьПараметрыURL", "Проверка"); - - // Проверка кодировки - - // Комплексная - - СтруктураПараметров1 = Новый Структура; - СтруктураПараметров1.Вставить("param1", "search?text"); - СтруктураПараметров1.Вставить("param2", "John Doe"); - СтруктураПараметров1.Вставить("param3", "value&another"); - СтруктураПараметров1.Вставить("param4", "кириллица"); - СтруктураПараметров1.Вставить("param5", ""); - - АдресРесурса1 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров1) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса1, "HTTP", "УстановитьПараметрыURL", "Вариант 1"); - - СтруктураПараметров2 = Новый Структура; - СтруктураПараметров2.Вставить("param1", "search?text"); - СтруктураПараметров2.Вставить("param2", "John Doe"); - - // Параметры в оригинальном URL - - АдресРесурса2 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page?existing=value") - .УстановитьПараметрыURL(СтруктураПараметров2) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса2, "HTTP", "УстановитьПараметрыURL", "Вариант 2"); - - // Пустая строка параметров - - СтруктураПараметров3 = Новый Структура; - СтруктураПараметров3.Вставить("param1", "search?text"); - СтруктураПараметров3.Вставить("param2", "John Doe"); - - АдресРесурса3 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page?") - .УстановитьПараметрыURL(СтруктураПараметров3) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса3, "HTTP", "УстановитьПараметрыURL", "Вариант 3"); - - // Спец. символы в пути - - СтруктураПараметров4 = Новый Структура; - СтруктураПараметров4.Вставить("param1", "search?text"); - СтруктураПараметров4.Вставить("param2", "John Doe"); - - АдресРесурса4 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/path with spaces") - .УстановитьПараметрыURL(СтруктураПараметров4) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса4, "HTTP", "УстановитьПараметрыURL", "Вариант 4"); - - // URL с фрагментом - - СтруктураПараметров5 = Новый Структура; - СтруктураПараметров5.Вставить("param1", "search?text"); - СтруктураПараметров5.Вставить("param2", "John Doe"); - - АдресРесурса5 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page#section") - .УстановитьПараметрыURL(СтруктураПараметров5) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса5, "HTTP", "УстановитьПараметрыURL", "Вариант 5"); - - // Кириллица в пути - - СтруктураПараметров6 = Новый Структура; - СтруктураПараметров6.Вставить("param1", "search?text"); - СтруктураПараметров6.Вставить("param2", "John Doe"); - - АдресРесурса6 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/путь") - .УстановитьПараметрыURL(СтруктураПараметров6) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса6, "HTTP", "УстановитьПараметрыURL", "Вариант 6"); - - // Несколько параметров и кодировка - - СтруктураПараметров7 = Новый Структура; - СтруктураПараметров7.Вставить("param1", "value1"); - СтруктураПараметров7.Вставить("param2", "value two"); - СтруктураПараметров7.Вставить("param3", "value"); - - АдресРесурса7 = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров7) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - Обработать(АдресРесурса7, "HTTP", "УстановитьПараметрыURL", "Вариант 7"); - -КонецПроцедуры - -Процедура HTTP_УстановитьФайлОтвета(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - ИВФ = ПолучитьИмяВременногоФайла(); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьФайлОтвета(ИВФ) // <--- - .ОбработатьЗапрос("GET") - .ВернутьИмяФайлаТелаОтвета(); - - // END - - Обработать(Результат, "HTTP", "УстановитьФайлОтвета", , ИВФ); - - РезультатПроверки = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .УстановитьФайлОтвета(ИВФ) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакДвоичныеДанные(); - - Обработать(РезультатПроверки, "HTTP", "УстановитьФайлОтвета", "Тело", ИВФ); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура HTTP_УстановитьТипДанных(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - ТипMIME = "text/markdown"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьСтроковоеТело("# Привет мир!") - .УстановитьТипДанных(ТипMIME) // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьТипДанных"); - -КонецПроцедуры - -Процедура HTTP_ПолучитьЛог(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - СтруктураПараметров = Новый Структура("param1,param2", "text", 10); - - HTTPКлиент = OPI_ЗапросыHTTP - .НовыйЗапрос() - .Инициализировать(URL) - .УстановитьПараметрыURL(СтруктураПараметров) - .ОбработатьЗапрос("GET"); - - Ответ = HTTPКлиент.ВернутьОтветКакJSONКоллекцию(); - Лог = HTTPКлиент.ПолучитьЛог(Истина); - - // END - - Обработать(Лог, "HTTP", "ПолучитьЛог"); - -КонецПроцедуры - -Процедура HTTP_УстановитьДвоичноеТело(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьДвоичноеТело", , Картинка); - -КонецПроцедуры - -Процедура HTTP_УстановитьСтроковоеТело(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Текст = "Привет мир!"; - Кодировка = "Windows-1251"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .ИспользоватьКодировку(Кодировка) - .УстановитьСтроковоеТело(Текст) // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьСтроковоеТело"); - -КонецПроцедуры - -Процедура HTTP_УстановитьJsonТело(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - СлучайныйМассив = Новый Массив; - СлучайныйМассив.Добавить("A"); - СлучайныйМассив.Добавить("B"); - СлучайныйМассив.Добавить("C"); - - Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьJsonТело(Данные) // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьJsonТело", , Данные); - -КонецПроцедуры - -Процедура HTTP_УстановитьFormТело(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Данные = Новый Структура("Поле1,Поле2", "10", "Текст"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьFormТело(Данные) // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьFormТело", , Данные); - -КонецПроцедуры - -Процедура HTTP_НачатьЗаписьТелаMultipart(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .НачатьЗаписьТелаMultipart() // <--- - .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") - .ДобавитьПолеMultipartFormData("Поле1", "Текст") - .ДобавитьПолеMultipartFormData("Поле2", "10") - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "НачатьЗаписьТелаMultipart", , Картинка); - -КонецПроцедуры - -Процедура HTTP_ДобавитьФайлMultipartFormData(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .НачатьЗаписьТелаMultipart() - .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") // <--- - .ДобавитьПолеMultipartFormData("Поле1", "Текст") - .ДобавитьПолеMultipartFormData("Поле2", "10") - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьФайлMultipartFormData", , Картинка); - -КонецПроцедуры - -Процедура HTTP_ДобавитьПолеMultipartFormData(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .НачатьЗаписьТелаMultipart() - .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") - .ДобавитьПолеMultipartFormData("Поле1", "Текст") // <--- - .ДобавитьПолеMultipartFormData("Поле2", "10") // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьПолеMultipartFormData", , Картинка); - -КонецПроцедуры - -Процедура HTTP_ДобавитьДанныеRelated(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - СлучайныйМассив = Новый Массив; - СлучайныйМассив.Добавить("A"); - СлучайныйМассив.Добавить("B"); - СлучайныйМассив.Добавить("C"); - - Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .НачатьЗаписьТелаMultipart(Истина, "related") - .ДобавитьДанныеRelated(Данные, "application/json; charset=UTF-8") // <--- - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьДанныеRelated"); - -КонецПроцедуры - -Процедура HTTP_ИспользоватьКодировку(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Текст = "Привет мир!"; - Кодировка = "Windows-1251"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .ИспользоватьКодировку(Кодировка) // <--- - .УстановитьСтроковоеТело(Текст) - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ИспользоватьКодировку"); - -КонецПроцедуры - -Процедура HTTP_ИспользоватьСжатиеGzip(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ИспользоватьСжатиеGzip(Ложь) // <--- - .ОбработатьЗапрос("POST", Ложь) - .ВернутьЗапрос(); - - // END - - Обработать(Результат, "HTTP", "ИспользоватьСжатиеGzip"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ИспользоватьСжатиеGzip(Истина) // <--- - .ОбработатьЗапрос("POST", Ложь) - .ВернутьЗапрос(); - - Обработать(Результат, "HTTP", "ИспользоватьСжатиеGzip", "Включено"); - -КонецПроцедуры - -Процедура HTTP_ИспользоватьПоляТелаВOAuth(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Токен = "***"; - Секрет = "***"; - КлючПользователя = "***"; - СекретПользователя = "***"; - Версия = "1.0"; - - НовыйЗапрос = OPI_ЗапросыHTTP.НовыйЗапрос().Инициализировать(URL); - - Результат = НовыйЗапрос - .НачатьЗаписьТелаMultipart() - .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") - .ДобавитьПолеMultipartFormData("field1", "Текст") - .ДобавитьПолеMultipartFormData("field2", "10") - .ИспользоватьПоляТелаВOAuth(Ложь) // <--- - .ДобавитьOauthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - ЛогСтрокой = НовыйЗапрос.ПолучитьЛог(Истина); - Обработать(Результат, "HTTP", "ИспользоватьПоляТелаВOAuth", , ЛогСтрокой); - - Результат = OPI_ЗапросыHTTP - .НовыйЗапрос() - .Инициализировать(URL) - .НачатьЗаписьТелаMultipart() - .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") - .ДобавитьПолеMultipartFormData("field1", "Текст") - .ДобавитьПолеMultipartFormData("field2", "10") - .ИспользоватьПоляТелаВOAuth(Истина) // <--- - .ДобавитьOauthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) - .ОбработатьЗапрос("POST", Ложь) - .ПолучитьЛог(Истина); - - Обработать(Результат, "HTTP", "ИспользоватьПоляТелаВOAuth", "Включено"); - -КонецПроцедуры - -Процедура HTTP_УстановитьЗаголовки(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Заголовки = Новый Соответствие; - Заголовки.Вставить("X-Header1", "Value1"); - Заголовки.Вставить("X-Header2", "Value2"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .УстановитьЗаголовки(Заголовки) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьЗаголовки"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьBearerАвторизацию("1111") - .УстановитьЗаголовки(Заголовки, Истина) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - Обработать(Результат, "HTTP", "УстановитьЗаголовки", "Перезапись"); - -КонецПроцедуры - -Процедура HTTP_ДобавитьЗаголовок(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьЗаголовок("X-Header1", "Value1") // <--- - .ДобавитьЗаголовок("X-Header2", "Value2") // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьЗаголовок"); - - Заголовки = Новый Соответствие; - Заголовки.Вставить("X-Header1", "Value1"); - Заголовки.Вставить("X-Header2", "Value2"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьBearerАвторизацию("1111") - .ДобавитьЗаголовок("X-Header3", "BadValue") // <--- - .ДобавитьЗаголовок("X-Header4", "BadValue") - .УстановитьЗаголовки(Заголовки, Истина) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - Обработать(Результат, "HTTP", "ДобавитьЗаголовок", "Замена"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьBearerАвторизацию("1111") - .ДобавитьЗаголовок("X-Header3", "BadValue") // <--- - .ДобавитьЗаголовок("X-Header4", "BadValue") - .УстановитьЗаголовки(Заголовки) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - Обработать(Результат, "HTTP", "ДобавитьЗаголовок", "Дополнение"); - -КонецПроцедуры - -Процедура HTTP_ДобавитьBasicАвторизацию(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьBasicАвторизацию("user", "password") // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьBasicАвторизацию"); - -КонецПроцедуры - -Процедура HTTP_ДобавитьBearerАвторизацию(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьBearerАвторизацию("123123") // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьBearerАвторизацию"); - -КонецПроцедуры - -Процедура HTTP_ДобавитьAWS4Авторизацию(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - AccessKey = "AccessKey"; - SecretKey = "SecretKey"; - Region = "Region"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ДобавитьAWS4Авторизацию(AccessKey, SecretKey, Region) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьAWS4Авторизацию"); - -КонецПроцедуры - -Процедура HTTP_ДобавитьOAuthV1Авторизацию(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Токен = "***"; - Секрет = "***"; - КлючПользователя = "***"; - СекретПользователя = "***"; - Версия = "1.0"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .ДобавитьOAuthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ДобавитьOAuthV1Авторизацию"); - -КонецПроцедуры - -Процедура HTTP_УстановитьАлгоритмOAuthV1(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Токен = "***"; - Секрет = "***"; - КлючПользователя = "***"; - СекретПользователя = "***"; - Версия = "1.0"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .ДобавитьOAuthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) - .УстановитьАлгоритмOAuthV1("HMAC", "SHA1") // <--- - .ОбработатьЗапрос("GET") - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "УстановитьАлгоритмOAuthV1"); - -КонецПроцедуры - -Процедура HTTP_ОбработатьЗапрос(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("GET") // <--- - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ОбработатьЗапрос"); - -КонецПроцедуры - -Процедура HTTP_ВыполнитьЗапрос(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("GET", Ложь) - .ВыполнитьЗапрос() // <--- - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ВыполнитьЗапрос"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьОтвет(Истина); - - Обработать(Результат, "HTTP", "ВыполнитьЗапрос", "Без выполнения"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("GET", Ложь) - .ВыполнитьЗапрос() - .ВернутьОтвет(Истина); - - Обработать(Результат, "HTTP", "ВыполнитьЗапрос", "Выполнение"); - -КонецПроцедуры - -Процедура HTTP_ВернутьЗапрос(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос(); // <--- - - // END - - Обработать(Результат, "HTTP", "ВернутьЗапрос"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ВернутьЗапрос(Истина); - - Обработать(Результат, "HTTP", "ВернутьЗапрос", "Принудительно"); - -КонецПроцедуры - -Процедура HTTP_ВернутьСоединение(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьСоединение(); // <--- - - // END - - Обработать(Результат, "HTTP", "ВернутьСоединение"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .ВернутьСоединение(Истина); - - Обработать(Результат, "HTTP", "ВернутьСоединение", "Принудительно"); - -КонецПроцедуры - -Процедура HTTP_ВернутьОтвет(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ОбработатьЗапрос("POST") - .ВернутьОтвет(); // <--- - - // END - - Обработать(Результат, "HTTP", "ВернутьОтвет"); - -КонецПроцедуры - -Процедура HTTP_ВернутьОтветКакJSONКоллекцию(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ОбработатьЗапрос("POST") - .ВернутьОтветКакJSONКоллекцию(); // <--- - - // END - - Обработать(Результат, "HTTP", "ВернутьОтветКакJSONКоллекцию"); - -КонецПроцедуры - -Процедура HTTP_ВернутьОтветКакДвоичныеДанные(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ОбработатьЗапрос("POST") - .ВернутьОтветКакДвоичныеДанные(); // <--- - - // END - - Обработать(Результат, "HTTP", "ВернутьОтветКакДвоичныеДанные"); - -КонецПроцедуры - -Процедура HTTP_ВернутьОтветКакСтроку(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/post"; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ОбработатьЗапрос("POST") - .ВернутьОтветКакСтроку(); // <--- - - // END - - Обработать(Результат, "HTTP", "ВернутьОтветКакСтроку"); - -КонецПроцедуры - -Процедура HTTP_ВернутьИмяФайлаТелаОтвета(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - ИВФ = ПолучитьИмяВременногоФайла(); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьФайлОтвета(ИВФ) // <--- - .ОбработатьЗапрос("GET") - .ВернутьИмяФайлаТелаОтвета(); - - // END - - Обработать(Результат, "HTTP", "ВернутьИмяФайлаТелаОтвета", , ИВФ); - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура HTTP_УстановитьПрокси(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - НастройкиПрокси = Новый ИнтернетПрокси; - НастройкиПрокси.Установить("https", "proxy.com", 443, "user", "password", Ложь); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .УстановитьПрокси(НастройкиПрокси) // <--- - .ОбработатьЗапрос("GET", Ложь) - .ВернутьСоединение(); - - // END - - Обработать(Результат, "HTTP", "УстановитьПрокси"); - -КонецПроцедуры - -Процедура HTTP_УстановитьТаймаут(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .УстановитьURL(URL) - .УстановитьТаймаут(60) // <--- - .ОбработатьЗапрос("GET", Ложь) - .ВернутьСоединение(); - - // END - - Обработать(Результат, "HTTP", "УстановитьТаймаут"); - -КонецПроцедуры - -Процедура HTTP_ИспользоватьКодированиеURL(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - СтруктураПараметров = Новый Структура; - СтруктураПараметров.Вставить("param1", "search?text"); - СтруктураПараметров.Вставить("param2", "John Doe"); - СтруктураПараметров.Вставить("param3", "value&another"); - СтруктураПараметров.Вставить("param4", "кириллица"); - СтруктураПараметров.Вставить("param5", ""); - - БезКодирования = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров) - .ИспользоватьКодированиеURL(Ложь) // <--- - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - // END - - Результат = Новый Соответствие; - Результат.Вставить("Без кодирования", БезКодирования); - Результат.Вставить("С кодированием" , СКодированием); - - Обработать(Результат, "HTTP", "ИспользоватьКодированиеURL"); - -КонецПроцедуры - -Процедура HTTP_РазделятьМассивыВURL(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/get"; - - ПараметрМассив = Новый Массив; - ПараметрМассив.Добавить("val1"); - ПараметрМассив.Добавить("val2"); - ПараметрМассив.Добавить("val3"); - - СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив); - - Разделение = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров) - .РазделятьМассивыВURL(Истина) // <--- - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров) - .РазделятьМассивыВURL(Истина, Истина) // <--- - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать("https://example.com/page") - .УстановитьПараметрыURL(СтруктураПараметров) - .ОбработатьЗапрос("GET", Ложь) - .ВернутьЗапрос() - .АдресРесурса; - - // END - - Результат = Новый Соответствие; - Результат.Вставить("Без разделения", БезРазделения); - Результат.Вставить("Разделение" , Разделение); - Результат.Вставить("PHP" , РазделениеPhp); - - Обработать(Результат, "HTTP", "РазделятьМассивыВURL"); - -КонецПроцедуры - -Процедура HTTP_ОтправитьДанныеЧастями(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/put"; - - РазмерЧасти = 524288; - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Картинка) - .ОтправитьДанныеЧастями(РазмерЧасти) // <--- - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ОтправитьДанныеЧастями"); - -КонецПроцедуры - -Процедура HTTP_ОтправитьЧасть(ПараметрыФункции) - - URL = ПараметрыФункции["HTTP_URL"]; - URL = URL + "/put"; - - РазмерЧасти = 524288; - Данные = ПолучитьДвоичныеДанныеИзСтроки("Some data for sending"); - - // Отправляем только "data for" - НачальнаяПозиция = 5; - ЧислоБайт = 8; - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать(URL) - .УстановитьДвоичноеТело(Данные) - .ОтправитьЧасть(НачальнаяПозиция, ЧислоБайт) // <--- - .ВернутьОтветКакJSONКоллекцию(); - - // END - - Обработать(Результат, "HTTP", "ОтправитьЧасть"); - -КонецПроцедуры - -Процедура HTTP_МаксимумПопыток(ПараметрыФункции) - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .МаксимумПопыток(10) - .ВернутьНастройки(); - - // END - - Обработать(Результат, "HTTP", "МаксимумПопыток"); - -КонецПроцедуры - -Процедура HTTP_МаксимумПереадресаций(ПараметрыФункции) - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .МаксимумПереадресаций(15) - .ВернутьНастройки(); - - // END - - Обработать(Результат, "HTTP", "МаксимумПереадресаций"); - -КонецПроцедуры - -Процедура HTTP_ВернутьНастройки(ПараметрыФункции) - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .ВернутьНастройки(); - - // END - - Обработать(Результат, "HTTP", "ВернутьНастройки"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .ВернутьНастройки("КодировкаТелаЗапроса"); - - Обработать(Результат, "HTTP", "ВернутьНастройки", "Одиночный"); - - МассивНастроек = Новый Массив; - МассивНастроек.Добавить("МаксимумПопыток"); - МассивНастроек.Добавить("МаксимумПереадресаций"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .МаксимумПопыток(5) - .ВернутьНастройки(МассивНастроек); - - Обработать(Результат, "HTTP", "ВернутьНастройки", "Массив"); - - Результат = OPI_ЗапросыHTTP.НовыйЗапрос() - .Инициализировать() - .ВернутьНастройки("ААА"); - - Обработать(Результат, "HTTP", "ВернутьНастройки", "Несуществующий"); - -КонецПроцедуры - -#КонецОбласти - -#Область OpenAI - -Процедура OpenAI_ПолучитьОтвет(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - // Текстовые сообщения - - Сообщения = Новый Массив; - Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "What is 1C:Enterprise?")); - Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("assistant", "1C:Enterprise is a full-stack, low-code platform")); - Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "When the first version was released?")); - - Модель = "smolvlm-256m-instruct"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("model", Модель); - Опции.Вставить("msgs" , Сообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьОтвет", Опции); - - Обработать(Результат, "OpenAI", "ПолучитьОтвет"); // SKIP - - // Картинки - - Модель = "moondream2-20250414"; - Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор())); - Назначение = "user_data"; - - Сообщения = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("name" , ИмяФайла); - Опции.Вставить("data" , Файл); - Опции.Вставить("purpose", Назначение); - - ЗагрузкаКартинки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ЗагрузитьФайл", Опции); - - Обработать(ЗагрузкаКартинки, "OpenAI", "ПолучитьОтвет", "Загрузка картинки"); // SKIP - - IDКартинки = ЗагрузкаКартинки["id"]; - - Опции = Новый Структура; - Опции.Вставить("role" , "user"); - Опции.Вставить("file" , IDКартинки); - Опции.Вставить("prompt", "What is in this image?"); - - Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции); - - Сообщения.Добавить(Описание); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("model", Модель); - Опции.Вставить("msgs" , Сообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьОтвет", Опции); - - OPI_OpenAI.УдалитьФайл(URL, Токен, IDКартинки); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьОтвет", "Картинка"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьПредставления(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Текст = "What is 1C:Enterprise?"; - Модель = "arcee-ai_afm-4.5b"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("model", Модель); - Опции.Вставить("input", Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьПредставления", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьПредставления"); - -КонецПроцедуры - -Процедура OpenAI_СоздатьАссистента(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Инструкция = "You are a personal math tutor. When asked a question, write and run Python code to answer the question."; - Модель = "smolvlm-256m-instruct"; - Имя = "Math tutor"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("model", Модель); - Опции.Вставить("name" , Имя); - Опции.Вставить("inst" , Инструкция); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьАссистента", Опции); - - // END - - Обработать(Результат, "OpenAI", "СоздатьАссистента", , ПараметрыФункции); - -КонецПроцедуры - -Процедура OpenAI_УдалитьАссистента(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - IDАссистента = ПараметрыФункции["OpenAI_Assistant"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDАссистента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "УдалитьАссистента", Опции); - - // END - - Обработать(Результат, "OpenAI", "УдалитьАссистента", , IDАссистента); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьАссистента(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - IDАссистента = ПараметрыФункции["OpenAI_Assistant"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDАссистента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьАссистента", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьАссистента"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСписокАссистентов(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Количество = 2; - ДопПараметры = Новый Структура("after,order", "asst_2", "desc"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("limit" , Количество); - Опции.Вставить("options", ДопПараметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокАссистентов", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьСписокАссистентов"); - -КонецПроцедуры - -Процедура OpenAI_ЗагрузитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор())); - Назначение = "assistants"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("name" , ИмяФайла); - Опции.Вставить("data" , Файл); - Опции.Вставить("purpose", Назначение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ЗагрузитьФайл", Опции); - - // END - - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); - Обработать(Результат, "OpenAI", "ЗагрузитьФайл", , ПараметрыФункции, ИмяФайла, Файл.Размер() + 2); - -КонецПроцедуры - -Процедура OpenAI_УдалитьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - IDФайла = ПараметрыФункции["OpenAI_File"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "УдалитьФайл", Опции); - - // END - - Обработать(Результат, "OpenAI", "УдалитьФайл", , IDФайла); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьИнформациюОФайле(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - IDФайла = ПараметрыФункции["OpenAI_File"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьИнформациюОФайле", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьИнформациюОФайле"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСписокФайлов(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокФайлов", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьСписокФайлов"); - -КонецПроцедуры - -Процедура OpenAI_СкачатьФайл(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - IDФайла = ПараметрыФункции["OpenAI_File"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СкачатьФайл", Опции); - - // END - - Обработать(Результат, "OpenAI", "СкачатьФайл", , ПараметрыФункции); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСтруктуруСообщения(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("role", "user"); - Опции.Вставить("text", "What is 1C:Enterprise?"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьСтруктуруСообщения"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - Картинка = ПараметрыФункции["OpenAI_File"]; - - Опции = Новый Структура; - Опции.Вставить("role" , "user"); - Опции.Вставить("file" , Картинка); - Опции.Вставить("prompt", "What is in this image?"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьСтруктуруСообщенияКартинки"); - -КонецПроцедуры - -Процедура OpenAI_СгенерироватьРечь(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Текст = "Attack ships on fire off the shoulder of Orion bright as magnesium"; - Модель = "bark-cpp-small"; - - ДопПараметры = Новый Структура("response_format", "wav"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("model" , Модель); - Опции.Вставить("input" , Текст); - Опции.Вставить("options", ДопПараметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СгенерироватьРечь", Опции); - - // END - - Обработать(Результат, "OpenAI", "СгенерироватьРечь", , ПараметрыФункции); - -КонецПроцедуры - -Процедура OpenAI_СоздатьТранскрипцию(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Аудио = ПараметрыФункции["OpenAI_Speech"]; - Модель = "whisper-1"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("model", Модель); - Опции.Вставить("audio", Аудио); - Опции.Вставить("type" , "audio/wav"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьТранскрипцию", Опции); - - // END - - OPI_Инструменты.УдалитьФайлВПопытке(Аудио, "Не удалось удалить временный файл после теста!"); - - Обработать(Результат, "OpenAI", "СоздатьТранскрипцию"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьКартинки(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Модель = "sd-1.5-ggml"; - Опции = Новый Структура; - Опции.Вставить("prompt", "Yellow alpaca"); - Опции.Вставить("amount", 1); - Опции.Вставить("size" , "64x64"); - - Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруОписанияКартинок", Опции); - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("model", Модель); - Опции.Вставить("descr", Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьКартинки", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьКартинки"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСписокМоделей(ПараметрыФункции) - - URL = ПараметрыФункции["OpenAI_URL"]; - Токен = ПараметрыФункции["OpenAI_Token"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокМоделей", Опции); - - // END - - Обработать(Результат, "OpenAI", "ПолучитьСписокМоделей"); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСообщениеАссистента(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("text", "What is 1C:Enterprise?"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеАссистента", Опции); - - // END - - Опции = Новый Структура; - Опции.Вставить("role", "assistant"); - Опции.Вставить("text", "What is 1C:Enterprise?"); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); - Проверка = OPI_Инструменты.JSONСтрокой(Проверка); - Результат = OPI_Инструменты.JSONСтрокой(Результат); - - Обработать(Результат, "OpenAI", "ПолучитьСообщениеАссистента", , Проверка); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСообщениеПользователя(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("text", "What is 1C:Enterprise?"); - Опции.Вставить("name", "Vitaly"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеПользователя", Опции); - - // END - - Опции = Новый Структура; - Опции.Вставить("role", "user"); - Опции.Вставить("text", "What is 1C:Enterprise?"); - Опции.Вставить("name", "Vitaly"); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); - Проверка = OPI_Инструменты.JSONСтрокой(Проверка); - Результат = OPI_Инструменты.JSONСтрокой(Результат); - - Обработать(Результат, "OpenAI", "ПолучитьСообщениеПользователя", , Проверка); - -КонецПроцедуры - -Процедура OpenAI_ПолучитьСообщениеСистемы(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("text", "What is 1C:Enterprise?"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеСистемы", Опции); - - // END - - Опции = Новый Структура; - Опции.Вставить("role", "system"); - Опции.Вставить("text", "What is 1C:Enterprise?"); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); - Проверка = OPI_Инструменты.JSONСтрокой(Проверка); - Результат = OPI_Инструменты.JSONСтрокой(Результат); - - Обработать(Результат, "OpenAI", "ПолучитьСообщениеСистемы", , Проверка); - -КонецПроцедуры - -#КонецОбласти - -#Область MSSQL - -Процедура MSSQL_СформироватьСтрокуПодключения(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "bayselonarrend"; - Пароль = ПараметрыФункции["PG_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - // END - - Результат = СтрЗаменить(Результат, Пароль, "***"); - Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); - - Обработать(Результат, "MSSQL", "СформироватьСтрокуПодключения"); - -КонецПроцедуры - -Процедура MSSQL_ОткрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - - Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - // END - - Обработать(Результат, "MSSQL", "ОткрытьСоединение"); - -КонецПроцедуры - -Процедура MSSQL_ЗакрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - - Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - Результат = OPI_MSSQL.ЗакрытьСоединение(Соединение); - - // END - - OPI_MSSQL.ЗакрытьСоединение(Результат); - - Обработать(Результат, "MSSQL", "ЗакрытьСоединение"); - -КонецПроцедуры - -Процедура MSSQL_ЭтоКоннектор(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - - Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - Результат = OPI_MSSQL.ЭтоКоннектор(Соединение); - - // END - - OPI_MSSQL.ЗакрытьСоединение(Результат); - - Обработать(Результат, "MSSQL", "ЭтоКоннектор"); - -КонецПроцедуры - -Процедура MSSQL_ВыполнитьЗапросSQL(ПараметрыФункции) - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - OPI_MSSQL.УдалитьТаблицу("users" , Соединение); // SKIP - OPI_MSSQL.УдалитьТаблицу("test_data" , Соединение); // SKIP - OPI_MSSQL.УдалитьТаблицу("test_table", Соединение); // SKIP - Обработать(Соединение, "MSSQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP - - // CREATE - - ТекстЗапроса = " - |CREATE TABLE test_table ( - | ID INT PRIMARY KEY, - | FirstName NVARCHAR(50), - | LastName NVARCHAR(50), - | BirthDate DATE, - | IsEmployed BIT, - | Salary DECIMAL(10, 2), - | CreatedAt DATETIME, - | Age SMALLINT, - | RowGuid UNIQUEIDENTIFIER, - | Data VARBINARY(MAX) - |);"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Create"); // SKIP - - // INSERT с параметрами - - ТекстЗапроса = " - |INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data) - |VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);"; - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("INT" , 1)); - МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Vitaly")); - МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Alpaca")); - МассивПараметров.Добавить(Новый Структура("DATE" , ТекущаяДата)); - МассивПараметров.Добавить(Новый Структура("BIT" , Истина)); - МассивПараметров.Добавить(Новый Структура("DECIMAL" , 10.30)); - МассивПараметров.Добавить(Новый Структура("DATETIME", ТекущаяДата)); - МассивПараметров.Добавить(Новый Структура("SMALLINT", 20)); - МассивПараметров.Добавить(Новый Структура("UUID" , Новый УникальныйИдентификатор)); - МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка)); - - Опции = Новый Структура; - Опции.Вставить("sql" , ТекстЗапроса); - Опции.Вставить("params", МассивПараметров); - Опции.Вставить("dbc" , Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP - - // SELECT (Результат этого запроса приведен в следующем блоке) - - ТекстЗапроса = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;"; - - Опции = Новый Структура; - Опции.Вставить("sql", ТекстЗапроса); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP - - ТекстЗапроса = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));"; // SKIP - Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение); // SKIP - Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Test data"); // SKIP - - // SQL запрос из файла - - ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу - - Опции = Новый Структура; - Опции.Вставить("sql", ФайлSQL); - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); - - Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP - - Закрытие = OPI_MSSQL.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Закрытие, "MSSQL", "ВыполнитьЗапросSQL", "Запрос"); // SKIP - -КонецПроцедуры - -Процедура MSSQL_ПолучитьНастройкиTLS(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - - // END - - Обработать(Результат, "MSSQL", "ПолучитьНастройкиTLS"); - -КонецПроцедуры - -Процедура MSSQL_СоздатьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - База = "testbase1"; - - OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); - - // END - - Обработать(Результат, "MSSQL", "СоздатьБазуДанных"); - - База = "testbase2"; - OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); - - Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - Обработать(Подключение, "MSSQL", "СоздатьБазуДанных", "Открытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); - - Обработать(Результат, "MSSQL", "СоздатьБазуДанных", "Создание"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); - - Обработать(Результат, "MSSQL", "СоздатьБазуДанных", "Существующая"); - - OPI_MSSQL.ЗакрытьСоединение(Подключение); - -КонецПроцедуры - -Процедура MSSQL_СоздатьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "testtable"; - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("tinyint_field" , "tinyint"); - СтруктураКолонок.Вставить("smallint_field" , "smallint"); - СтруктураКолонок.Вставить("int_field" , "int"); - СтруктураКолонок.Вставить("bigint_field" , "bigint"); - СтруктураКолонок.Вставить("float24_field" , "float(24)"); - СтруктураКолонок.Вставить("float53_field" , "float(53)"); - СтруктураКолонок.Вставить("bit_field" , "bit"); - СтруктураКолонок.Вставить("nvarchar_field" , "nvarchar(4000)"); - СтруктураКолонок.Вставить("varbinary_field", "varbinary(max)"); - СтруктураКолонок.Вставить("uid_field" , "uniqueidentifier"); - СтруктураКолонок.Вставить("numeric_field" , "numeric(5,3)"); // Или decimal - СтруктураКолонок.Вставить("xml_field" , "xml"); - СтруктураКолонок.Вставить("date_field" , "date"); - СтруктураКолонок.Вставить("time_field" , "time"); - СтруктураКолонок.Вставить("dto_field" , "datetimeoffset"); - СтруктураКолонок.Вставить("datetime_field" , "datetime"); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols", СтруктураКолонок); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); - - // END - - Обработать(Результат, "MSSQL", "СоздатьТаблицу"); - - Таблица = "АБВ ГДЕ"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); - - Обработать(Результат, "MSSQL", "СоздатьТаблицу", "Ошибка имени"); - - Таблица = "somename"; - СтруктураКолонок.Вставить("wtf_field", "WTF"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); - - Обработать(Результат, "MSSQL", "СоздатьТаблицу", "Ошибка типа"); - -КонецПроцедуры - -Процедура MSSQL_ДобавитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "testtable"; - МассивЗаписей = Новый Массив; - - Картинка = ПараметрыФункции["Picture"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные - - XML = " - | - | Пример - | 123 - | - | - | Тест - | 456 - | - |"; - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); - - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("TINYINT" , 5)); - СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 2000)); - СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 200000)); - СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 20000000000)); - СтруктураЗаписи.Вставить("float24_field" , Новый Структура("FLOAT24" , 10.1234567)); - СтруктураЗаписи.Вставить("float53_field" , Новый Структура("FLOAT53" , 10.123456789123456)); - СтруктураЗаписи.Вставить("bit_field" , Новый Структура("BIT" , Истина)); - СтруктураЗаписи.Вставить("nvarchar_field" , Новый Структура("NVARCHAR" , "Some text")); - СтруктураЗаписи.Вставить("varbinary_field", Новый Структура("BYTES" , Картинка)); - СтруктураЗаписи.Вставить("uid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор)); - СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , 5.333)); - СтруктураЗаписи.Вставить("xml_field" , Новый Структура("XML" , XML)); - СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); - СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); - СтруктураЗаписи.Вставить("dto_field" , Новый Структура("DATETIMEOFFSET", ТекущаяДатаЧП)); - СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATETIME" , ТекущаяДата)); - - МассивЗаписей.Добавить(СтруктураЗаписи); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("rows", МассивЗаписей); - Опции.Вставить("trn", Истина); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ДобавитьЗаписи", Опции); - - // END - - Обработать(Результат, "MSSQL", "ДобавитьЗаписи"); - -КонецПроцедуры - -Процедура MSSQL_ПолучитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - // Все записи без отборов - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "MSSQL", "ПолучитьЗаписи"); // SKIP - - // Отборы, выбранные поля, количество и сортировка - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , "test_data"); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "test_data"; - - Поля = Новый Массив; - Поля.Добавить("first_name"); - Поля.Добавить("last_name"); - Поля.Добавить("email"); - - Фильтры = Новый Массив; - - СтруктураФильтра1 = Новый Структура; - - СтруктураФильтра1.Вставить("field", "gender"); - СтруктураФильтра1.Вставить("type" , "="); - СтруктураФильтра1.Вставить("value", "Male"); - СтруктураФильтра1.Вставить("union", "AND"); - СтруктураФильтра1.Вставить("raw" , Ложь); - - СтруктураФильтра2 = Новый Структура; - - СтруктураФильтра2.Вставить("field", "id"); - СтруктураФильтра2.Вставить("type" , "BETWEEN"); - СтруктураФильтра2.Вставить("value", "20 AND 50"); - СтруктураФильтра2.Вставить("raw" , Истина); - - Фильтры.Добавить(СтруктураФильтра1); - Фильтры.Добавить(СтруктураФильтра2); - - Сортировка = Новый Структура("ip_address", "DESC"); - Количество = 5; - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", Поля); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("order" , Сортировка); - Опции.Вставить("limit" , Количество); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - - // END - - Обработать(Результат, "MSSQL", "ПолучитьЗаписи", "Отборы"); - -КонецПроцедуры - -Процедура MSSQL_ОбновитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "test_data"; - - СтруктураПолей = Новый Структура; - СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Количество = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP - Обработать(Количество, "MSSQL", "ОбновитьЗаписи", "Количество"); // SKIP - Количество = Количество["data"].Количество(); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("values", СтруктураПолей); - Опции.Вставить("filter", СтруктураФильтра); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ОбновитьЗаписи", Опции); - - // END - - Обработать(Результат, "MSSQL", "ОбновитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "['ip_address']"); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - - Обработать(Проверка, "MSSQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); - -КонецПроцедуры - -Процедура MSSQL_УдалитьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "test_data"; - - Фильтры = Новый Массив; - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "gender"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male")); - СтруктураФильтра.Вставить("raw" , Ложь); - СтруктураФильтра.Вставить("union", "AND"); - - Фильтры.Добавить(СтруктураФильтра); - - СтруктураФильтра = Новый Структура; - - СтруктураФильтра.Вставить("field", "ip_address"); - СтруктураФильтра.Вставить("type" , "="); - СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "127.0.0.1")); - СтруктураФильтра.Вставить("raw" , Ложь); - - Фильтры.Добавить(СтруктураФильтра); - - Получение = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("filter", Фильтры); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьЗаписи", Опции); - - // END - - Обработать(Получение, "MSSQL", "УдалитьЗаписи", "Получение"); - - Количество = Получение["data"].Количество(); - Остаток = 100 - Количество; - - Обработать(Результат, "MSSQL", "УдалитьЗаписи"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "MSSQL", "УдалитьЗаписи", "Проверка", Остаток); - -КонецПроцедуры - -Процедура MSSQL_УдалитьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции); - - // END - - Обработать(Результат, "MSSQL", "УдалитьТаблицу"); - - База = "test_data"; - Таблица = "test_data"; - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции); - - Обработать(Результат, "MSSQL", "УдалитьТаблицу", "Тест"); - -КонецПроцедуры - -Процедура MSSQL_УдалитьБазуДанных(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - База = "testbase1"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); - - // END - - Обработать(Результат, "MSSQL", "УдалитьБазуДанных"); - - База = "testbase2"; - - Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); - - Обработать(Подключение, "MSSQL", "УдалитьБазуДанных", "Открытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Удаление"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Ошибка"); - - Закрытие = OPI_MSSQL.ЗакрытьСоединение(Подключение); - - Обработать(Закрытие, "MSSQL", "УдалитьБазуДанных", "Закрытие"); - - Опции = Новый Структура; - Опции.Вставить("base", База); - Опции.Вставить("dbc" , Подключение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); - - Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Ошибка подключения"); - -КонецПроцедуры - -Процедура MSSQL_ОчиститьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ОчиститьТаблицу", Опции); - - // END - - Обработать(Результат, "MSSQL", "ОчиститьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - - Обработать(Результат, "MSSQL", "ОчиститьТаблицу", "Проверка"); - -КонецПроцедуры - -Процедура MSSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "testtable"; - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); - - // END - - Обработать(Результат, "MSSQL", "ПолучитьИнформациюОТаблице"); - - Таблица = "heyho"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "MSSQL", "ПолучитьИнформациюОТаблице", "Ошибка"); - -КонецПроцедуры - -Процедура MSSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - База = "testbase1"; - Таблица = "testtable"; - Имя = "new_field"; - ТипДанных = "bigint"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name", Имя); - Опции.Вставить("type", ТипДанных); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ДобавитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "MSSQL", "ДобавитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "MSSQL", "ДобавитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура MSSQL_УдалитьКолонкуТаблицы(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - База = "testbase1"; - Таблица = "testtable"; - Имя = "new_field"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("name", Имя); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьКолонкуТаблицы", Опции); - - // END - - Обработать(Результат, "MSSQL", "УдалитьКолонкуТаблицы"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Результат, "MSSQL", "УдалитьКолонкуТаблицы", "Проверка"); - -КонецПроцедуры - -Процедура MSSQL_ГарантироватьТаблицу(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - - База = "testbase1"; - Таблица = "testtable"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("smallint_field" , "smallint"); - СтруктураКолонок.Вставить("double_field" , "real"); - СтруктураКолонок.Вставить("bigint_field" , "bigint"); - СтруктураКолонок.Вставить("custom_field" , "nvarchar"); - - // При использовании строки подключения инициализируется новое соединение, - // которое будет закрыто после выполнения функции. - // В случае выполнения нескольких операций желательно использовать одно соединение, - // заранее созданное функцией ОткрытьСоединение() - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols", СтруктураКолонок); - Опции.Вставить("dbc", СтрокаПодключения); - Опции.Вставить("tls", НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьТаблицу", Опции); - - // END - - Обработать(Результат, "MSSQL", "ГарантироватьТаблицу"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "MSSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - - Таблица = "test_new"; - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьТаблицу", Опции); - - Обработать(Результат, "MSSQL", "ГарантироватьТаблицу", "Новая"); - - Опции = Новый Структура; - Опции.Вставить("table", Таблица); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); - - Обработать(Проверка, "MSSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); - -КонецПроцедуры - -Процедура MSSQL_ГарантироватьЗаписи(ПараметрыФункции) - - Адрес = ПараметрыФункции["PG_IP"]; - Логин = "SA"; - Пароль = ПараметрыФункции["PG_Password"]; - База = "testbase1"; - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); - - Таблица = "test_guarantee"; - - СтруктураКолонок = Новый Структура; // SKIP - СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP - СтруктураКолонок.Вставить("name" , "NVARCHAR(255)"); // SKIP - СтруктураКолонок.Вставить("age" , "INT"); // SKIP - СтруктураКолонок.Вставить("salary", "DECIMAL(10,2)"); // SKIP - OPI_MSSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP - - МассивДанных = Новый Массив; - - СтруктураСтроки1 = Новый Структура; - СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); - СтруктураСтроки1.Вставить("name" , Новый Структура("NVARCHAR", "Vitaly")); - СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); - СтруктураСтроки1.Вставить("salary", Новый Структура("DECIMAL" , 1000.12)); - - СтруктураСтроки2 = Новый Структура; - СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); - СтруктураСтроки2.Вставить("name" , Новый Структура("NVARCHAR", "Lesha")); - СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); - СтруктураСтроки2.Вставить("salary", Новый Структура("DECIMAL" , 200.20)); - - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки2); - - КлючевыеПоля = Новый Массив; - КлючевыеПоля.Добавить("id"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("unique", КлючевыеПоля); - Опции.Вставить("db" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьЗаписи", Опции); - - // END - - Обработать(Результат, "MSSQL", "ГарантироватьЗаписи", "Вставка"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "MSSQL", "ГарантироватьЗаписи", "Проверка вставки"); - - СтруктураСтроки1.Вставить("name" , Новый Структура("NVARCHAR", "Vitaly Updated")); - СтруктураСтроки1.Вставить("salary", Новый Структура("DECIMAL" , 1500.50)); - - СтруктураСтроки3 = Новый Структура; - СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); - СтруктураСтроки3.Вставить("name" , Новый Структура("NVARCHAR", "Anton")); - СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); - СтруктураСтроки3.Вставить("salary", Новый Структура("DECIMAL" , 3000.00)); - - МассивДанных = Новый Массив; - МассивДанных.Добавить(СтруктураСтроки1); - МассивДанных.Добавить(СтруктураСтроки3); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("rows" , МассивДанных); - Опции.Вставить("unique", КлючевыеПоля); - Опции.Вставить("db" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьЗаписи", Опции); - - Обработать(Результат, "MSSQL", "ГарантироватьЗаписи", "Обновление"); - - Опции = Новый Структура; - Опции.Вставить("table" , Таблица); - Опции.Вставить("fields", "*"); - Опции.Вставить("dbc" , СтрокаПодключения); - Опции.Вставить("tls" , НастройкиTLS); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); - Обработать(Проверка, "MSSQL", "ГарантироватьЗаписи", "Проверка обновления"); - - OPI_MSSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); - -КонецПроцедуры - -Процедура MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - // END - - Обработать(Результат, "MSSQL", "ПолучитьСтруктуруФильтраЗаписей"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьСтруктуруФильтраЗаписей", Опции); - - Обработать(Результат, "MSSQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); - -КонецПроцедуры - -#КонецОбласти - -#Область FTP - -Процедура FTP_ОткрытьСоединение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - // END - - Обработать(Результат, "FTP", "ОткрытьСоединение", Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьПриветственноеСообщение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьПриветственноеСообщение", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ПолучитьПриветственноеСообщение", Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьКонфигурациюСоединения(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Опции = Новый Структура; - Опции.Вставить("set" , НастройкиFTP); - Опции.Вставить("proxy", НастройкиПрокси); - Опции.Вставить("tls" , НастройкиTLS); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьКонфигурациюСоединения", Опции); - - // END - - Обработать(Результат, "FTP", "ПолучитьКонфигурациюСоединения", Постфикс, ПараметрыФункции); - - Опции = Новый Структура; - Опции.Вставить("conn", Результат); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьПриветственноеСообщение", Опции); - - Обработать(Проверка, "FTP", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_ЗакрытьСоединение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Обработать(Соединение, "FTP", "ЗакрытьСоединение", "Открытие, " + Постфикс); // SKIP - - Результат = OPI_FTP.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "FTP", "ЗакрытьСоединение", Постфикс); - -КонецПроцедуры - -Процедура FTP_ЭтоКоннектор(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Обработать(Соединение, "FTP", "ЭтоКоннектор", "Открытие, " + Постфикс); // SKIP - - Результат = OPI_FTP.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "FTP", "ЭтоКоннектор", Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьНастройкиСоединения(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - // END - - Обработать(Результат, "FTP", "ПолучитьНастройкиСоединения", Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьНастройкиПрокси(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - // END - - Обработать(Результат, "FTP", "ПолучитьНастройкиПрокси", Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьНастройкиTLS(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - - // END - - Обработать(Результат, "FTP", "ПолучитьНастройкиTLS", Постфикс); - -КонецПроцедуры - -Процедура FTP_СоздатьНовуюДиректорию(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - - Удаление = OPI_FTP.УдалитьДиректорию(Соединение, "new_dir"); // SKIP - Обработать(Удаление, "FTP", "СоздатьНовуюДиректорию", "Удаление, " + Постфикс); // SKIP - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", Постфикс, Истина); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/another_one"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); - - Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", "Вложенная, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "second_dir/another_one"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); - - Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", "Двойная, " + Постфикс); - - OPI_Инструменты.Пауза(5); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir"); - Опции.Вставить("rcv" , Истина); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Проверка, "FTP", "СоздатьНовуюДиректорию", "Проверка 1, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", ""); - Опции.Вставить("rcv" , Истина); - - Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Проверка, "FTP", "СоздатьНовуюДиректорию", "Проверка 2, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьСписокОбъектов(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", ""); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ПолучитьСписокОбъектов", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "Dir1/Dir3/Git-2.50.0-64-bit.exe"); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат, "FTP", "ПолучитьСписокОбъектов", "Файл, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_ЗагрузитьФайл(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - КартинкаПуть = "C:\pic.png"; - - Картинка = ПараметрыФункции["Picture"]; // SKIP - ИВФ = ПолучитьИмяВременногоФайла("png"); // SKIP - КопироватьФайл(Картинка, ИВФ); // SKIP - Картинка = ИВФ; // SKIP - - КартинкаДД = Новый ДвоичныеДанные(Картинка); - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - Опции.Вставить("rtout", 1000); - Опции.Вставить("wtout", 1000); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("file", Картинка); - Опции.Вставить("path", "new_dir/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ЗагрузитьФайл", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("file", КартинкаДД); - Опции.Вставить("path", "pic_from_binary.png"); - - Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ЗагрузитьФайл", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "FTP", "ЗагрузитьФайл", Постфикс , КартинкаДД.Размер()); - Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Двоичные, " + Постфикс, КартинкаДД.Размер()); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "pic_from_binary.png"); - - Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - - Обработать(Результат , "FTP", "ЗагрузитьФайл", "Размер 1, " + Постфикс, КартинкаДД.Размер()); - Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Размер 2, " + Постфикс, КартинкаДД.Размер()); - - Для Н = 1 По 5 Цикл - - Результат = OPI_FTP.ЗагрузитьФайл(Соединение, Картинка, "new_dir/pic_from_disk.png"); - Результат2 = OPI_FTP.ЗагрузитьФайл(Соединение, КартинкаДД, "pic_from_binary.png"); - - Если Не Результат["result"] Тогда - Обработать(Результат, "FTP", "ЗагрузитьФайл", "Множественный, " + Постфикс, КартинкаДД.Размер()); - КонецЕсли; - - Если Не Результат2["result"] Тогда - Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Множественный, двоичные, " + Постфикс, КартинкаДД.Размер()); - КонецЕсли; - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура FTP_УдалитьФайл(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "pic_from_binary.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьФайл", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "FTP", "УдалитьФайл", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "pic_from_binary.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьФайл", Опции); - - Обработать(Результат , "FTP", "УдалитьФайл", "Несуществующий, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", ""); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат , "FTP", "УдалитьФайл", "Проверка, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_УдалитьДиректорию(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/another_one"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьДиректорию", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "FTP", "УдалитьДиректорию", Постфикс); - -КонецПроцедуры - -Процедура FTP_ОчиститьДиректорию(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "."); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ОчиститьДиректорию", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "FTP", "ОчиститьДиректорию", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "."); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат , "FTP", "ОчиститьДиректорию", "Проверка, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьРазмерОбъекта(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "FTP", "ПолучитьРазмерОбъекта", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/another.bin"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - - Обработать(Результат , "FTP", "ПолучитьРазмерОбъекта", "Несуществующий, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_ИзменитьПуть(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("old" , "new_dir/pic_from_disk.png"); - Опции.Вставить("new" , "new_dir/pic_copy.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "FTP", "ИзменитьПуть", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/pic_copy.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Проверка, новый, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir/pic_from_binary.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Проверка, старый, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("old" , "new_dir"); - Опции.Вставить("new" , "brand_new_dir"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Каталог, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "."); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Список, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("old" , "brand_new_dir"); - Опции.Вставить("new" , "new_dir"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Каталог, обратно, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("old" , "new_dir/pic_copy.png"); - Опции.Вставить("new" , "new_dir/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Обратно, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "."); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат , "FTP", "ИзменитьПуть", "Список, обратно, " + Постфикс); - -КонецПроцедуры - -Процедура FTP_СохранитьФайл(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - - Путь = "new_dir/pic_from_disk.png"; - ИмяФайла = ПолучитьИмяВременногоФайла("bin"); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", Путь); - Опции.Вставить("file", ИмяФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СохранитьФайл", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "СохранитьФайл", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", Путь); - - Размер = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - - Обработать(Размер, "FTP", "СохранитьФайл", "Размер, " + Постфикс); - - ФайлОбъект = Новый Файл(ИмяФайла); - - РазмерФайла = ФайлОбъект.Размер(); - РазмерРезультата = Результат["bytes"]; - РазмерПроверки = Размер["bytes"]; - - Обработать(РазмерФайла, "FTP", "СохранитьФайл", "Размер файла, " + Постфикс, РазмерРезультата, РазмерПроверки); - - Путь = "new_dir/pic_from_disk.png"; - - Для Н = 1 По 5 Цикл - - Результат = OPI_FTP.СохранитьФайл(Соединение, Путь, ИмяФайла); - - Если Не Результат["result"] Тогда - Обработать(Результат, "FTP", "СохранитьФайл", "Множественный, " + Постфикс); - КонецЕсли; - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(ИмяФайла, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура FTP_ПолучитьДанныеФайла(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - - Путь = "new_dir/pic_from_disk.png"; - Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ПолучитьДанныеФайла", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", Путь); - - Размер = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); - - Обработать(Размер, "FTP", "ПолучитьДанныеФайла", "Размер, " + Постфикс); - - РазмерФайла = Результат.Размер(); - РазмерПроверки = Размер["bytes"]; - - Обработать(РазмерФайла, "FTP", "ПолучитьДанныеФайла", "Размер файла, " + Постфикс, РазмерПроверки); - - Путь = "new_dir/pic_from_disk.png"; - - Для Н = 1 По 5 Цикл - - Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь); - - Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда - Обработать(Результат, "FTP", "ПолучитьДанныеФайла", "Множественный, " + Постфикс); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура FTP_Пинг(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "Пинг", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "Пинг", Постфикс); - -КонецПроцедуры - -Процедура FTP_ВыполнитьНестандартнуюКоманду(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - - ТекстКоманды = "UMASK"; - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("cmd" , ТекстКоманды); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ВыполнитьНестандартнуюКоманду", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ВыполнитьНестандартнуюКоманду", Постфикс); - -КонецПроцедуры - -Процедура FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - - ТекстКоманды = "PWD"; - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("cmd" , ТекстКоманды); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ВыполнитьПроизвольнуюКоманду", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ВыполнитьПроизвольнуюКоманду", Постфикс); - -КонецПроцедуры - -Процедура FTP_ПолучитьТекущийКаталог(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ПолучитьТекущийКаталог", Постфикс, ПараметрыФункции); - -КонецПроцедуры - -Процедура FTP_ИзменитьТекущийКаталог(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Путь = "new_dir"; - Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); - - Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, " + Постфикс, Путь); - - Путь = ПараметрыФункции["FTP_RootPath"]; - Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь); - - Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Обратно, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); - - Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, обратно, " + Постфикс, Путь); - -КонецПроцедуры - -Процедура FTP_ПолучитьСписокРасширенийПротокола(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["FTP_IP"]; - Порт = ПараметрыФункции["FTP_Port"]; - Логин = ПараметрыФункции["FTP_User"]; - Пароль = ПараметрыФункции["FTP_Password"]; - - ИспользоватьПрокси = Истина; - FTPS = Истина; - - НастройкиПрокси = Неопределено; - НастройкиTLS = Неопределено; // FTPS - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - FTPS = ПараметрыФункции["TLS"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Если FTPS Тогда - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); - КонецЕсли; - - Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); - - Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокРасширенийПротокола", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "FTP", "ПолучитьСписокРасширенийПротокола", Постфикс); - -КонецПроцедуры - -#КонецОбласти - -#Область ReportPortal - -Процедура ReportPortal_ПолучитьВременныйТокен(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Логин = ПараметрыФункции["RPortal_Login"]; - Пароль = ПараметрыФункции["RPortal_Password"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("login", Логин); - Опции.Вставить("pass" , Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьВременныйТокен", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьВременныйТокен", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьПостоянныйТокен(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDПользователя = ПараметрыФункции["RPortal_UserID"]; - ИмяКлюча = "test_key_2"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("name" , ИмяКлюча); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПостоянныйТокен", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьПостоянныйТокен", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_УдалитьПостоянныйТокен(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TestApiKey"]; - IDПользователя = ПараметрыФункции["RPortal_UserID"]; - IDКлюча = ПараметрыФункции["RPortal_TestKeyID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("user" , IDПользователя); - Опции.Вставить("id" , IDКлюча); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПостоянныйТокен", Опции); - - // END - - Обработать(Результат, "ReportPortal", "УдалитьПостоянныйТокен"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьТокеныПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDПользователя = ПараметрыФункции["RPortal_UserID"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("user" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьТокеныПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьТокеныПользователя"); - -КонецПроцедуры - -Процедура ReportPortal_СоздатьЗапуск(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Проект = "Test"; - - ДатаНачала = Дата("20260101100000"); - - СтруктураЗапуска = Новый Структура; - СтруктураЗапуска.Вставить("name" , "Test"); - СтруктураЗапуска.Вставить("startTime" , ДатаНачала); - СтруктураЗапуска.Вставить("description", "Test launch"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("params", СтруктураЗапуска); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьЗапуск", Опции); - - // END - - Обработать(Результат, "ReportPortal", "СоздатьЗапуск", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_ЗавершитьЗапуск(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; - Проект = "Test"; - - ДатаЗавершения = Дата("20260101200000"); - Опции = Новый Структура; - Опции.Вставить("end" , ДатаЗавершения); - Опции.Вставить("status", "passed"); - Опции.Вставить("descr" , "Updated launch description"); - - СтруктураЗавершения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЗапуска", Опции); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("uuid" , IDЗапуска); - Опции.Вставить("params", СтруктураЗавершения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗавершитьЗапуск", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ЗавершитьЗапуск"); - -КонецПроцедуры - -Процедура ReportPortal_СоздатьЭлемент(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; - Проект = "Test"; - - ДатаНачала = Дата("20260101100000"); - - СтруктураЭлемента = Новый Структура; - СтруктураЭлемента.Вставить("name" , "Test"); - СтруктураЭлемента.Вставить("startTime" , ДатаНачала); - СтруктураЭлемента.Вставить("type" , "test"); - СтруктураЭлемента.Вставить("description", "Test launch"); - СтруктураЭлемента.Вставить("launchUuid" , IDЗапуска); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("params", СтруктураЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьЭлемент", Опции); - - // END - - Обработать(Результат, "ReportPortal", "СоздатьЭлемент", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_ЗавершитьЭлемент(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; - Проект = "Test"; - - ДатаЗавершения = Дата("20260101200000"); - - СтруктураЗавершения = Новый Структура; - СтруктураЗавершения.Вставить("endTime", ДатаЗавершения); - СтруктураЗавершения.Вставить("status" , "passed"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("uuid" , IDЭлемента); - Опции.Вставить("params", СтруктураЗавершения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗавершитьЭлемент", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ЗавершитьЭлемент"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьСтруктуруЗапуска(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗапуска", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗапуска"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗапуска", Опции); - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗапуска", "Пустая"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьСтруктуруЭлемента(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЭлемента", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЭлемента"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЭлемента", Опции); - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЭлемента", "Пустая"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьСтруктуруЗавершенияЭлемента(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЭлемента", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЭлемента"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЭлемента", Опции); - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЭлемента", "Пустая"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьСтруктуруЗавершенияЗапуска(ПараметрыФункции) - - Время = Дата("20260101100000"); - Статус = "passed"; - Описание = "Some test"; - Атрибуты = "key1:value1, key2:value2"; - - Опции = Новый Структура; - Опции.Вставить("end" , Время); - Опции.Вставить("status", Статус); - Опции.Вставить("descr" , Описание); - Опции.Вставить("attr" , Атрибуты); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЗапуска", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЗапуска"); - -КонецПроцедуры - -Процедура ReportPortal_ЗаписатьЛог(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; - IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; - Проект = "Test"; - Время = Дата("20260101100010"); - Текст = "Some log 1"; - - Опции = Новый Структура; - Опции.Вставить("launch", IDЗапуска); - Опции.Вставить("id" , IDЭлемента); - Опции.Вставить("time" , Время); - Опции.Вставить("text" , Текст); - - СтруктураЛога = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЛога", Опции); - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("params", СтруктураЛога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗаписатьЛог", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ЗаписатьЛог", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьСтруктуруЛога(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; - IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; - Проект = "Test"; - Время = Дата("20260101100010"); - Текст = "Some log"; - - Опции = Новый Структура; - Опции.Вставить("launch", IDЗапуска); - Опции.Вставить("id" , IDЭлемента); - Опции.Вставить("time" , Время); - Опции.Вставить("text" , Текст); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЛога", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЛога"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьЛог(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - UUIDЛога = ПараметрыФункции["RPortal_TestLog"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("uuid" , UUIDЛога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЛог", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьЛог", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_УдалитьЛог(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЛога = ПараметрыФункции["RPortal_TestLogId"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЛога); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЛог", Опции); - - // END - - Обработать(Результат, "ReportPortal", "УдалитьЛог"); - -КонецПроцедуры - -Процедура ReportPortal_СоздатьПроект(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Имя = "testproject"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("name" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьПроект", Опции); - - // END - - Обработать(Результат, "ReportPortal", "СоздатьПроект", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_УдалитьПроект(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDПроекта = ПараметрыФункции["RPortal_TestProject"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDПроекта); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПроект", Опции); - - // END - - Обработать(Результат, "ReportPortal", "УдалитьПроект"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьПроект(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Имя = "TestProject"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("name" , Имя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроект", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьПроект"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьПроекты(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроекты", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьПроекты"); - -КонецПроцедуры - -Процедура ReportPortal_ДобавитьПользователейВПроект(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - ИмяПроекта = "TestProject"; - - СписокПользователей = Новый Соответствие; - СписокПользователей.Вставить("default", "MEMBER"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , ИмяПроекта); - Опции.Вставить("users", СписокПользователей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ДобавитьПользователейВПроект", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ДобавитьПользователейВПроект"); - -КонецПроцедуры - -Процедура ReportPortal_ИсключитьПользователейИзПроекта(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - ИмяПроекта = "TestProject"; - - МассивПользователей = Новый Массив; - МассивПользователей.Добавить("default"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , ИмяПроекта); - Опции.Вставить("users", МассивПользователей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИсключитьПользователейИзПроекта", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ИсключитьПользователейИзПроекта"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьЗапуск(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - UUIDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("uuid" , UUIDЗапуска); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЗапуск", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьЗапуск", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьЭлементыЗапуска(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЗапуска); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЭлементыЗапуска", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьЭлементыЗапуска"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьЭлемент(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - UUIDЭлемента = ПараметрыФункции["RPortal_TestItem"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("uuid" , UUIDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЭлемент", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьЭлемент", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьЛогиЭлемента(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("item" , IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЛогиЭлемента", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьЛогиЭлемента"); - -КонецПроцедуры - -Процедура ReportPortal_ИзменитьЗапуск(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; - Проект = "Test"; - - СтруктураЗапуска = Новый Структура; - СтруктураЗапуска.Вставить("description", "New description"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЗапуска); - Опции.Вставить("params", СтруктураЗапуска); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьЗапуск", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ИзменитьЗапуск"); - -КонецПроцедуры - -Процедура ReportPortal_ИзменитьЭлемент(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; - Проект = "Test"; - - СтруктураЗапуска = Новый Структура; - СтруктураЗапуска.Вставить("description", "New description"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЭлемента); - Опции.Вставить("params", СтруктураЗапуска); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьЭлемент", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ИзменитьЭлемент"); - -КонецПроцедуры - -Процедура ReportPortal_УдалитьЗапуск(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЗапуска); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЗапуск", Опции); - - // END - - Обработать(Результат, "ReportPortal", "УдалитьЗапуск"); - -КонецПроцедуры - -Процедура ReportPortal_УдалитьЭлемент(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЭлемента); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЭлемент", Опции); - - // END - - Обработать(Результат, "ReportPortal", "УдалитьЭлемент"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьОтчетЗапуска(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; - Проект = "Test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("proj" , Проект); - Опции.Вставить("id" , IDЗапуска); - Опции.Вставить("format", "html"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьОтчетЗапуска", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьОтчетЗапуска"); - -КонецПроцедуры - -Процедура ReportPortal_СоздатьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Имя = "testproject"; - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("active" , Истина); - СтруктураПользователя.Вставить("login" , "test"); - СтруктураПользователя.Вставить("password" , "G00d_Pass"); - СтруктураПользователя.Вставить("fullName" , "Test User"); - СтруктураПользователя.Вставить("email" , "test@example.com"); - СтруктураПользователя.Вставить("accountRole" , "USER"); - СтруктураПользователя.Вставить("projectRole" , "MEMBER"); - СтруктураПользователя.Вставить("defaultProject", "test"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("params", СтруктураПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "СоздатьПользователя", , ПараметрыФункции); - -КонецПроцедуры - -Процедура ReportPortal_УдалитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - IDПользователя = ПараметрыФункции["RPortal_TestUser"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("id" , IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "УдалитьПользователя"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьСтруктуруПользователя(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруПользователя"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруПользователя", Опции); - - Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруПользователя", "Пустая"); - -КонецПроцедуры - -Процедура ReportPortal_ИзменитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Логин = "test"; - - СтруктураПользователя = Новый Структура; - СтруктураПользователя.Вставить("fullName", "Updated Test User"); - СтруктураПользователя.Вставить("email" , "updated@example.com"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token" , Токен); - Опции.Вставить("login" , Логин); - Опции.Вставить("params", СтруктураПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ИзменитьПользователя"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьТекущегоПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьТекущегоПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьТекущегоПользователя"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Логин = "test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("login", Логин); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьПользователя"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьПользователей(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПользователей", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьПользователей"); - -КонецПроцедуры - -Процедура ReportPortal_ПолучитьПроектыПользователя(ПараметрыФункции) - - URL = ПараметрыФункции["RPortal_URL"]; - Токен = ПараметрыФункции["RPortal_TempToken"]; - Логин = "test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("token", Токен); - Опции.Вставить("login", Логин); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроектыПользователя", Опции); - - // END - - Обработать(Результат, "ReportPortal", "ПолучитьПроектыПользователя"); - -КонецПроцедуры - -#КонецОбласти - -#Область SSH - -Процедура SSH_ОткрытьСоединение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Результат = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); - - // END - - Обработать(Результат, "SSH", "ОткрытьСоединение", Постфикс); - -КонецПроцедуры - -Процедура SSH_ВыполнитьКоманду(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); - - Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("comm", "whoami"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SSH", "ВыполнитьКоманду", Постфикс); - -КонецПроцедуры - -Процедура SSH_ПолучитьКонфигурациюСоединения(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Опции = Новый Структура; - Опции.Вставить("set" , НастройкиSSH); - Опции.Вставить("proxy", НастройкиПрокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьКонфигурациюСоединения", Опции); - - // END - - Обработать(Результат, "SSH", "ПолучитьКонфигурациюСоединения", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Результат); - Опции.Вставить("comm", "whoami"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); - - Обработать(Результат, "SSH", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); - -КонецПроцедуры - -Процедура SSH_ЗакрытьСоединение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); - - Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда - Результат = OPI_SSH.ЗакрытьСоединение(Соединение); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SSH", "ЗакрытьСоединение", Постфикс); - -КонецПроцедуры - -Процедура SSH_ЭтоКоннектор(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = 2223; // SKIP - - НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); - Результат = OPI_SSH.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "SSH", "ЭтоКоннектор", Постфикс); - - Результат = OPI_SSH.ЭтоКоннектор("a"); - - Обработать(Результат, "SSH", "ЭтоКоннектор", "Ошибка, " + Постфикс); - -КонецПроцедуры - -Процедура SSH_ПолучитьНастройкиЛогинПароль(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); - - // END - - Обработать(Результат, "SSH", "ПолучитьНастройкиЛогинПароль", Постфикс); - -КонецПроцедуры - -Процедура SSH_ПолучитьНастройкиПриватныйКлюч(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("key" , ПриватныйКлюч); - Опции.Вставить("pub" , ПубличныйКлюч); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПриватныйКлюч", Опции); - - // END - - Обработать(Результат, "SSH", "ПолучитьНастройкиПриватныйКлюч", Постфикс); - -КонецПроцедуры - -Процедура SSH_ПолучитьНастройкиЧерезАгента(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЧерезАгента", Опции); - - // END - - Обработать(Результат, "SSH", "ПолучитьНастройкиЧерезАгента", Постфикс); - -КонецПроцедуры - -Процедура SSH_ПолучитьНастройкиKI(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить("yes"); - МассивОтветов.Добавить(Пароль); - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("user" , Логин); - Опции.Вставить("prompts", МассивОтветов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиKI", Опции); - - // END - - Обработать(Результат, "SSH", "ПолучитьНастройкиKI", Постфикс); - -КонецПроцедуры - -Процедура SSH_ПолучитьНастройкиПрокси(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); - - // END - - Обработать(Результат, "SSH", "ПолучитьНастройкиПрокси", Постфикс); - -КонецПроцедуры - -#КонецОбласти - -#Область SFTP - -Процедура SFTP_ОткрытьСоединение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Результат = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - // END - - Обработать(Результат, "SFTP", "ОткрытьСоединение", Постфикс); - -КонецПроцедуры - -Процедура SFTP_СоздатьНовуюДиректорию(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "СоздатьНовуюДиректорию", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "СоздатьНовуюДиректорию", Постфикс); - -КонецПроцедуры - -Процедура SFTP_УдалитьДиректорию(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "new_dir"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьДиректорию", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "УдалитьДиректорию", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьТекущийКаталог(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьТекущийКаталог", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "ПолучитьТекущийКаталог", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьСписокОбъектов(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "test_folder"); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "ПолучитьСписокОбъектов", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "test_folder"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат, "SFTP", "ПолучитьСписокОбъектов", Постфикс + ", Без рекурсии"); - -КонецПроцедуры - -Процедура SFTP_ЗагрузитьФайл(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Картинка = "C:\pic.png"; - - Картинка = ПараметрыФункции["Picture"]; // SKIP - ИВФ = ПолучитьИмяВременногоФайла("png"); // SKIP - КопироватьФайл(Картинка, ИВФ); // SKIP - Картинка = ИВФ; // SKIP - - КартинкаДД = Новый ДвоичныеДанные(Картинка); - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("file", Картинка); - Опции.Вставить("path", "pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ЗагрузитьФайл", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("file", КартинкаДД); - Опции.Вставить("path", "files_folder/pic_from_binary.png"); - - Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ЗагрузитьФайл", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - ЗагруженныйФайл = Новый Файл(Картинка); - - Обработать(Результат , "SFTP", "ЗагрузитьФайл", Постфикс , ЗагруженныйФайл.Размер()); - Обработать(Результат2, "SFTP", "ЗагрузитьФайл", "Двоичные, " + Постфикс, КартинкаДД.Размер()); - - РазмерФайлаЛокальный = ЗагруженныйФайл.Размер(); - РазмерФайлаЛокальныйДД = КартинкаДД.Размер(); - - РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, "pic_from_disk.png")["data"]["size"]; - РазмерФайлаУдаленныйДД = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, "files_folder/pic_from_binary.png")["data"]["size"]; - - Обработать(РазмерФайлаЛокальный , "SFTP", "СохранитьФайл", "Размер файла, " + Постфикс , РазмерФайлаУдаленный); - Обработать(РазмерФайлаЛокальныйДД, "SFTP", "СохранитьФайл", "Размер файла, ДД, " + Постфикс, РазмерФайлаУдаленныйДД); - - Для Н = 1 По 7 Цикл - - Результат = OPI_SFTP.ЗагрузитьФайл(Соединение, Картинка, "pic_from_disk.png"); - Результат2 = OPI_SFTP.ЗагрузитьФайл(Соединение, КартинкаДД, "files_folder/pic_from_binary.png"); - - Если Не Результат["result"] Тогда - Обработать(Результат, "SFTP", "ЗагрузитьФайл", "Множественный, " + Постфикс, КартинкаДД.Размер()); - КонецЕсли; - - Если Не Результат2["result"] Тогда - Обработать(Результат2, "SFTP", "ЗагрузитьФайл", "Множественный, двоичные, " + Постфикс, КартинкаДД.Размер()); - КонецЕсли; - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура SFTP_УдалитьФайл(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "files_folder/pic_from_binary.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьФайл", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "SFTP", "УдалитьФайл", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "files_folder/pic_from_binary.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьФайл", Опции); - - Обработать(Результат , "SFTP", "УдалитьФайл", "Несуществующий, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "files_folder"); - Опции.Вставить("rcv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); - - Обработать(Результат , "SFTP", "УдалитьФайл", "Проверка, " + Постфикс); - -КонецПроцедуры - -Процедура SFTP_ЭтоКоннектор(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - Результат = OPI_SFTP.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "SFTP", "ЭтоКоннектор", Постфикс); - - Результат = OPI_SFTP.ЭтоКоннектор("a"); - - Обработать(Результат, "SFTP", "ЭтоКоннектор", "Ошибка, " + Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьНастройкиЛогинПароль(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - // END - - Обработать(Результат, "SFTP", "ПолучитьНастройкиЛогинПароль", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьНастройкиПриватныйКлюч(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("key" , ПриватныйКлюч); - Опции.Вставить("pub" , ПубличныйКлюч); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПриватныйКлюч", Опции); - - // END - - Обработать(Результат, "SFTP", "ПолучитьНастройкиПриватныйКлюч", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьНастройкиЧерезАгента(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЧерезАгента", Опции); - - // END - - Обработать(Результат, "SFTP", "ПолучитьНастройкиЧерезАгента", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьНастройкиKI(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить("yes"); - МассивОтветов.Добавить(Пароль); - - Опции = Новый Структура; - Опции.Вставить("host" , Хост); - Опции.Вставить("port" , Порт); - Опции.Вставить("user" , Логин); - Опции.Вставить("prompts", МассивОтветов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиKI", Опции); - - // END - - Обработать(Результат, "SFTP", "ПолучитьНастройкиKI", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьНастройкиПрокси(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - // END - - Обработать(Результат, "SFTP", "ПолучитьНастройкиПрокси", Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьКонфигурациюСоединения(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Опции = Новый Структура; - Опции.Вставить("set" , НастройкиSFTP); - Опции.Вставить("proxy", НастройкиПрокси); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьКонфигурациюСоединения", Опции); - - // END - - Обработать(Результат, "SFTP", "ПолучитьКонфигурациюСоединения", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Результат); - Опции.Вставить("comm", "whoami"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); - - Обработать(Результат, "SFTP", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); - -КонецПроцедуры - -Процедура SFTP_ЗакрытьСоединение(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Результат = OPI_SFTP.ЗакрытьСоединение(Соединение); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "ЗакрытьСоединение", Постфикс); - -КонецПроцедуры - -Процедура SFTP_СохранитьФайл(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - - Путь = "pic_from_disk.png"; - ИмяФайла = ПолучитьИмяВременногоФайла("bin"); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", Путь); - Опции.Вставить("file", ИмяФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "СохранитьФайл", Опции); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "СохранитьФайл", Постфикс); - - ЗагруженныйФайл = Новый Файл(ИмяФайла); - РазмерФайлаЛокальный = ЗагруженныйФайл.Размер(); - РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, Путь)["data"]["size"]; - - Обработать(РазмерФайлаЛокальный, "SFTP", "СохранитьФайл", "Размер файла, " + Постфикс, РазмерФайлаУдаленный); - - Путь = "files_folder/pic_from_binary.png"; - - Для Н = 1 По 20 Цикл - - Результат = OPI_SFTP.СохранитьФайл(Соединение, Путь, ИмяФайла); - - Если Не Результат["result"] Тогда - Обработать(Результат, "SFTP", "СохранитьФайл", "Множественный, " + Постфикс); - КонецЕсли; - - КонецЦикла; - - OPI_Инструменты.УдалитьФайлВПопытке(ИмяФайла, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура SFTP_ПолучитьДанныеФайла(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - - Путь = "pic_from_disk.png"; - Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь); - - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат, "SFTP", "ПолучитьДанныеФайла", Постфикс); - - РазмерФайлаЛокальный = Результат.Размер(); - РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, Путь)["data"]["size"]; - - Обработать(РазмерФайлаЛокальный, "SFTP", "ПолучитьДанныеФайла", "Размер файла, " + Постфикс, РазмерФайлаУдаленный); - - Путь = "files_folder/pic_from_binary.png"; - - Для Н = 1 По 20 Цикл - - Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь); - - Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда - Обработать(Результат, "SFTP", "ПолучитьДанныеФайла", "Множественный, " + Постфикс); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - -Процедура SFTP_ИзменитьПуть(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("old" , "pic_from_disk.png"); - Опции.Вставить("new" , "files_folder/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ИзменитьПуть", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "SFTP", "ИзменитьПуть", Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); - - Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Старый, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "files_folder/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); - - Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Новый, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("old" , "files_folder/pic_from_disk.png"); - Опции.Вставить("new" , "pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ИзменитьПуть", Опции); - - Обработать(Результат , "SFTP", "ИзменитьПуть", "Обратно, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "files_folder/pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); - - Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Старый, Обратно, " + Постфикс); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "pic_from_disk.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); - - Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Новый, Обратно, " + Постфикс); - -КонецПроцедуры - -Процедура SFTP_ПолучитьИнформациюОФайле(ПараметрыФункции) - - Постфикс = ПараметрыФункции["Postfix"]; // SKIP - - Хост = ПараметрыФункции["SSH_Host"]; - Порт = ПараметрыФункции["SSH_Port"]; - - ИспользоватьПрокси = Истина; - НастройкиПрокси = Неопределено; - ВидАвторизации = "По логину и паролю"; - - ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP - ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP - - Если ВидАвторизации = "По логину и паролю" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - Опции = Новый Структура; - Опции.Вставить("host", Хост); - Опции.Вставить("port", Порт); - Опции.Вставить("user", Логин); - Опции.Вставить("pass", Пароль); - - НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); - - ИначеЕсли ВидАвторизации = "По ключу" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - ПриватныйКлюч = "./ssh_key"; - ПубличныйКлюч = "./ssh_key.pub"; - - ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP - ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); - - ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда - - Логин = ПараметрыФункции["SSH_User"]; - Пароль = ПараметрыФункции["SSH_Password"]; - - МассивОтветов = Новый Массив; - МассивОтветов.Добавить(Пароль); - - Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP - - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); - - Иначе - - Логин = ПараметрыФункции["SSH_User"]; - НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); - - КонецЕсли; - - Если ИспользоватьПрокси Тогда - - ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 - - АдресПрокси = ПараметрыФункции["Proxy_IP"]; - ПортПрокси = ПараметрыФункции["Proxy_Port"]; - ЛогинПрокси = ПараметрыФункции["Proxy_User"]; - ПарольПрокси = ПараметрыФункции["Proxy_Password"]; - - Опции = Новый Структура; - Опции.Вставить("addr" , АдресПрокси); - Опции.Вставить("port" , ПортПрокси); - Опции.Вставить("type" , ТипПрокси); - Опции.Вставить("login", ЛогинПрокси); - Опции.Вставить("pass" , ПарольПрокси); - - НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); - - КонецЕсли; - - Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); - - Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("path", "files_folder/pic_from_binary.png"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); - Иначе - Результат = Соединение; // Ошибка соединения - КонецЕсли; - - // END - - Обработать(Результат , "SFTP", "ПолучитьИнформациюОФайле", Постфикс); - -КонецПроцедуры - -#КонецОбласти - -#Область GreenMax - -Процедура GreenMax_СформироватьПараметрыДоступа(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - - // END - - Обработать(Результат, "GreenMax", "СформироватьПараметрыДоступа"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьКодАвторизации(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - НомерТелефона = 441234567890; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("phone" , НомерТелефона); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКодАвторизации", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьКодАвторизации"); - -КонецПроцедуры - -Процедура GreenMax_РазлогинитьИнстанс(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "РазлогинитьИнстанс", Опции); - - // END - - Обработать(Результат, "GreenMax", "РазлогинитьИнстанс"); - -КонецПроцедуры - -Процедура GreenMax_ОтправитьКодАвторизации(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - КодАвторизации = 123456; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("code" , КодАвторизации); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьКодАвторизации", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОтправитьКодАвторизации"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьСостояниеИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСостояниеИнстанса", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьСостояниеИнстанса"); - -КонецПроцедуры - -Процедура GreenMax_ПерезапуститьИнстанс(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПерезапуститьИнстанс", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПерезапуститьИнстанс"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекИнстанса", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекИнстанса"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекИнстанса", Опции); - - Обработать(Результат, "GreenMAx", "ПолучитьСтруктуруНастроекИнстанса", "Пустая"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьНастройкиИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьНастройкиИнстанса", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьНастройкиИнстанса", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_УстановитьНастройкиИнстанса(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - - СтруктураНастроек = Новый Структура; - СтруктураНастроек.Вставить("markIncomingMessagesReaded" , "no"); - СтруктураНастроек.Вставить("outgoingWebhook" , "no"); - СтруктураНастроек.Вставить("outgoingAPIMessageWebhook" , "yes"); - - Опции = Новый Структура; - Опции.Вставить("settings", СтруктураНастроек); - Опции.Вставить("access" , ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьНастройкиИнстанса", Опции); - - // END - - Обработать(Результат, "GreenMax", "УстановитьНастройкиИнстанса"); - -КонецПроцедуры - -Процедура GreenMax_УстановитьКартинкуПрофиля(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьКартинкуПрофиля", Опции); - - // END - - Обработать(Результат, "GreenMax", "УстановитьКартинкуПрофиля"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОбАккаунте", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьИнформациюОбАккаунте"); - -КонецПроцедуры - -Процедура GreenMax_ПроверитьАккаунт(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - НомерТелефона = 441234567890; - НомерТелефона = ПараметрыФункции["GreenMax_Phone"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("phone" , НомерТелефона); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПроверитьАккаунт", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПроверитьАккаунт", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьСписокКонтактов(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Количество = 1; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("count" , Количество); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСписокКонтактов", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьСписокКонтактов", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьИнформациюОКонтакте(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDКонтакта = 87654321; - IDКонтакта = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDКонтакта); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОКонтакте", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьИнформациюОКонтакте"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьСписокЧатов(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСписокЧатов", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьСписокЧатов"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьАватарЧата(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 87654321; - IDЧата = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьАватарЧата", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьАватарЧата"); - -КонецПроцедуры - -Процедура GreenMax_СоздатьГруппу(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDПользователя = 87654321; - Наименование = "Новая группа"; - - IDПользователя = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("name" , Наименование); - Опции.Вставить("members", IDПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СоздатьГруппу", Опции); - - // END - - Обработать(Результат, "GreenMax", "СоздатьГруппу", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_ДобавитьУчастникаГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDУчастника = 87654321; - - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("member", IDУчастника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ДобавитьУчастникаГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "ДобавитьУчастникаГруппы"); - - GreenMax_УдалитьУчастникаГруппы(ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_УдалитьУчастникаГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDУчастника = 87654321; - - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("member", IDУчастника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УдалитьУчастникаГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "УдалитьУчастникаГруппы"); - -КонецПроцедуры - -Процедура GreenMax_ВыйтиИзГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ВыйтиИзГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "ВыйтиИзГруппы"); - -КонецПроцедуры - -Процедура GreenMax_ИзменитьИмяГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Наименование = "Новое имя группы"; - IDЧата = 12345678; - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("name" , Наименование); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ИзменитьИмяГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "ИзменитьИмяГруппы"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьИнформациюОГруппе(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОГруппе", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьИнформациюОГруппе"); - -КонецПроцедуры - -Процедура GreenMax_ИзменитьНастройкиГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Настройки = Новый Структура; - Настройки.Вставить("allowParticipantsEditGroupSettings" , Истина); - Настройки.Вставить("allowParticipantsPinMessages" , Ложь); - Настройки.Вставить("allowParticipantsAddMembers" , Ложь); - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("set" , Настройки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ИзменитьНастройкиГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "ИзменитьНастройкиГруппы"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьСтруктуруНастроекГруппы(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекГруппы"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекГруппы", Опции); - - Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекГруппы", "Пустая"); - -КонецПроцедуры - -Процедура GreenMax_НазначитьПраваАдминистратора(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDУчастника = 87654321; - - IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP - IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("member", IDУчастника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "НазначитьПраваАдминистратора", Опции); - - // END - - Обработать(Результат, "GreenMax", "НазначитьПраваАдминистратора"); - -КонецПроцедуры - -Процедура GreenMax_ОтозватьПраваАдминистратора(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDУчастника = 87654321; - - IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP - IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("member", IDУчастника); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтозватьПраваАдминистратора", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОтозватьПраваАдминистратора"); - -КонецПроцедуры - -Процедура GreenMax_УстановитьКартинкуГруппы(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Картинка = ПараметрыФункции["Picture3"]; // URL, Путь или Двоичные данные - IDЧата = 12345678; - - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("picture", Картинка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьКартинкуГруппы", Опции); - - // END - - Обработать(Результат, "GreenMax", "УстановитьКартинкуГруппы"); - -КонецПроцедуры - -Процедура GreenMax_ОтправитьТекстовоеСообщение(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Текст = "Текст сообщения"; - IDЧата = 12345678; - Набор = 2000; - - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("text" , Текст); - Опции.Вставить("typing", Набор); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьТекстовоеСообщение", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_ОтправитьФайл(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные - ИмяФайла = "photo.jpg"; - IDЧата = 12345678; - Описание = "Описание файла"; - - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайл", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОтправитьФайл", , ПараметрыФункции); - - Файл = ПараметрыФункции["Video"]; - ИмяФайла = "vid.mp4"; - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("file" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - Опции.Вставить("typing" , 1000); - Опции.Вставить("ttype" , "video"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайл", Опции); - - Обработать(Результат, "GreenMax", "ОтправитьФайл", "Видео"); - -КонецПроцедуры - -Процедура GreenMax_ОтправитьФайлПоURL(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Файл = ПараметрыФункции["Picture"]; - ИмяФайла = "photo.jpg"; - IDЧата = 12345678; - Описание = "Описание файла"; - - IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("url" , Файл); - Опции.Вставить("filename", ИмяФайла); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайлПоURL", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОтправитьФайлПоURL"); - - Файл = ПараметрыФункции["Video"]; - ИмяФайла = "vid.mp4"; - - IDСообщения = Результат["idMessage"]; - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("url" , Файл); - Опции.Вставить("filename", ИмяФайла); - Опции.Вставить("caption" , Описание); - Опции.Вставить("typing" , 1000); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайлПоURL", Опции); - - Обработать(Результат, "GreenMax", "ОтправитьФайлПоURL", "Ввод"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьУведомление(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьУведомление", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьУведомление", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_УдалитьУведомление(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDУведомления = ПараметрыФункции["GreenMax_ReceiptID"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("id" , IDУведомления); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УдалитьУведомление", Опции); - - // END - - Обработать(Результат, "GreenMax", "УдалитьУведомление", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_ОтметитьСообщенияКакПрочитанные(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - - IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтметитьСообщенияКакПрочитанные", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОтметитьСообщенияКакПрочитанные"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьИсториюСообщенийЧата(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - Количество = 3; - - IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("count" , Количество); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИсториюСообщенийЧата", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьИсториюСообщенийЧата", , ПараметрыФункции); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьСообщениеЧата(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - IDЧата = 12345678; - IDСообщения = ПараметрыФункции["GreenMax_MainMessageID"]; - - IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access" , ПараметрыДоступа); - Опции.Вставить("chat" , IDЧата); - Опции.Вставить("message", IDСообщения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСообщениеЧата", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьСообщениеЧата", , IDСообщения); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Период = 30; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("span" , Период); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьЖурналВходящихСообщений", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьЖурналВходящихСообщений"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Период = 30; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - Опции.Вставить("span" , Период); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьЖурналИсходящихСообщений", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьЖурналИсходящихСообщений"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьКоличествоСообщенийКОтправке(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКоличествоСообщенийКОтправке", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьКоличествоСообщенийКОтправке"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьОчередьСообщенийКОтправке(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьОчередьСообщенийКОтправке", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьОчередьСообщенийКОтправке"); - -КонецПроцедуры - -Процедура GreenMax_ОчиститьОчередьСообщенийКОтправке(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОчиститьОчередьСообщенийКОтправке", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОчиститьОчередьСообщенийКОтправке"); - -КонецПроцедуры - -Процедура GreenMax_ПолучитьКоличествоВходящихУведомлений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКоличествоВходящихУведомлений", Опции); - - // END - - Обработать(Результат, "GreenMax", "ПолучитьКоличествоВходящихУведомлений"); - -КонецПроцедуры - -Процедура GreenMax_ОчиститьОчередьВходящихУведомлений(ПараметрыФункции) - - ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; - MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; - IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; - ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; - - Опции = Новый Структура; - Опции.Вставить("api" , ApiUrl); - Опции.Вставить("media", MediaUrl); - Опции.Вставить("id" , IdInstance); - Опции.Вставить("token", ApiTokenInstance); - - ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); - Опции = Новый Структура; - Опции.Вставить("access", ПараметрыДоступа); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОчиститьОчередьВходящихУведомлений", Опции); - - // END - - Обработать(Результат, "GreenMax", "ОчиститьОчередьВходящихУведомлений"); - -КонецПроцедуры - -#КонецОбласти - -#Область MongoDB - -Процедура MongoDB_СформироватьСтрокуПодключения(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - - // END - - Обработать(Результат, "MongoDB", "СформироватьСтрокуПодключения", , ПараметрыФункции); - -КонецПроцедуры - -Процедура MongoDB_ОткрытьСоединение(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - - Результат = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - // END - - Обработать(Результат, "MongoDB", "ОткрытьСоединение"); - - Результат = OPI_MongoDB.ЗакрытьСоединение(Результат); - - Обработать(Результат, "MongoDB", "ОткрытьСоединение", "Закрытие"); - -КонецПроцедуры - -Процедура MongoDB_ЗакрытьСоединение(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - Результат = OPI_MongoDB.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "MongoDB", "ЗакрытьСоединение"); - -КонецПроцедуры - -Процедура MongoDB_ЭтоКоннектор(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - Результат = OPI_MongoDB.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "MongoDB", "ЭтоКоннектор"); - -КонецПроцедуры - -Процедура MongoDB_ВыполнитьКоманду(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - - Команда = "listDatabases"; - Данные = Новый Структура("nameOnly", Истина); - - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Обработать(Соединение, "MongoDB", "ВыполнитьКоманду", "Подключение"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("comm", Команда); - Опции.Вставить("data", Данные); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВыполнитьКоманду", Опции); - - // END - - Обработать(Результат, "MongoDB", "ВыполнитьКоманду"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьБазуДанных(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("db" , База); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - База = "test_db"; - - Опции = Новый Структура; - Опции.Вставить("dbc", Соединение); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьБазуДанных", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьБазуДанных"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьСписокБаз(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Опции = Новый Структура; - Опции.Вставить("dbc", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСписокБаз", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьСписокБаз"); - -КонецПроцедуры - -Процедура MongoDB_УдалитьБазуДанных(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Опции = Новый Структура; - Опции.Вставить("dbc", Соединение); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьБазуДанных", Опции); - - // END - - Обработать(Результат, "MongoDB", "УдалитьБазуДанных"); - -КонецПроцедуры - -Процедура MongoDB_СоздатьКоллекцию(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Наименование = "test_collection"; - База = "test_database"; - - Параметры = Новый Соответствие; - Выражение = Новый Соответствие; - ГруппаИ = Новый Массив; - - Условие1 = Новый Соответствие; // Итог >= 0 - Элементы1 = Новый Массив; - Элементы1.Добавить("$total"); - Элементы1.Добавить(0); - Условие1.Вставить("$gte", Элементы1); - - Условие2 = Новый Соответствие; // Статус <= 3 - Элементы2 = Новый Массив; - Элементы2.Добавить("$status"); - Элементы2.Добавить(3); - Условие2.Вставить("$lte", Элементы2); - - ГруппаИ.Добавить(Условие1); - ГруппаИ.Добавить(Условие2); - - Выражение.Вставить("$expr", ГруппаИ); - Параметры.Вставить("validator", Выражение); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , Наименование); - Опции.Вставить("db" , База); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьКоллекцию", Опции); - - // END - - Обработать(Результат, "MongoDB", "СоздатьКоллекцию"); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , Наименование); - Опции.Вставить("db" , База); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьКоллекцию", Опции); - - Обработать(Результат, "MongoDB", "СоздатьКоллекцию", "Существующая"); - -КонецПроцедуры - -Процедура MongoDB_УдалитьКоллекцию(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "test_collection"; - База = "test_database"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll", Коллекция); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьКоллекцию", Опции); - - // END - - Обработать(Результат, "MongoDB", "УдалитьКоллекцию"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьСписокКоллекций(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - База = "test_database"; - - Опции = Новый Структура; - Опции.Вставить("dbc", Соединение); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСписокКоллекций", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьСписокКоллекций"); - -КонецПроцедуры - -Процедура MongoDB_ВставитьДокументы(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "new_collection"; - МассивДокументов = Новый Массив; - - // С неявным приведением типов - СтруктураДокумента = Новый Структура; - - ТестовыйМассив = Новый Массив; - ТестовыйМассив.Добавить("Значение1"); - ТестовыйМассив.Добавить("Значение2"); - - ТестоваяСтруктура = Новый Структура("text,number", "Текст", 10); - ТестовыеДвоичные = ПолучитьДвоичныеДанныеИзСтроки("Текст"); - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - СтруктураДокумента.Вставить("stringField", "Текст"); - СтруктураДокумента.Вставить("intField" , 200); - СтруктураДокумента.Вставить("doubleField", 123.456); - СтруктураДокумента.Вставить("boolField" , Истина); - СтруктураДокумента.Вставить("arrayField" , ТестовыйМассив); - СтруктураДокумента.Вставить("docField" , ТестоваяСтруктура); - СтруктураДокумента.Вставить("dateField" , ТекущаяДата); - СтруктураДокумента.Вставить("nullField"); - - МассивДокументов.Добавить(СтруктураДокумента); - - // С явным приведением типов - СтруктураДокумента = Новый Структура; - - RegExp = Новый Структура("pattern,options", "[a-z]+@[a-z]+\.[a-z]+", "i"); - КодJS = "const result = [1, 2, 3].map(x => x * 2).filter(x => x > 3);"; - - СтруктураДокумента.Вставить("stringField", Новый Структура("__OPI_STRING__" , "Текст")); - СтруктураДокумента.Вставить("oidField" , Новый Структура("__OPI_OBJECTID__" , "63ceed18f71dda7d8cf21e8e")); - СтруктураДокумента.Вставить("jsField" , Новый Структура("__OPI_JS__" , КодJS)); - СтруктураДокумента.Вставить("symbolField", Новый Структура("__OPI_SYMBOL__" , "Y")); - СтруктураДокумента.Вставить("int32Field" , Новый Структура("__OPI_INT32__" , 10)); - СтруктураДокумента.Вставить("int64Field" , Новый Структура("__OPI_INT64__" , 1000)); - СтруктураДокумента.Вставить("doubleField", Новый Структура("__OPI_DOUBLE__" , 124.456)); - СтруктураДокумента.Вставить("boolField" , Новый Структура("__OPI_BOOLEAN__" , Истина)); - СтруктураДокумента.Вставить("dateField" , Новый Структура("__OPI_DATETIME__" , "1763204141")); - СтруктураДокумента.Вставить("tsField" , Новый Структура("__OPI_TIMESTAMP__", ТекущаяДата)); - СтруктураДокумента.Вставить("regexpField", Новый Структура("__OPI_REGEXP__" , RegExp)); - СтруктураДокумента.Вставить("binaryField", Новый Структура("__OPI_BINARY__" , ТестовыеДвоичные)); - СтруктураДокумента.Вставить("nullField" , Новый Структура("__OPI_NULL__")); - СтруктураДокумента.Вставить("minkeyField", Новый Структура("__OPI_MINKEY__")); - СтруктураДокумента.Вставить("maxkeyField", Новый Структура("__OPI_MAXKEY__")); - - ТестовыйМассив = Новый Массив; - ТестовыйМассив.Добавить(Новый Структура("__OPI_SYMBOL__", "A")); - ТестовыйМассив.Добавить(Новый Структура("__OPI_MINKEY__")); - - ТестоваяСтруктура = Новый Структура("code,number" - , Новый Структура("__OPI_JS__", "const result = 1") - , Новый Структура("__OPI_DOUBLE__", 10)); - - // Документы и массивы в структуру не оборачиваются - СтруктураДокумента.Вставить("docField" , ТестоваяСтруктура); - СтруктураДокумента.Вставить("arrayField" , ТестовыйМассив); - - МассивДокументов.Добавить(СтруктураДокумента); - - OPI_MongoDB.УдалитьКоллекцию(Соединение, Коллекция, База); // SKIP - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll", Коллекция); - Опции.Вставить("docs", МассивДокументов); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВставитьДокументы", Опции); - - // END - - Обработать(Результат, "MongoDB", "ВставитьДокументы"); - - МассивДокументов = Новый Массив; - - СоответствиеКатегорий = Новый Соответствие; - СоответствиеКатегорий.Вставить(1, "электроника"); - СоответствиеКатегорий.Вставить(2, "одежда"); - СоответствиеКатегорий.Вставить(3, "книги"); - СоответствиеКатегорий.Вставить(4, "продукты"); - - СоответствиеПоставщиков = Новый Соответствие; - СоответствиеПоставщиков.Вставить(1, "Поставщик А"); - СоответствиеПоставщиков.Вставить(2, "Поставщик Б"); - СоответствиеПоставщиков.Вставить(3, "Поставщик В"); - - Для Н = 1 По 15 Цикл - - СтруктураДокумента = Новый Структура; - - СтруктураДокумента.Вставить("productName", "Товар " + Н); - СтруктураДокумента.Вставить("category" , СоответствиеКатегорий.Получить(Н % 4)); - СтруктураДокумента.Вставить("price" , 50 + (Н * 30)); - СтруктураДокумента.Вставить("quantity" , 5 + (Н % 10)); - СтруктураДокумента.Вставить("rating" , Макс(1, Н % 6)); - СтруктураДокумента.Вставить("inStock" , Н % 3 > 0); - СтруктураДокумента.Вставить("tags" , OPI_ПолучениеДанныхТестов.ПолучитьМассивТегов(Н)); - СтруктураДокумента.Вставить("createdDate", OPI_Инструменты.ПолучитьТекущуюДату() - (Н * 86400)); - - Детали = Новый Структура; - Детали.Вставить("supplier" , СоответствиеПоставщиков.Получить(Н % 3)); - Детали.Вставить("weightKg" , Н * 0.3); - Детали.Вставить("dimensions", Новый Структура("length,width,height", Н * 8, Н * 4, Н * 2)); - СтруктураДокумента.Вставить("details", Детали); - - МассивДокументов.Добавить(СтруктураДокумента); - - КонецЦикла; - - ДокументСНулем = Новый Структура; - ДокументСНулем.Вставить("productName", "Товар с нулевой ценой"); - ДокументСНулем.Вставить("category" , "книги"); - ДокументСНулем.Вставить("price" , 0); - ДокументСНулем.Вставить("quantity" , 1); - ДокументСНулем.Вставить("rating" , 4); - ДокументСНулем.Вставить("inStock" , Истина); - ДокументСНулем.Вставить("tags" , Новый Массив); - МассивДокументов.Добавить(ДокументСНулем); - - ДокументБезКатегории = Новый Структура; - ДокументБезКатегории.Вставить("productName", "Товар без категории"); - ДокументБезКатегории.Вставить("price" , 250); - ДокументБезКатегории.Вставить("quantity" , 3); - ДокументБезКатегории.Вставить("rating" , 3); - ДокументБезКатегории.Вставить("inStock" , Ложь); - МассивДокументов.Добавить(ДокументБезКатегории); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll", Коллекция); - Опции.Вставить("docs", МассивДокументов); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВставитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ВставитьДокументы"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьДокументы(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "new_collection"; - - // __4 = $ - Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); - Сортировка = Новый Структура("doubleField", -1); - Параметры = Новый Структура("limit", 2); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query" , Фильтр); - Опции.Вставить("sort" , Сортировка); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьДокументы"); - - // 1: Category and price range - Фильтр = Новый Структура("category,price", "электроника", Новый Структура("__4gte,__4lte", 100, 400)); - Сортировка = Новый Структура("price", 1); - Параметры = Новый Структура("limit", 5); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query" , Фильтр); - Опции.Вставить("sort" , Сортировка); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ПолучитьДокументы", 1); - - // 2: Stock and rating - Фильтр = Новый Структура("inStock,rating", Истина, Новый Структура("__4gte", 4)); - Сортировка = Новый Структура("rating,price", -1, 1); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - Опции.Вставить("sort" , Сортировка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ПолучитьДокументы", 2); - - // 3: By tags array - Фильтр = Новый Структура("tags", "распродажа"); - Сортировка = Новый Структура("createdDate", -1); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - Опции.Вставить("sort" , Сортировка); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ПолучитьДокументы", 3); - - // 4: By nested fields - Фильтр = Новый Соответствие; - Фильтр.Вставить("details.supplier", "Поставщик А"); - Фильтр.Вставить("details.weightKg", Новый Структура("__4lt", 3)); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ПолучитьДокументы", 4); - - // 5: Projection - Фильтр = Новый Структура("category", "книги"); - Сортировка = Новый Структура("price", -1); - Параметры = Новый Структура("projection", Новый Структура("productName,price,rating", 1, 1, 1)); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query" , Фильтр); - Опции.Вставить("sort" , Сортировка); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ПолучитьДокументы", 5); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьКурсор(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "new_collection"; - - Фильтр = Новый Структура("stringField", "Текст"); - Сортировка = Новый Структура("doubleField", -1); - Параметры = Новый Структура("limit,batchSize", 2, 1); - - Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьКурсор"); - - // Big batchSize with limit - Фильтр = Новый Структура("inStock", Истина); - Сортировка = Новый Структура("price", 1); - Параметры = Новый Структура("limit,batchSize", 8, 3); - - Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); - - Обработать(Результат, "MongoDB", "ПолучитьКурсор", 1); - - // Small batchSize without limit - Фильтр = Новый Структура("category", "одежда"); - Сортировка = Новый Структура("rating", -1); - Параметры = Новый Структура("batchSize", 2); - - Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); - - Обработать(Результат, "MongoDB", "ПолучитьКурсор", 2); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьПакетДокументов(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "new_collection"; - - Фильтр = Новый Структура("stringField", "Текст"); - Сортировка = Новый Структура("doubleField", -1); - Параметры = Новый Структура("limit,batchSize", 2, 1); - - Курсор = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); - - Если Не Курсор["result"] Тогда - ВызватьИсключение Курсор["error"]; - КонецЕсли; - - Курсор = Курсор["data"]["cursor"]; - МассивДокументов = Курсор["firstBatch"]; - IDКурсора = Курсор["id"]; - ПродолжатьВыборку = IDКурсора > 0; - - Пока ПродолжатьВыборку Цикл - - Результат = OPI_MongoDB.ПолучитьПакетДокументов(Соединение, Коллекция, IDКурсора, База); // <--- - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - КонецЕсли; - - ПродолжатьВыборку = Результат["data"]["cursor"]["id"] > 0; - - Для Каждого Запись Из Результат["data"]["cursor"]["nextBatch"] Цикл - МассивДокументов.Добавить(Запись); - КонецЦикла; - - КонецЦикла; - - // END - - Обработать(Результат, "MongoDB", "ПолучитьПакетДокументов"); - -КонецПроцедуры - -Процедура MongoDB_ОбновитьДокументы(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "new_collection"; - - // __4 = $ - Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); - Данные = Новый Структура( "__4set", Новый Структура("doubleField", 999)); - - Обновление = OPI_MongoDB.ПолучитьСтруктуруОбновленияДокументов(Фильтр, Данные); // Массив или одиночное - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - - // END - - Обработать(Результат, "MongoDB", "ОбновитьДокументы"); - - Параметры = Новый Структура("limit,batchSize", 2, 1); - Сортировка = Новый Структура("doubleField", -1); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query" , Фильтр); - Опции.Вставить("sort" , Сортировка); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ОбновитьДокументы", "Получение"); - - Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query" , Фильтр); - Опции.Вставить("sort" , Сортировка); - Опции.Вставить("params", Параметры); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ОбновитьДокументы", "Получение новых"); - - // Multiply fields - Фильтр = Новый Структура("category", "электроника"); - Данные = Новый Структура("__4set", Новый Структура("price,inStock,rating", 777, Ложь, 5)); - - Опции = Новый Структура; - Опции.Вставить("query", Фильтр); - Опции.Вставить("data" , Данные); - Опции.Вставить("multi", Истина); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 1); - - Фильтр = Новый Структура("category", "электроника", "price", 777); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 1"); - - // Number inc - Фильтр = Новый Структура("productName", "Товар 1"); - Данные = Новый Структура("__4inc", Новый Структура("quantity", 10)); - - Опции = Новый Структура; - Опции.Вставить("query", Фильтр); - Опции.Вставить("data" , Данные); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 2); - - Фильтр = Новый Структура("productName", "Товар 1"); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 2"); - - // Array insertion - Фильтр = Новый Структура("productName", "Товар 2"); - Данные = Новый Структура("__4push", Новый Структура("tags", "обновленный")); - - Опции = Новый Структура; - Опции.Вставить("query", Фильтр); - Опции.Вставить("data" , Данные); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 3); - - Фильтр = Новый Структура("productName", "Товар 2", "tags", "обновленный"); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 3"); - - // Nested field update - СоответствиеУстановки = Новый Соответствие; - СоответствиеУстановки.Вставить("details.weightKg", 2.5); - СоответствиеУстановки.Вставить("details.supplier", "Поставщик А+"); - - Фильтр = Новый Соответствие; - Фильтр.Вставить("details.supplier", "Поставщик А"); - - Данные = Новый Структура("__4set", СоответствиеУстановки); - - Опции = Новый Структура; - Опции.Вставить("query", Фильтр); - Опции.Вставить("data" , Данные); - Опции.Вставить("multi", Истина); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 4); - - Фильтр = Новый Соответствие; - Фильтр.Вставить("details.supplier", "Поставщик А+"); - Фильтр.Вставить("details.weightKg", 2.5); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 4"); - - // Upsert - Фильтр = Новый Структура("productName", "Новый товар"); - - //@skip-check structure-consructor-too-many-keys - Данные = Новый Структура("__4set", Новый Структура("productName,category,price,quantity,inStock,createdDate" - , "Новый товар" - , "электроника" - , 1999 - , 1 - , Истина - , OPI_Инструменты.ПолучитьТекущуюДату() - )); - - Опции = Новый Структура; - Опции.Вставить("query" , Фильтр); - Опции.Вставить("data" , Данные); - Опции.Вставить("multi" , Ложь); - Опции.Вставить("upsert", Истина); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 5); - - Фильтр = Новый Структура("productName", "Новый товар"); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 5"); - - // Field removing - Фильтр = Новый Структура("productName", "Товар 3"); - Данные = Новый Структура("__4unset", Новый Структура("rating", "")); - - Опции = Новый Структура; - Опции.Вставить("query", Фильтр); - Опции.Вставить("data" , Данные); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 6); - - Фильтр = Новый Структура("productName", "Товар 3"); - Параметры = Новый Структура("projection", Новый Структура("productName,rating", 1, 1)); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query" , Фильтр); - Опции.Вставить("sort" , Неопределено); - Опции.Вставить("params", Параметры); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 6"); - - // Multiply operators - Фильтр = Новый Структура("price", Новый Структура("__4lt", 200)); - Данные = Новый Структура; - Данные.Вставить("__4set", Новый Структура("inStock", Ложь)); - Данные.Вставить("__4inc", Новый Структура("quantity", -5)); - Данные.Вставить("__4push", Новый Структура("tags", "уценка")); - - Опции = Новый Структура; - Опции.Вставить("query", Фильтр); - Опции.Вставить("data" , Данные); - Опции.Вставить("multi", Истина); - - Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", Обновление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 7); - - Фильтр = Новый Структура("price,tags", Новый Структура("__4lt", 200), "уценка"); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 7"); - - // Updates array - МассивОбновлений = Новый Массив; - - Фильтр1 = Новый Структура("category", "электроника"); - Данные1 = Новый Структура("__4set", Новый Структура("price,discounted", 888, Истина)); - Опции = Новый Структура; - Опции.Вставить("query", Фильтр1); - Опции.Вставить("data" , Данные1); - Опции.Вставить("multi", Истина); - - Обновление1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - МассивОбновлений.Добавить(Обновление1); - - Фильтр2 = Новый Структура("category", "одежда"); - Данные2 = Новый Структура("__4inc", Новый Структура("quantity", 5)); - Опции = Новый Структура; - Опции.Вставить("query", Фильтр2); - Опции.Вставить("data" , Данные2); - Опции.Вставить("multi", Истина); - - Обновление2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - МассивОбновлений.Добавить(Обновление2); - - Фильтр3 = Новый Структура("category", "книги"); - Данные3 = Новый Структура("__4push", Новый Структура("tags", "массовое_обновление")); - Опции = Новый Структура; - Опции.Вставить("query", Фильтр3); - Опции.Вставить("data" , Данные3); - Опции.Вставить("multi", Истина); - - Обновление3 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - МассивОбновлений.Добавить(Обновление3); - - Фильтр4 = Новый Структура("productName", "Специальный товар из массива"); - - //@skip-check structure-consructor-too-many-keys - Данные4 = Новый Структура("__4set", Новый Структура("productName,category,price,quantity,inStock,createdDate" - , "Специальный товар из массива" - , "специальная" - , 1111 - , 7 - , Истина - , OPI_Инструменты.ПолучитьТекущуюДату() - )); - - Опции = Новый Структура; - Опции.Вставить("query" , Фильтр4); - Опции.Вставить("data" , Данные4); - Опции.Вставить("multi" , Ложь); - Опции.Вставить("upsert", Истина); - - Обновление4 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - МассивОбновлений.Добавить(Обновление4); - - Фильтр5 = Новый Структура("rating", Новый Структура("__4lte", 2)); - Данные5 = Новый Структура; - Данные5.Вставить("__4set", Новый Структура("needsImprovement", Истина)); - Данные5.Вставить("__4inc", Новый Структура("quantity" , -2)); - Опции = Новый Структура; - Опции.Вставить("query", Фильтр5); - Опции.Вставить("data" , Данные5); - Опции.Вставить("multi", Истина); - - Обновление5 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - МассивОбновлений.Добавить(Обновление5); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("updates", МассивОбновлений); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "ОбновитьДокументы", 9); - - Фильтр = Новый Структура("category,price", "электроника", 888); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_1"); - - Фильтр = Новый Структура("category,tags", "книги", "массовое_обновление"); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_2"); - - Фильтр = Новый Структура("productName", "Специальный товар из массива"); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_3"); - - Фильтр = Новый Структура("needsImprovement", Истина); - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_4"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьСтруктуруОбновленияДокументов(ПараметрыФункции) - - // __4 = $ - Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); - Данные = Новый Структура( "__4set", Новый Структура("doubleField", 999)); - - Опции = Новый Структура; - Опции.Вставить("query" , Фильтр); - Опции.Вставить("data" , Данные); - Опции.Вставить("multi" , Истина); - Опции.Вставить("upsert", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьСтруктуруОбновленияДокументов"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьСтруктуруУдаленияДокументов(ПараметрыФункции) - - Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); - Результат = OPI_MongoDB.ПолучитьСтруктуруУдаленияДокументов(Фильтр, 1); // Массив или одиночное - - // END - - Обработать(Результат, "MongoDB", "ПолучитьСтруктуруУдаленияДокументов"); - -КонецПроцедуры - -Процедура MongoDB_УдалитьДокументы(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Коллекция = "new_collection"; - - Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); - Удаление = OPI_MongoDB.ПолучитьСтруктуруУдаленияДокументов(Фильтр, 1); // Массив или одиночное - - Результат = OPI_MongoDB.ПолучитьДокументы(Соединение, Коллекция, База, Фильтр); // SKIP - Обработать(Результат, "MongoDB", "УдалитьДокументы", "Предпроверка"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("deletes", Удаление); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьДокументы", Опции); - - // END - - Обработать(Результат, "MongoDB", "УдалитьДокументы"); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("coll" , Коллекция); - Опции.Вставить("db" , База); - Опции.Вставить("query", Фильтр); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); - - Обработать(Результат, "MongoDB", "УдалитьДокументы", "Проверка"); - -КонецПроцедуры - -Процедура MongoDB_СоздатьПользователя(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - МассивРолей = Новый Массив; - МассивРолей.Добавить("read"); - МассивРолей.Добавить("userAdmin"); - - ИмяПользователя = "newuser"; - ПарольПользователя = "1234"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяПользователя); - Опции.Вставить("roles", МассивРолей); - Опции.Вставить("db" , База); - Опции.Вставить("pwd" , ПарольПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьПользователя", Опции); - - // END - - Обработать(Результат, "MongoDB", "СоздатьПользователя"); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяПользователя); - Опции.Вставить("roles", МассивРолей); - Опции.Вставить("db" , База); - Опции.Вставить("pwd" , ПарольПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьПользователя", Опции); - - Обработать(Результат, "MongoDB", "СоздатьПользователя", "Существующий"); - -КонецПроцедуры - -Процедура MongoDB_ИзменитьПользователя(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - МассивРолей = Новый Массив; - МассивРолей.Добавить("readWrite"); - - ИмяПользователя = "newuser"; - ПарольПользователя = "4321"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяПользователя); - Опции.Вставить("roles", МассивРолей); - Опции.Вставить("db" , База); - Опции.Вставить("pwd" , ПарольПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьПользователя", Опции); - - // END - - Обработать(Результат, "MongoDB", "ИзменитьПользователя"); - - ИмяПользователя = "anotheruser"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяПользователя); - Опции.Вставить("roles", МассивРолей); - Опции.Вставить("db" , База); - Опции.Вставить("pwd" , ПарольПользователя); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьПользователя", Опции); - - Обработать(Результат, "MongoDB", "ИзменитьПользователя", "Несуществующий"); - -КонецПроцедуры - -Процедура MongoDB_УдалитьПользователя(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - ИмяПользователя = "newuser"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name", ИмяПользователя); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьПользователя", Опции); - - // END - - Обработать(Результат, "MongoDB", "УдалитьПользователя"); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name", ИмяПользователя); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьПользователя", Опции); - - Обработать(Результат, "MongoDB", "УдалитьПользователя", "Повторно"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьПользователей(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - ИмяПользователя = "newuser"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("usrs", ИмяПользователя); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователей", Опции); - - Обработать(Результат, "MongoDB", "ПолучитьПользователей", "Простой"); // SKIP - - МассивПользователей = Новый Массив; - МассивПользователей.Добавить(Новый Структура("user,db", "bayselonarrend", "admin")); - МассивПользователей.Добавить(Новый Структура("user,db", "newuser" , "main")); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("usrs", МассивПользователей); - Опции.Вставить("db" , База); - Опции.Вставить("spwd", Истина); - Опции.Вставить("sprv", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователей", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьПользователей"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьПользователейБазы(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = ПараметрыФункции["MongoDB_DB"]; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Опции = Новый Структура; - Опции.Вставить("dbc", Соединение); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователейБазы", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьПользователейБазы"); - -КонецПроцедуры - -Процедура MongoDB_СоздатьРоль(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = "admin"; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - МассивРолей = Новый Массив; - МассивРолей.Добавить("read"); - МассивРолей.Добавить("userAdmin"); - - Ресурс = Новый Структура("db,collection", База, "new_collection"); - Действия = Новый Массив; - - Действия.Добавить("find"); - Действия.Добавить("insert"); - Действия.Добавить("update"); - - Опции = Новый Структура; - Опции.Вставить("res", Ресурс); - Опции.Вставить("act", Действия); - - Привилегия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); - - МассивПривилегий = Новый Массив; - МассивПривилегий.Добавить(Привилегия); - - ИмяРоли = "newrole"; - - OPI_MongoDB.УдалитьРоль(Соединение, ИмяРоли, База); // SKIP - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяРоли); - Опции.Вставить("db" , База); - Опции.Вставить("prvl" , МассивПривилегий); - Опции.Вставить("roles", МассивРолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьРоль", Опции); - - // END - - Обработать(Результат, "MongoDB", "СоздатьРоль"); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяРоли); - Опции.Вставить("db" , База); - Опции.Вставить("prvl" , МассивПривилегий); - Опции.Вставить("roles", МассивРолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьРоль", Опции); - - Обработать(Результат, "MongoDB", "СоздатьРоль", "Существующий"); - -КонецПроцедуры - -Процедура MongoDB_ИзменитьРоль(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = "admin"; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - МассивРолей = Новый Массив; - МассивРолей.Добавить("read"); - МассивРолей.Добавить("userAdmin"); - - Ресурс = Новый Структура("db,collection", База, "new_collection2"); - Действия = Новый Массив; - - Действия.Добавить("find"); - Действия.Добавить("insert"); - - Опции = Новый Структура; - Опции.Вставить("res", Ресурс); - Опции.Вставить("act", Действия); - - Привилегия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); - - МассивПривилегий = Новый Массив; - МассивПривилегий.Добавить(Привилегия); - - ИмяРоли = "newrole"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name" , ИмяРоли); - Опции.Вставить("db" , База); - Опции.Вставить("prvl" , МассивПривилегий); - Опции.Вставить("roles", МассивРолей); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьРоль", Опции); - - // END - - Обработать(Результат, "MongoDB", "ИзменитьРоль"); - -КонецПроцедуры - -Процедура MongoDB_УдалитьРоль(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = "admin"; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - ИмяРоли = "newrole"; - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name", ИмяРоли); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьРоль", Опции); - - // END - - Обработать(Результат, "MongoDB", "УдалитьРоль"); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("name", ИмяРоли); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьРоль", Опции); - - Обработать(Результат, "MongoDB", "УдалитьРоль", "Повторно"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьСтруктуруПривилегииРоли(ПараметрыФункции) - - База = ПараметрыФункции["MongoDB_DB"]; - Ресурс = Новый Структура("db,collection", База, "new_collection"); - Действия = Новый Массив; - - Действия.Добавить("find"); - Действия.Добавить("insert"); - Действия.Добавить("update"); - - Опции = Новый Структура; - Опции.Вставить("res", Ресурс); - Опции.Вставить("act", Действия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьСтруктуруПривилегииРоли"); - -КонецПроцедуры - -Процедура MongoDB_ПолучитьРоли(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = "admin"; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Роль = Новый Структура("role,db", "newrole", База); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("roles", Роль); - Опции.Вставить("db" , База); - Опции.Вставить("sprv" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьРоли", Опции); - - // END - - Обработать(Результат, "MongoDB", "ПолучитьРоли"); - -КонецПроцедуры - -Процедура MongoDB_НазначитьРоли(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = "admin"; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Пользователь = "bayselonarrend"; - Роль = Новый Структура("role,db", "newrole", База); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("user" , Пользователь); - Опции.Вставить("roles", Роль); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "НазначитьРоли", Опции); - - // END - - Обработать(Результат, "MongoDB", "НазначитьРоли"); - -КонецПроцедуры - -Процедура MongoDB_СнятьРоли(ПараметрыФункции) - - Адрес = "127.0.0.1:1234"; - Логин = ПараметрыФункции["MongoDB_User"]; - Пароль = ПараметрыФункции["MongoDB_Password"]; - База = "admin"; - - Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP - - ПараметрыПодключения = Новый Структура("authSource", "admin"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("usr" , Логин); - Опции.Вставить("pwd" , Пароль); - Опции.Вставить("params", ПараметрыПодключения); - - СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); - Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); - - Пользователь = "bayselonarrend"; - Роль = Новый Структура("role,db", "newrole", База); - - Опции = Новый Структура; - Опции.Вставить("dbc" , Соединение); - Опции.Вставить("user" , Пользователь); - Опции.Вставить("roles", Роль); - Опции.Вставить("db" , База); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СнятьРоли", Опции); - - // END - - Обработать(Результат, "MongoDB", "СнятьРоли"); - -КонецПроцедуры - -#КонецОбласти - -#Область GRPC - -Процедура GRPC_ОткрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Мета = Новый Структура("somekey", "somevalue"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - Опции.Вставить("meta" , Мета); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Результат = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - // END - - Обработать(Результат, "GRPC", "ОткрытьСоединение"); - - Результат = OPI_GRPC.ЗакрытьСоединение(Результат); - - Обработать(Результат, "GRPC", "ОткрытьСоединение", "Закрытие"); - - Адрес = ПараметрыФункции["GRPC_AddressNoTls"]; - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Результат = OPI_GRPC.ОткрытьСоединение(Параметры); - - Обработать(Результат, "GRPC", "ОткрытьСоединение", "Без TLS"); - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto", Proto1); - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Результат = OPI_GRPC.ОткрытьСоединение(Параметры); - - Обработать(Результат, "GRPC", "ОткрытьСоединение", "Ошибка"); - -КонецПроцедуры - -Процедура GRPC_ЗакрытьСоединение(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Мета = Новый Структура("somekey", "somevalue"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - Опции.Вставить("meta" , Мета); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - Результат = OPI_GRPC.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат, "GRPC", "ЗакрытьСоединение"); - -КонецПроцедуры - -Процедура GRPC_ЭтоКоннектор(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Мета = Новый Структура("somekey", "somevalue"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - Опции.Вставить("meta" , Мета); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - Результат = OPI_GRPC.ЭтоКоннектор(Соединение); - - // END - - Обработать(Результат, "GRPC", "ЭтоКоннектор"); - -КонецПроцедуры - -Процедура GRPC_ПолучитьПараметрыСоединения(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Мета = Новый Структура("somekey", "somevalue"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - Опции.Вставить("meta" , Мета); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - - // END - - Обработать(Результат, "GRPC", "ПолучитьПараметрыСоединения"); - -КонецПроцедуры - -Процедура GRPC_ПолучитьНастройкиTls(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - // END - - Обработать(Результат, "GRPC", "ПолучитьНастройкиTls"); - -КонецПроцедуры - -Процедура GRPC_УстановитьМетаданные(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Мета = Новый Структура("somekey", "somevalue"); - Результат = OPI_GRPC.УстановитьМетаданные(Соединение, Мета); - - // END - - Обработать(Результат, "GRPC", "УстановитьМетаданные"); - - Если Не OPI_ПолучениеДанныхТестов.ЭтоТестCLI() Тогда - - Сервис = "grpcbin.GRPCBin"; - Метод = "HeadersUnary"; - - Опции = Новый Структура; - Опции.Вставить("conn" , Соединение); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , Неопределено); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); - - Обработать(Результат, "GRPC", "УстановитьМетаданные", "Проверка"); - - КонецЕсли; - -КонецПроцедуры - -Процедура GRPC_ВызватьМетод(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Мета = Новый Структура("somekey", "somevalue"); - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - Опции.Вставить("meta" , Мета); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyUnary"; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - МассивЧисел = Новый Массив; - МассивЧисел.Добавить(1); - МассивЧисел.Добавить(10); - МассивЧисел.Добавить(100); - - МассивСтруктур = Новый Массив; - МассивСтруктур.Добавить(Новый Структура("f_string", "Nested value 1")); - МассивСтруктур.Добавить(Новый Структура("f_string", "Nested value 2")); - - МассивБулево = Новый Массив; - МассивБулево.Добавить(Истина); - МассивБулево.Добавить(Ложь); - - Файл = ПараметрыФункции["Document"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); - - ИВФ = ПолучитьИмяВременногоФайла(); - Файл.Записать(ИВФ); - - МассивДвоичныхДанных = Новый Массив; - МассивДвоичныхДанных.Добавить(Файл); // Как данные - МассивДвоичныхДанных.Добавить(ИВФ); // Как путь к файлу - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_int64" , 123); - Данные.Вставить("f_float" , 123.22000122070312); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_enum" , "ENUM_1"); - Данные.Вставить("f_bytes" , Файл); - Данные.Вставить("f_sub" , Новый Структура("f_string" , "Nested value")); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_int32s" , МассивЧисел); - Данные.Вставить("f_int64s" , МассивЧисел); - Данные.Вставить("f_floats" , МассивЧисел); - Данные.Вставить("f_bytess" , МассивДвоичныхДанных); - Данные.Вставить("f_subs" , МассивСтруктур); - Данные.Вставить("f_bools" , МассивБулево); - Данные.Вставить("f_enums" , СтрРазделить("ENUM_1,ENUM_2", ",")); - - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , Данные); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); - - // END - - Обработать(Результат, "GRPC", "ВызватьМетод"); - - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , Неопределено); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); - - Обработать(Результат, "GRPC", "ВызватьМетод", "Пустой"); - - Метод = "HeadersUnary"; - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , Неопределено); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); - - Обработать(Результат, "GRPC", "ВызватьМетод", "Мета"); - -КонецПроцедуры - -Процедура GRPC_ПолучитьСписокСервисов(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схема); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьСписокСервисов", Опции); - - // END - - Обработать(Результат, "GRPC", "ПолучитьСписокСервисов"); - -КонецПроцедуры - -Процедура GRPC_ПолучитьСписокМетодов(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схема); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - Сервис = "grpcbin.GRPCBin"; - - Опции = Новый Структура; - Опции.Вставить("conn" , Соединение); - Опции.Вставить("service", Сервис); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьСписокМетодов", Опции); - - // END - - Обработать(Результат, "GRPC", "ПолучитьСписокМетодов"); - -КонецПроцедуры - -Процедура GRPC_ПолучитьМетод(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схема); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - Сервис = "grpcbin.GRPCBin"; - Метод = "Index"; - - Опции = Новый Структура; - Опции.Вставить("conn" , Соединение); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьМетод", Опции); - - // END - - Обработать(Результат, "GRPC", "ПолучитьМетод"); - -КонецПроцедуры - -Процедура GRPC_ИнициализироватьСерверныйПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyServerStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); // <--- - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - МассивСообщений = Новый Массив; - - Пока Истина Цикл - - ТекущееСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); - - Если Не ТекущееСообщение["result"] Тогда - - Ошибка = ТекущееСообщение["error"]; - - Если Ошибка = "Timeout" Тогда - Продолжить; - ИначеЕсли Ошибка = "Closed" Тогда - Прервать; - Иначе - ВызватьИсключение Ошибка; - КонецЕсли; - - Иначе - - ДанныеСообщения = ТекущееСообщение["message"]; - - Если ЗначениеЗаполнено(ДанныеСообщения) Тогда - МассивСообщений.Добавить(ДанныеСообщения); - КонецЕсли; - - КонецЕсли; - - КонецЦикла; - - // END - - Обработать(Результат , "GRPC", "ИнициализироватьСерверныйПоток"); - Обработать(МассивСообщений, "GRPC", "ИнициализироватьСерверныйПоток", "Массив"); - -КонецПроцедуры - -Процедура GRPC_ИнициализироватьКлиентскийПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyClientStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); // <--- - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - ФинальноеСообщение = Неопределено; - - Счетчик = 0; - Пока Истина Цикл - - ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); - Счетчик = Счетчик + 1; - - Если Не ТекущаяОтправка["result"] Тогда - - Ошибка = ТекущаяОтправка["error"]; - - Если Ошибка = "Timeout" Тогда - Продолжить; - ИначеЕсли Ошибка = "Closed" Тогда - ФинальноеСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); - Прервать; - Иначе - ВызватьИсключение СтрШаблон("%1 (отправлено сообщений %2)", Ошибка, Счетчик); - КонецЕсли; - - Иначе - - Если Счетчик = 10 Тогда - Завершение = OPI_GRPC.ЗавершитьОтправку(Соединение, IDПотока); - ФинальноеСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); - Прервать; - КонецЕсли; - - КонецЕсли; - - КонецЦикла; - - // END - - Обработать(ФинальноеСообщение, "GRPC", "ИнициализироватьКлиентскийПоток", , Счетчик); - -КонецПроцедуры - -Процедура GRPC_ИнициализироватьДвунаправленныйПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyBidirectionalStreamStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Результат = OPI_GRPC.ИнициализироватьДвунаправленныйПоток(Соединение, Сервис, Метод); // <--- - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - МассивРезультата = Новый Массив; - Счетчик = 0; - - Пока Счетчик < 10 Цикл - - Данные.Вставить("f_int32", Счетчик + 1); - - ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); - - Если Не ТекущаяОтправка["result"] Тогда - - Ошибка = ТекущаяОтправка["error"]; - - Если Ошибка = "Timeout" Тогда - Продолжить; - Иначе - ВызватьИсключение СтрШаблон("Ошибка отправки: %1 (обработано сообщений %2)", Ошибка, Счетчик); - КонецЕсли; - - КонецЕсли; - - ТекущееПолучение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); - - Если Не ТекущееПолучение["result"] Тогда - ВызватьИсключение СтрШаблон("Ошибка получения: %1 (обработано сообщений %2)", Ошибка, Счетчик); - КонецЕсли; - - МассивРезультата.Добавить(ТекущееПолучение["message"]); - Счетчик = Счетчик + 1; - - КонецЦикла; - - OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); - - // END - - Обработать(Результат, "GRPC", "ИнициализироватьДвунаправленныйПоток", , МассивРезультата); - -КонецПроцедуры - -Процедура GRPC_ОтправитьСообщение(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyClientStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - Результат = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); // <--- - Закрытие = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); - - // END - - Обработать(Результат, "GRPC", "ОтправитьСообщение", , Закрытие); - -КонецПроцедуры - -Процедура GRPC_ПолучитьСообщение(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyServerStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - МассивЧисел = Новый Массив; - МассивЧисел.Добавить(1); - МассивЧисел.Добавить(10); - МассивЧисел.Добавить(100); - - Файл = ПараметрыФункции["Document"]; - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); - - ИВФ = ПолучитьИмяВременногоФайла(); - Файл.Записать(ИВФ); - - МассивДвоичныхДанных = Новый Массив; - МассивДвоичныхДанных.Добавить(Файл); // Как данные - МассивДвоичныхДанных.Добавить(ИВФ); // Как путь к файлу - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_int64" , 123); - Данные.Вставить("f_float" , 123.22000122070312); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_enum" , "ENUM_1"); - Данные.Вставить("f_bytes" , Файл); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_int32s" , МассивЧисел); - Данные.Вставить("f_bytess" , МассивДвоичныхДанных); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - Результат = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); // <--- - Закрытие = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); - - // END - - Данные.Вставить("f_int64s", Новый Массив); - Данные.Вставить("f_enums" , Новый Массив); - Данные.Вставить("f_floats", Новый Массив); - Данные.Вставить("f_bools" , Новый Массив); - Данные.Вставить("f_subs" , Новый Массив); - - Обработать(Результат, "GRPC", "ПолучитьСообщение", , Закрытие, Данные); - -КонецПроцедуры - -Процедура GRPC_ЗакрытьПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyServerStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - Результат = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); // <--- - - // END - - Обработать(Результат, "GRPC", "ЗакрытьПоток"); - - Результат = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); - - Обработать(Результат, "GRPC", "ЗакрытьПоток", "Отправка"); - -КонецПроцедуры - -Процедура GRPC_ОбработатьСерверныйПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyServerStream"; - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , Данные); - Опции.Вставить("tls" , Tls); - Опции.Вставить("count" , 3); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьСерверныйПоток", Опции); - - // END - - Обработать(Результат, "GRPC", "ОбработатьСерверныйПоток"); - -КонецПроцедуры - -Процедура GRPC_ОбработатьКлиентскийПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyClientStream"; - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_int32" , 123); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - МассивЗапросов = Новый Массив; - - Для Н = 1 По 10 Цикл - МассивЗапросов.Добавить(Данные); - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , МассивЗапросов); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьКлиентскийПоток", Опции); - - // END - - Обработать(Результат, "GRPC", "ОбработатьКлиентскийПоток"); - - МассивЗапросов.Удалить(МассивЗапросов.ВГраница()); - - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("data" , МассивЗапросов); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьКлиентскийПоток", Опции); - - Обработать(Результат, "GRPC", "ОбработатьКлиентскийПоток", "Ошибка"); - -КонецПроцедуры - -Процедура GRPC_ОбработатьДвунаправленныйПоток(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - МассивСтрок = Новый Массив; - МассивСтрок.Добавить("one"); - МассивСтрок.Добавить("two"); - МассивСтрок.Добавить("three"); - - Данные = Новый Соответствие; - Данные.Вставить("f_string" , "Test message"); - Данные.Вставить("f_bool" , Истина); - Данные.Вставить("f_strings", МассивСтрок); - Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyBidirectionalStreamStream"; - - ПорядокОбмена = Новый Массив; - - Для Н = 1 По 10 Цикл - - ПорядокОбмена.Добавить(Данные); // Одно отправляем - ПорядокОбмена.Добавить(Неопределено); // Одно получаем - - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("conn" , Параметры); - Опции.Вставить("service", Сервис); - Опции.Вставить("method" , Метод); - Опции.Вставить("exch" , ПорядокОбмена); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьДвунаправленныйПоток", Опции); - - // END - - Обработать(Результат, "GRPC", "ОбработатьДвунаправленныйПоток"); - -КонецПроцедуры - -Процедура GRPC_ЗавершитьОтправку(ПараметрыФункции) - - Адрес = ПараметрыФункции["GRPC_Address"]; - - Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL - Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL - - Схемы = Новый Соответствие; - Схемы.Вставить("main.proto" , Proto1); // Основной - Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной - - Опции = Новый Структура; - Опции.Вставить("addr" , Адрес); - Опции.Вставить("proto", Схемы); - - Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); - - Сервис = "grpcbin.GRPCBin"; - Метод = "DummyClientStream"; - - Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); - - Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда - ВызватьИсключение Соединение["error"]; - КонецЕсли; - - Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - Результат = OPI_GRPC.ЗавершитьОтправку(Соединение, IDПотока); - - // END - - Обработать(Результат, "GRPC", "ЗавершитьОтправку"); - -КонецПроцедуры - -#КонецОбласти - -#Область ClickHouse - -Процедура ClickHouse_ВыполнитьЗапрос(ПараметрыФункции) - - // Настройки соединения - - URL = "http://localhost:8123"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_Port"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - Соединение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); - - // Запрос (создание таблицы) - - ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events ( - | id UInt64, - | timestamp DateTime, - | user_id UInt32, - | event_type String, - | payload String - |) ENGINE = MergeTree() - |ORDER BY (timestamp, id)"; - - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP - Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP - - Опции = Новый Структура; - Опции.Вставить("query", ТекстЗапроса); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СозданиеТаблицы"); // SKIP - - // Запрос (вставка данных) - - ТекстЗапроса = "INSERT INTO events FORMAT JSON"; - - ФорматДанных = "JSON"; - МассивДанных = Новый Массив; - - ТекущаяДата = Дата("20260101100000"); - - Запись1 = Новый Структура; - Запись1.Вставить("id" , 1); - Запись1.Вставить("timestamp" , ТекущаяДата); - Запись1.Вставить("user_id" , 100); - Запись1.Вставить("event_type", "click"); - Запись1.Вставить("payload" , "{}"); - - Запись2 = Новый Структура; - Запись2.Вставить("id" , 2); - Запись2.Вставить("timestamp" , ТекущаяДата); - Запись2.Вставить("user_id" , 200); - Запись2.Вставить("event_type", "hover"); - Запись2.Вставить("payload" , "{}"); - - МассивДанных.Добавить(Запись1); - МассивДанных.Добавить(Запись2); - - Мета = Новый Массив; - Мета.Добавить(Новый Структура("name,type", "id" , "UInt64")); - Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime")); - Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32")); - Мета.Добавить(Новый Структура("name,type", "event_type", "String")); - Мета.Добавить(Новый Структура("name,type", "payload" , "String")); - - Данные = Новый Структура("meta,data", Мета, МассивДанных); - БазаДанных = "default"; - IDЗапроса = Строка(Новый УникальныйИдентификатор()); - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("db" , БазаДанных); - Опции.Вставить("id" , IDЗапроса); - Опции.Вставить("data" , Данные); - Опции.Вставить("format", ФорматДанных); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP - - // Запрос с внешней таблицей - - ИмяТаблицы = "ext_users"; - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("id" , "UInt64"); - СтруктураКолонок.Вставить("name", "String"); - - Таб = Символы.Таб; - ДанныеТаблицы = "1" + Таб + "John - |2" + Таб + "Jane - |3" + Таб + "Bob"; - - Опции = Новый Структура; - Опции.Вставить("name" , ИмяТаблицы); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("data" , ДанныеТаблицы); - Опции.Вставить("format", "TSV"); - - ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); - - МассивВнешнихТаблиц = Новый Массив; - МассивВнешнихТаблиц.Добавить(ВнешняяТаблица); - - ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1"; - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("format", "JSON"); - Опции.Вставить("ext" , МассивВнешнихТаблиц); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВнешняяТаблица"); // SKIP - - // Выборка - - ТекстВыборки = "SELECT * FROM events"; - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "CSV"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаCSV"); - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "TSV"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаTSV"); - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "JSONCompact"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаJSONCompact"); - - ТекстЗапроса = "SELECT 1 AS result"; - - ДопНастройки = Новый Соответствие; - ДопНастройки.Вставить("max_threads", "4"); - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("format" , "JSON"); - Опции.Вставить("settings", ДопНастройки); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ДопНастройки"); - - UUID = Строка(Новый УникальныйИдентификатор()); - Опции = Новый Структура; - Опции.Вставить("id", UUID); - - Сессия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции); - - ТекстЗапроса = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)"; - - Опции = Новый Структура; - Опции.Вставить("query", ТекстЗапроса); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn" , Соединение); - Опции.Вставить("req" , Запрос); - Опции.Вставить("session", Сессия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияСоздание"); - - ТекстЗапроса = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')"; - - Опции = Новый Структура; - Опции.Вставить("query", ТекстЗапроса); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn" , Соединение); - Опции.Вставить("req" , Запрос); - Опции.Вставить("session", Сессия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияВставка"); - - ТекстЗапроса = "SELECT * FROM temp_session_test"; - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn" , Соединение); - Опции.Вставить("req" , Запрос); - Опции.Вставить("session", Сессия); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); - -КонецПроцедуры - -Процедура ClickHouse_ОткрытьСоединениеGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - // Открытие соединения - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC", "Открытие"); // SKIP - - // Запрос через открытое соединение (создание таблицы) - - ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc ( - | id UInt64, - | timestamp DateTime, - | user_id UInt32, - | event_type String, - | payload String - |) ENGINE = MergeTree() - |ORDER BY (timestamp, id)"; - - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP - Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP - - Опции = Новый Структура; - Опции.Вставить("query", ТекстЗапроса); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "СозданиеТаблицы"); // SKIP - - // Вставка данных - - ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON"; - - ФорматДанных = "JSON"; - МассивДанных = Новый Массив; - - ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); - - Запись1 = Новый Структура; - Запись1.Вставить("id" , 1); - Запись1.Вставить("timestamp" , ТекущаяДата); - Запись1.Вставить("user_id" , 100); - Запись1.Вставить("event_type", "click"); - Запись1.Вставить("payload" , "{}"); - - МассивДанных.Добавить(Запись1); - - Мета = Новый Массив; - Мета.Добавить(Новый Структура("name,type", "id" , "UInt64")); - Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime")); - Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32")); - Мета.Добавить(Новый Структура("name,type", "event_type", "String")); - Мета.Добавить(Новый Структура("name,type", "payload" , "String")); - - Данные = Новый Структура("meta,data", Мета, МассивДанных); - IDЗапроса = Строка(Новый УникальныйИдентификатор()); - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("db" , "default"); - Опции.Вставить("id" , IDЗапроса); - Опции.Вставить("data" , Данные); - Опции.Вставить("format", ФорматДанных); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "ВставкаДанных"); // SKIP - - // Выборка - - ТекстВыборки = "SELECT * FROM events_grpc"; - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Выборка"); // SKIP - - // Запрос с внешней таблицей через gRPC - - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("id" , "UInt64"); - СтруктураКолонок.Вставить("name", "String"); - - Таб = Символы.Таб; - ДанныеТаблицы = "1" + Таб + "John - |2" + Таб + "Jane"; - - Опции = Новый Структура; - Опции.Вставить("name" , "ext_grpc"); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("data" , ДанныеТаблицы); - Опции.Вставить("format", "TSV"); - - ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); - - МассивВнешнихТаблиц = Новый Массив; - МассивВнешнихТаблиц.Добавить(ВнешняяТаблица); - - ТекстЗапроса = "SELECT * FROM ext_grpc"; - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("format", "JSON"); - Опции.Вставить("ext" , МассивВнешнихТаблиц); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC"); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыФункции) - - URL = "http://localhost:8123"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_Port"]); // SKIP - - // Без авторизации - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "БезАвторизации"); // SKIP - - // С basic авторизацией - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "BasicАвторизация"); // SKIP - - // С JWT авторизацией - - JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", JWT); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "JWTАвторизация"); // SKIP - - // С дополнительными заголовками - - ДопЗаголовки = Новый Соответствие; - ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth" , Авторизация); - Опции.Вставить("headers", ДопЗаголовки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP"); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - // Без авторизации - - Опции = Новый Структура; - Опции.Вставить("url", URL); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "БезАвторизации"); // SKIP - - // С basic авторизацией - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "BasicАвторизация"); // SKIP - - // С JWT авторизацией - - JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", JWT); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "JWTАвторизация"); // SKIP - - // С метаданными - - Meta = Новый Соответствие; - Meta.Вставить("custom-meta", "value"); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - Опции.Вставить("meta", Meta); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "СМетаданными"); // SKIP - - // С TLS настройками - - Опции = Новый Структура; - Опции.Вставить("trust", Истина); - - Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - Опции.Вставить("tls" , Tls); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC"); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыФункции) - - // Минимальный запрос - - ТекстЗапроса = "SELECT 1"; - - Опции = Новый Структура; - Опции.Вставить("query", ТекстЗапроса); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса", "Минимальный"); // SKIP - - // Полный запрос - - IDЗапроса = Строка(Новый УникальныйИдентификатор()); - Данные = Новый Структура("meta,data", Новый Массив, Новый Массив); - БазаДанных = "default"; - ФорматОтвета = "CSV"; - - ДопНастройки = Новый Соответствие; - ДопНастройки.Вставить("max_threads", "4"); - - СтруктураКолонок = Новый Структура("id,name", "UInt64", "String"); - Опции = Новый Структура; - Опции.Вставить("name", "ext"); - Опции.Вставить("cols", СтруктураКолонок); - - ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); - - МассивТаблиц = Новый Массив; - МассивТаблиц.Добавить(ВнешняяТаблица); - - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("db" , БазаДанных); - Опции.Вставить("id" , IDЗапроса); - Опции.Вставить("data" , Данные); - Опции.Вставить("format" , ФорматОтвета); - Опции.Вставить("ext" , МассивТаблиц); - Опции.Вставить("settings", ДопНастройки); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса"); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыФункции) - - // Минимальная структура - - ИмяТаблицы = "external_data"; - СтруктураКолонок = Новый Структура; - СтруктураКолонок.Вставить("id" , "UInt64"); - СтруктураКолонок.Вставить("name", "String"); - - Опции = Новый Структура; - Опции.Вставить("name", ИмяТаблицы); - Опции.Вставить("cols", СтруктураКолонок); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); - - Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы", "Минимальная"); // SKIP - - // С данными TSV - - ДанныеТаблицы = СтрШаблон("1%1Test - |2%1Test2", Символы.Таб); - - Опции = Новый Структура; - Опции.Вставить("name" , ИмяТаблицы); - Опции.Вставить("cols" , СтруктураКолонок); - Опции.Вставить("data" , ДанныеТаблицы); - Опции.Вставить("format", "TSV"); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы"); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции) - - IDСессии = Строка(Новый УникальныйИдентификатор); - Проверять = Истина; - Таймаут = 120; - - Опции = Новый Структура; - Опции.Вставить("id" , IDСессии); - Опции.Вставить("check" , Проверять); - Опции.Вставить("timeout", Таймаут); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСессии"); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьНастройкиTls(ПараметрыФункции) - - Опции = Новый Структура; - Опции.Вставить("trust", Ложь); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ПолучитьНастройкиTls"); - -КонецПроцедуры - -Процедура ClickHouse_ОткрытьПотокGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); // <--- - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - ФорматДанных = "JSON"; - ТекущаяДата = Дата("20260101100000"); - - Счетчик = 0; - Пока Счетчик < 5 Цикл - - Запись = Новый Структура; - Запись.Вставить("id" , Счетчик + 1); - Запись.Вставить("timestamp" , ТекущаяДата); - Запись.Вставить("user_id" , 100 + Счетчик); - Запись.Вставить("event_type" , "stream_test"); - Запись.Вставить("payload" , "{}"); - - Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; - - Последнее = Счетчик = 4; - - Если Счетчик = 0 Тогда - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); - ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); - Иначе - ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); - КонецЕсли; - - Если Не ТекущаяОтправка["result"] Тогда - - Ошибка = ТекущаяОтправка["error"]; - - Если Ошибка <> "Timeout" Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); - КонецЕсли; - - КонецЕсли; - - Счетчик = Счетчик + 1; - - КонецЦикла; - - Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); - ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); - - OPI_GRPC.ЗакрытьСоединение(Соединение); - - // END - - Обработать(Результат , "ClickHouse", "ОткрытьПотокGRPC"); - Обработать(ФинальноеСообщение , "ClickHouse", "ОткрытьПотокGRPC", "Финал"); - - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - ТекстВыборки = "SELECT * FROM events_stream_test ORDER BY id"; - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - РезультатВыборки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); - - Обработать(РезультатВыборки, "ClickHouse", "ОткрытьПотокGRPC", "Выборка"); - - OPI_GRPC.ЗакрытьСоединение(Соединение); - -КонецПроцедуры - -Процедура ClickHouse_ОтправитьСообщениеGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - ФорматДанных = "JSON"; - ТекущаяДата = Дата("20260101100000"); - - Счетчик = 0; - Пока Счетчик < 5 Цикл - - Запись = Новый Структура; - Запись.Вставить("id" , Счетчик + 1); - Запись.Вставить("timestamp" , ТекущаяДата); - Запись.Вставить("user_id" , 100 + Счетчик); - Запись.Вставить("event_type" , "stream_test"); - Запись.Вставить("payload" , "{}"); - - Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; - - Последнее = Счетчик = 4; - - Если Счетчик = 0 Тогда - - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); - ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); // <--- - Обработать(Результат, "ClickHouse", "ОтправитьСообщениеGRPC"); // SKIP - Иначе - ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); - КонецЕсли; - - Если Не ТекущаяОтправка["result"] Тогда - - Ошибка = ТекущаяОтправка["error"]; - - Если Ошибка <> "Timeout" Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); - КонецЕсли; - - КонецЕсли; - - Счетчик = Счетчик + 1; - - КонецЦикла; - - // END - - Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); - ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); - - OPI_GRPC.ЗакрытьСоединение(Соединение); - -КонецПроцедуры - -Процедура ClickHouse_ОтправитьДанныеGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); - - Если Не Результат["result"] Тогда - ВызватьИсключение Результат["error"]; - Иначе - IDПотока = Результат["streamId"]; - КонецЕсли; - - ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - ФорматДанных = "JSON"; - ТекущаяДата = Дата("20260101100000"); - - Счетчик = 0; - Пока Счетчик < 5 Цикл - - Запись = Новый Структура; - Запись.Вставить("id" , Счетчик + 1); - Запись.Вставить("timestamp" , ТекущаяДата); - Запись.Вставить("user_id" , 100 + Счетчик); - Запись.Вставить("event_type" , "stream_test"); - Запись.Вставить("payload" , "{}"); - - Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; - - Последнее = Счетчик = 4; - - Если Счетчик = 0 Тогда - - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); - ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); - Иначе - ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); // <--- - Обработать(Результат, "ClickHouse", "ОтправитьДанныеGRPC"); // SKIP - КонецЕсли; - - Если Не ТекущаяОтправка["result"] Тогда - - Ошибка = ТекущаяОтправка["error"]; - - Если Ошибка <> "Timeout" Тогда - ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); - КонецЕсли; - - КонецЕсли; - - Счетчик = Счетчик + 1; - - КонецЦикла; - - // END - - Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); - ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); - - OPI_GRPC.ЗакрытьСоединение(Соединение); - -КонецПроцедуры - -Процедура ClickHouse_ПолучитьСообщениеGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - Таймаут = 10000; - - РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); - - Если Не РезультатОткрытия["result"] Тогда - ВызватьИсключение РезультатОткрытия["error"]; - Иначе - IDПотока = РезультатОткрытия["streamId"]; - КонецЕсли; - - ТекстЗапроса = "SELECT number FROM system.numbers LIMIT 1"; - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - - Результат = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); - OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); - - Данные = ""; - - Если Результат["result"] Тогда - - Пока Истина Цикл - - Результат = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока, "JSON"); - - Если Не Результат["result"] Тогда - Прервать; - КонецЕсли; - - ЧастьТекста = Результат["message"]["output"]; - Данные = Данные + ЧастьТекста; - - КонецЦикла; - - OPI_GRPC.ЗакрытьСоединение(Соединение); - - Иначе - ВызватьИсключение Результат["error"]; - КонецЕсли; - - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); - - // END - - Обработать(Данные, "ClickHouse", "ПолучитьСообщениеGRPC"); - -КонецПроцедуры - -Процедура ClickHouse_ЗавершитьОтправкуGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - Таймаут = 10000; - - РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); - - Если Не РезультатОткрытия["result"] Тогда - ВызватьИсключение РезультатОткрытия["error"]; - Иначе - IDПотока = РезультатОткрытия["streamId"]; - КонецЕсли; - - ТекстЗапроса = "SELECT number FROM system.numbers LIMIT 1"; - Опции = Новый Структура; - Опции.Вставить("query" , ТекстЗапроса); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - - Отправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); - Результат = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); - - // END - - Обработать(Результат, "ClickHouse", "ЗавершитьОтправкуGRPC"); - - Результат = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); - - Обработать(Результат, "ClickHouse", "ЗавершитьОтправкуGRPC", "Отправка"); - -КонецПроцедуры - -Процедура ClickHouse_ЗакрытьПотокGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - Таймаут = 10000; - - РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); - - Если Не РезультатОткрытия["result"] Тогда - ВызватьИсключение РезультатОткрытия["error"]; - Иначе - IDПотока = РезультатОткрытия["streamId"]; - КонецЕсли; - - Результат = OPI_ClickHouse.ЗакрытьПотокGRPC(Соединение, IDПотока); - - // END - - Обработать(Результат, "ClickHouse", "ЗакрытьПотокGRPC"); - - OPI_GRPC.ЗакрытьСоединение(Соединение); - -КонецПроцедуры - -Процедура ClickHouse_ОбработатьОтправкуGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; - ФорматДанных = "JSON"; - ТекущаяДата = Дата("20260101100000"); - - Запрос = Неопределено; - МассивДанных = Новый Массив; - - Счетчик = 0; - Пока Счетчик < 5 Цикл - - Запись = Новый Структура; - Запись.Вставить("id" , Счетчик + 1); - Запись.Вставить("timestamp" , ТекущаяДата); - Запись.Вставить("user_id" , 100 + Счетчик); - Запись.Вставить("event_type", "stream_test"); - Запись.Вставить("payload" , "{}"); - - Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; - - Если Счетчик = 0 Тогда - Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); - Иначе - МассивДанных.Добавить(Запись); - КонецЕсли; - - Счетчик = Счетчик + 1; - - КонецЦикла; - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - Опции.Вставить("data", МассивДанных); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ОбработатьОтправкуGRPC", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ОбработатьОтправкуGRPC"); - -КонецПроцедуры - -Процедура ClickHouse_ОбработатьПолучениеGRPC(ПараметрыФункции) - - URL = "http://localhost:9101"; - URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP - - Логин = ПараметрыФункции["ClickHouse_User"]; - Пароль = ПараметрыФункции["ClickHouse_Password"]; - - Авторизация = Новый Структура(Логин, Пароль); - Опции = Новый Структура; - Опции.Вставить("url" , URL); - Опции.Вставить("auth", Авторизация); - - НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); - Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); - - ТекстВыборки = "SELECT * FROM events_stream_test ORDER BY id"; - Опции = Новый Структура; - Опции.Вставить("query" , ТекстВыборки); - Опции.Вставить("format", "JSON"); - - Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); - - Опции = Новый Структура; - Опции.Вставить("conn", Соединение); - Опции.Вставить("req" , Запрос); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ОбработатьПолучениеGRPC", Опции); - - // END - - Обработать(Результат, "ClickHouse", "ОбработатьПолучениеGRPC"); - -КонецПроцедуры - -#КонецОбласти - -#Область RSS - -Процедура RSS_СоздатьФидRSS(ПараметрыФункции) - - НазваниеКанала = "Тестовый RSS канал"; - ОписаниеКанала = "Описание тестового RSS канала"; - СсылкаКанала = "https://example.com"; - - МассивЭлементов = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); - СтруктураЭлемента["title"] = "Первый элемент"; - СтруктураЭлемента["description"] = "Описание первого элемента"; - СтруктураЭлемента["link"] = "https://example.com/item1"; - СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату(); - СтруктураЭлемента["author"] = "test@example.com"; - СтруктураЭлемента["guid"] = "item-1"; - - МассивЭлементов.Добавить(СтруктураЭлемента); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); - СтруктураЭлемента["title"] = "Второй элемент"; - СтруктураЭлемента["description"] = "Описание второго элемента"; - СтруктураЭлемента["link"] = "https://example.com/item2"; - СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату(); - СтруктураЭлемента["author"] = "test@example.com"; - СтруктураЭлемента["guid"] = "item-2"; - - МассивЭлементов.Добавить(СтруктураЭлемента); - - Опции = Новый Структура; - Опции.Вставить("name" , НазваниеКанала); - Опции.Вставить("descr", ОписаниеКанала); - Опции.Вставить("link" , СсылкаКанала); - Опции.Вставить("items", МассивЭлементов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "СоздатьФидRSS", Опции); - - // END - - Обработать(Результат, "RSS", "СоздатьФидRSS", , ПараметрыФункции); - -КонецПроцедуры - -Процедура RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); - - // END - - Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); - - Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Пустая"); - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - Опции.Вставить("map" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); - - Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Соответствие"); - -КонецПроцедуры - -Процедура RSS_РазобратьФидRSS(ПараметрыФункции) - - ФидXML = ПараметрыФункции["RSS_FeedXML"]; - - Опции = Новый Структура; - Опции.Вставить("xml", ФидXML); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "РазобратьФидRSS", Опции); - - // END - - Обработать(Результат, "RSS", "РазобратьФидRSS"); - - OPI_Инструменты.УдалитьФайлВПопытке(ФидXML, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -Процедура RSS_СоздатьФидAtom(ПараметрыФункции) - - НазваниеФида = "Тестовый Atom фид"; - СсылкаФида = "https://example.com"; - IDФида = "https://example.com/feed"; - - МассивЭлементов = Новый Массив; - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); - СтруктураЭлемента["title"] = "Первая запись"; - СтруктураЭлемента["id"] = "https://example.com/entry1"; - СтруктураЭлемента["link"] = "https://example.com/entry1"; - СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату(); - СтруктураЭлемента["summary"] = "Краткое описание первой записи"; - СтруктураЭлемента["content"] = "Полное содержимое первой записи"; - СтруктураЭлемента["author"] = "Автор Первый"; - СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату(); - - МассивЭлементов.Добавить(СтруктураЭлемента); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); - СтруктураЭлемента["title"] = "Вторая запись"; - СтруктураЭлемента["id"] = "https://example.com/entry2"; - СтруктураЭлемента["link"] = "https://example.com/entry2"; - СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату(); - СтруктураЭлемента["summary"] = "Краткое описание второй записи"; - СтруктураЭлемента["content"] = "Полное содержимое второй записи"; - СтруктураЭлемента["author"] = "Автор Второй"; - СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату(); - - МассивЭлементов.Добавить(СтруктураЭлемента); - - Опции = Новый Структура; - Опции.Вставить("name" , НазваниеФида); - Опции.Вставить("link" , СсылкаФида); - Опции.Вставить("id" , IDФида); - Опции.Вставить("items", МассивЭлементов); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "СоздатьФидAtom", Опции); - - // END - - Обработать(Результат, "RSS", "СоздатьФидAtom", , ПараметрыФункции); - -КонецПроцедуры - -Процедура RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыФункции) - - Опции = Новый Структура; - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); - - // END - - Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom"); - - Опции = Новый Структура; - Опции.Вставить("empty", Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); - - Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Пустая"); - - Опции = Новый Структура; - Опции.Вставить("empty", Ложь); - Опции.Вставить("map" , Истина); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); - - Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Соответствие"); - -КонецПроцедуры - -Процедура RSS_РазобратьФидAtom(ПараметрыФункции) - - ФидXML = ПараметрыФункции["RSS_AtomFeedXML"]; - - Опции = Новый Структура; - Опции.Вставить("xml", ФидXML); - - Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "РазобратьФидAtom", Опции); - - // END - - Обработать(Результат, "RSS", "РазобратьФидAtom"); - - OPI_Инструменты.УдалитьФайлВПопытке(ФидXML, "Не удалось удалить временный файл после теста!"); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#КонецОбласти diff --git a/src/ru/OInt/tests/Modules/OPI_Тесты.os b/src/ru/OInt/tests/Modules/OPItc_Airtable.os similarity index 68% rename from src/ru/OInt/tests/Modules/OPI_Тесты.os rename to src/ru/OInt/tests/Modules/OPItc_Airtable.os index 3cc57570d5..797a196add 100644 --- a/src/ru/OInt/tests/Modules/OPI_Тесты.os +++ b/src/ru/OInt/tests/Modules/OPItc_Airtable.os @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tests/Modules/OPI_Тесты.os +// OneScript: ./OInt/tests/Modules/OPItc_Airtable.os // MIT License @@ -67,7 +67,9 @@ //@skip-check missing-temporary-file-deletion //@skip-check module-unused-method -#Использовать oint +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" #Использовать asserts #Использовать "internal" @@ -181,7 +183,13 @@ СоответствиеТаблиц = Новый Соответствие; СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей); - Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("ws", Область); + Опции.Вставить("title", Наименование); + Опции.Вставить("tablesdata", СоответствиеТаблиц); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьБазу", Опции); // END @@ -194,7 +202,11 @@ Токен = ПараметрыФункции["Airtable_Token"]; База = ПараметрыФункции["Airtable_Base"]; - Результат = OPI_Airtable.ПолучитьТаблицыБазы(Токен, База); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьТаблицыБазы", Опции); // END @@ -206,7 +218,10 @@ Токен = ПараметрыФункции["Airtable_Token"]; - Результат = OPI_Airtable.ПолучитьСписокБаз(Токен); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокБаз", Опции); // END @@ -216,7 +231,10 @@ Процедура Airtable_ПолучитьПолеНомера(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеНомера("Номер"); + Опции = Новый Структура; + Опции.Вставить("title", "Номер"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); // END @@ -226,7 +244,10 @@ Процедура Airtable_ПолучитьПолеСтроковое(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеСтроковое("Строковое"); + Опции = Новый Структура; + Опции.Вставить("title", "Строковое"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСтроковое", Опции); // END @@ -236,7 +257,10 @@ Процедура Airtable_ПолучитьПолеВложения(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеВложения("Вложение"); + Опции = Новый Структура; + Опции.Вставить("title", "Вложение"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеВложения", Опции); // END @@ -246,7 +270,10 @@ Процедура Airtable_ПолучитьПолеФлажка(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеФлажка("Флажок"); + Опции = Новый Структура; + Опции.Вставить("title", "Флажок"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеФлажка", Опции); // END @@ -256,7 +283,10 @@ Процедура Airtable_ПолучитьПолеДаты(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеДаты("Дата"); + Опции = Новый Структура; + Опции.Вставить("title", "Дата"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеДаты", Опции); // END @@ -266,7 +296,10 @@ Процедура Airtable_ПолучитьПолеТелефона(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеТелефона("Телефон"); + Опции = Новый Структура; + Опции.Вставить("title", "Телефон"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеТелефона", Опции); // END @@ -276,7 +309,10 @@ Процедура Airtable_ПолучитьПолеПочты(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеПочты("Почта"); + Опции = Новый Структура; + Опции.Вставить("title", "Почта"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеПочты", Опции); // END @@ -286,7 +322,10 @@ Процедура Airtable_ПолучитьПолеСсылки(ПараметрыФункции) - Результат = OPI_Airtable.ПолучитьПолеСсылки("Ссылка"); + Опции = Новый Структура; + Опции.Вставить("title", "Ссылка"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеСсылки", Опции); // END @@ -312,7 +351,14 @@ Наименование = "Тестовая таблица 2"; Описание = "Новая таблица"; - Результат = OPI_Airtable.СоздатьТаблицу(Токен, База, Наименование, МассивПолей, Описание); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("title", Наименование); + Опции.Вставить("fieldsdata", МассивПолей); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьТаблицу", Опции); // END @@ -328,7 +374,14 @@ Наименование = "Тестовая таблица 2 (изм.)"; Описание = "Новая таблица (изм.)"; - Результат = OPI_Airtable.ИзменитьТаблицу(Токен, База, Таблица, Наименование, Описание); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("title", Наименование); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьТаблицу", Опции); // END @@ -343,8 +396,17 @@ Таблица = ПараметрыФункции["Airtable_Table"]; Имя = Строка(Новый УникальныйИдентификатор); - Поле = OPI_Airtable.ПолучитьПолеНомера(Имя); - Результат = OPI_Airtable.СоздатьПоле(Токен, База, Таблица, Поле); + Опции = Новый Структура; + Опции.Вставить("title", Имя); + + Поле = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьПолеНомера", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("fielddata", Поле); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьПоле", Опции); // END @@ -362,7 +424,15 @@ Имя = Строка(Новый УникальныйИдентификатор) + "(изм.)"; Описание = "Новое описание"; - Результат = OPI_Airtable.ИзменитьПоле(Токен, База, Таблица, Поле, Имя, Описание); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("field", Поле); + Опции.Вставить("title", Имя); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьПоле", Опции); // END @@ -386,7 +456,13 @@ МассивОписаний.Добавить(ОписаниеСтроки1); МассивОписаний.Добавить(ОписаниеСтроки2); - Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, МассивОписаний); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("data", МассивОписаний); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); // END @@ -405,7 +481,13 @@ // Одиночное - Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, ОписаниеСтроки1); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("data", ОписаниеСтроки1); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьЗаписи", Опции); OPI_ПолучениеДанныхТестов.Обработать(Результат, "Airtable", "СоздатьЗаписи", "Одиночная", ПараметрыФункции, Номер, Строковое); @@ -418,7 +500,13 @@ Таблица = ПараметрыФункции["Airtable_Table"]; Запись = ПараметрыФункции["Airtable_Record"]; - Результат = OPI_Airtable.ПолучитьЗапись(Токен, База, Таблица, Запись); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьЗапись", Опции); // END @@ -434,7 +522,14 @@ Запись = ПараметрыФункции["Airtable_Record"]; Текст = "Тестовый комментарий"; - Результат = OPI_Airtable.СоздатьКомментарий(Токен, База, Таблица, Запись, Текст); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "СоздатьКомментарий", Опции); // END @@ -451,7 +546,15 @@ Комментарий = ПараметрыФункции["Airtable_Comment"]; Текст = "Тестовый комментарий (изм.)"; - Результат = OPI_Airtable.ИзменитьКомментарий(Токен, База, Таблица, Запись, Комментарий, Текст); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("comment", Комментарий); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ИзменитьКомментарий", Опции); // END @@ -466,7 +569,13 @@ Таблица = ПараметрыФункции["Airtable_Table"]; Запись = ПараметрыФункции["Airtable_Record"]; - Результат = OPI_Airtable.ПолучитьКомментарии(Токен, База, Таблица, Запись); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьКомментарии", Опции); // END @@ -482,7 +591,14 @@ Запись = ПараметрыФункции["Airtable_Record"]; Комментарий = ПараметрыФункции["Airtable_Comment"]; - Результат = OPI_Airtable.УдалитьКомментарий(Токен, База, Таблица, Запись, Комментарий); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("record", Запись); + Опции.Вставить("comment", Комментарий); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьКомментарий", Опции); // END @@ -496,7 +612,12 @@ База = ПараметрыФункции["Airtable_Base"]; Таблица = ПараметрыФункции["Airtable_Table"]; - Результат = OPI_Airtable.ПолучитьСписокЗаписей(Токен, База, Таблица); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "ПолучитьСписокЗаписей", Опции); // END @@ -511,7 +632,13 @@ Таблица = ПараметрыФункции["Airtable_Table"]; Запись = ПараметрыФункции["Airtable_Record"]; - Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, Запись); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("table", Таблица); + Опции.Вставить("records", Запись); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("airtable", "УдалитьЗаписи", Опции); // END @@ -524,3 +651,23 @@ #КонецОбласти // АтомарныеТесты #КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure AT_CreateDatabase() Export + АТ_СоздатьБазу(); +EndProcedure + +Procedure AT_CreateTable() Export + АТ_СоздатьТаблицу(); +EndProcedure + +Procedure AT_CreateField() Export + АТ_СоздатьПоле(); +EndProcedure + +Procedure AT_CreateDeleteRecords() Export + АТ_СоздатьУдалитьЗаписи(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Bitrix24.os b/src/ru/OInt/tests/Modules/OPItc_Bitrix24.os new file mode 100644 index 0000000000..4ebe45725a --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Bitrix24.os @@ -0,0 +1,6402 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Bitrix24.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Bitrix24"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Bitrix24"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Bitrix24 + +Процедура Б24_РаботаСТокеном() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_ClientSecret", ПараметрыТеста); + + Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Code", ПараметрыТеста); + + Bitrix24_ПолучитьТокен(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Refresh", ПараметрыТеста); + + Bitrix24_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_СерверноеВремя() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_СерверноеВремя(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСНовостями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + Bitrix24_СоздатьНовость(ПараметрыТеста); + Bitrix24_ИзменитьНовость(ПараметрыТеста); + Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыТеста); + Bitrix24_ПолучитьНовости(ПараметрыТеста); + Bitrix24_ДобавитьКомментарийНовости(ПараметрыТеста); + Bitrix24_ДобавитьПолучателейКНовости(ПараметрыТеста); + Bitrix24_УдалитьНовость(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСЗадачами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_UserID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыТеста); + Bitrix24_СоздатьЗадачу(ПараметрыТеста); + Bitrix24_СоздатьЗависимостьЗадач(ПараметрыТеста); + Bitrix24_УдалитьЗависимостьЗадач(ПараметрыТеста); + Bitrix24_ИзменитьЗадачу(ПараметрыТеста); + Bitrix24_ПолучитьЗадачу(ПараметрыТеста); + Bitrix24_ОтключитьЗвукЗадачи(ПараметрыТеста); + Bitrix24_ВключитьЗвукЗадачи(ПараметрыТеста); + Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыТеста); + Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыТеста); + Bitrix24_ДелегироватьЗадачу(ПараметрыТеста); + Bitrix24_ОтложитьЗадачу(ПараметрыТеста); + Bitrix24_ЗавершитьЗадачу(ПараметрыТеста); + Bitrix24_ОтклонитьЗадачу(ПараметрыТеста); + Bitrix24_ПринятьЗадачу(ПараметрыТеста); + Bitrix24_ВозобновитьЗадачу(ПараметрыТеста); + Bitrix24_НачатьВыполнениеЗадачи(ПараметрыТеста); + Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыТеста); + Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыТеста); + Bitrix24_ПриостановитьЗадачу(ПараметрыТеста); + Bitrix24_ПолучитьИсториюЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСписокЗадач(ПараметрыТеста); + Bitrix24_ПроверитьДоступКЗадаче(ПараметрыТеста); + Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыТеста); + + Наименование = "Картинка задачи.jpg"; + Картинка = ПараметрыТеста["Picture"]; + IDПриемника = 3; + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование, Картинка, IDПриемника); + IDФайла = Результат["result"]["ID"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_TaskFileID", IDФайла); + ПараметрыТеста.Вставить("Bitrix24_TaskFileID", IDФайла); + + Bitrix24_ДобавитьФайлВЗадачу(ПараметрыТеста); + + OPI_Bitrix24.УдалитьФайл(URL, IDФайла); + + Bitrix24_УдалитьЗадачу(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСДиском() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + Bitrix24_ПолучитьСписокХранилищ(ПараметрыТеста); + Bitrix24_ПолучитьХранилищеПриложения(ПараметрыТеста); + Bitrix24_ПереименоватьХранилище(ПараметрыТеста); + Bitrix24_ПолучитьХранилище(ПараметрыТеста); + Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыТеста); + Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыТеста); + Bitrix24_ПолучитьИнформациюОФайле(ПараметрыТеста); + Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыТеста); + Bitrix24_ПереименоватьФайл(ПараметрыТеста); + Bitrix24_ПоместитьФайлВКорзину(ПараметрыТеста); + Bitrix24_ВосстановитьФайл(ПараметрыТеста); + Bitrix24_СоздатьКаталогВХранилище(ПараметрыТеста); + Bitrix24_ПереименоватьКаталог(ПараметрыТеста); + Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыТеста); + Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыТеста); + Bitrix24_СоздатьПодкаталог(ПараметрыТеста); + Bitrix24_ПереместитьФайлВКаталог(ПараметрыТеста); + Bitrix24_СкопироватьКаталог(ПараметрыТеста); + Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыТеста); + Bitrix24_СкопироватьФайл(ПараметрыТеста); + Bitrix24_УдалитьФайл(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыТеста); + Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыТеста); + Bitrix24_ПереместитьКаталог(ПараметрыТеста); + Bitrix24_ПоместитьКаталогВКорзину(ПараметрыТеста); + Bitrix24_ВосстановитьКаталог(ПараметрыТеста); + Bitrix24_УдалитьКаталог(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСКомментариями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи); + + Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыТеста); + // !DISABLED! Bitrix24_СоздатьРезультатИзКомментария(ПараметрыТеста); + // !DISABLED! Bitrix24_ПолучитьСписокРезультатов(ПараметрыТеста); + // !DISABLED! Bitrix24_УдалитьРезультатИзКомментария(ПараметрыТеста); + // !DISABLED! Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыТеста); + // !DISABLED! Bitrix24_ПолучитьКомментарийЗадачи(ПараметрыТеста); + // !DISABLED! Bitrix24_УдалитьКомментарийЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + +КонецПроцедуры + +Процедура Б24_УчетРабочегоВремени() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_ElapsedTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_ElapsedTaskID", IDЗадачи); + + Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыТеста); + Bitrix24_НачатьУчетВремени(ПараметрыТеста); + Bitrix24_ПриостановитьУчетВремени(ПараметрыТеста); + Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыТеста); + Bitrix24_ЗавершитьУчетВремени(ПараметрыТеста); + Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + +КонецПроцедуры + +Процедура Б24_Канбан() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыТеста["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи); + IDЗадачи = Результат["result"]["task"]["id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_KanbanTaskID", IDЗадачи); + ПараметрыТеста.Вставить("Bitrix24_KanbanTaskID", IDЗадачи); + + Bitrix24_ДобавитьСтадиюКанбана(ПараметрыТеста); + Bitrix24_ПолучитьСтадииКанбана(ПараметрыТеста); + Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыТеста); + Bitrix24_ИзменитьСтадиюКанбана(ПараметрыТеста); + + OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи); + + Bitrix24_УдалитьСтадиюКанбана(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСЧатами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Bitrix24_ПолучитьСтатусПользователя(ПараметрыТеста); + Bitrix24_УстановитьСтатусПользователя(ПараметрыТеста); + Bitrix24_ПолучитьПользователей(ПараметрыТеста); + Bitrix24_СоздатьЧат(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыТеста); + Bitrix24_ИсключитьПользователяИзЧата(ПараметрыТеста); + Bitrix24_ДобавитьПользователейВЧат(ПараметрыТеста); + Bitrix24_ИзменитьЗаголовокЧата(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ИзменитьЦветЧата(ПараметрыТеста); + Bitrix24_ИзменитьКартинкуЧата(ПараметрыТеста); + Bitrix24_ОтключитьУведомленияЧата(ПараметрыТеста); + Bitrix24_ВключитьУведомленияЧата(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыТеста); + Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыТеста); + Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыТеста); + Bitrix24_ПолучитьДиалог(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыТеста); + Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыТеста); + Bitrix24_ОтправитьСообщение(ПараметрыТеста); + Bitrix24_ИзменитьСообщение(ПараметрыТеста); + Bitrix24_ПолучитьБлокКартинки(ПараметрыТеста); + Bitrix24_ПолучитьБлокФайла(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыТеста); + Bitrix24_УдалитьСообщение(ПараметрыТеста); + Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыТеста); + Bitrix24_ОтправитьФайл(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + + Bitrix24_ПрочитатьВсе(ПараметрыТеста); + Bitrix24_СменитьВладельцаЧата(ПараметрыТеста); + Bitrix24_ПокинутьЧат(ПараметрыТеста); + + Bitrix24_ПолучитьСтруктуруЧата(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСУведомлениями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Bitrix24_СоздатьПерсональноеУведомление(ПараметрыТеста); + Bitrix24_СоздатьСистемноеУведомление(ПараметрыТеста); + Bitrix24_УдалитьУведомление(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСПолямиЗадач() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_HookTaskFieldID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_TaskFieldID" , ПараметрыТеста); + + Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыТеста); + Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыТеста); + Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыТеста); + Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_УправлениеПодразделениями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_СоздатьПодразделение(ПараметрыТеста); + Bitrix24_ПолучитьПодразделения(ПараметрыТеста); + Bitrix24_ИзменитьПодразделение(ПараметрыТеста); + Bitrix24_УдалитьПодразделение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_ПолучитьТекущегоПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруПользователя(ПараметрыТеста); + Bitrix24_СоздатьПользователя(ПараметрыТеста); + Bitrix24_НайтиПользователей(ПараметрыТеста); + Bitrix24_ИзменитьПользователя(ПараметрыТеста); + Bitrix24_ПолучитьПользователя(ПараметрыТеста); + Bitrix24_ИзменитьСтатусПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСЛидами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_ПолучитьСписокЛидов(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруЛида(ПараметрыТеста); + Bitrix24_СоздатьЛид(ПараметрыТеста); + Bitrix24_ПолучитьЛид(ПараметрыТеста); + Bitrix24_ИзменитьЛид(ПараметрыТеста); + Bitrix24_УдалитьЛид(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСоСделками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруСделки(ПараметрыТеста); + Bitrix24_СоздатьСделку(ПараметрыТеста); + Bitrix24_ПолучитьСделку(ПараметрыТеста); + Bitrix24_ИзменитьСделку(ПараметрыТеста); + Bitrix24_УдалитьСделку(ПараметрыТеста); + Bitrix24_ПолучитьСписокСделок(ПараметрыТеста); + +КонецПроцедуры + +Процедура Б24_РаботаСКалендарями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста); + + Bitrix24_СоздатьКалендарь(ПараметрыТеста); + Bitrix24_ИзменитьКалендарь(ПараметрыТеста); + Bitrix24_ПолучитьСписокКалендарей(ПараметрыТеста); + Bitrix24_СоздатьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыТеста); + Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСобытияКалендарей(ПараметрыТеста); + Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыТеста); + Bitrix24_УдалитьСобытиеКалендаря(ПараметрыТеста); + Bitrix24_УдалитьКалендарь(ПараметрыТеста); + Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); + Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыТеста); + Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Bitrix24 + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Bitrix24 + +Процедура Bitrix24_ПолучитьСсылкуАвторизацииПриложения(ПараметрыФункции) + + Домен = ПараметрыФункции["Bitrix24_Domain"]; + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + + Опции = Новый Структура; + Опции.Вставить("domain", Домен); + Опции.Вставить("clientid", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСсылкуАвторизацииПриложения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСсылкуАвторизацииПриложения"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; + Code = ПараметрыФункции["Bitrix24_Code"]; + + Опции = Новый Структура; + Опции.Вставить("clientid", ClientID); + Опции.Вставить("clientsecret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Bitrix24_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Bitrix24_ClientID"]; + ClientSecret = ПараметрыФункции["Bitrix24_ClientSecret"]; + Refresh = ПараметрыФункции["Bitrix24_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("clientid", ClientID); + Опции.Вставить("clientsecret", ClientSecret); + Опции.Вставить("refresh", Refresh); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура Bitrix24_СерверноеВремя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СерверноеВремя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СерверноеВремя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СерверноеВремя"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьНовость(ПараметрыФункции) + + Текст = "Текст новости"; + Заголовок = "Заголовок новости"; + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + + Файлы = Новый Соответствие; + Файлы.Вставить("1.png", Картинка1); + Файлы.Вставить("2.png", Картинка2); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + Опции.Вставить("important", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьНовость", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьНовость", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьНовость", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьНовость(ПараметрыФункции) + + Текст = "Новый текст новости"; + Заголовок = "Новый заголовок новости"; + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + + Файлы = Новый Соответствие; + Файлы.Вставить("1.png", Картинка1); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьНовость", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + Опции.Вставить("files", Файлы); + Опции.Вставить("title", Заголовок); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьНовость", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьНовость"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьНовость(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьНовость", "Хук"); // SKIP + + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьНовость", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьНовость"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПросмотревшихВажное(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_HookPostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПросмотревшихВажное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПросмотревшихВажное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПросмотревшихВажное"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьНовости(ПараметрыФункции) + + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьНовости", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНовости", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьНовости"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьКомментарийНовости(ПараметрыФункции) + + Текст = "Комментарий к новости"; + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийНовости", "Хук"); // SKIP + + Текст = "Другой комментарий к новости"; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийНовости", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийНовости"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьПолучателейКНовости(ПараметрыФункции) + + Видимость = "UA"; + IDНовости = ПараметрыФункции["Bitrix24_PostID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("vision", Видимость); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПолучателейКНовости", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("postid", IDНовости); + Опции.Вставить("vision", Видимость); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПолучателейКНовости", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПолучателейКНовости"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЗадачу(ПараметрыФункции) + + // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Час = 3600; + Сутки = 24; + Исполнитель = 1; + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Новая задача"); + СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "2"); + СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки); + СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗадачу", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗадачу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЗадачу(ПараметрыФункции) + + // Полную структуру полей можно получить функцией ПолучитьСтруктуруЗадачи() + + СтруктураЗадачи = Новый Структура; + СтруктураЗадачи.Вставить("TITLE" , "Другой заголовок задачи"); + СтруктураЗадачи.Вставить("DESCRIPTION", "Другое описание задачи"); + СтруктураЗадачи.Вставить("PRIORITY" , "1"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fields", СтруктураЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fields", СтруктураЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ПринятьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПринятьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПринятьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПринятьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ОтклонитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтклонитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтклонитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтклонитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ЗавершитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗавершитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗавершитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ВозобновитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ОтложитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтложитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтложитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтложитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_НачатьВыполнениеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьВыполнениеЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьВыполнениеЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьВыполнениеЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_НачатьНаблюдатьЗаЗадачей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьНаблюдатьЗаЗадачей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьНаблюдатьЗаЗадачей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НачатьНаблюдатьЗаЗадачей"); + +КонецПроцедуры + +Процедура Bitrix24_ПрекратитьНаблюдатьЗаЗадачей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрекратитьНаблюдатьЗаЗадачей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрекратитьНаблюдатьЗаЗадачей"); + +КонецПроцедуры + +Процедура Bitrix24_ПриостановитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПриостановитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПриостановитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ДелегироватьЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДелегироватьЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДелегироватьЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДелегироватьЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьЗадачуВИзбранное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЗадачуВИзбранное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЗадачуВИзбранное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЗадачуВИзбранное"); + +КонецПроцедуры + +Процедура Bitrix24_УбратьЗадачуИзИзбранного(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УбратьЗадачуИзИзбранного", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УбратьЗадачуИзИзбранного", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УбратьЗадачуИзИзбранного"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьИсториюЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИсториюЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИсториюЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИсториюЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокЗадач(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + // Полную структуру фильтра можно найти в функции ПолучитьСтруктуруФильтраЗадач + Фильтр = Новый Соответствие; + Фильтр.Вставить("CREATED_BY", 1); // Постановщик с ID 1 + Фильтр.Вставить("!RESPONSIBLE_ID", 10); // Исполнители с ID не равным 10 + Фильтр.Вставить(">=CREATED_DATE ", ТекущаяДата - 60 * 60 * 24); // Дата создания >= вчера + + Поля = Новый Массив; + Поля.Добавить("UF_CRM_TASK"); + Поля.Добавить("CREATED_BY"); + + Отступ = 1; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("select", Поля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЗадач", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("offset", Отступ); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЗадач"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокХранилищ(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокХранилищ", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокХранилищ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокХранилищ"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьХранилищеПриложения(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилищеПриложения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьХранилищеПриложения", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыФункции) + + Наименование2 = "Картинка2.jpg"; + Наименование = "Картинка1.jpg"; + + Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные + Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные + + IDПриемника = 3; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование2); + Опции.Вставить("file", Картинка2); + Опции.Вставить("storageid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВХранилище", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("file", Картинка); + Опции.Вставить("storageid", IDПриемника); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВХранилище", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_HookFileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьФайл", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьКаталогВХранилище(ПараметрыФункции) + + IDХранилища = 3; + Наименование = "Новый каталог"; + Наименование2 = "Новый каталог 2"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКаталогВХранилище", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКаталогВХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКаталогВХранилище", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьКаталог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКаталог", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьХранилище(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDХранилища = 3; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьХранилище", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьХранилище"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСодержимоеХранилища(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDХранилища = 3; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСодержимоеХранилища", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСодержимоеХранилища", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСодержимоеХранилища"); + +КонецПроцедуры + +Процедура Bitrix24_ПереименоватьХранилище(ПараметрыФункции) + + Наименование = "Новое имя хранилища"; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDХранилища = ПараметрыФункции["Bitrix24_StorageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("storageid", IDХранилища); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьХранилище", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьХранилище"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьИнформациюОКаталоге(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОКаталоге", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОКаталоге", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОКаталоге"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПодкаталог(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + Наименование = "Новый подкаталог"; + Наименование2 = "Новый подкаталог 2"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодкаталог", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодкаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодкаталог", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_СкопироватьКаталог(ПараметрыФункции) + + IDПриемника = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("tagetid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьКаталог", "Хук"); // SKIP + + IDПриемника = ПараметрыФункции["Bitrix24_SubfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьВнешнююСсылкуКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуКаталога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуКаталога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуКаталога"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраКаталога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("empty", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраКаталога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраКаталога"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьДочерниеЭлементыКаталога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДочерниеЭлементыКаталога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДочерниеЭлементыКаталога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДочерниеЭлементыКаталога"); + +КонецПроцедуры + +Процедура Bitrix24_ПоместитьКаталогВКорзину(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьКаталогВКорзину", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьКаталогВКорзину", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьКаталогВКорзину"); + +КонецПроцедуры + +Процедура Bitrix24_ВосстановитьКаталог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьКаталог", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПереместитьКаталог(ПараметрыФункции) + + IDПриемника = ПараметрыФункции["Bitrix24_HookfolderID"]; + IDКаталога = ПараметрыФункции["Bitrix24_SubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("tagetid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьКаталог", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_HookSubfolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("tagetid", IDПриемника); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ПереименоватьКаталог(ПараметрыФункции) + + Наименование = "Новый каталог"; + Наименование2 = "Новый каталог 2"; + + IDКаталога2 = ПараметрыФункции["Bitrix24_HookFolderID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога2); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьКаталог", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ЗагрузитьФайлВКаталог(ПараметрыФункции) + + Наименование2 = "Картинка2.jpg"; + Наименование = "Картинка1.jpg"; + + Картинка2 = ПараметрыФункции["Picture"]; // Локальный путь, URL или Двоичные данные + Картинка = ПараметрыФункции["Picture2"]; // Локальный путь, URL или Двоичные данные + + IDПриемника = ПараметрыФункции["Bitrix24_FolderID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование2); + Опции.Вставить("file", Картинка2); + Опции.Вставить("folderid", IDПриемника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВКаталог", "Хук", URL); // SKIP + + IDФайла = Результат["result"]["ID"]; // SKIP + OPI_Bitrix24.УдалитьФайл(URL, IDФайла); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("file", Картинка); + Опции.Вставить("folderid", IDПриемника); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ЗагрузитьФайлВКаталог", , URL, Токен); + + IDФайла = Результат["result"]["ID"]; + + OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен); + +КонецПроцедуры + +Процедура Bitrix24_СкопироватьФайл(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_HookFolderID"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьФайл", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_FolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СкопироватьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СкопироватьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьИнформациюОФайле(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОФайле", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьИнформациюОФайле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьИнформациюОФайле"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьВнешнююСсылкуФайла(ПараметрыФункции) + + OPI_Инструменты.Пауза(20); // SKIP + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуФайла", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьВнешнююСсылкуФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьВнешнююСсылкуФайла"); + +КонецПроцедуры + +Процедура Bitrix24_ПоместитьФайлВКорзину(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьФайлВКорзину", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПоместитьФайлВКорзину", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПоместитьФайлВКорзину"); + +КонецПроцедуры + +Процедура Bitrix24_ВосстановитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьФайл", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВосстановитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВосстановитьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПереименоватьФайл(ПараметрыФункции) + + Наименование = "Новое имя файла.jpg"; + Наименование2 = "Новое имя файла 2.jpg"; + + IDФайла2 = ПараметрыФункции["Bitrix24_HookFileID"]; + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла2); + Опции.Вставить("title", Наименование2); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьФайл", "Хук"); // SKIP + + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("title", Наименование); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереименоватьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереименоватьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПереместитьФайлВКаталог(ПараметрыФункции) + + IDКаталога = ПараметрыФункции["Bitrix24_HookSubFolderID"]; + IDФайла = ПараметрыФункции["Bitrix24_FileID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьФайлВКаталог", "Хук"); // SKIP + + IDКаталога = ПараметрыФункции["Bitrix24_SubFolderID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПереместитьФайлВКаталог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПереместитьФайлВКаталог"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьФайлВЗадачу(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDФайла = ПараметрыФункции["Bitrix24_TaskFileID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьФайлВЗадачу", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьФайлВЗадачу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьФайлВЗадачу"); + +КонецПроцедуры + +Процедура Bitrix24_ПроверитьДоступКЗадаче(ПараметрыФункции) + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить("1"); + МассивПользователей.Добавить("10"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("users", МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПроверитьДоступКЗадаче", "Хук", МассивПользователей.Количество()); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("users", МассивПользователей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПроверитьДоступКЗадаче", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПроверитьДоступКЗадаче", , МассивПользователей.Количество()); + +КонецПроцедуры + +Процедура Bitrix24_ОтключитьЗвукЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьЗвукЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьЗвукЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьЗвукЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ВключитьЗвукЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьЗвукЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьЗвукЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьЗвукЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Текст = "Задача невыполнима, расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийЗадачи", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Текст = "Задача выполнима, не расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьКомментарийЗадачи", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКомментарийЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКомментарийЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьРезультатИзКомментария(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьРезультатИзКомментария", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьРезультатИзКомментария", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьРезультатИзКомментария"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьРезультатИзКомментария(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьРезультатИзКомментария", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьРезультатИзКомментария", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьРезультатИзКомментария"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокРезультатов(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокРезультатов", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокРезультатов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокРезультатов"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокКомментариевЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКомментариевЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКомментариевЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКомментариевЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКомментарийЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКомментарийЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьКомментарийЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"]; + IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"]; + + Текст = "Задача изменена, не расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКомментарийЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКомментария = ПараметрыФункции["Bitrix24_CommentID"]; + + Текст = "Задача изменена, расходимся"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("comment", IDКомментария); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКомментарийЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКомментарийЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЗависимостьЗадач(ПараметрыФункции) + + IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; + ТипСвязи = 0; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗависимостьЗадач", "Хук"); // SKIP + + OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); // SKIP + + IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; + ТипСвязи = 2; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЗависимостьЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЗависимостьЗадач"); + + OPI_Bitrix24.УдалитьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЗависимостьЗадач(ПараметрыФункции) + + IDИсточника = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_TaskID"]; + ТипСвязи = 0; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи); // SKIP + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗависимостьЗадач", "Хук"); // SKIP + + IDИсточника = ПараметрыФункции["Bitrix24_TaskID"]; + IDПриемника = ПараметрыФункции["Bitrix24_HookTaskID"]; + ТипСвязи = 2; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Результат = OPI_Bitrix24.СоздатьЗависимостьЗадач(URL, IDИсточника, IDПриемника, ТипСвязи, Токен); // SKIP + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("taskfrom", IDИсточника); + Опции.Вставить("taskto", IDПриемника); + Опции.Вставить("linktype", ТипСвязи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЗависимостьЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЗависимостьЗадач"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьСтадиюКанбана(ПараметрыФункции) + + Наименование = "Новая стадия"; + Цвет = "0026FF"; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("color", Цвет); + Опции.Вставить("prevstage", 6); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьСтадиюКанбана", "Хук", ПараметрыФункции); // SKIP + + Наименование = "Новая стадия 2"; + Цвет = "0026FF"; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПредыдущей = Результат["result"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("color", Цвет); + Опции.Вставить("prevstage", IDПредыдущей); + Опции.Вставить("admin", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьСтадиюКанбана", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСтадиюКанбана(ПараметрыФункции) + + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("admin", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСтадиюКанбана", "Хук"); // SKIP + + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСтадиюКанбана"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтадииКанбана(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("admin", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтадииКанбана", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтадииКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтадииКанбана"); + +КонецПроцедуры + +Процедура Bitrix24_ПеренестиЗадачуВСтадиюКанбана(ПараметрыФункции) + + IDЗадачи = ПараметрыФункции["Bitrix24_KanbanTaskID"]; + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("stage", IDСтадии); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПеренестиЗадачуВСтадиюКанбана", "Хук"); // SKIP + + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПеренестиЗадачуВСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПеренестиЗадачуВСтадиюКанбана"); + + OPI_Bitrix24.ПеренестиЗадачуВСтадиюКанбана(URL, IDЗадачи, 2, , , Токен); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСтадиюКанбана(ПараметрыФункции) + + Наименование = "Новое имя стадии стадии"; + Цвет = "000000"; + IDСтадии = ПараметрыФункции["Bitrix24_HookStageID"]; + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("color", Цвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтадиюКанбана", "Хук"); // SKIP + + Наименование = "Новое имя стадии стадии 2"; + Цвет = "000000"; + IDСтадии = ПараметрыФункции["Bitrix24_StageID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("stage", IDСтадии); + Опции.Вставить("color", Цвет); + Опции.Вставить("prevstage", 6); + Опции.Вставить("admin", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтадиюКанбана", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтадиюКанбана"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Текст = "Пункт чек-листа"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + Опции.Вставить("complete", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЭлементЧеклистаЗадачи", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьЭлементЧеклистаЗадачи", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Текст = "Новый текст пункта чек-листа"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЧеклистЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЧеклистЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЧеклистЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЧеклистЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ВыполнитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВыполнитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВыполнитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ВозобновитьЭлементЧеклистаЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_HookTaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_HookCheckElementID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", "Хук"); // SKIP + + IDЗадачи = ПараметрыФункции["Bitrix24_TaskID"]; + IDЭлемента = ПараметрыФункции["Bitrix24_CheckElementID"]; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("element", IDЭлемента); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВозобновитьЭлементЧеклистаЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВозобновитьЭлементЧеклистаЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + + Время = 3600; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("amount", Время); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьТрудозатратыЗадачи", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Текст = "Трудозатраты по обработке"; + IDПользователя = 10; + Время = 7200; + ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("amount", Время); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("date", ДатаУстановки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьТрудозатратыЗадачи", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Текст = "Забытый в прошлый раз текст"; + Время = 4800; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("amount", Время); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьТрудозатратыЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Текст = "Новые трудозатраты по обработке"; + Время = 4800; + ДатаУстановки = ДобавитьМесяц(OPI_Инструменты.ПолучитьТекущуюДату(), -1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("amount", Время); + Опции.Вставить("text", Текст); + Опции.Вставить("date", ДатаУстановки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьТрудозатратыЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьТрудозатратыЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьТрудозатратыЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьТрудозатратыЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + IDЗаписи = ПараметрыФункции["Bitrix24_HookTimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТрудозатратыЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЗаписи = ПараметрыФункции["Bitrix24_TimeID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("record", IDЗаписи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТрудозатратыЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТрудозатратыЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокТрудозатратЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЗадачи = ПараметрыФункции["Bitrix24_ElapsedTaskID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокТрудозатратЗадачи", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("task", IDЗадачи); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокТрудозатратЗадачи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокТрудозатратЗадачи"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПланЗадачНаДень(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПланЗадачНаДень", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПланЗадачНаДень", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПланЗадачНаДень"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЧат(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); + + B64Картинка = ПолучитьBase64СтрокуИзДвоичныхДанных(Картинка); + + МассивУчастников = Новый Массив; + МассивУчастников.Добавить(10); + МассивУчастников.Добавить(1); + + СтруктураЧата = Новый Структура; + СтруктураЧата.Вставить("TYPE" , "OPEN"); + СтруктураЧата.Вставить("TITLE" , "Новый чат"); + СтруктураЧата.Вставить("DESCRIPTION", "Это новый чат"); + СтруктураЧата.Вставить("COLOR" , "GREEN"); + СтруктураЧата.Вставить("MESSAGE" , "Добро пожаловать в новый чат"); + СтруктураЧата.Вставить("USERS" , МассивУчастников); + СтруктураЧата.Вставить("AVATAR" , B64Картинка); + СтруктураЧата.Вставить("OWNER_ID" , 1); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЧат", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + СтруктураЧата = Новый Структура; + СтруктураЧата.Вставить("TYPE" , "CHAT"); + СтруктураЧата.Вставить("TITLE", "Закрытый чат"); + СтруктураЧата.Вставить("USERS", МассивУчастников); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЧат", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПользователейЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ПокинутьЧат(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПокинутьЧат", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПокинутьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПокинутьЧат"); + +КонецПроцедуры + +Процедура Bitrix24_ИсключитьПользователяИзЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИсключитьПользователяИзЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИсключитьПользователяИзЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИсключитьПользователяИзЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьПользователейВЧат(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователей = Новый Массив; + IDПользователей.Добавить(10); + IDПользователей.Добавить(12); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("users", IDПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПользователейВЧат", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("users", IDПользователя); + Опции.Вставить("hide", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользователейВЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ДобавитьПользователейВЧат"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЗаголовокЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Заголовок = "Новый заголовок чата"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗаголовокЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Заголовок = "Другой заголовок чата"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("title", Заголовок); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЗаголовокЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЗаголовокЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЦветЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Цвет = "AZURE"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("color", Цвет); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЦветЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Цвет = "PURPLE"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("color", Цвет); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЦветЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЦветЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьКартинкуЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Картинка = ПараметрыФункции["Picture2"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКартинкуЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("picture", Картинка); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКартинкуЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКартинкуЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ОтключитьУведомленияЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьУведомленияЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтключитьУведомленияЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтключитьУведомленияЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ВключитьУведомленияЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьУведомленияЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ВключитьУведомленияЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ВключитьУведомленияЧата"); + +КонецПроцедуры + +Процедура Bitrix24_СменитьВладельцаЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СменитьВладельцаЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СменитьВладельцаЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СменитьВладельцаЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокСообщенийЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = "chat4"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСообщенийЧата", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("first", 0); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСообщенийЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСообщенийЧата", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ОтметитьСообщениеКакПрочитанное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + СтрокаЧата = "chat" + IDЧата; + + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакПрочитанное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакПрочитанное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакПрочитанное"); + +КонецПроцедуры + +Процедура Bitrix24_ОтметитьСообщениеКакНепрочитанное(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакНепрочитанное", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтметитьСообщениеКакНепрочитанное", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтметитьСообщениеКакНепрочитанное"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьДиалог(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДиалог", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьДиалог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьДиалог"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПользователейДиалога(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейДиалога", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользователейДиалога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокПользователейДиалога"); + +КонецПроцедуры + +Процедура Bitrix24_ОтправитьУведомлениеОВводе(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьУведомлениеОВводе", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьУведомлениеОВводе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьУведомлениеОВводе"); + +КонецПроцедуры + +Процедура Bitrix24_ПрочитатьВсе(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрочитатьВсе", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПрочитатьВсе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПрочитатьВсе"); + +КонецПроцедуры + +Процедура Bitrix24_ОтправитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); + + СтрокаЧата = "chat" + IDЧата; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", СтрокаЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьСообщение", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСообщение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСообщение"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСообщение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьРеакциюНаСообщение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСообщения = ПараметрыФункции["Bitrix24_ChatMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьРеакциюНаСообщение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСообщения = ПараметрыФункции["Bitrix24_UserMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьРеакциюНаСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьРеакциюНаСообщение"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьКаталогФайловЧата(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКаталогФайловЧата", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьКаталогФайловЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ОтправитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЧата = ПараметрыФункции["Bitrix24_HookChatID"]; + Файл = ПараметрыФункции["Document"]; // Двоичные данные, URL или путь к файлу + Описание = "Очень важный файл"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + + Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + IDКаталога = Каталог["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", "Важный документ.docx"); + Опции.Вставить("file", Файл); + Опции.Вставить("folderid", IDКаталога); + + ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + IDФайла = ЗагруженныйФайл["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьФайл", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЧата = ПараметрыФункции["Bitrix24_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("token", Токен); + + Каталог = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьКаталогФайловЧата", Опции); + IDКаталога = Каталог["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", "Важный документ.docx"); + Опции.Вставить("file", Файл); + Опции.Вставить("folderid", IDКаталога); + Опции.Вставить("token", Токен); + + ЗагруженныйФайл = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗагрузитьФайлВКаталог", Опции); + IDФайла = ЗагруженныйФайл["result"]["ID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("description", Описание); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ОтправитьФайл"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + МассивПользователей = Новый Массив; + + МассивПользователей.Добавить(1); + МассивПользователей.Добавить(10); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователей = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", IDПользователей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Статус = "dnd"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Статус = "away"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("status", Статус); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПерсональноеУведомление(ПараметрыФункции) + + IDПользователя = 1; + + URL = ПараметрыФункции["Bitrix24_URL"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПерсональноеУведомление", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Тег = "Новый"; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("tag", Тег); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПерсональноеУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПерсональноеУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьСистемноеУведомление(ПараметрыФункции) + + IDПользователя = 1; + + URL = ПараметрыФункции["Bitrix24_URL"]; + Текст = "Текст сообщения"; + Картинка = "https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/service/test_data/picture.jpg"; + Файл = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/service/test_data/document.docx"; + + Вложения = Новый Массив; + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокКартинки("Картинка1", Картинка)); + Вложения.Добавить(OPI_Bitrix24.ПолучитьБлокФайла("Файл1.docx" , Файл)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", Вложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСистемноеУведомление", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Тег = "Новый"; + IDПользователя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("text", Текст); + Опции.Вставить("tag", Тег); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСистемноеУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСистемноеУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьУведомление(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDУведомления = ПараметрыФункции["Bitrix24_PersonalHookNotifyID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("notif", IDУведомления); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьУведомление", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDУведомления = ПараметрыФункции["Bitrix24_PersonalNotifyID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("notif", IDУведомления); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьУведомление"); + +КонецПроцедуры + +Процедура Bitrix24_ДобавитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Тип = "date"; + Имя = "BIRTHDAY_FIELD"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("type", Тип); + Опции.Вставить("fieldname", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Тип = "string"; + Имя = "TEXT_FIELD"; + ВнешнийКод = "BITRIX_TEXT_FIELD"; + Заголовок = "Поле для текста"; + Подпись = Новый Структура("en,ru", "Some field", "Некоторое поле"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("type", Тип); + Опции.Вставить("fieldname", Имя); + Опции.Вставить("externalid", ВнешнийКод); + Опции.Вставить("title", Заголовок); + Опции.Вставить("label", Подпись); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ДобавитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + Заголовок = "Новый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + ВнешнийКод = "NEW_TEXT_FIELD"; + Подпись = Новый Структура("en,ru", "Updated field", "Измененное поле"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("externalid", ВнешнийКод); + Опции.Вставить("label", Подпись); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокПользовательскихПолейЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_УдалитьПользовательскоеПолеЗадачи(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПоля = ПараметрыФункции["Bitrix24_HookTaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПоля = ПараметрыФункции["Bitrix24_TaskFieldID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fieldid", IDПоля); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПользовательскоеПолеЗадачи", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Наименование = "Главное подразделение"; + IDРодителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("parentid", IDРодителя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодразделение", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Наименование = "Подчиненное подразделение"; + IDРодителя = ПараметрыФункции["Bitrix24_HookDepID"]; + IDРуководителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("title", Наименование); + Опции.Вставить("parentid", IDРодителя); + Опции.Вставить("headid", IDРуководителя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПодразделение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПодразделение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; + IDРодителя = 7; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + Опции.Вставить("parentid", IDРодителя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПодразделение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + Наименование = "Новое подразделение"; + IDРодителя = 1; + IDРуководителя = 10; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + Опции.Вставить("title", Наименование); + Опции.Вставить("parentid", IDРодителя); + Опции.Вставить("headid", IDРуководителя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПодразделение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПодразделение"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьПодразделение(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьПодразделение", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПодразделения = ПараметрыФункции["Bitrix24_HookDepID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьПодразделение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьПодразделение"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПодразделения(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПодразделения = ПараметрыФункции["Bitrix24_DepID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("depid", IDПодразделения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПодразделения", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDРуководителя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headid", IDРуководителя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПодразделения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПодразделения"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьТекущегоПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТекущегоПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьТекущегоПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьТекущегоПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + // Полную структуру можно получить функцией ПолучитьСтруктуруПользователя + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПользователя", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("NAME" , "Виталий"); + СтруктураПользователя.Вставить("LAST_NAME" , "Альпака"); + СтруктураПользователя.Вставить("PERSONAL_MOBILE", "88003553535"); + СтруктураПользователя.Вставить("UF_DEPARTMENT" , 1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьПользователя", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + // Полную структуру можно получить функцией ПолучитьСтруктуруПользователя + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fields", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + Почта = Строка(Новый УникальныйИдентификатор) + "@example.org"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("EMAIL" , Почта); + СтруктураПользователя.Вставить("NAME" , "Олег"); + СтруктураПользователя.Вставить("LAST_NAME" , "Лама"); + СтруктураПользователя.Вставить("UF_DEPARTMENT", 7); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fields", СтруктураПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСтатусПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fire", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтатусПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("fire", Истина); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСтатусПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСтатусПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDПользователя = ПараметрыФункции["Bitrix24_HookUserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = ПараметрыФункции["Bitrix24_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_НайтиПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("NAME" , "Виталий"); + СтруктураФильтра.Вставить("LAST_NAME" , "Альпака"); + СтруктураФильтра.Вставить("WORK_POSITION" , "DevOps инженер"); + СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Отдел маркетинга"); + СтруктураФильтра.Вставить("USER_TYPE" , "employee"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", СтруктураФильтра); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НайтиПользователей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + СтруктураФильтра = Новый Структура; + СтруктураФильтра.Вставить("UF_DEPARTMENT_NAME", "Битрикс"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НайтиПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "НайтиПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_НачатьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); + + Час = 3600; + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + Время = OPI_Инструменты.ПолучитьТекущуюДату() - Час; + Отчет = "Опоздание"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("time", Время); + Опции.Вставить("report", Отчет); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "НачатьУчетВремени", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ЗавершитьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + Время = OPI_Инструменты.ПолучитьТекущуюДату(); + Отчет = "Отгул"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("time", Время); + Опции.Вставить("report", Отчет); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ЗавершитьУчетВремени", Опции); + +КонецПроцедуры + +Процедура Bitrix24_ПриостановитьУчетВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПриостановитьУчетВремени", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтатусУчетаВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчетаВремени", Опции); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьНастройкиУчетаВремени(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDПользователя = 1; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("userid", IDПользователя); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьНастройкиУчетаВремени", Опции); + + // END + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраЛидов(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЛидов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраЛидов"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруЛида(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЛида", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЛида", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЛида"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьЛид(ПараметрыФункции) + + МассивПочт = Новый Массив; + МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "yo@example.com", "HOME")); + МассивПочт.Добавить(Новый Структура("VALUE,VALUE_TYPE", "hi@example.com", "WORK")); + + МассивНомеров = Новый Массив; + МассивНомеров.Добавить(Новый Структура("VALUE,VALUE_TYPE", "88005553535", "WORK")); + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ADDRESS" , "ул. Пушкина, д. 10"); + СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Россия"); + СтруктураПолей.Вставить("EMAIL" , МассивПочт); + СтруктураПолей.Вставить("NAME" , "Петр"); + СтруктураПолей.Вставить("LAST_NAME" , "Петров"); + СтруктураПолей.Вставить("PHONE" , МассивНомеров); + СтруктураПолей.Вставить("TITLE" , "Мегаклиент"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЛид", "Хук", ПараметрыФункции); // SKIP + + СтруктураПолей.Вставить("NAME" , "Иван"); + СтруктураПолей.Вставить("LAST_NAME", "Иванов"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьЛид", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьЛид(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ADDRESS" , "ул. Лермонтова, д. 20"); + СтруктураПолей.Вставить("ADDRESS_COUNTRY", "Беларусь"); + СтруктураПолей.Вставить("TITLE" , "Суперклиент"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЛид", "Хук"); // SKIP + + СтруктураПолей.Вставить("NAME" , "Евгений"); + СтруктураПолей.Вставить("LAST_NAME", "Евгеньев"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьЛид"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьЛид(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЛид", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьЛид"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЛид(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDЛида = ПараметрыФункции["Bitrix24_HookLeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЛид", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDЛида = ПараметрыФункции["Bitrix24_LeadID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("lead", IDЛида); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЛид", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЛид"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокЛидов(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЛидов", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Фильтр = Новый Структура; + Фильтр.Вставить("TITLE" , "Мегаклиент"); + Фильтр.Вставить("HAS_EMAIL", "Y"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокЛидов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокЛидов"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраСделок(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСделок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСделок"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруСделки(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСделки", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСделки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСделки"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьСделку(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("TITLE" , "Плановая продажа"); + СтруктураПолей.Вставить("TYPE_ID" , "GOODS"); + СтруктураПолей.Вставить("STAGE_ID" , "NEW"); + СтруктураПолей.Вставить("COMPANY_ID" , 1); + СтруктураПолей.Вставить("CONTACT_ID" , 3); + СтруктураПолей.Вставить("OPENED" , "Y"); + СтруктураПолей.Вставить("ASSIGNED_BY_ID", 1); + СтруктураПолей.Вставить("PROBABILITY" , 30); + СтруктураПолей.Вставить("CURRENCY_ID" , "USD"); + СтруктураПолей.Вставить("OPPORTUNITY" , 5000); + СтруктураПолей.Вставить("CATEGORY_ID" , 5); + СтруктураПолей.Вставить("BEGINDATE" , "2024-01-01"); + СтруктураПолей.Вставить("CLOSEDATE" , "2030-01-01"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСделку", "Хук", ПараметрыФункции); // SKIP + + СтруктураПолей.Вставить("TITLE" , "Другая сделка"); + СтруктураПолей.Вставить("CLOSEDATE", "2031-01-01"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСделку", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСделку(ПараметрыФункции) + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("TITLE" , "Продажа в RUB"); + СтруктураПолей.Вставить("CURRENCY_ID", "RUB"); + СтруктураПолей.Вставить("OPPORTUNITY", 50000); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("fields", СтруктураПолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСделку", "Хук"); // SKIP + + СтруктураПолей.Вставить("TITLE" , "Будущая сделка в RUB"); + СтруктураПолей.Вставить("BEGINDATE", "2025-01-01"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_DealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("fields", СтруктураПолей); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСделку"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСделку(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСделку", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСделку"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСделку(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСделки = ПараметрыФункции["Bitrix24_HookDealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСделку", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСделки = ПараметрыФункции["Bitrix24_DealID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("deal", IDСделки); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСделку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСделку"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокСделок(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСделок", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Фильтр = Новый Структура; + Фильтр.Вставить("TITLE" , "Продажа в RUB"); + Фильтр.Вставить("CURRENCY_ID", "RUB"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокСделок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокСделок"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраЗадач(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраЗадач", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраЗадач"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруКомментария(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКомментария", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКомментария"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруЧата(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруЧата"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьБлокКартинки(ПараметрыФункции) + + Наименование = "Картинка"; + URL = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("title", Наименование); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьБлокКартинки"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьБлокФайла(ПараметрыФункции) + + Наименование = "Картинка"; + URL = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("title", Наименование); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьБлокФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьБлокФайла"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраПользователей(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьКалендарь(ПараметрыФункции) + + IDПользователя = 1; + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("type" , "user"); + СтруктураКалендаря.Вставить("ownerId" , IDПользователя); + СтруктураКалендаря.Вставить("name" , "Новый календарь"); + СтруктураКалендаря.Вставить("description", "Мой новый календарь"); + СтруктураКалендаря.Вставить("color" , "#FFFFFF"); + СтруктураКалендаря.Вставить("text_color" , "#000000"); + + СтруктураЭкспорта = Новый Структура; + СтруктураЭкспорта.Вставить("ALLOW", "Истина"); + СтруктураЭкспорта.Вставить("SET" , "all"); + + СтруктураКалендаря.Вставить("export", СтруктураЭкспорта); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКалендарь", "Хук", ПараметрыФункции); // SKIP + + СтруктураКалендаря.Вставить("name" , "Другой календарь"); + СтруктураКалендаря.Вставить("description", "Мой другой новый календарь"); + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураКалендаря); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьКалендарь", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьКалендарь(ПараметрыФункции) + + IDПользователя = 1; + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("type" , "user"); + СтруктураКалендаря.Вставить("ownerId" , IDПользователя); + СтруктураКалендаря.Вставить("name" , "Новое имя календаря"); + СтруктураКалендаря.Вставить("description", "Этот календарь был изменен"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("fields", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКалендарь", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("fields", СтруктураКалендаря); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьКалендарь"); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьКалендарь(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКалендарь", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("calendar", IDКалендаря); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьКалендарь"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКалендаря"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруКалендаря", "Пустая"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСписокКалендарей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКалендарей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСписокКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСписокКалендарей"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруНастроекКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруНастроекКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруНастроекКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруНастроекКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруПользовательскихНастроекКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруПользовательскихНастроекКалендаря", "Пустая"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьПользовательскиеНастройкиКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьПользовательскиеНастройкиКалендаря(ПараметрыФункции) + + СтруктураКалендаря = Новый Структура; + СтруктураКалендаря.Вставить("view" , "month"); + СтруктураКалендаря.Вставить("showDeclined" , "Y"); + СтруктураКалендаря.Вставить("collapseOffHours" , "N"); + СтруктураКалендаря.Вставить("showCompletedTasks", "N"); + + URL = ПараметрыФункции["Bitrix24_URL"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("settings", СтруктураКалендаря); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("settings", СтруктураКалендаря); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьПользовательскиеНастройкиКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьПользовательскиеНастройкиКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьЗанятостьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Пользователь = 1; + + Неделя = 604800; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + ДатаНачала = ТекущаяДата; + ДатаОкончания = ТекущаяДата + Неделя; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", Пользователь); + Опции.Вставить("from", ДатаНачала); + Опции.Вставить("to", ДатаОкончания); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗанятостьПользователей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("users", Пользователь); + Опции.Вставить("from", ДатаНачала); + Опции.Вставить("to", ДатаОкончания); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьЗанятостьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьЗанятостьПользователей"); + +КонецПроцедуры + +Процедура Bitrix24_СоздатьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDКалендаря = ПараметрыФункции["Bitrix24_HookCalendarID"]; + + Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; + Час = 3600; + + СтруктураСобытия = Новый Структура; + + СтруктураСобытия.Вставить("type" , "user"); + СтруктураСобытия.Вставить("ownerId" , 1); + СтруктураСобытия.Вставить("from" , XMLСтрока(Завтра)); + СтруктураСобытия.Вставить("to" , XMLСтрока(Завтра + Час)); + СтруктураСобытия.Вставить("section" , IDКалендаря); + СтруктураСобытия.Вставить("name" , "Новое событие"); + СтруктураСобытия.Вставить("skip_time" , "N"); + СтруктураСобытия.Вставить("timezone_from", "Europe/Minsk"); + СтруктураСобытия.Вставить("timezone_to" , "Europe/Minsk"); + СтруктураСобытия.Вставить("description" , "Описание события"); + СтруктураСобытия.Вставить("color" , "%23000000>"); + СтруктураСобытия.Вставить("text_color" , "%23FFFFFF"); + СтруктураСобытия.Вставить("accessibility", "quest"); + СтруктураСобытия.Вставить("importance" , "normal"); + СтруктураСобытия.Вставить("private_event", "Y"); + + СтруктураПовторяемости = Новый Структура; + СтруктураПовторяемости.Вставить("FREQ" , "DAILY"); + СтруктураПовторяемости.Вставить("COUNT" , 3); + СтруктураПовторяемости.Вставить("INTERVAL", 10); + + МассивДней = Новый Массив; + МассивДней.Добавить("SA"); + МассивДней.Добавить("MO"); + + СтруктураПовторяемости.Вставить("BYDAY", МассивДней); + СтруктураПовторяемости.Вставить("UNTIL", XMLСтрока(Завтра + Час * 24 * 10)); + + СтруктураСобытия.Вставить("rrule" , СтруктураПовторяемости); + СтруктураСобытия.Вставить("is_meeting", "Y"); + СтруктураСобытия.Вставить("location" , "Офис"); + + МассивНапоминаний = Новый Массив; + + СтруктураНапоминания = Новый Структура; + СтруктураНапоминания.Вставить("type" , "day"); + СтруктураНапоминания.Вставить("count", 1); + + МассивНапоминаний.Добавить(СтруктураНапоминания); + + СтруктураСобытия.Вставить("remind" , МассивНапоминаний); + СтруктураСобытия.Вставить("attendees", СтрРазделить("1,10", ",")); + СтруктураСобытия.Вставить("host" , 1); + + СтруктураВстречи = Новый Структура; + СтруктураВстречи.Вставить("notify" , "Y"); + СтруктураВстречи.Вставить("reinvite" , "Y"); + СтруктураВстречи.Вставить("allow_invite", "N"); + СтруктураВстречи.Вставить("hide_guests" , "N"); + + СтруктураСобытия.Вставить("meeting", СтруктураВстречи); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСобытиеКалендаря", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + СтруктураСобытия.Вставить("section", IDКалендаря); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("fields", СтруктураСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "СоздатьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "СоздатьСобытиеКалендаря", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_ИзменитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + СтруктураСобытия = Новый Структура; + + СтруктураСобытия.Вставить("ownerId" , 1); + СтруктураСобытия.Вставить("type" , "user"); + СтруктураСобытия.Вставить("name" , "Измененное событие"); + СтруктураСобытия.Вставить("description" , "Новое описание события"); + СтруктураСобытия.Вставить("importance" , "low"); + СтруктураСобытия.Вставить("private_event", "Y"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("fields", СтруктураСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСобытиеКалендаря", "Хук", ПараметрыФункции); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + IDКалендаря = ПараметрыФункции["Bitrix24_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("fields", СтруктураСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ИзменитьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ИзменитьСобытиеКалендаря", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Bitrix24_УдалитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСобытиеКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УдалитьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УдалитьСобытиеКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСобытиеКалендаря(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытиеКалендаря", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытиеКалендаря"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСобытияКалендарей(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDВладельца = 1; + Тип = "user"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытияКалендарей", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + IDКалендаря1 = ПараметрыФункции["Bitrix24_HookCalendarID"]; + IDКалендаря2 = ПараметрыФункции["Bitrix24_CalendarID"]; + + Завтра = OPI_Инструменты.ПолучитьТекущуюДату() + 86400; + Послезавтра = Завтра + 86400; + + МассивКалендарей = Новый Массив; + МассивКалендарей.Добавить(IDКалендаря1); + МассивКалендарей.Добавить(IDКалендаря2); + + Фильтр = Новый Структура; + Фильтр.Вставить("from" , Завтра); + Фильтр.Вставить("to" , Послезавтра); + Фильтр.Вставить("section", МассивКалендарей); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("owner", IDВладельца); + Опции.Вставить("type", Тип); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытияКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСобытияКалендарей"); + +КонецПроцедуры + +Процедура Bitrix24_УстановитьСтатусУчастияПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + Статус = "Y"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусУчастияПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("status", Статус); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "УстановитьСтатусУчастияПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "УстановитьСтатусУчастияПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтатусУчастияПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["Bitrix24_URL"]; + IDСобытия = ПараметрыФункции["Bitrix24_HookCEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусУчастияПользователя", "Хук"); // SKIP + + URL = ПараметрыФункции["Bitrix24_Domain"]; + Токен = ПараметрыФункции["Bitrix24_Token"]; + IDСобытия = ПараметрыФункции["Bitrix24_CEventID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("event", IDСобытия); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтатусУчастияПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтатусУчастияПользователя"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруСобытияКалендаря(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСобытияКалендаря"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруСобытияКалендаря", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруСобытияКалендаря", "Пустая"); + +КонецПроцедуры + +Процедура Bitrix24_ПолучитьСтруктуруФильтраСобытийКалендарей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Bitrix24", "ПолучитьСтруктуруФильтраСобытийКалендарей", "Пустая"); + +КонецПроцедуры + +#КонецОбласти // Bitrix24 + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure B24_TokenManagement() Export + Б24_РаботаСТокеном(); +EndProcedure + +Procedure B24_ServerTime() Export + Б24_СерверноеВремя(); +EndProcedure + +Procedure B24_PostsManagement() Export + Б24_РаботаСНовостями(); +EndProcedure + +Procedure B24_TaskManagement() Export + Б24_РаботаСЗадачами(); +EndProcedure + +Procedure B24_WorkingWithDrive() Export + Б24_РаботаСДиском(); +EndProcedure + +Procedure B24_CommentsManagement() Export + Б24_РаботаСКомментариями(); +EndProcedure + +Procedure B24_Timekeeping() Export + Б24_УчетРабочегоВремени(); +EndProcedure + +Procedure B24_Kanban() Export + Б24_Канбан(); +EndProcedure + +Procedure B24_ChatManagement() Export + Б24_РаботаСЧатами(); +EndProcedure + +Procedure B24_NotificationsManagement() Export + Б24_РаботаСУведомлениями(); +EndProcedure + +Procedure B24_TasksFieldsManagement() Export + Б24_РаботаСПолямиЗадач(); +EndProcedure + +Procedure B24_DepartmentsManagement() Export + Б24_УправлениеПодразделениями(); +EndProcedure + +Procedure B2_UsersManagement() Export + Б24_УправлениеПользователями(); +EndProcedure + +Procedure B24_LeadsManagement() Export + Б24_РаботаСЛидами(); +EndProcedure + +Procedure B24_DealsManagement() Export + Б24_РаботаСоСделками(); +EndProcedure + +Procedure B24_CalendarsManagement() Export + Б24_РаботаСКалендарями(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_CDEK.os b/src/ru/OInt/tests/Modules/OPItc_CDEK.os new file mode 100644 index 0000000000..cfb77f3785 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_CDEK.os @@ -0,0 +1,919 @@ +// OneScript: ./OInt/tests/Modules/OPItc_CDEK.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("CDEK"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("CDEK"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область CDEK + +Процедура СдэкАПИ_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Account" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Password", ПараметрыТеста); + + CDEK_ПолучитьТокен(ПараметрыТеста); + CDEK_ПолучитьЧекиНаДату(ПараметрыТеста); + CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыТеста); + CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыТеста); + CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыТеста); + CDEK_ПолучитьСписокОфисов(ПараметрыТеста); + CDEK_ПолучитьСписокРегионов(ПараметрыТеста); + +КонецПроцедуры + +Процедура СдэкАПИ_РаботаСЗаказами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); + + CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста); + CDEK_СоздатьЗаказ(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьЗаказ(ПараметрыТеста); + CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста); + CDEK_СформироватьКвитанцию(ПараметрыТеста); + CDEK_СформироватьШтрихкод(ПараметрыТеста); + CDEK_СоздатьПреалерт(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьКвитанцию(ПараметрыТеста); + CDEK_ПолучитьШтрихкод(ПараметрыТеста); + CDEK_ПолучитьПреалерт(ПараметрыТеста); + CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыТеста); + CDEK_ПолучитьЧекЗаказа(ПараметрыТеста); + CDEK_ИзменитьЗаказ(ПараметрыТеста); + CDEK_ОформитьКлиентскийВозврат(ПараметрыТеста); + CDEK_СоздатьОтказ(ПараметрыТеста); + CDEK_УдалитьЗаказ(ПараметрыТеста); + +КонецПроцедуры + +Процедура СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token", ПараметрыТеста); + + CDEK_СоздатьЗаказ(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыТеста); + CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыТеста); + CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыТеста); + CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыТеста); + CDEK_ПолучитьОписаниеДоговоренности(ПараметрыТеста); + + CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыТеста); + CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыТеста); + + OPI_Инструменты.Пауза(25); + + CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыТеста); + CDEK_УдалитьЗаказ(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // CDEK + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область CDEK + +Процедура CDEK_ПолучитьТокен(ПараметрыФункции) + + Аккаунт = ПараметрыФункции["CDEK_Account"]; + Пароль = ПараметрыФункции["CDEK_Password"]; + + Опции = Новый Структура; + Опции.Вставить("account", Аккаунт); + Опции.Вставить("pass", Пароль); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеЗаказа(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаказа"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаказа", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаказа", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_СоздатьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + ОписаниеЗаказа = Новый Структура; + + ЛокацияОтправления = Новый Структура; + ЛокацияОтправления.Вставить("code" , "44"); + ЛокацияОтправления.Вставить("city" , "Москва"); + ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4"); + + ЛокацияНазначения = Новый Структура; + ЛокацияНазначения.Вставить("code" , "270"); + ЛокацияНазначения.Вставить("city" , "Новосибирск"); + ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32"); + + Получатель = Новый Структура; + + Телефоны = Новый Массив; + Телефоны.Добавить(Новый Структура("number", "+79134637228")); + + Получатель.Вставить("phones", Телефоны); + Получатель.Вставить("name" , "Иванов Иван"); + + Отправитель = Новый Структура("name", "Петров Петр"); + + Услуги = Новый Массив; + + Услуга = Новый Структура; + Услуга.Вставить("code" , "SECURE_PACKAGE_A2"); + Услуга.Вставить("parameter", 10); + + Услуги.Добавить(Услуга); + + Пакеты = Новый Массив; + + Пакет = Новый Структура; + + Позиции = Новый Массив; + + Позиция = Новый Структура; + + Оплата = Новый Структура; + Оплата.Вставить("value", 3000); + + Позиция.Вставить("payment" , Оплата); + Позиция.Вставить("ware_key", "00055"); + Позиция.Вставить("name" , "Товар"); + Позиция.Вставить("cost" , 300); + Позиция.Вставить("amount" , 2); + Позиция.Вставить("weight" , 700); + Позиция.Вставить("url" , "www.item.ru"); + + Позиции.Добавить(Позиция); + + Пакет.Вставить("items" , Позиции); + Пакет.Вставить("number" , "bar-001"); + Пакет.Вставить("comment", "Упаковка"); + Пакет.Вставить("height" , 10); + Пакет.Вставить("length" , 10); + Пакет.Вставить("weight" , "4000"); + Пакет.Вставить("width" , 10); + + Пакеты.Добавить(Пакет); + + ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления); + ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения); + ОписаниеЗаказа.Вставить("packages" , Пакеты); + ОписаниеЗаказа.Вставить("recipient" , Получатель); + ОписаниеЗаказа.Вставить("sender" , Отправитель); + ОписаниеЗаказа.Вставить("services" , Услуги); + + ОписаниеЗаказа.Вставить("number" , Строка(Новый УникальныйИдентификатор)); + ОписаниеЗаказа.Вставить("comment" , "Новый заказ"); + ОписаниеЗаказа.Вставить("tariff_code", 139); + + ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value" , 50)); + ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200)); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("order", ОписаниеЗаказа); + Опции.Вставить("ostore", Истина); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьЗаказ", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЗаказ", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("number", НомерЗаказа); + Опции.Вставить("internal", Истина); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаказПоНомеру", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЗаказПоНомеру"); + +КонецПроцедуры + +Процедура CDEK_ИзменитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + ОписаниеЗаказа = Новый Структура("comment", "Новый комментарий"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("order", ОписаниеЗаказа); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ИзменитьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ИзменитьЗаказ"); + +КонецПроцедуры + +Процедура CDEK_УдалитьЗаказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "УдалитьЗаказ"); + +КонецПроцедуры + +Процедура CDEK_ОформитьКлиентскийВозврат(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Тариф = 139; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("tariff", Тариф); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ОформитьКлиентскийВозврат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ОформитьКлиентскийВозврат"); + +КонецПроцедуры + +Процедура CDEK_СоздатьОтказ(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьОтказ", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьОтказ"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеЗаявкиКурьера(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаявкиКурьера"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеЗаявкиКурьера", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеЗаявкиКурьера", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_СоздатьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + ОписаниеЗаявки = Новый Структура; + ОписаниеЗаявки.Вставить("intake_date" , Формат(ТекущаяДата + 60 * 60 * 24, "ДФ=yyyy-MM-dd")); + ОписаниеЗаявки.Вставить("intake_time_from", "10:00"); + ОписаниеЗаявки.Вставить("intake_time_to" , "17:00"); + ОписаниеЗаявки.Вставить("name" , "Консолидированный груз"); + ОписаниеЗаявки.Вставить("weight" , 1000); + ОписаниеЗаявки.Вставить("length" , 10); + ОписаниеЗаявки.Вставить("width" , 10); + ОписаниеЗаявки.Вставить("height" , 10); + ОписаниеЗаявки.Вставить("comment" , "Комментарий курьеру"); + ОписаниеЗаявки.Вставить("need_call" , Ложь); + + Отправитель = Новый Структура; + Отправитель.Вставить("company", "Компания"); + Отправитель.Вставить("name" , "Иванов Иван"); + + Телефоны = Новый Массив; + Телефон = Новый Структура("number", "+79589441654"); + Телефоны.Добавить(Телефон); + + Отправитель.Вставить("phones", Телефоны); + + ОписаниеЗаявки.Вставить("sender", Отправитель); + + ТочкаОтправления = Новый Структура; + ТочкаОтправления.Вставить("code" , "44"); + ТочкаОтправления.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + ТочкаОтправления.Вставить("postal_code" , "109004"); + ТочкаОтправления.Вставить("longitude" , 37.6204); + ТочкаОтправления.Вставить("latitude" , 55.754); + ТочкаОтправления.Вставить("country_code", "RU"); + ТочкаОтправления.Вставить("region" , "Москва"); + ТочкаОтправления.Вставить("sub_region" , "Москва"); + ТочкаОтправления.Вставить("city" , "Москва"); + ТочкаОтправления.Вставить("kladr_code" , "7700000000000"); + ТочкаОтправления.Вставить("address" , "ул. Блюхера, 32"); + + ОписаниеЗаявки.Вставить("from_location", ТочкаОтправления); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("intake", ОписаниеЗаявки); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьЗаявкуНаВызовКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьЗаявкуНаВызовКурьера", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_IntakeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЗаявкуНаВызовКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЗаявкуНаВызовКурьера"); + +КонецПроцедуры + +Процедура CDEK_УдалитьЗаявкуНаВызовКурьера(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_IntakeUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "УдалитьЗаявкуНаВызовКурьера", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "УдалитьЗаявкуНаВызовКурьера"); + +КонецПроцедуры + +Процедура CDEK_СформироватьКвитанцию(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Тип = "tpl_russia"; + Копий = 1; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuids", UUID); + Опции.Вставить("type", Тип); + Опции.Вставить("count", Копий); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьКвитанцию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СформироватьКвитанцию", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьКвитанцию(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_PrintUUID"]; + + Результат = OPI_CDEK.ПолучитьКвитанцию(Токен, UUID, , Истина); // Ответ сервера с ссылкой + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьКвитанцию"); + +КонецПроцедуры + +Процедура CDEK_СформироватьШтрихкод(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + Формат = "A5"; + Копий = 1; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuids", UUID); + Опции.Вставить("count", Копий); + Опции.Вставить("format", Формат); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СформироватьШтрихкод", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СформироватьШтрихкод", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьШтрихкод(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_BarcodeUUID"]; + + Результат = OPI_CDEK.ПолучитьШтрихкод(Токен, UUID, , Истина); // Ответ сервера с ссылкой + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьШтрихкод"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьДоступныеИнтервалыДоставки(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоступныеИнтервалыДоставки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьДоступныеИнтервалыДоставки"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеДоговоренности(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеДоговоренности"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеДоговоренности", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеДоговоренности", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_ЗафиксироватьДоговоренностьОДоставке(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUIDЗаказа = ПараметрыФункции["CDEK_OrderUUID"]; + + Сутки = 60 * 60 * 24; + ТекущаяДата = НачалоДня(OPI_Инструменты.ПолучитьТекущуюДату()); + ДатаДоставки = ТекущаяДата + Сутки * 14; + + Пока ДеньНедели(ДатаДоставки) > 5 Цикл + ДатаДоставки = ДатаДоставки + Сутки; + КонецЦикла; + + Договоренность = Новый Структура; + + Договоренность.Вставить("cdek_number", "1106207236"); + Договоренность.Вставить("order_uuid" , UUIDЗаказа); + Договоренность.Вставить("date" , Формат(ДатаДоставки, "ДФ=yyyy-MM-dd")); + Договоренность.Вставить("time_from" , "10:00"); + Договоренность.Вставить("time_to" , "17:00"); + Договоренность.Вставить("comment" , "Офис группы компаний"); + + МестоДоставки = Новый Структура; + МестоДоставки.Вставить("code" , "270"); + МестоДоставки.Вставить("fias_guid" , "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"); + МестоДоставки.Вставить("postal_code" , "109004"); + МестоДоставки.Вставить("longitude" , 37.6204); + МестоДоставки.Вставить("latitude" , 55.754); + МестоДоставки.Вставить("country_code", "RU"); + МестоДоставки.Вставить("region" , "Новосибирск"); + МестоДоставки.Вставить("sub_region" , "Новосибирск"); + МестоДоставки.Вставить("city" , "Новосибирск"); + МестоДоставки.Вставить("kladr_code" , "7700000000000"); + МестоДоставки.Вставить("address" , "ул. Блюхера, 33"); + + Договоренность.Вставить("to_location", МестоДоставки); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("appt", Договоренность); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ЗафиксироватьДоговоренностьОДоставке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ЗафиксироватьДоговоренностьОДоставке", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьДоговоренностьОДоставке(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_ApptUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьДоговоренностьОДоставке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьДоговоренностьОДоставке"); + +КонецПроцедуры + +Процедура CDEK_СоздатьПреалерт(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + ПВЗ = "NSK27"; + ДатаПередачи = OPI_Инструменты.ПолучитьТекущуюДату() + 60 * 60 * 24; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuids", UUID); + Опции.Вставить("date", ДатаПередачи); + Опции.Вставить("point", ПВЗ); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "СоздатьПреалерт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "СоздатьПреалерт", , ПараметрыФункции); + +КонецПроцедуры + +Процедура CDEK_ПолучитьПреалерт(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_PrealertUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПреалерт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьПреалерт"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьСтатусПаспортныхДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСтатусПаспортныхДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьСтатусПаспортныхДанных"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЧекЗаказа(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + UUID = ПараметрыФункции["CDEK_OrderUUID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("uuid", UUID); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекЗаказа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЧекЗаказа"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьЧекиНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("date", ДатаПолучения); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьЧекиНаДату", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьЧекиНаДату"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьРеестрыПлатежейНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("date", ДатаПолучения); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьРеестрыПлатежейНаДату", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьРеестрыПлатежейНаДату"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьПереводыПлатежейНаДату(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + ДатаПолучения = OPI_Инструменты.ПолучитьТекущуюДату(); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("date", ДатаПолучения); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьПереводыПлатежейНаДату", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьПереводыПлатежейНаДату"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьОписаниеФильтраОфисов(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеФильтраОфисов"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьОписаниеФильтраОфисов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьОписаниеФильтраОфисов", "Пустая"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьСписокОфисов(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + Фильтр = Новый Структура; + Фильтр.Вставить("weight_max" , 50); + Фильтр.Вставить("city_code" , 270); + Фильтр.Вставить("allowed_cod", Истина); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("filter", Фильтр); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокОфисов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьСписокОфисов"); + +КонецПроцедуры + +Процедура CDEK_ПолучитьСписокРегионов(ПараметрыФункции) + + Токен = ПараметрыФункции["CDEK_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("testapi", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("cdek", "ПолучитьСписокРегионов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "CDEK", "ПолучитьСписокРегионов"); + +КонецПроцедуры + +#КонецОбласти // CDEK + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure CdekAPI_CommonMethods() Export + СдэкАПИ_ОбщиеМетоды(); +EndProcedure + +Procedure CDEKAPI_OrdersManagement() Export + СдэкАПИ_РаботаСЗаказами(); +EndProcedure + +Procedure CdekAPI_CourierInvitationsManagement() Export + СдэкАПИ_РаботаСЗаявкамиНаВызовКурьера(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_ClickHouse.os b/src/ru/OInt/tests/Modules/OPItc_ClickHouse.os new file mode 100644 index 0000000000..9e3d269f82 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_ClickHouse.os @@ -0,0 +1,1342 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ClickHouse.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("ClickHouse"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("ClickHouse"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область ClickHouse + +Процедура CH_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_PortGRPC" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста); + + ClickHouse_ВыполнитьЗапрос(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыТеста); + ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиСессии(ПараметрыТеста); + +КонецПроцедуры + +Процедура CH_GRPC() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_PortGRPC" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста); + + ClickHouse_ОткрытьСоединениеGRPC(ПараметрыТеста); + ClickHouse_ПолучитьНастройкиTls(ПараметрыТеста); + + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыТеста["ClickHouse_PortGRPC"]); + + Логин = ПараметрыТеста["ClickHouse_User"]; + Пароль = ПараметрыТеста["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстСозданияТаблицы = "CREATE TABLE IF NOT EXISTS events_stream_test ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_stream_test"); + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстСозданияТаблицы); + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); + + ClickHouse_ОткрытьПотокGRPC(ПараметрыТеста); + ClickHouse_ОтправитьСообщениеGRPC(ПараметрыТеста); + ClickHouse_ОтправитьДанныеGRPC(ПараметрыТеста); + ClickHouse_ПолучитьСообщениеGRPC(ПараметрыТеста); + ClickHouse_ЗавершитьОтправкуGRPC(ПараметрыТеста); + ClickHouse_ЗакрытьПотокGRPC(ПараметрыТеста); + ClickHouse_ОбработатьОтправкуGRPC(ПараметрыТеста); + ClickHouse_ОбработатьПолучениеGRPC(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // ClickHouse + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область ClickHouse + +Процедура ClickHouse_ВыполнитьЗапрос(ПараметрыФункции) + + // Настройки соединения + + URL = "http://localhost:8123"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_Port"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + Соединение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + // Запрос (создание таблицы) + + ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СозданиеТаблицы"); // SKIP + + // Запрос (вставка данных) + + ТекстЗапроса = "INSERT INTO events FORMAT JSON"; + + ФорматДанных = "JSON"; + МассивДанных = Новый Массив; + + ТекущаяДата = Дата("20260101100000"); + + Запись1 = Новый Структура; + Запись1.Вставить("id" , 1); + Запись1.Вставить("timestamp" , ТекущаяДата); + Запись1.Вставить("user_id" , 100); + Запись1.Вставить("event_type", "click"); + Запись1.Вставить("payload" , "{}"); + + Запись2 = Новый Структура; + Запись2.Вставить("id" , 2); + Запись2.Вставить("timestamp" , ТекущаяДата); + Запись2.Вставить("user_id" , 200); + Запись2.Вставить("event_type", "hover"); + Запись2.Вставить("payload" , "{}"); + + МассивДанных.Добавить(Запись1); + МассивДанных.Добавить(Запись2); + + Мета = Новый Массив; + Мета.Добавить(Новый Структура("name,type", "id" , "UInt64")); + Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime")); + Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32")); + Мета.Добавить(Новый Структура("name,type", "event_type", "String")); + Мета.Добавить(Новый Структура("name,type", "payload" , "String")); + + Данные = Новый Структура("meta,data", Мета, МассивДанных); + БазаДанных = "default"; + IDЗапроса = Строка(Новый УникальныйИдентификатор()); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("db", БазаДанных); + Опции.Вставить("id", IDЗапроса); + Опции.Вставить("data", Данные); + Опции.Вставить("format", ФорматДанных); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP + + // Запрос с внешней таблицей + + ИмяТаблицы = "ext_users"; + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "UInt64"); + СтруктураКолонок.Вставить("name", "String"); + + Таб = Символы.Таб; + ДанныеТаблицы = "1" + Таб + "John + |2" + Таб + "Jane + |3" + Таб + "Bob"; + + Опции = Новый Структура; + Опции.Вставить("name", ИмяТаблицы); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("data", ДанныеТаблицы); + Опции.Вставить("format", "TSV"); + + ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + МассивВнешнихТаблиц = Новый Массив; + МассивВнешнихТаблиц.Добавить(ВнешняяТаблица); + + ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + Опции.Вставить("ext", МассивВнешнихТаблиц); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВнешняяТаблица"); // SKIP + + // Выборка + + ТекстВыборки = "SELECT * FROM events"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "CSV"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаCSV"); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "TSV"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаTSV"); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSONCompact"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаJSONCompact"); + + ТекстЗапроса = "SELECT 1 AS result"; + + ДопНастройки = Новый Соответствие; + ДопНастройки.Вставить("max_threads", "4"); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + Опции.Вставить("settings", ДопНастройки); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ДопНастройки"); + + UUID = Строка(Новый УникальныйИдентификатор()); + Опции = Новый Структура; + Опции.Вставить("id", UUID); + + Сессия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции); + + ТекстЗапроса = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("session", Сессия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияСоздание"); + + ТекстЗапроса = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("session", Сессия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияВставка"); + + ТекстЗапроса = "SELECT * FROM temp_session_test"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("session", Сессия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); + +КонецПроцедуры + +Процедура ClickHouse_ОткрытьСоединениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + // Открытие соединения + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC", "Открытие"); // SKIP + + // Запрос через открытое соединение (создание таблицы) + + ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc ( + | id UInt64, + | timestamp DateTime, + | user_id UInt32, + | event_type String, + | payload String + |) ENGINE = MergeTree() + |ORDER BY (timestamp, id)"; + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP + Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "СозданиеТаблицы"); // SKIP + + // Вставка данных + + ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON"; + + ФорматДанных = "JSON"; + МассивДанных = Новый Массив; + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + Запись1 = Новый Структура; + Запись1.Вставить("id" , 1); + Запись1.Вставить("timestamp" , ТекущаяДата); + Запись1.Вставить("user_id" , 100); + Запись1.Вставить("event_type", "click"); + Запись1.Вставить("payload" , "{}"); + + МассивДанных.Добавить(Запись1); + + Мета = Новый Массив; + Мета.Добавить(Новый Структура("name,type", "id" , "UInt64")); + Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime")); + Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32")); + Мета.Добавить(Новый Структура("name,type", "event_type", "String")); + Мета.Добавить(Новый Структура("name,type", "payload" , "String")); + + Данные = Новый Структура("meta,data", Мета, МассивДанных); + IDЗапроса = Строка(Новый УникальныйИдентификатор()); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("db", "default"); + Опции.Вставить("id", IDЗапроса); + Опции.Вставить("data", Данные); + Опции.Вставить("format", ФорматДанных); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "ВставкаДанных"); // SKIP + + // Выборка + + ТекстВыборки = "SELECT * FROM events_grpc"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Выборка"); // SKIP + + // Запрос с внешней таблицей через gRPC + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "UInt64"); + СтруктураКолонок.Вставить("name", "String"); + + Таб = Символы.Таб; + ДанныеТаблицы = "1" + Таб + "John + |2" + Таб + "Jane"; + + Опции = Новый Структура; + Опции.Вставить("name", "ext_grpc"); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("data", ДанныеТаблицы); + Опции.Вставить("format", "TSV"); + + ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + МассивВнешнихТаблиц = Новый Массив; + МассивВнешнихТаблиц.Добавить(ВнешняяТаблица); + + ТекстЗапроса = "SELECT * FROM ext_grpc"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + Опции.Вставить("ext", МассивВнешнихТаблиц); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыФункции) + + URL = "http://localhost:8123"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_Port"]); // SKIP + + // Без авторизации + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "БезАвторизации"); // SKIP + + // С basic авторизацией + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "BasicАвторизация"); // SKIP + + // С JWT авторизацией + + JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", JWT); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "JWTАвторизация"); // SKIP + + // С дополнительными заголовками + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + // Без авторизации + + Опции = Новый Структура; + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "БезАвторизации"); // SKIP + + // С basic авторизацией + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "BasicАвторизация"); // SKIP + + // С JWT авторизацией + + JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", JWT); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "JWTАвторизация"); // SKIP + + // С метаданными + + Meta = Новый Соответствие; + Meta.Вставить("custom-meta", "value"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + Опции.Вставить("meta", Meta); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "СМетаданными"); // SKIP + + // С TLS настройками + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыФункции) + + // Минимальный запрос + + ТекстЗапроса = "SELECT 1"; + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса", "Минимальный"); // SKIP + + // Полный запрос + + IDЗапроса = Строка(Новый УникальныйИдентификатор()); + Данные = Новый Структура("meta,data", Новый Массив, Новый Массив); + БазаДанных = "default"; + ФорматОтвета = "CSV"; + + ДопНастройки = Новый Соответствие; + ДопНастройки.Вставить("max_threads", "4"); + + СтруктураКолонок = Новый Структура("id,name", "UInt64", "String"); + Опции = Новый Структура; + Опции.Вставить("name", "ext"); + Опции.Вставить("cols", СтруктураКолонок); + + ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + МассивТаблиц = Новый Массив; + МассивТаблиц.Добавить(ВнешняяТаблица); + + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("db", БазаДанных); + Опции.Вставить("id", IDЗапроса); + Опции.Вставить("data", Данные); + Опции.Вставить("format", ФорматОтвета); + Опции.Вставить("ext", МассивТаблиц); + Опции.Вставить("settings", ДопНастройки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыФункции) + + // Минимальная структура + + ИмяТаблицы = "external_data"; + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "UInt64"); + СтруктураКолонок.Вставить("name", "String"); + + Опции = Новый Структура; + Опции.Вставить("name", ИмяТаблицы); + Опции.Вставить("cols", СтруктураКолонок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы", "Минимальная"); // SKIP + + // С данными TSV + + ДанныеТаблицы = СтрШаблон("1%1Test + |2%1Test2", Символы.Таб); + + Опции = Новый Структура; + Опции.Вставить("name", ИмяТаблицы); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("data", ДанныеТаблицы); + Опции.Вставить("format", "TSV"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции) + + IDСессии = Строка(Новый УникальныйИдентификатор); + Проверять = Истина; + Таймаут = 120; + + Опции = Новый Структура; + Опции.Вставить("id", IDСессии); + Опции.Вставить("check", Проверять); + Опции.Вставить("timeout", Таймаут); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСессии"); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ПолучитьНастройкиTls"); + +КонецПроцедуры + +Процедура ClickHouse_ОткрытьПотокGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type" , "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Последнее = Счетчик = 4; + + Если Счетчик = 0 Тогда + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); + Иначе + ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); + КонецЕсли; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка <> "Timeout" Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); + КонецЕсли; + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "ClickHouse", "ОткрытьПотокGRPC"); + OPI_ПолучениеДанныхТестов.Обработать(ФинальноеСообщение , "ClickHouse", "ОткрытьПотокGRPC", "Финал"); + + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстВыборки = "SELECT * FROM events_stream_test ORDER BY id"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + РезультатВыборки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(РезультатВыборки, "ClickHouse", "ОткрытьПотокGRPC", "Выборка"); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ОтправитьСообщениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type" , "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Последнее = Счетчик = 4; + + Если Счетчик = 0 Тогда + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); // <--- + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОтправитьСообщениеGRPC"); // SKIP + Иначе + ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); + КонецЕсли; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка <> "Timeout" Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); + КонецЕсли; + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + // END + + Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ОтправитьДанныеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + Результат = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type" , "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Последнее = Счетчик = 4; + + Если Счетчик = 0 Тогда + + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + ТекущаяОтправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос, , Не Последнее); + Иначе + ТекущаяОтправка = OPI_ClickHouse.ОтправитьДанныеGRPC(Соединение, IDПотока, Запись, Не Последнее); // <--- + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОтправитьДанныеGRPC"); // SKIP + КонецЕсли; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка <> "Timeout" Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ТекущаяОтправка); + КонецЕсли; + + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + // END + + Завершение = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + ФинальноеСообщение = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ПолучитьСообщениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + Таймаут = 10000; + + РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); + + Если Не РезультатОткрытия["result"] Тогда + ВызватьИсключение РезультатОткрытия["error"]; + Иначе + IDПотока = РезультатОткрытия["streamId"]; + КонецЕсли; + + ТекстЗапроса = "SELECT number FROM system.numbers LIMIT 1"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + Результат = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); + OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + + Данные = ""; + + Если Результат["result"] Тогда + + Пока Истина Цикл + + Результат = OPI_ClickHouse.ПолучитьСообщениеGRPC(Соединение, IDПотока, "JSON"); + + Если Не Результат["result"] Тогда + Прервать; + КонецЕсли; + + ЧастьТекста = Результат["message"]["output"]; + Данные = Данные + ЧастьТекста; + + КонецЦикла; + + OPI_GRPC.ЗакрытьСоединение(Соединение); + + Иначе + ВызватьИсключение Результат["error"]; + КонецЕсли; + + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Данные, "ClickHouse", "ПолучитьСообщениеGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ЗавершитьОтправкуGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + Таймаут = 10000; + + РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); + + Если Не РезультатОткрытия["result"] Тогда + ВызватьИсключение РезультатОткрытия["error"]; + Иначе + IDПотока = РезультатОткрытия["streamId"]; + КонецЕсли; + + ТекстЗапроса = "SELECT number FROM system.numbers LIMIT 1"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстЗапроса); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + Отправка = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); + Результат = OPI_ClickHouse.ЗавершитьОтправкуGRPC(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ЗавершитьОтправкуGRPC"); + + Результат = OPI_ClickHouse.ОтправитьСообщениеGRPC(Соединение, IDПотока, Запрос); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ЗавершитьОтправкуGRPC", "Отправка"); + +КонецПроцедуры + +Процедура ClickHouse_ЗакрытьПотокGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + Таймаут = 10000; + + РезультатОткрытия = OPI_ClickHouse.ОткрытьПотокGRPC(Соединение, Таймаут); + + Если Не РезультатОткрытия["result"] Тогда + ВызватьИсключение РезультатОткрытия["error"]; + Иначе + IDПотока = РезультатОткрытия["streamId"]; + КонецЕсли; + + Результат = OPI_ClickHouse.ЗакрытьПотокGRPC(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ЗакрытьПотокGRPC"); + + OPI_GRPC.ЗакрытьСоединение(Соединение); + +КонецПроцедуры + +Процедура ClickHouse_ОбработатьОтправкуGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстЗапроса = "INSERT INTO events_stream_test FORMAT JSONEachRow"; + ФорматДанных = "JSON"; + ТекущаяДата = Дата("20260101100000"); + + Запрос = Неопределено; + МассивДанных = Новый Массив; + + Счетчик = 0; + Пока Счетчик < 5 Цикл + + Запись = Новый Структура; + Запись.Вставить("id" , Счетчик + 1); + Запись.Вставить("timestamp" , ТекущаяДата); + Запись.Вставить("user_id" , 100 + Счетчик); + Запись.Вставить("event_type", "stream_test"); + Запись.Вставить("payload" , "{}"); + + Запись = OPI_Инструменты.JSONСтрокой(Запись) + Символы.ПС; + + Если Счетчик = 0 Тогда + Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", , Запись, ФорматДанных); + Иначе + МассивДанных.Добавить(Запись); + КонецЕсли; + + Счетчик = Счетчик + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + Опции.Вставить("data", МассивДанных); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ОбработатьОтправкуGRPC", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОбработатьОтправкуGRPC"); + +КонецПроцедуры + +Процедура ClickHouse_ОбработатьПолучениеGRPC(ПараметрыФункции) + + URL = "http://localhost:9101"; + URL = СтрШаблон("http://%1:%2", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПараметрыФункции["ClickHouse_PortGRPC"]); // SKIP + + Логин = ПараметрыФункции["ClickHouse_User"]; + Пароль = ПараметрыФункции["ClickHouse_Password"]; + + Авторизация = Новый Структура(Логин, Пароль); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("auth", Авторизация); + + НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции); + Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения); + + ТекстВыборки = "SELECT * FROM events_stream_test ORDER BY id"; + Опции = Новый Структура; + Опции.Вставить("query", ТекстВыборки); + Опции.Вставить("format", "JSON"); + + Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("req", Запрос); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ОбработатьПолучениеGRPC", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ClickHouse", "ОбработатьПолучениеGRPC"); + +КонецПроцедуры + +#КонецОбласти // ClickHouse + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure CH_CommonMethods() Export + CH_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Dropbox.os b/src/ru/OInt/tests/Modules/OPItc_Dropbox.os new file mode 100644 index 0000000000..5e08506c84 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Dropbox.os @@ -0,0 +1,858 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Dropbox.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Dropbox"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Dropbox"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Dropbox + +Процедура ДропБокс_ПолучитьОбновитьТокен() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appkey" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Appsecret", ПараметрыТеста); + + Dropbox_ПолучитьСсылкуАвторизации(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Code", ПараметрыТеста); + + Dropbox_ПолучитьТокен(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Refresh", ПараметрыТеста); + + Dropbox_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ЗагрузитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста); + + Dropbox_ЗагрузитьФайл(ПараметрыТеста); + Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); + Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыТеста); + Dropbox_ВосстановитьОбъектКВерсии(ПараметрыТеста); + Dropbox_ПолучитьПревью(ПараметрыТеста); + Dropbox_СкачатьФайл(ПараметрыТеста); + Dropbox_ПереместитьОбъект(ПараметрыТеста); + Dropbox_КопироватьОбъект(ПараметрыТеста); + Dropbox_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_СоздатьКаталог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_СоздатьПапку(ПараметрыТеста); + Dropbox_СкачатьПапку(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ПолучитьСписокФайловПапки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_ПолучитьСписокФайловПапки(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ЗагрузитьФайлПоURL() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Dropbox_ЗагрузитьФайлПоURL(ПараметрыТеста); + Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_СоздатьУдалитьТег() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_ДобавитьТег(ПараметрыТеста); + Dropbox_ПолучитьСписокТегов(ПараметрыТеста); + Dropbox_УдалитьТег(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_ПолучитьАккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token", ПараметрыТеста); + + Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыТеста); + +КонецПроцедуры + +Процедура ДропБокс_РаботаСДоступами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_OtherUser", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Dropbox_FileID" , ПараметрыТеста); + + Dropbox_ДобавитьПользователейКФайлу(ПараметрыТеста); + Dropbox_ОпубликоватьПапку(ПараметрыТеста); + Dropbox_ДобавитьПользователейКПапке(ПараметрыТеста); + Dropbox_ОтменитьПубликациюПапки(ПараметрыТеста); + Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыТеста); + Dropbox_ОтменитьПубликациюФайла(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Dropbox + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Dropbox + +Процедура Dropbox_ПолучитьСсылкуАвторизации(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСсылкуАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСсылкуАвторизации"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьТокен(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; + Код = ПараметрыФункции["Dropbox_Code"]; + + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + Опции.Вставить("appsecret", СекретПриложения); + Опции.Вставить("code", Код); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Dropbox_ОбновитьТокен(ПараметрыФункции) + + КлючПриложения = ПараметрыФункции["Dropbox_Appkey"]; + СекретПриложения = ПараметрыФункции["Dropbox_Appsecret"]; + РефрешТокен = ПараметрыФункции["Dropbox_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("appkey", КлючПриложения); + Опции.Вставить("appsecret", СекретПриложения); + Опции.Вставить("refresh", РефрешТокен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("detail", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбОбъекте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбОбъекте", , Путь); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьПревью(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьПревью", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьПревью"); + +КонецПроцедуры + +Процедура Dropbox_ЗагрузитьФайл(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Картинка = ПараметрыФункции["Picture"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", КартинкаПуть); + Опции.Вставить("path", Путь); + Опции.Вставить("overwrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ЗагрузитьФайл", , Путь); + + OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); + + Если Не OPI_Инструменты.ЭтоOneScript() И ПараметрыФункции.Свойство("Big") Тогда + + БольшойФайл = ПараметрыФункции["Big"]; + + Путь = "/giant.tmp"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", БольшойФайл); + Опции.Вставить("path", Путь); + Опции.Вставить("overwrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ЗагрузитьФайл", "Большой", Путь); + + КонецЕсли; + +КонецПроцедуры + +Процедура Dropbox_ЗагрузитьФайлПоURL(ПараметрыФункции) + + Путь = "/New/url_doc.docx"; + Токен = ПараметрыФункции["Dropbox_Token"]; + URL = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ЗагрузитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ЗагрузитьФайлПоURL", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСтатусЗагрузкиПоURL(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + ИДРаботы = ПараметрыФункции["Dropbox_Job"]; + Статус = "in_progress"; + + Пока Статус = "in_progress" Цикл + + Результат = OPI_Dropbox.ПолучитьСтатусЗагрузкиПоURL(Токен, ИДРаботы); + Статус = Результат[".tag"]; + + OPI_Инструменты.Пауза(5); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL", "Прогресс"); // SKIP + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL"); + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/url_doc.docx"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусЗагрузкиПоURL", "Удаление", Путь); + +КонецПроцедуры + +Процедура Dropbox_УдалитьОбъект(ПараметрыФункции) + + Путь = "/New/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "УдалитьОбъект", , Путь); + +КонецПроцедуры + +Процедура Dropbox_КопироватьОбъект(ПараметрыФункции) + + Оригинал = "/New/pic.png"; + Копия = "/New/pic_copy.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Оригинал); + Опции.Вставить("to", Копия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "КопироватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "КопироватьОбъект", , Копия); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Копия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "КопироватьОбъект", "Удаление", Копия); + +КонецПроцедуры + +Процедура Dropbox_ПереместитьОбъект(ПараметрыФункции) + + ОригинальныйПуть = "/New/pic.png"; + ЦелевойПуть = "/pic.png"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", ОригинальныйПуть); + Опции.Вставить("to", ЦелевойПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПереместитьОбъект", , ЦелевойПуть); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", ЦелевойПуть); + Опции.Вставить("to", ОригинальныйПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПереместитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПереместитьОбъект", "Удаление", ОригинальныйПуть); + +КонецПроцедуры + +Процедура Dropbox_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/Новый каталог"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СоздатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "СоздатьПапку", , Путь); + + OPI_Dropbox.УдалитьОбъект(Токен, Путь); + +КонецПроцедуры + +Процедура Dropbox_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "СкачатьФайл"); + +КонецПроцедуры + +Процедура Dropbox_СкачатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "СкачатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "СкачатьПапку"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСписокФайловПапки(ПараметрыФункции) + + Путь = "/New"; + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("detail", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокФайловПапки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСписокФайловПапки"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСписокВерсийОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("amount", 1); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокВерсийОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСписокВерсийОбъекта", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Dropbox_ВосстановитьОбъектКВерсии(ПараметрыФункции) + + Версия = ПараметрыФункции["Dropbox_FileRevision"]; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("rev", Версия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ВосстановитьОбъектКВерсии", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ВосстановитьОбъектКВерсии", , Путь); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСписокТегов(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + МассивПутей = Новый Массив; + МассивПутей.Добавить("/New/Dogs.mp3"); + МассивПутей.Добавить("/New/mydoc.docx"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", МассивПутей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСписокТегов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСписокТегов", , ПараметрыФункции, МассивПутей); + +КонецПроцедуры + +Процедура Dropbox_ДобавитьТег(ПараметрыФункции) + + Тег = "Important"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("tag", Тег); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьТег", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьТег"); + +КонецПроцедуры + +Процедура Dropbox_УдалитьТег(ПараметрыФункции) + + Тег = "Important"; + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New/mydoc.docx"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("tag", Тег); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "УдалитьТег", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "УдалитьТег"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбАккаунте"); + + IDАккаунта = Результат["account_id"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("account", IDАккаунта); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьИнформациюОбАккаунте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьИнформациюОбАккаунте", "По ID"); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьДанныеИспользованияПространства(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьДанныеИспользованияПространства", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьДанныеИспользованияПространства"); + +КонецПроцедуры + +Процедура Dropbox_ДобавитьПользователейКФайлу(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Почта = ПараметрыФункции["Dropbox_OtherUser"]; + Файл = ПараметрыФункции["Dropbox_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", Файл); + Опции.Вставить("emails", Почта); + Опции.Вставить("readonly", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКФайлу", , Почта, Ложь); + + Почты = Новый Массив; + Почты.Добавить(Почта); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", Файл); + Опции.Вставить("emails", Почты); + Опции.Вставить("readonly", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКФайлу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКФайлу", , Почта, Истина); + +КонецПроцедуры + +Процедура Dropbox_ОпубликоватьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Путь = "/New"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОпубликоватьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОпубликоватьПапку", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Dropbox_ОтменитьПубликациюПапки(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Папка = ПараметрыФункции["Dropbox_SharedFolder"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("folder", Папка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюПапки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОтменитьПубликациюПапки"); // SKIP + + ТекущийСтатус = "in_progress"; + IDРаботы = Результат["async_job_id"]; + + Пока ТекущийСтатус = "in_progress" Цикл + Результат = OPI_Dropbox.ПолучитьСтатусАсинхронногоИзменения(Токен, IDРаботы); + ТекущийСтатус = Результат[".tag"]; + OPI_Инструменты.Пауза(3); + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОтменитьПубликациюПапки", "Окончание", ПараметрыФункции, IDРаботы); + +КонецПроцедуры + +Процедура Dropbox_ПолучитьСтатусАсинхронногоИзменения(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + IDРаботы = ПараметрыФункции["Dropbox_NewJobID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("job", IDРаботы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ПолучитьСтатусАсинхронногоИзменения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ПолучитьСтатусАсинхронногоИзменения"); + +КонецПроцедуры + +Процедура Dropbox_ДобавитьПользователейКПапке(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Почта = ПараметрыФункции["Dropbox_OtherUser"]; + Папка = ПараметрыФункции["Dropbox_SharedFolder"]; // shared_folder_id + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("folder", Папка); + Опции.Вставить("emails", Почта); + Опции.Вставить("readonly", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКПапке"); + + Почты = Новый Массив; + Почты.Добавить(Почта); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("folder", Папка); + Опции.Вставить("emails", Почты); + Опции.Вставить("readonly", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ДобавитьПользователейКПапке", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ДобавитьПользователейКПапке", "Дополнительный"); + +КонецПроцедуры + +Процедура Dropbox_ОтменитьПубликациюФайла(ПараметрыФункции) + + Токен = ПараметрыФункции["Dropbox_Token"]; + Файл = ПараметрыФункции["Dropbox_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("dropbox", "ОтменитьПубликациюФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Dropbox", "ОтменитьПубликациюФайла"); + +КонецПроцедуры + +#КонецОбласти // Dropbox + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure DropboxAPI_GetUpdateToken() Export + ДропБокс_ПолучитьОбновитьТокен(); +EndProcedure + +Procedure DropboxAPI_UploadFile() Export + ДропБокс_ЗагрузитьФайл(); +EndProcedure + +Procedure DropboxAPI_CreateFolder() Export + ДропБокс_СоздатьКаталог(); +EndProcedure + +Procedure DropboxAPI_GetFolderFileList() Export + ДропБокс_ПолучитьСписокФайловПапки(); +EndProcedure + +Procedure DropboxAPI_UploadFileByURL() Export + ДропБокс_ЗагрузитьФайлПоURL(); +EndProcedure + +Procedure DropboxAPI_CreateDeleteTag() Export + ДропБокс_СоздатьУдалитьТег(); +EndProcedure + +Procedure DropboxAPI_GetAccount() Export + ДропБокс_ПолучитьАккаунт(); +EndProcedure + +Procedure DropboxAPI_AccessManagement() Export + ДропБокс_РаботаСДоступами(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_FTP.os b/src/ru/OInt/tests/Modules/OPItc_FTP.os new file mode 100644 index 0000000000..cdaa1c5460 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_FTP.os @@ -0,0 +1,2000 @@ +// OneScript: ./OInt/tests/Modules/OPItc_FTP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("FTP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("FTP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область FTP + +Процедура FT_РаботаСДиректориями() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + FTP_ОчиститьДиректорию(ПараметрыТеста); + FTP_СоздатьНовуюДиректорию(ПараметрыТеста); + FTP_ПолучитьТекущийКаталог(ПараметрыТеста); + FTP_ИзменитьТекущийКаталог(ПараметрыТеста); + FTP_ПолучитьСписокОбъектов(ПараметрыТеста); + FTP_УдалитьДиректорию(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура FT_РаботаСФайлами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + FTP_ЗагрузитьФайл(ПараметрыТеста); + FTP_СохранитьФайл(ПараметрыТеста); + FTP_ПолучитьДанныеФайла(ПараметрыТеста); + FTP_УдалитьФайл(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура FT_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + FTP_ОткрытьСоединение(ПараметрыТеста); + FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста); + FTP_ПолучитьСписокРасширенийПротокола(ПараметрыТеста); + FTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста); + FTP_ЗакрытьСоединение(ПараметрыТеста); + FTP_ЭтоКоннектор(ПараметрыТеста); + FTP_ПолучитьНастройкиСоединения(ПараметрыТеста); + FTP_ПолучитьНастройкиПрокси(ПараметрыТеста); + FTP_ПолучитьНастройкиTLS(ПараметрыТеста); + FTP_ПолучитьРазмерОбъекта(ПараметрыТеста); + FTP_ИзменитьПуть(ПараметрыТеста); + FTP_ВыполнитьНестандартнуюКоманду(ПараметрыТеста); + FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыТеста); + FTP_Пинг(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // FTP + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область FTP + +Процедура FTP_ОткрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ОткрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьПриветственноеСообщение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьПриветственноеСообщение", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьПриветственноеСообщение", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьКонфигурациюСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("set", НастройкиFTP); + Опции.Вставить("proxy", НастройкиПрокси); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьКонфигурациюСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьКонфигурациюСоединения", Постфикс, ПараметрыФункции); + + Опции = Новый Структура; + Опции.Вставить("conn", Результат); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьПриветственноеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "FTP", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ЗакрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "FTP", "ЗакрытьСоединение", "Открытие, " + Постфикс); // SKIP + + Результат = OPI_FTP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ЗакрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура FTP_ЭтоКоннектор(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "FTP", "ЭтоКоннектор", "Открытие, " + Постфикс); // SKIP + + Результат = OPI_FTP.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ЭтоКоннектор", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьНастройкиСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьНастройкиСоединения", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьНастройкиПрокси(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьНастройкиПрокси", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьНастройкиTLS(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьНастройкиTLS", Постфикс); + +КонецПроцедуры + +Процедура FTP_СоздатьНовуюДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Удаление = OPI_FTP.УдалитьДиректорию(Соединение, "new_dir"); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Удаление, "FTP", "СоздатьНовуюДиректорию", "Удаление, " + Постфикс); // SKIP + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", Постфикс, Истина); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/another_one"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", "Вложенная, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "second_dir/another_one"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СоздатьНовуюДиректорию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СоздатьНовуюДиректорию", "Двойная, " + Постфикс); + + OPI_Инструменты.Пауза(5); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + Опции.Вставить("rcv", Истина); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "FTP", "СоздатьНовуюДиректорию", "Проверка 1, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", ""); + Опции.Вставить("rcv", Истина); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "FTP", "СоздатьНовуюДиректорию", "Проверка 2, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьСписокОбъектов(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", ""); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьСписокОбъектов", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "Dir1/Dir3/Git-2.50.0-64-bit.exe"); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьСписокОбъектов", "Файл, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ЗагрузитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + КартинкаПуть = "C:\pic.png"; + + Картинка = ПараметрыФункции["Picture"]; // SKIP + ИВФ = ПолучитьИмяВременногоФайла("png"); // SKIP + КопироватьФайл(Картинка, ИВФ); // SKIP + Картинка = ИВФ; // SKIP + + КартинкаДД = Новый ДвоичныеДанные(Картинка); + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", 1000); + Опции.Вставить("wtout", 1000); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", Картинка); + Опции.Вставить("path", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ЗагрузитьФайл", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", КартинкаДД); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ЗагрузитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ЗагрузитьФайл", Постфикс , КартинкаДД.Размер()); + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Двоичные, " + Постфикс, КартинкаДД.Размер()); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ЗагрузитьФайл", "Размер 1, " + Постфикс, КартинкаДД.Размер()); + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Размер 2, " + Постфикс, КартинкаДД.Размер()); + + Для Н = 1 По 5 Цикл + + Результат = OPI_FTP.ЗагрузитьФайл(Соединение, Картинка, "new_dir/pic_from_disk.png"); + Результат2 = OPI_FTP.ЗагрузитьФайл(Соединение, КартинкаДД, "pic_from_binary.png"); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ЗагрузитьФайл", "Множественный, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + Если Не Результат2["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "FTP", "ЗагрузитьФайл", "Множественный, двоичные, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура FTP_УдалитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьФайл", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьФайл", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьФайл", "Несуществующий, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", ""); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьФайл", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_УдалитьДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/another_one"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "УдалитьДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "УдалитьДиректорию", Постфикс); + +КонецПроцедуры + +Процедура FTP_ОчиститьДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ОчиститьДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ОчиститьДиректорию", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ОчиститьДиректорию", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьРазмерОбъекта(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ПолучитьРазмерОбъекта", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/another.bin"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ПолучитьРазмерОбъекта", "Несуществующий, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_ИзменитьПуть(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "new_dir/pic_from_disk.png"); + Опции.Вставить("new", "new_dir/pic_copy.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_copy.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Проверка, новый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Проверка, старый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "new_dir"); + Опции.Вставить("new", "brand_new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Каталог, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Список, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "brand_new_dir"); + Опции.Вставить("new", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Каталог, обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "new_dir/pic_copy.png"); + Опции.Вставить("new", "new_dir/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "."); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "FTP", "ИзменитьПуть", "Список, обратно, " + Постфикс); + +КонецПроцедуры + +Процедура FTP_СохранитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "new_dir/pic_from_disk.png"; + ИмяФайла = ПолучитьИмяВременногоФайла("bin"); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + Опции.Вставить("file", ИмяФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "СохранитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СохранитьФайл", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + + Размер = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Размер, "FTP", "СохранитьФайл", "Размер, " + Постфикс); + + ФайлОбъект = Новый Файл(ИмяФайла); + + РазмерФайла = ФайлОбъект.Размер(); + РазмерРезультата = Результат["bytes"]; + РазмерПроверки = Размер["bytes"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайла, "FTP", "СохранитьФайл", "Размер файла, " + Постфикс, РазмерРезультата, РазмерПроверки); + + Путь = "new_dir/pic_from_disk.png"; + + Для Н = 1 По 5 Цикл + + Результат = OPI_FTP.СохранитьФайл(Соединение, Путь, ИмяФайла); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "СохранитьФайл", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИмяФайла, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура FTP_ПолучитьДанныеФайла(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "new_dir/pic_from_disk.png"; + Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьДанныеФайла", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + + Размер = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Размер, "FTP", "ПолучитьДанныеФайла", "Размер, " + Постфикс); + + РазмерФайла = Результат.Размер(); + РазмерПроверки = Размер["bytes"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайла, "FTP", "ПолучитьДанныеФайла", "Размер файла, " + Постфикс, РазмерПроверки); + + Путь = "new_dir/pic_from_disk.png"; + + Для Н = 1 По 5 Цикл + + Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь); + + Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьДанныеФайла", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура FTP_Пинг(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "Пинг", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "Пинг", Постфикс); + +КонецПроцедуры + +Процедура FTP_ВыполнитьНестандартнуюКоманду(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + ТекстКоманды = "UMASK"; + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("cmd", ТекстКоманды); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ВыполнитьНестандартнуюКоманду", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ВыполнитьНестандартнуюКоманду", Постфикс); + +КонецПроцедуры + +Процедура FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + + ТекстКоманды = "PWD"; + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("cmd", ТекстКоманды); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ВыполнитьПроизвольнуюКоманду", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ВыполнитьПроизвольнуюКоманду", Постфикс); + +КонецПроцедуры + +Процедура FTP_ПолучитьТекущийКаталог(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьТекущийКаталог", Постфикс, ПараметрыФункции); + +КонецПроцедуры + +Процедура FTP_ИзменитьТекущийКаталог(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Путь = "new_dir"; + Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, " + Постфикс, Путь); + + Путь = ПараметрыФункции["FTP_RootPath"]; + Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьТекущийКаталог", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, обратно, " + Постфикс, Путь); + +КонецПроцедуры + +Процедура FTP_ПолучитьСписокРасширенийПротокола(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["FTP_IP"]; + Порт = ПараметрыФункции["FTP_Port"]; + Логин = ПараметрыФункции["FTP_User"]; + Пароль = ПараметрыФункции["FTP_Password"]; + + ИспользоватьПрокси = Истина; + FTPS = Истина; + + НастройкиПрокси = Неопределено; + НастройкиTLS = Неопределено; // FTPS + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + FTPS = ПараметрыФункции["TLS"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиСоединения", Опции); + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Если FTPS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьНастройкиTLS", Опции); + КонецЕсли; + + Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS); + + Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокРасширенийПротокола", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "FTP", "ПолучитьСписокРасширенийПротокола", Постфикс); + +КонецПроцедуры + +#КонецОбласти // FTP + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure FT_DirecotryManagement() Export + FT_РаботаСДиректориями(); +EndProcedure + +Procedure FT_FileOperations() Export + FT_РаботаСФайлами(); +EndProcedure + +Procedure FT_CommonMethods() Export + FT_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GRPC.os b/src/ru/OInt/tests/Modules/OPItc_GRPC.os new file mode 100644 index 0000000000..00545d6d32 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GRPC.os @@ -0,0 +1,1282 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GRPC.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GRPC"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GRPC"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GRPC + +Процедура GR_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_AddressNoTls", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoTS" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + GRPC_ОткрытьСоединение(ПараметрыТеста); + GRPC_ЗакрытьСоединение(ПараметрыТеста); + GRPC_ЭтоКоннектор(ПараметрыТеста); + GRPC_УстановитьМетаданные(ПараметрыТеста); + GRPC_ВызватьМетод(ПараметрыТеста); + GRPC_ПолучитьНастройкиTls(ПараметрыТеста); + GRPC_ПолучитьПараметрыСоединения(ПараметрыТеста); + +КонецПроцедуры + +Процедура GR_Интроспекция() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport", ПараметрыТеста); + + GRPC_ПолучитьСписокСервисов(ПараметрыТеста); + GRPC_ПолучитьСписокМетодов(ПараметрыТеста); + GRPC_ПолучитьМетод(ПараметрыТеста); + +КонецПроцедуры + +Процедура GR_Стриминг() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_AddressNoTls", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_Proto" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoTS" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GRPC_ProtoImport" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + GRPC_ИнициализироватьСерверныйПоток(ПараметрыТеста); + GRPC_ИнициализироватьКлиентскийПоток(ПараметрыТеста); + GRPC_ИнициализироватьДвунаправленныйПоток(ПараметрыТеста); + GRPC_ОтправитьСообщение(ПараметрыТеста); + GRPC_ПолучитьСообщение(ПараметрыТеста); + GRPC_ЗакрытьПоток(ПараметрыТеста); + GRPC_ОбработатьСерверныйПоток(ПараметрыТеста); + GRPC_ОбработатьКлиентскийПоток(ПараметрыТеста); + GRPC_ОбработатьДвунаправленныйПоток(ПараметрыТеста); + GRPC_ЗавершитьОтправку(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GRPC + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GRPC + +Процедура GRPC_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Результат = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение"); + + Результат = OPI_GRPC.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение", "Закрытие"); + + Адрес = ПараметрыФункции["GRPC_AddressNoTls"]; + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Результат = OPI_GRPC.ОткрытьСоединение(Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение", "Без TLS"); + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto", Proto1); + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Результат = OPI_GRPC.ОткрытьСоединение(Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОткрытьСоединение", "Ошибка"); + +КонецПроцедуры + +Процедура GRPC_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Результат = OPI_GRPC.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура GRPC_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Результат = OPI_GRPC.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьПараметрыСоединения(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьПараметрыСоединения"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьНастройкиTls(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьНастройкиTls"); + +КонецПроцедуры + +Процедура GRPC_УстановитьМетаданные(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Мета = Новый Структура("somekey", "somevalue"); + Результат = OPI_GRPC.УстановитьМетаданные(Соединение, Мета); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "УстановитьМетаданные"); + + Если Не OPI_ПолучениеДанныхТестов.ЭтоТестCLI() Тогда + + Сервис = "grpcbin.GRPCBin"; + Метод = "HeadersUnary"; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Неопределено); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "УстановитьМетаданные", "Проверка"); + + КонецЕсли; + +КонецПроцедуры + +Процедура GRPC_ВызватьМетод(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Мета = Новый Структура("somekey", "somevalue"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + Опции.Вставить("meta", Мета); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyUnary"; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + МассивЧисел = Новый Массив; + МассивЧисел.Добавить(1); + МассивЧисел.Добавить(10); + МассивЧисел.Добавить(100); + + МассивСтруктур = Новый Массив; + МассивСтруктур.Добавить(Новый Структура("f_string", "Nested value 1")); + МассивСтруктур.Добавить(Новый Структура("f_string", "Nested value 2")); + + МассивБулево = Новый Массив; + МассивБулево.Добавить(Истина); + МассивБулево.Добавить(Ложь); + + Файл = ПараметрыФункции["Document"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + + ИВФ = ПолучитьИмяВременногоФайла(); + Файл.Записать(ИВФ); + + МассивДвоичныхДанных = Новый Массив; + МассивДвоичныхДанных.Добавить(Файл); // Как данные + МассивДвоичныхДанных.Добавить(ИВФ); // Как путь к файлу + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_int64" , 123); + Данные.Вставить("f_float" , 123.22000122070312); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_enum" , "ENUM_1"); + Данные.Вставить("f_bytes" , Файл); + Данные.Вставить("f_sub" , Новый Структура("f_string" , "Nested value")); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_int32s" , МассивЧисел); + Данные.Вставить("f_int64s" , МассивЧисел); + Данные.Вставить("f_floats" , МассивЧисел); + Данные.Вставить("f_bytess" , МассивДвоичныхДанных); + Данные.Вставить("f_subs" , МассивСтруктур); + Данные.Вставить("f_bools" , МассивБулево); + Данные.Вставить("f_enums" , СтрРазделить("ENUM_1,ENUM_2", ",")); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Данные); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ВызватьМетод"); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Неопределено); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ВызватьМетод", "Пустой"); + + Метод = "HeadersUnary"; + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Неопределено); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ВызватьМетод", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ВызватьМетод", "Мета"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьСписокСервисов(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схема); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьСписокСервисов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьСписокСервисов"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьСписокМетодов(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схема); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Сервис = "grpcbin.GRPCBin"; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("service", Сервис); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьСписокМетодов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьСписокМетодов"); + +КонецПроцедуры + +Процедура GRPC_ПолучитьМетод(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + Схема = ПараметрыФункции["GRPC_Proto"]; // Строка, путь к файлу или URL + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схема); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + Сервис = "grpcbin.GRPCBin"; + Метод = "Index"; + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьМетод", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьМетод"); + +КонецПроцедуры + +Процедура GRPC_ИнициализироватьСерверныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + МассивСообщений = Новый Массив; + + Пока Истина Цикл + + ТекущееСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + + Если Не ТекущееСообщение["result"] Тогда + + Ошибка = ТекущееСообщение["error"]; + + Если Ошибка = "Timeout" Тогда + Продолжить; + ИначеЕсли Ошибка = "Closed" Тогда + Прервать; + Иначе + ВызватьИсключение Ошибка; + КонецЕсли; + + Иначе + + ДанныеСообщения = ТекущееСообщение["message"]; + + Если ЗначениеЗаполнено(ДанныеСообщения) Тогда + МассивСообщений.Добавить(ДанныеСообщения); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "GRPC", "ИнициализироватьСерверныйПоток"); + OPI_ПолучениеДанныхТестов.Обработать(МассивСообщений, "GRPC", "ИнициализироватьСерверныйПоток", "Массив"); + +КонецПроцедуры + +Процедура GRPC_ИнициализироватьКлиентскийПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + ФинальноеСообщение = Неопределено; + + Счетчик = 0; + Пока Истина Цикл + + ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); + Счетчик = Счетчик + 1; + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка = "Timeout" Тогда + Продолжить; + ИначеЕсли Ошибка = "Closed" Тогда + ФинальноеСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + Прервать; + Иначе + ВызватьИсключение СтрШаблон("%1 (отправлено сообщений %2)", Ошибка, Счетчик); + КонецЕсли; + + Иначе + + Если Счетчик = 10 Тогда + Завершение = OPI_GRPC.ЗавершитьОтправку(Соединение, IDПотока); + ФинальноеСообщение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + Прервать; + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(ФинальноеСообщение, "GRPC", "ИнициализироватьКлиентскийПоток", , Счетчик); + +КонецПроцедуры + +Процедура GRPC_ИнициализироватьДвунаправленныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyBidirectionalStreamStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьДвунаправленныйПоток(Соединение, Сервис, Метод); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + МассивРезультата = Новый Массив; + Счетчик = 0; + + Пока Счетчик < 10 Цикл + + Данные.Вставить("f_int32", Счетчик + 1); + + ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); + + Если Не ТекущаяОтправка["result"] Тогда + + Ошибка = ТекущаяОтправка["error"]; + + Если Ошибка = "Timeout" Тогда + Продолжить; + Иначе + ВызватьИсключение СтрШаблон("Ошибка отправки: %1 (обработано сообщений %2)", Ошибка, Счетчик); + КонецЕсли; + + КонецЕсли; + + ТекущееПолучение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + + Если Не ТекущееПолучение["result"] Тогда + ВызватьИсключение СтрШаблон("Ошибка получения: %1 (обработано сообщений %2)", Ошибка, Счетчик); + КонецЕсли; + + МассивРезультата.Добавить(ТекущееПолучение["message"]); + Счетчик = Счетчик + 1; + + КонецЦикла; + + OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ИнициализироватьДвунаправленныйПоток", , МассивРезультата); + +КонецПроцедуры + +Процедура GRPC_ОтправитьСообщение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные); // <--- + Закрытие = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОтправитьСообщение", , Закрытие); + +КонецПроцедуры + +Процедура GRPC_ПолучитьСообщение(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + МассивЧисел = Новый Массив; + МассивЧисел.Добавить(1); + МассивЧисел.Добавить(10); + МассивЧисел.Добавить(100); + + Файл = ПараметрыФункции["Document"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + + ИВФ = ПолучитьИмяВременногоФайла(); + Файл.Записать(ИВФ); + + МассивДвоичныхДанных = Новый Массив; + МассивДвоичныхДанных.Добавить(Файл); // Как данные + МассивДвоичныхДанных.Добавить(ИВФ); // Как путь к файлу + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_int64" , 123); + Данные.Вставить("f_float" , 123.22000122070312); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_enum" , "ENUM_1"); + Данные.Вставить("f_bytes" , Файл); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_int32s" , МассивЧисел); + Данные.Вставить("f_bytess" , МассивДвоичныхДанных); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); // <--- + Закрытие = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); + + // END + + Данные.Вставить("f_int64s", Новый Массив); + Данные.Вставить("f_enums" , Новый Массив); + Данные.Вставить("f_floats", Новый Массив); + Данные.Вставить("f_bools" , Новый Массив); + Данные.Вставить("f_subs" , Новый Массив); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ПолучитьСообщение", , Закрытие, Данные); + +КонецПроцедуры + +Процедура GRPC_ЗакрытьПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, Данные); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗакрытьПоток"); + + Результат = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗакрытьПоток", "Отправка"); + +КонецПроцедуры + +Процедура GRPC_ОбработатьСерверныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyServerStream"; + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", Данные); + Опции.Вставить("tls", Tls); + Опции.Вставить("count", 3); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьСерверныйПоток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьСерверныйПоток"); + +КонецПроцедуры + +Процедура GRPC_ОбработатьКлиентскийПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_int32" , 123); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + МассивЗапросов = Новый Массив; + + Для Н = 1 По 10 Цикл + МассивЗапросов.Добавить(Данные); + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", МассивЗапросов); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьКлиентскийПоток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьКлиентскийПоток"); + + МассивЗапросов.Удалить(МассивЗапросов.ВГраница()); + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("data", МассивЗапросов); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьКлиентскийПоток", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьКлиентскийПоток", "Ошибка"); + +КонецПроцедуры + +Процедура GRPC_ОбработатьДвунаправленныйПоток(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("one"); + МассивСтрок.Добавить("two"); + МассивСтрок.Добавить("three"); + + Данные = Новый Соответствие; + Данные.Вставить("f_string" , "Test message"); + Данные.Вставить("f_bool" , Истина); + Данные.Вставить("f_strings", МассивСтрок); + Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value")); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyBidirectionalStreamStream"; + + ПорядокОбмена = Новый Массив; + + Для Н = 1 По 10 Цикл + + ПорядокОбмена.Добавить(Данные); // Одно отправляем + ПорядокОбмена.Добавить(Неопределено); // Одно получаем + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("conn", Параметры); + Опции.Вставить("service", Сервис); + Опции.Вставить("method", Метод); + Опции.Вставить("exch", ПорядокОбмена); + Опции.Вставить("tls", Tls); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ОбработатьДвунаправленныйПоток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ОбработатьДвунаправленныйПоток"); + +КонецПроцедуры + +Процедура GRPC_ЗавершитьОтправку(ПараметрыФункции) + + Адрес = ПараметрыФункции["GRPC_Address"]; + + Proto1 = ПараметрыФункции["GRPC_ProtoImport"]; // Строка, путь к файлу или URL + Proto2 = ПараметрыФункции["GRPC_ProtoTS"]; // Строка, путь к файлу или URL + + Схемы = Новый Соответствие; + Схемы.Вставить("main.proto" , Proto1); // Основной + Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("proto", Схемы); + + Параметры = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьПараметрыСоединения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("grpc", "ПолучитьНастройкиTls", Опции); + + Сервис = "grpcbin.GRPCBin"; + Метод = "DummyClientStream"; + + Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls); + + Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда + ВызватьИсключение Соединение["error"]; + КонецЕсли; + + Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод); + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + Иначе + IDПотока = Результат["streamId"]; + КонецЕсли; + + Результат = OPI_GRPC.ЗавершитьОтправку(Соединение, IDПотока); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GRPC", "ЗавершитьОтправку"); + +КонецПроцедуры + +#КонецОбласти // GRPC + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GR_CommonMethods() Export + GR_ОсновныеМетоды(); +EndProcedure + +Procedure GR_Introspection() Export + GR_Интроспекция(); +EndProcedure + +Procedure GR_Streaming() Export + GR_Стриминг(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GoogleCalendar.os b/src/ru/OInt/tests/Modules/OPItc_GoogleCalendar.os new file mode 100644 index 0000000000..21e67392d8 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GoogleCalendar.os @@ -0,0 +1,631 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleCalendar.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleCalendar"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleCalendar"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleCalendar + +Процедура ГК_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleCalendar_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleCalendar_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleCalendar_ОбновитьТокен(ПараметрыТеста); + GoogleCalendar_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГК_ПолучитьСписокКалендарей() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГК_СоздатьУдалитьКалендарь() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); + GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыТеста); + GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыТеста); + GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыТеста); + GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыТеста); + GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыТеста); + GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыТеста); + // !DISABLED! GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыТеста); + GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ГК_СоздатьУдалитьСобытие() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_NewCalendarID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_CalendarID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + GoogleCalendar_СоздатьКалендарь(ПараметрыТеста); + GoogleCalendar_СоздатьСобытие(ПараметрыТеста); + GoogleCalendar_ИзменитьСобытие(ПараметрыТеста); + GoogleCalendar_ПолучитьСобытие(ПараметрыТеста); + GoogleCalendar_ПереместитьСобытие(ПараметрыТеста); + GoogleCalendar_ПолучитьСписокСобытий(ПараметрыТеста); + GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыТеста); + GoogleCalendar_УдалитьСобытие(ПараметрыТеста); + GoogleCalendar_УдалитьКалендарь(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +#КонецОбласти // GoogleCalendar + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleCalendar + +Процедура GoogleCalendar_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleCalendar_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьСписокКалендарей(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокКалендарей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьСписокКалендарей"); + +КонецПроцедуры + +Процедура GoogleCalendar_СоздатьКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Наименование = "Тестовый календарь"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "СоздатьКалендарь", , ПараметрыФункции, Наименование); + +КонецПроцедуры + +Процедура GoogleCalendar_ИзменитьМетаданныеКалендаря(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("title", Наименование); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьМетаданныеКалендаря", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ИзменитьМетаданныеКалендаря", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьМетаданныеКалендаря(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьМетаданныеКалендаря", Опции); + + // END + + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьМетаданныеКалендаря", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ДобавитьКалендарьВСписок(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ДобавитьКалендарьВСписок", Опции); + + // END + + Наименование = "Новое наименование"; + Описание = "Новое описание"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ДобавитьКалендарьВСписок", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ИзменитьКалендарьСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + ОсновнойЦвет = "#000000"; + ДополнительныйЦвет = "#ffd800"; + Скрытый = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("primary", ОсновнойЦвет); + Опции.Вставить("secondary", ДополнительныйЦвет); + Опции.Вставить("hidden", Скрытый); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьКалендарьСписка", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ИзменитьКалендарьСписка", , ОсновнойЦвет, ДополнительныйЦвет); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьКалендарьСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьКалендарьСписка", Опции); + + // END + + ОсновнойЦвет = "#000000"; + ДополнительныйЦвет = "#ffd800"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьКалендарьСписка", , ОсновнойЦвет, ДополнительныйЦвет); + +КонецПроцедуры + +Процедура GoogleCalendar_ОчиститьОсновнойКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ОчиститьОсновнойКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ОчиститьОсновнойКалендарь"); + +КонецПроцедуры + +Процедура GoogleCalendar_УдалитьКалендарьИзСписка(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарьИзСписка", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "УдалитьКалендарьИзСписка"); + +КонецПроцедуры + +Процедура GoogleCalendar_УдалитьКалендарь(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьКалендарь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "УдалитьКалендарь"); + +КонецПроцедуры + +Процедура GoogleCalendar_СоздатьСобытие(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Наименование = "Новое событие"; + Описание = "Описание тестового события"; + Час = 3600; + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + Вложения = Новый Соответствие; + + Вложения.Вставить("Картинка1", Картинка1); + Вложения.Вставить("Картинка2", Картинка2); + + ОписаниеСобытия = Новый Соответствие; + ОписаниеСобытия.Вставить("Описание" , Описание); + ОписаниеСобытия.Вставить("Заголовок" , Наименование); + ОписаниеСобытия.Вставить("МестоПроведения" , "В офисе"); + ОписаниеСобытия.Вставить("ДатаНачала" , ТекущаяДата); + ОписаниеСобытия.Вставить("ДатаОкончания" , ОписаниеСобытия["ДатаНачала"] + Час); + ОписаниеСобытия.Вставить("МассивURLФайловВложений", Вложения); + ОписаниеСобытия.Вставить("ОтправлятьУведомления" , Истина); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("props", ОписаниеСобытия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "СоздатьСобытие", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "СоздатьСобытие", , ПараметрыФункции, Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ИзменитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + Описание = "Новое описание события"; + + ОписаниеСобытия = Новый Соответствие; + ОписаниеСобытия.Вставить("Описание", Описание); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("props", ОписаниеСобытия); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ИзменитьСобытие", Опции); + + // END + + Наименование = "Новое событие"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ИзменитьСобытие", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСобытие", Опции); + + // END + + Наименование = "Новое событие"; + Описание = "Новое описание события"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьСобытие", , Наименование, Описание); + +КонецПроцедуры + +Процедура GoogleCalendar_ПереместитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Событие = ПараметрыФункции["Google_EventID"]; + + КалендарьИсточник = ПараметрыФункции["Google_NewCalendarID"]; + КалендарьПриемник = ПараметрыФункции["Google_CalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", КалендарьИсточник); + Опции.Вставить("to", КалендарьПриемник); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПереместитьСобытие", Опции); + + // END + + Наименование = "Новое событие"; + Описание = "Новое описание события"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПереместитьСобытие", , Наименование, Описание); + + OPI_GoogleCalendar.ПереместитьСобытие(Токен, КалендарьПриемник, КалендарьИсточник, Событие); + +КонецПроцедуры + +Процедура GoogleCalendar_УдалитьСобытие(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + Событие = ПараметрыФункции["Google_EventID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + Опции.Вставить("event", Событие); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "УдалитьСобытие", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "УдалитьСобытие"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьСписокСобытий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Календарь = ПараметрыФункции["Google_NewCalendarID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("calendar", Календарь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьСписокСобытий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьСписокСобытий"); + +КонецПроцедуры + +Процедура GoogleCalendar_ПолучитьОписаниеСобытия(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gcalendar", "ПолучитьОписаниеСобытия", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleCalendar", "ПолучитьОписаниеСобытия"); + +КонецПроцедуры + +#КонецОбласти // GoogleCalendar + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GC_Authorization() Export + ГК_Авторизация(); +EndProcedure + +Procedure GC_GetCalendarList() Export + ГК_ПолучитьСписокКалендарей(); +EndProcedure + +Procedure GC_CreateDeleteCalendar() Export + ГК_СоздатьУдалитьКалендарь(); +EndProcedure + +Procedure GC_CreateDeleteEvent() Export + ГК_СоздатьУдалитьСобытие(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GoogleDrive.os b/src/ru/OInt/tests/Modules/OPItc_GoogleDrive.os new file mode 100644 index 0000000000..e286740eaa --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GoogleDrive.os @@ -0,0 +1,609 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleDrive.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleDrive"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleDrive"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleDrive + +Процедура ГД_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleDrive_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleDrive_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleDrive_ОбновитьТокен(ПараметрыТеста); + GoogleDrive_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГД_ПолучитьСписокКаталогов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleDrive_ПолучитьСписокКаталогов(ПараметрыТеста); + GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГД_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Big" , ПараметрыТеста); + + ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); + + GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); + GoogleDrive_СкопироватьОбъект(ПараметрыТеста); + GoogleDrive_СкачатьФайл(ПараметрыТеста); + GoogleDrive_ОбновитьФайл(ПараметрыТеста); + GoogleDrive_ПолучитьСписокФайлов(ПараметрыТеста); + GoogleDrive_УдалитьОбъект(ПараметрыТеста); + GoogleDrive_ПолучитьОписаниеФайла(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ГД_СоздатьУдалитьКомментарий() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + ПараметрыТеста.Вставить("МассивУдаляемых", Новый Массив); + + GoogleDrive_ЗагрузитьФайл(ПараметрыТеста); + + GoogleDrive_СоздатьКомментарий(ПараметрыТеста); + GoogleDrive_ПолучитьКомментарий(ПараметрыТеста); + GoogleDrive_ПолучитьСписокКомментариев(ПараметрыТеста); + GoogleDrive_УдалитьКомментарий(ПараметрыТеста); + + GoogleDrive_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГД_СоздатьКаталог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GD_Catalog" , ПараметрыТеста); + + GoogleDrive_СоздатьПапку(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GoogleDrive + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleDrive + +Процедура GoogleDrive_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleDrive_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьСписокКаталогов(ПараметрыФункции) + + Имя = "Тестовая папка"; + Токен = ПараметрыФункции["Google_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("query", Имя); + Опции.Вставить("depth", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКаталогов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьСписокКаталогов", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьИнформациюОбОбъекте(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_Catalog"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьИнформациюОбОбъекте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьИнформациюОбОбъекте"); + +КонецПроцедуры + +Процедура GoogleDrive_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = ПараметрыФункции["GD_Catalog"]; + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); + + Описание.Вставить("Родитель", Каталог); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", Картинка); + Опции.Вставить("props", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", , ПараметрыФункции, Описание); + + Если Не OPI_Инструменты.ЭтоOneScript() И ПараметрыФункции.Свойство("Big") Тогда + + БольшойФайл = ПараметрыФункции["Big"]; + Описание.Вставить("Имя", "big.rar"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", БольшойФайл); + Опции.Вставить("props", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", "Большой", ПараметрыФункции, Описание); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Результат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ЗагрузитьФайл", "Проверка", ПараметрыФункции, Описание); + + КонецЕсли; + +КонецПроцедуры + +Процедура GoogleDrive_СкопироватьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + НовоеИмя = "Скопированный файл.jpeg"; + НовыйРодитель = "root"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("title", НовоеИмя); + Опции.Вставить("catalog", НовыйРодитель); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкопироватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СкопироватьОбъект", , ПараметрыФункции, НовоеИмя); + +КонецПроцедуры + +Процедура GoogleDrive_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СкачатьФайл", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GoogleDrive_ОбновитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + НовоеИмя = "Обновленный файл.jpg"; + Идентификатор = ПараметрыФункции["GD_File"]; + Файл = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("file", Файл); + Опции.Вставить("title", НовоеИмя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ОбновитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ОбновитьФайл", , НовоеИмя); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = "root"; + ИмяСодержит = "data"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("query", ИмяСодержит); + Опции.Вставить("catalog", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьСписокФайлов"); + +КонецПроцедуры + +Процедура GoogleDrive_УдалитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "УдалитьОбъект"); + + Для Каждого Удаляемый Из ПараметрыФункции["МассивУдаляемых"] Цикл + + Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "УдалитьОбъект", "Дополнительный"); + + OPI_Инструменты.Пауза(2); + + КонецЦикла; + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьОписаниеФайла(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьОписаниеФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьОписаниеФайла"); + +КонецПроцедуры + +Процедура GoogleDrive_СоздатьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + Комментарий = "Текст комментария"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("text", Комментарий); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СоздатьКомментарий", , ПараметрыФункции, Комментарий); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + ИДКомментария = ПараметрыФункции["GD_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("comment", ИДКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьКомментарий"); + +КонецПроцедуры + +Процедура GoogleDrive_ПолучитьСписокКомментариев(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "ПолучитьСписокКомментариев", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "ПолучитьСписокКомментариев"); + +КонецПроцедуры + +Процедура GoogleDrive_УдалитьКомментарий(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GD_File"]; + ИДКомментария = ПараметрыФункции["GD_Comment"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("object", Идентификатор); + Опции.Вставить("comment", ИДКомментария); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "УдалитьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "УдалитьКомментарий"); + +КонецПроцедуры + +Процедура GoogleDrive_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Каталог = ПараметрыФункции["GD_Catalog"]; + Имя = "Тестовая папка"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Имя); + Опции.Вставить("catalog", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СоздатьПапку"); + + ИДКаталога = Результат["id"]; + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gdrive", "СоздатьПапку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleDrive", "СоздатьПапку", "Корень"); + + ИДКаталога = Результат["id"]; + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + +КонецПроцедуры + +#КонецОбласти // GoogleDrive + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GD_Authorization() Export + ГД_Авторизация(); +EndProcedure + +Procedure GD_GetCatalogList() Export + ГД_ПолучитьСписокКаталогов(); +EndProcedure + +Procedure GD_UploadDeleteFile() Export + ГД_ЗагрузитьУдалитьФайл(); +EndProcedure + +Procedure GD_CreateDeleteComment() Export + ГД_СоздатьУдалитьКомментарий(); +EndProcedure + +Procedure GD_CreateCatalog() Export + ГД_СоздатьКаталог(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GoogleSheets.os b/src/ru/OInt/tests/Modules/OPItc_GoogleSheets.os new file mode 100644 index 0000000000..cb6d10a5ff --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GoogleSheets.os @@ -0,0 +1,494 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleSheets.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleSheets"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleSheets"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleSheets + +Процедура ГТ_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleSheets_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleSheets_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleSheets_ОбновитьТокен(ПараметрыТеста); + GoogleSheets_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +Процедура ГТ_СоздатьТаблицу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleSheets_СоздатьКнигу(ПараметрыТеста); + GoogleSheets_ПолучитьКнигу(ПараметрыТеста); + GoogleSheets_КопироватьЛист(ПараметрыТеста); + GoogleSheets_ДобавитьЛист(ПараметрыТеста); + GoogleSheets_УдалитьЛист(ПараметрыТеста); + GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыТеста); + GoogleSheets_ПолучитьТаблицу(ПараметрыТеста); + + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); + +КонецПроцедуры + +Процедура ГТ_ЗаполнитьОчиститьЯчейки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Token", ПараметрыТеста); + + GoogleSheets_СоздатьКнигу(ПараметрыТеста); + GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыТеста); + GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыТеста); + GoogleSheets_ОчиститьЯчейки(ПараметрыТеста); + + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet"]); + OPI_GoogleDrive.УдалитьОбъект(ПараметрыТеста["Google_Token"], ПараметрыТеста["GS_Spreadsheet2"]); + +КонецПроцедуры + +#КонецОбласти // GoogleSheets + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleSheets + +Процедура GoogleSheets_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleSheets_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +Процедура GoogleSheets_СоздатьКнигу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Наименование = "Тестовая таблица"; + + МассивЛистов = Новый Массив; + МассивЛистов.Добавить("Лист1"); + МассивЛистов.Добавить("Лист2"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + Опции.Вставить("sheets", МассивЛистов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "СоздатьКнигу", , ПараметрыФункции, Наименование, МассивЛистов); + + Наименование = "Тестовая таблица (доп.)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + Опции.Вставить("sheets", МассивЛистов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "СоздатьКнигу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "СоздатьКнигу", "Дополнительно", ПараметрыФункции, Наименование); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьКнигу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Идентификатор = ПараметрыФункции["GS_Spreadsheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Идентификатор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьКнигу"); + +КонецПроцедуры + +Процедура GoogleSheets_КопироватьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Откуда = ПараметрыФункции["GS_Spreadsheet"]; + Куда = ПараметрыФункции["GS_Spreadsheet2"]; + Лист = ПараметрыФункции["GS_Sheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Откуда); + Опции.Вставить("to", Куда); + Опции.Вставить("sheet", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "КопироватьЛист", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "КопироватьЛист"); + +КонецПроцедуры + +Процедура GoogleSheets_ДобавитьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Наименование = "Тестовый лист"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ДобавитьЛист", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ДобавитьЛист"); + +КонецПроцедуры + +Процедура GoogleSheets_УдалитьЛист(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = ПараметрыФункции["GS_Sheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("sheet", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УдалитьЛист", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "УдалитьЛист", , Книга); + +КонецПроцедуры + +Процедура GoogleSheets_ИзменитьНаименованиеКниги(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Наименование = "Тестовая таблица (изм.)"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ИзменитьНаименованиеКниги", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ИзменитьНаименованиеКниги", , Книга); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьТаблицу(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьКнигу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьТаблицу"); + +КонецПроцедуры + +Процедура GoogleSheets_УстановитьЗначенияЯчеек(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + СоответствиеЗначений = Новый Соответствие; + СоответствиеЗначений.Вставить("A1", "Это A1"); + СоответствиеЗначений.Вставить("A2", "Это A2"); + СоответствиеЗначений.Вставить("B2", "Это B2"); + СоответствиеЗначений.Вставить("B3", "Это B3"); + СоответствиеЗначений.Вставить("A3", "Это A3"); + СоответствиеЗначений.Вставить("A4", "Это A4"); + СоответствиеЗначений.Вставить("B1", "Это B1"); + СоответствиеЗначений.Вставить("B4", "Это B4"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("data", СоответствиеЗначений); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "УстановитьЗначенияЯчеек", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "УстановитьЗначенияЯчеек", , СоответствиеЗначений.Количество()); + +КонецПроцедуры + +Процедура GoogleSheets_ПолучитьЗначенияЯчеек(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + МассивЯчеек = Новый Массив; + МассивЯчеек.Добавить("B2"); + МассивЯчеек.Добавить("A3"); + МассивЯчеек.Добавить("B4"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("cells", МассивЯчеек); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьЗначенияЯчеек", , МассивЯчеек.Количество()); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ПолучитьЗначенияЯчеек", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ПолучитьЗначенияЯчеек", "Все", Книга); + +КонецПроцедуры + +Процедура GoogleSheets_ОчиститьЯчейки(ПараметрыФункции) + + Токен = ПараметрыФункции["Google_Token"]; + Книга = ПараметрыФункции["GS_Spreadsheet"]; + Лист = "Лист2"; + + МассивЯчеек = Новый Массив; + МассивЯчеек.Добавить("B2"); + МассивЯчеек.Добавить("A3"); + МассивЯчеек.Добавить("B4"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("spreadsheet", Книга); + Опции.Вставить("cells", МассивЯчеек); + Опции.Вставить("sheetname", Лист); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("gsheets", "ОчиститьЯчейки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleSheets", "ОчиститьЯчейки", , МассивЯчеек.Количество()); + +КонецПроцедуры + +#КонецОбласти // GoogleSheets + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GT_Authorization() Export + ГТ_Авторизация(); +EndProcedure + +Procedure GT_CreateTable() Export + ГТ_СоздатьТаблицу(); +EndProcedure + +Procedure GT_FillClearCells() Export + ГТ_ЗаполнитьОчиститьЯчейки(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GoogleWorkspace.os b/src/ru/OInt/tests/Modules/OPItc_GoogleWorkspace.os new file mode 100644 index 0000000000..e154df10f2 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GoogleWorkspace.os @@ -0,0 +1,221 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GoogleWorkspace.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GoogleWorkspace"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GoogleWorkspace"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GoogleWorkspace + +Процедура ГВ_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Code" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_Refresh" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Google_ServiceData" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Access_Token" , ПараметрыТеста); + + GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыТеста); + GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыТеста); + GoogleWorkspace_ОбновитьТокен(ПараметрыТеста); + GoogleWorkspace_ПолучитьТокенServiceАккаунта(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GoogleWorkspace + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GoogleWorkspace + +Процедура GoogleWorkspace_СформироватьСсылкуПолученияКода(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "СформироватьСсылкуПолученияКода", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "СформироватьСсылкуПолученияКода"); + +КонецПроцедуры + +Процедура GoogleWorkspace_ПолучитьТокенПоКоду(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + Code = ПараметрыФункции["Google_Code"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("code", Code); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенПоКоду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "ПолучитьТокенПоКоду"); + +КонецПроцедуры + +Процедура GoogleWorkspace_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["Google_ClientID"]; + ClientSecret = ПараметрыФункции["Google_ClientSecret"]; + RefreshToken = ПараметрыФункции["Google_Refresh"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура GoogleWorkspace_ПолучитьТокенServiceАккаунта(ПараметрыФункции) + + Данные = ПараметрыФункции["Google_ServiceData"]; // URL, двоичные данные, файл или коллекция + + Токен = ПараметрыФункции["Access_Token"]; // SKIP + Данные = OPI_ЗапросыHTTP // SKIP + .НовыйЗапрос() // SKIP + .Инициализировать(Данные) // SKIP + .ДобавитьBearerАвторизацию(Токен) // SKIP + .ОбработатьЗапрос("GET") // SKIP + .ВернутьОтветКакДвоичныеДанные(); // SKIP + + ОбластиДействия = Новый Массив; + ОбластиДействия.Добавить("https://www.googleapis.com/auth/calendar"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/drive"); + ОбластиДействия.Добавить("https://www.googleapis.com/auth/spreadsheets"); + + Опции = Новый Структура; + Опции.Вставить("auth", Данные); + Опции.Вставить("scope", ОбластиДействия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("google", "ПолучитьТокенServiceАккаунта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GoogleWorkspace", "ПолучитьТокенServiceАккаунта"); + +КонецПроцедуры + +#КонецОбласти // GoogleWorkspace + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GW_Auth() Export + ГВ_Авторизация(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GreenAPI.os b/src/ru/OInt/tests/Modules/OPItc_GreenAPI.os new file mode 100644 index 0000000000..895870b3ab --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GreenAPI.os @@ -0,0 +1,1592 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GreenAPI.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GreenAPI"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GreenAPI"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GreenAPI + +Процедура GAPI_Аккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + GreenAPI_АрхивироватьЧат(ПараметрыТеста); + GreenAPI_РазархивироватьЧат(ПараметрыТеста); + GreenAPI_СформироватьПараметрыДоступа(ПараметрыТеста); + GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыТеста); + GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); + GreenAPI_УстановитьНастройкиИнстанса(ПараметрыТеста); + GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыТеста); + GreenAPI_УстановитьКартинкуПрофиля(ПараметрыТеста); + // !DISABLED! GreenAPI_ПерезапуститьИнстанс(ПараметрыТеста); + // !DISABLED! GreenAPI_ПолучитьКодАвторизации(ПараметрыТеста); + // !DISABLED! GreenAPI_РазлогинитьИнстанс(ПараметрыТеста); + // !DISABLED! GreenAPI_ПолучитьQR(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_УправлениеГруппами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + GreenAPI_СоздатьГруппу(ПараметрыТеста); + GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыТеста); + GreenAPI_ИзменитьИмяГруппы(ПараметрыТеста); + GreenAPI_УстановитьКартинкуГруппы(ПараметрыТеста); + GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыТеста); + GreenAPI_ИсключитьУчастникаГруппы(ПараметрыТеста); + GreenAPI_НазначитьПраваАдминистратора(ПараметрыТеста); + GreenAPI_ОтозватьПраваАдминистратора(ПараметрыТеста); + GreenAPI_ПокинутьГруппу(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыТеста); + GreenAPI_ОтправитьФайл(ПараметрыТеста); + GreenAPI_ОтправитьФайлПоURL(ПараметрыТеста); + GreenAPI_ОтправитьОпрос(ПараметрыТеста); + GreenAPI_ОтправитьЛокацию(ПараметрыТеста); + GreenAPI_ОтправитьКонтакт(ПараметрыТеста); + GreenAPI_ПереслатьСообщения(ПараметрыТеста); + GreenAPI_ПолучитьОписаниеЛокации(ПараметрыТеста); + GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыТеста); + GreenAPI_ИзменитьТекстСообщения(ПараметрыТеста); + GreenAPI_УдалитьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ПолучениеУведомлений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_FileMessageID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_DownloadMessageID", ПараметрыТеста); + + GreenAPI_ПолучитьУведомление(ПараметрыТеста); + GreenAPI_УстановитьОтметкуПрочтения(ПараметрыТеста); + // !DISABLED! GreenAPI_СкачатьФайлСообщения(ПараметрыТеста); + GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ОчередьСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + + GreenAPI_ПолучитьОчередьСообщений(ПараметрыТеста); + GreenAPI_ОчиститьОчередьСообщений(ПараметрыТеста); + +КонецПроцедуры + +Процедура GAPI_ЖурналыСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenAPI_MessageID" , ПараметрыТеста); + + GreenAPI_ПолучитьИсториюЧата(ПараметрыТеста); + GreenAPI_ПолучитьСообщение(ПараметрыТеста); + GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); + GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // GreenAPI + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GreenAPI + +Процедура GreenAPI_СформироватьПараметрыДоступа(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "СформироватьПараметрыДоступа"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьНастройкиИнстанса", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОбАккаунте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьИнформациюОбАккаунте"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСтруктуруНастроекИнстанса"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСтруктуруНастроекИнстанса", "Пустая"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + СтруктураНастроек = Новый Структура; + СтруктураНастроек.Вставить("pollMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("incomingBlockWebhook" , "no"); + СтруктураНастроек.Вставить("incomingCallWebhook" , "no"); + СтруктураНастроек.Вставить("editedMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("deletedMessageWebhook" , "yes"); + СтруктураНастроек.Вставить("outgoingAPIMessageWebhook", "yes"); + + Опции = Новый Структура; + Опции.Вставить("settings", СтруктураНастроек); + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьНастройкиИнстанса"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьСостояниеИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСостояниеИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСостояниеИнстанса"); + +КонецПроцедуры + +Процедура GreenAPI_ПерезапуститьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПерезапуститьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПерезапуститьИнстанс"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьQR(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьQR", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьQR"); + +КонецПроцедуры + +Процедура GreenAPI_РазлогинитьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазлогинитьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "РазлогинитьИнстанс"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + НомерТелефона = 441234567890; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone", НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьКодАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьКодАвторизации"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьКартинкуПрофиля(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуПрофиля", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьКартинкуПрофиля"); + +КонецПроцедуры + +Процедура GreenAPI_СоздатьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Имя = "New group"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СоздатьГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "СоздатьГруппу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПокинутьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПокинутьГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПокинутьГруппу"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьИнформациюОГруппе(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИнформациюОГруппе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьИнформациюОГруппе"); + +КонецПроцедуры + +Процедура GreenAPI_ИзменитьИмяГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + Имя = "New name"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьИмяГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ИзменитьИмяГруппы"); + +КонецПроцедуры + +Процедура GreenAPI_ДобавитьУчастникаВГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ДобавитьУчастникаВГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ДобавитьУчастникаВГруппу"); + +КонецПроцедуры + +Процедура GreenAPI_ИсключитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИсключитьУчастникаГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ИсключитьУчастникаГруппы"); + +КонецПроцедуры + +Процедура GreenAPI_НазначитьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "НазначитьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "НазначитьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenAPI_ОтозватьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + IDПользователя = "123123123@c.us"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтозватьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтозватьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьКартинкуГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + IDГруппы = ПараметрыФункции["GreenAPI_GroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("group", IDГруппы); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьКартинкуГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьКартинкуГруппы"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Текст = "Новое сообщение"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьТекстовоеСообщение", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_УдалитьСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура GreenAPI_ИзменитьТекстСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ИзменитьТекстСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ИзменитьТекстСообщения"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьФайл(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = "photo.jpg"; + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Описание = "Описание файла"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайл", , ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайл", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьФайлПоURL(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Файл = ПараметрыФункции["Picture"]; + ИмяФайла = "photo.jpg"; + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Описание = "Описание файла"; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайлПоURL", , ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьФайлПоURL", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьОпрос(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + Текст = "Какой ваш любимый цвет?"; + + Варианты = Новый Массив; + Варианты.Добавить("Красный"); + Варианты.Добавить("Желтый"); + Варианты.Добавить("Зеленый"); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("options", Варианты); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьОпрос", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("options", Варианты); + Опции.Вставить("multi", Истина); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьОпрос", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьОписаниеЛокации(ПараметрыФункции) + + Широта = 53.908522; + Долгота = 27.574821; + Адрес = "Площадь Победы, Минск"; + Название = "пл. Победы"; + + Опции = Новый Структура; + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("addr", Адрес); + Опции.Вставить("name", Название); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьОписаниеЛокации"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьЛокацию(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Широта = 53.908522; + Долгота = 27.574821; + Адрес = "Площадь Победы, Минск"; + Название = "пл. Победы"; + + Опции = Новый Структура; + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("addr", Адрес); + Опции.Вставить("name", Название); + + Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("loc", Локация); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьЛокацию", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + + Локация = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеЛокации", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("loc", Локация); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьЛокацию", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьОписаниеКонтакта(ПараметрыФункции) + + Телефон = 79001234568; + Имя = "Артем"; + Фамилия = "Евпаторийский"; + Отчество = "Петрович"; + Компания = "Велосипед"; + + Опции = Новый Структура; + Опции.Вставить("phone", Телефон); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("midname", Отчество); + Опции.Вставить("company", Компания); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьОписаниеКонтакта"); + +КонецПроцедуры + +Процедура GreenAPI_ОтправитьКонтакт(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Телефон = 79001234568; + Имя = "Артем"; + Фамилия = "Евпаторийский"; + Отчество = "Петрович"; + Компания = "Велосипед"; + + Опции = Новый Структура; + Опции.Вставить("phone", Телефон); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("midname", Отчество); + Опции.Вставить("company", Компания); + + Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("contact", Контакт); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьКонтакт", , ПараметрыФункции); + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("phone", Телефон); + Опции.Вставить("company", Компания); + + Контакт = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОписаниеКонтакта", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("contact", Контакт); + Опции.Вставить("quoted", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОтправитьКонтакт", "Цитата"); + +КонецПроцедуры + +Процедура GreenAPI_ПереслатьСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Откуда = "11001234567@c.us"; + Откуда = ПараметрыФункции["GreenAPI_TestGroupID"]; // SKIP + Куда = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Сообщение = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("from", Откуда); + Опции.Вставить("to", Куда); + Опции.Вставить("msgs", Сообщение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПереслатьСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПереслатьСообщения"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_УдалитьУведомлениеИзОчереди(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDДоставки = ПараметрыФункции["GreenAPI_ReceiptID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("receipt", IDДоставки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УдалитьУведомлениеИзОчереди", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УдалитьУведомлениеИзОчереди"); + +КонецПроцедуры + +Процедура GreenAPI_СкачатьФайлСообщения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_FileMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СкачатьФайлСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "СкачатьФайлСообщения"); + +КонецПроцедуры + +Процедура GreenAPI_УстановитьОтметкуПрочтения(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_FileMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "УстановитьОтметкуПрочтения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "УстановитьОтметкуПрочтения"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьОчередьСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьОчередьСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьОчередьСообщений"); + +КонецПроцедуры + +Процедура GreenAPI_ОчиститьОчередьСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ОчиститьОчередьСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ОчиститьОчередьСообщений"); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьИсториюЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьИсториюЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьИсториюЧата", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + IDСообщения = ПараметрыФункции["GreenAPI_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("msg", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналВходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьЖурналВходящихСообщений", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "ПолучитьЖурналИсходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "ПолучитьЖурналИсходящихСообщений", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenAPI_АрхивироватьЧат(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + + OPI_GreenAPI.РазархивироватьЧат(ПараметрыДоступа, IDЧата); // SKIP + + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "АрхивироватьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "АрхивироватьЧат"); + +КонецПроцедуры + +Процедура GreenAPI_РазархивироватьЧат(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenAPI_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenAPI_MediaURL"]; + IdInstance = ПараметрыФункции["GreenAPI_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenAPI_Token"]; + + IDЧата = ПараметрыФункции["GreenAPI_TestGroupID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenapi", "РазархивироватьЧат", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenAPI", "РазархивироватьЧат"); + +КонецПроцедуры + +#КонецОбласти // GreenAPI + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GAPI_Account() Export + GAPI_Аккаунт(); +EndProcedure + +Procedure GAPI_GroupManagement() Export + GAPI_УправлениеГруппами(); +EndProcedure + +Procedure GAPI_MessageSending() Export + GAPI_ОтправкаСообщений(); +EndProcedure + +Procedure GAPI_NotificationsReceiving() Export + GAPI_ПолучениеУведомлений(); +EndProcedure + +Procedure GAPI_MessageQueue() Export + GAPI_ОчередьСообщений(); +EndProcedure + +Procedure GAPI_MessageLogs() Export + GAPI_ЖурналыСообщений(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_GreenMax.os b/src/ru/OInt/tests/Modules/OPItc_GreenMax.os new file mode 100644 index 0000000000..563f1bfb7a --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_GreenMax.os @@ -0,0 +1,1532 @@ +// OneScript: ./OInt/tests/Modules/OPItc_GreenMax.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("GreenMax"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("GreenMax"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область GreenMax + +Процедура GMax_Аккаунт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + //OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_TestGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + GreenMax_СформироватьПараметрыДоступа(ПараметрыТеста); + // !DISABLED! GreenMax_РазлогинитьИнстанс(ПараметрыТеста); + // !DISABLED! GreenMax_ПолучитьКодАвторизации(ПараметрыТеста); + // !DISABLED! GreenMax_ОтправитьКодАвторизации(ПараметрыТеста); + GreenMax_ПолучитьСостояниеИнстанса(ПараметрыТеста); + GreenMax_ПолучитьНастройкиИнстанса(ПараметрыТеста); + GreenMax_УстановитьНастройкиИнстанса(ПараметрыТеста); + GreenMax_ПолучитьСтруктуруНастроекИнстанса(ПараметрыТеста); + GreenMax_УстановитьКартинкуПрофиля(ПараметрыТеста); + GreenMax_ПолучитьИнформациюОбАккаунте(ПараметрыТеста); + GreenMax_ПроверитьАккаунт(ПараметрыТеста); + GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); + GreenMax_ПолучитьИнформациюОКонтакте(ПараметрыТеста); + GreenMax_ПолучитьСписокЧатов(ПараметрыТеста); + GreenMax_ПолучитьАватарЧата(ПараметрыТеста); + GreenMax_ПерезапуститьИнстанс(ПараметрыТеста); + +КонецПроцедуры + +Процедура GMax_РаботаСГруппами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); + + GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_СоздатьГруппу(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьИнформациюОГруппе(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ИзменитьИмяГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ИзменитьНастройкиГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_НазначитьПраваАдминистратора(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтозватьПраваАдминистратора(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_УдалитьУчастникаГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ДобавитьУчастникаГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_УстановитьКартинкуГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ВыйтиИзГруппы(ПараметрыТеста); + GreenMax_ПолучитьСтруктуруНастроекГруппы(ПараметрыТеста); + +КонецПроцедуры + +Процедура GMax_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + GreenMax_ПолучитьСписокКонтактов(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_СоздатьГруппу(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтправитьТекстовоеСообщение(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтправитьФайл(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОтправитьФайлПоURL(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_УдалитьУчастникаГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ВыйтиИзГруппы(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + +КонецПроцедуры + +Процедура GMax_Уведомления() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + + GreenMax_ПолучитьУведомление(ПараметрыТеста); + GreenMax_УдалитьУведомление(ПараметрыТеста); + +КонецПроцедуры + +Процедура GMax_ИсторияСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); + + GreenMax_ОтметитьСообщенияКакПрочитанные(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьИсториюСообщенийЧата(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьСообщениеЧата(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьЖурналВходящихСообщений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьЖурналИсходящихСообщений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + +КонецПроцедуры + +Процедура GMax_Очереди() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_ApiURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MediaURL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_IdInstance" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_Phone" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_AccountID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GreenMax_MainGroupID", ПараметрыТеста); + + GreenMax_ПолучитьКоличествоСообщенийКОтправке(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьОчередьСообщенийКОтправке(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОчиститьОчередьСообщенийКОтправке(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ПолучитьКоличествоВходящихУведомлений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + GreenMax_ОчиститьОчередьВходящихУведомлений(ПараметрыТеста); + OPI_Инструменты.Пауза(1); + +КонецПроцедуры + +#КонецОбласти // GreenMax + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область GreenMax + +Процедура GreenMax_СформироватьПараметрыДоступа(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "СформироватьПараметрыДоступа"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + НомерТелефона = 441234567890; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone", НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКодАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьКодАвторизации"); + +КонецПроцедуры + +Процедура GreenMax_РазлогинитьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "РазлогинитьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "РазлогинитьИнстанс"); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьКодАвторизации(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + КодАвторизации = 123456; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("code", КодАвторизации); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьКодАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьКодАвторизации"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСостояниеИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСостояниеИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСостояниеИнстанса"); + +КонецПроцедуры + +Процедура GreenMax_ПерезапуститьИнстанс(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПерезапуститьИнстанс", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПерезапуститьИнстанс"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСтруктуруНастроекИнстанса(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекИнстанса"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекИнстанса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMAx", "ПолучитьСтруктуруНастроекИнстанса", "Пустая"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьНастройкиИнстанса", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_УстановитьНастройкиИнстанса(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + + СтруктураНастроек = Новый Структура; + СтруктураНастроек.Вставить("markIncomingMessagesReaded" , "no"); + СтруктураНастроек.Вставить("outgoingWebhook" , "no"); + СтруктураНастроек.Вставить("outgoingAPIMessageWebhook" , "yes"); + + Опции = Новый Структура; + Опции.Вставить("settings", СтруктураНастроек); + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьНастройкиИнстанса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УстановитьНастройкиИнстанса"); + +КонецПроцедуры + +Процедура GreenMax_УстановитьКартинкуПрофиля(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьКартинкуПрофиля", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УстановитьКартинкуПрофиля"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИнформациюОбАккаунте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОбАккаунте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИнформациюОбАккаунте"); + +КонецПроцедуры + +Процедура GreenMax_ПроверитьАккаунт(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + НомерТелефона = 441234567890; + НомерТелефона = ПараметрыФункции["GreenMax_Phone"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("phone", НомерТелефона); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПроверитьАккаунт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПроверитьАккаунт", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСписокКонтактов(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Количество = 1; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("count", Количество); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСписокКонтактов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСписокКонтактов", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИнформациюОКонтакте(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDКонтакта = 87654321; + IDКонтакта = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDКонтакта); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОКонтакте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИнформациюОКонтакте"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСписокЧатов(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСписокЧатов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСписокЧатов"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьАватарЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 87654321; + IDЧата = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьАватарЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьАватарЧата"); + +КонецПроцедуры + +Процедура GreenMax_СоздатьГруппу(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDПользователя = 87654321; + Наименование = "Новая группа"; + + IDПользователя = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("name", Наименование); + Опции.Вставить("members", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СоздатьГруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "СоздатьГруппу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ДобавитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ДобавитьУчастникаГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ДобавитьУчастникаГруппы"); + + GreenMax_УдалитьУчастникаГруппы(ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_УдалитьУчастникаГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УдалитьУчастникаГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УдалитьУчастникаГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ВыйтиИзГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ВыйтиИзГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ВыйтиИзГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ИзменитьИмяГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Наименование = "Новое имя группы"; + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("name", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ИзменитьИмяГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ИзменитьИмяГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИнформациюОГруппе(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИнформациюОГруппе", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИнформациюОГруппе"); + +КонецПроцедуры + +Процедура GreenMax_ИзменитьНастройкиГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Настройки = Новый Структура; + Настройки.Вставить("allowParticipantsEditGroupSettings" , Истина); + Настройки.Вставить("allowParticipantsPinMessages" , Ложь); + Настройки.Вставить("allowParticipantsAddMembers" , Ложь); + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("set", Настройки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ИзменитьНастройкиГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ИзменитьНастройкиГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСтруктуруНастроекГруппы(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекГруппы"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСтруктуруНастроекГруппы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСтруктуруНастроекГруппы", "Пустая"); + +КонецПроцедуры + +Процедура GreenMax_НазначитьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "НазначитьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "НазначитьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenMax_ОтозватьПраваАдминистратора(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDУчастника = 87654321; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + IDУчастника = ПараметрыФункции["GreenMax_ContactID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("member", IDУчастника); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтозватьПраваАдминистратора", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтозватьПраваАдминистратора"); + +КонецПроцедуры + +Процедура GreenMax_УстановитьКартинкуГруппы(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Картинка = ПараметрыФункции["Picture3"]; // URL, Путь или Двоичные данные + IDЧата = 12345678; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УстановитьКартинкуГруппы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УстановитьКартинкуГруппы"); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Текст = "Текст сообщения"; + IDЧата = 12345678; + Набор = 2000; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("typing", Набор); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьФайл(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = "photo.jpg"; + IDЧата = 12345678; + Описание = "Описание файла"; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайл", , ПараметрыФункции); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("typing", 1000); + Опции.Вставить("ttype", "video"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайл", "Видео"); + +КонецПроцедуры + +Процедура GreenMax_ОтправитьФайлПоURL(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Файл = ПараметрыФункции["Picture"]; + ИмяФайла = "photo.jpg"; + IDЧата = 12345678; + Описание = "Описание файла"; + + IDЧата = ПараметрыФункции["GreenMax_GroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайлПоURL"); + + Файл = ПараметрыФункции["Video"]; + ИмяФайла = "vid.mp4"; + + IDСообщения = Результат["idMessage"]; + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("url", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("caption", Описание); + Опции.Вставить("typing", 1000); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтправитьФайлПоURL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтправитьФайлПоURL", "Ввод"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_УдалитьУведомление(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDУведомления = ПараметрыФункции["GreenMax_ReceiptID"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("id", IDУведомления); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "УдалитьУведомление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "УдалитьУведомление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ОтметитьСообщенияКакПрочитанные(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОтметитьСообщенияКакПрочитанные", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОтметитьСообщенияКакПрочитанные"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьИсториюСообщенийЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + Количество = 3; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("count", Количество); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьИсториюСообщенийЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьИсториюСообщенийЧата", , ПараметрыФункции); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьСообщениеЧата(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + IDЧата = 12345678; + IDСообщения = ПараметрыФункции["GreenMax_MainMessageID"]; + + IDЧата = ПараметрыФункции["GreenMax_MainGroupID"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьСообщениеЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьСообщениеЧата", , IDСообщения); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьЖурналВходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Период = 30; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("span", Период); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьЖурналВходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьЖурналВходящихСообщений"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьЖурналИсходящихСообщений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Период = 30; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + Опции.Вставить("span", Период); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьЖурналИсходящихСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьЖурналИсходящихСообщений"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьКоличествоСообщенийКОтправке(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКоличествоСообщенийКОтправке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьКоличествоСообщенийКОтправке"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьОчередьСообщенийКОтправке(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьОчередьСообщенийКОтправке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьОчередьСообщенийКОтправке"); + +КонецПроцедуры + +Процедура GreenMax_ОчиститьОчередьСообщенийКОтправке(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОчиститьОчередьСообщенийКОтправке", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОчиститьОчередьСообщенийКОтправке"); + +КонецПроцедуры + +Процедура GreenMax_ПолучитьКоличествоВходящихУведомлений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ПолучитьКоличествоВходящихУведомлений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ПолучитьКоличествоВходящихУведомлений"); + +КонецПроцедуры + +Процедура GreenMax_ОчиститьОчередьВходящихУведомлений(ПараметрыФункции) + + ApiUrl = ПараметрыФункции["GreenMax_ApiURL"]; + MediaUrl = ПараметрыФункции["GreenMax_MediaURL"]; + IdInstance = ПараметрыФункции["GreenMax_IdInstance"]; + ApiTokenInstance = ПараметрыФункции["GreenMax_Token"]; + + Опции = Новый Структура; + Опции.Вставить("api", ApiUrl); + Опции.Вставить("media", MediaUrl); + Опции.Вставить("id", IdInstance); + Опции.Вставить("token", ApiTokenInstance); + + ПараметрыДоступа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "СформироватьПараметрыДоступа", Опции); + Опции = Новый Структура; + Опции.Вставить("access", ПараметрыДоступа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("greenmax", "ОчиститьОчередьВходящихУведомлений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "GreenMax", "ОчиститьОчередьВходящихУведомлений"); + +КонецПроцедуры + +#КонецОбласти // GreenMax + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure GMax_Account() Export + GMax_Аккаунт(); +EndProcedure + +Procedure GMax_GroupManagement() Export + GMax_РаботаСГруппами(); +EndProcedure + +Procedure GMax_MessageSending() Export + GMax_ОтправкаСообщений(); +EndProcedure + +Procedure GMax_Notifications() Export + GMax_Уведомления(); +EndProcedure + +Procedure GMax_MessageHistory() Export + GMax_ИсторияСообщений(); +EndProcedure + +Procedure GMax_Queues() Export + GMax_Очереди(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_HTTP.os b/src/ru/OInt/tests/Modules/OPItc_HTTP.os new file mode 100644 index 0000000000..f18bf2050b --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_HTTP.os @@ -0,0 +1,1392 @@ +// OneScript: ./OInt/tests/Modules/OPItc_HTTP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("HTTP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("HTTP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область HTTP + +Процедура HTTP_Инициализация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL" , ПараметрыТеста); + + HTTP_Инициализировать(ПараметрыТеста); + HTTP_УстановитьURL(ПараметрыТеста); + HTTP_УстановитьПараметрыURL(ПараметрыТеста); + HTTP_УстановитьФайлОтвета(ПараметрыТеста); + HTTP_УстановитьТипДанных(ПараметрыТеста); + HTTP_ПолучитьЛог(ПараметрыТеста); + HTTP_УстановитьПрокси(ПараметрыТеста); + HTTP_УстановитьТаймаут(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_УстановкаТела() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + HTTP_УстановитьДвоичноеТело(ПараметрыТеста); + HTTP_УстановитьСтроковоеТело(ПараметрыТеста); + HTTP_УстановитьJsonТело(ПараметрыТеста); + HTTP_УстановитьFormТело(ПараметрыТеста); + HTTP_НачатьЗаписьТелаMultipart(ПараметрыТеста); + HTTP_ДобавитьПолеMultipartFormData(ПараметрыТеста); + HTTP_ДобавитьФайлMultipartFormData(ПараметрыТеста); + HTTP_ДобавитьДанныеRelated(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_Настройки() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + HTTP_ИспользоватьКодировку(ПараметрыТеста); + HTTP_ИспользоватьСжатиеGzip(ПараметрыТеста); + HTTP_ИспользоватьПоляТелаВOAuth(ПараметрыТеста); + HTTP_ИспользоватьКодированиеURL(ПараметрыТеста); + HTTP_РазделятьМассивыВURL(ПараметрыТеста); + HTTP_МаксимумПереадресаций(ПараметрыТеста); + HTTP_МаксимумПопыток(ПараметрыТеста); + HTTP_ВернутьНастройки(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_УстановкаЗаголовков() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + + HTTP_УстановитьЗаголовки(ПараметрыТеста); + HTTP_ДобавитьЗаголовок(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + + HTTP_ДобавитьBasicАвторизацию(ПараметрыТеста); + HTTP_ДобавитьBearerАвторизацию(ПараметрыТеста); + HTTP_ДобавитьAWS4Авторизацию(ПараметрыТеста); + HTTP_ДобавитьOAuthV1Авторизацию(ПараметрыТеста); + HTTP_УстановитьАлгоритмOAuthV1(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_ОбработкаЗапроса() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + HTTP_ОбработатьЗапрос(ПараметрыТеста); + HTTP_ВыполнитьЗапрос(ПараметрыТеста); + HTTP_ВернутьЗапрос(ПараметрыТеста); + HTTP_ВернутьСоединение(ПараметрыТеста); + HTTP_ОтправитьДанныеЧастями(ПараметрыТеста); + HTTP_ОтправитьЧасть(ПараметрыТеста); + +КонецПроцедуры + +Процедура HTTP_ПолучениеОтвета() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("HTTP_URL", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + HTTP_ВернутьОтвет(ПараметрыТеста); + HTTP_ВернутьОтветКакJSONКоллекцию(ПараметрыТеста); + HTTP_ВернутьОтветКакДвоичныеДанные(ПараметрыТеста); + HTTP_ВернутьОтветКакСтроку(ПараметрыТеста); + HTTP_ВернутьИмяФайлаТелаОтвета(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область HTTP + +Процедура HTTP_Инициализировать(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "Инициализировать"); + + HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ОбработатьЗапрос("POST", Ложь); + + OPI_ПолучениеДанныхТестов.Обработать(HTTPКлиент, "HTTP", "Инициализировать", "Проверка 1", ПараметрыФункции); + + ДругойЗапрос = HTTPКлиент.УстановитьURL(ПараметрыФункции["HTTP_URL"] + "/post") + .ОбработатьЗапрос("POST", Ложь) + .ВернутьЗапрос(); + + OPI_ПолучениеДанныхТестов.Обработать(ДругойЗапрос, "HTTP", "Инициализировать", "Проверка 2"); + +КонецПроцедуры + +Процедура HTTP_УстановитьURL(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьURL"); + + HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("POST", Ложь); + + OPI_ПолучениеДанныхТестов.Обработать(HTTPКлиент, "HTTP", "УстановитьURL", "Проверка", ПараметрыФункции); + +КонецПроцедуры + +Процедура HTTP_УстановитьПараметрыURL(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + СтруктураПараметров = Новый Структура("param1,param2", "text", 10); + + Результат = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(СтруктураПараметров) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьПараметрыURL", , ПараметрыФункции); + + HTTPКлиент = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("POST", Ложь); + + HTTPЗапрос = HTTPКлиент.ВернутьЗапрос(); + + OPI_ПолучениеДанныхТестов.Обработать(HTTPЗапрос, "HTTP", "УстановитьПараметрыURL", "Проверка"); + + // Проверка кодировки + + // Комплексная + + СтруктураПараметров1 = Новый Структура; + СтруктураПараметров1.Вставить("param1", "search?text"); + СтруктураПараметров1.Вставить("param2", "John Doe"); + СтруктураПараметров1.Вставить("param3", "value&another"); + СтруктураПараметров1.Вставить("param4", "кириллица"); + СтруктураПараметров1.Вставить("param5", ""); + + АдресРесурса1 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров1) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса1, "HTTP", "УстановитьПараметрыURL", "Вариант 1"); + + СтруктураПараметров2 = Новый Структура; + СтруктураПараметров2.Вставить("param1", "search?text"); + СтруктураПараметров2.Вставить("param2", "John Doe"); + + // Параметры в оригинальном URL + + АдресРесурса2 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page?existing=value") + .УстановитьПараметрыURL(СтруктураПараметров2) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса2, "HTTP", "УстановитьПараметрыURL", "Вариант 2"); + + // Пустая строка параметров + + СтруктураПараметров3 = Новый Структура; + СтруктураПараметров3.Вставить("param1", "search?text"); + СтруктураПараметров3.Вставить("param2", "John Doe"); + + АдресРесурса3 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page?") + .УстановитьПараметрыURL(СтруктураПараметров3) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса3, "HTTP", "УстановитьПараметрыURL", "Вариант 3"); + + // Спец. символы в пути + + СтруктураПараметров4 = Новый Структура; + СтруктураПараметров4.Вставить("param1", "search?text"); + СтруктураПараметров4.Вставить("param2", "John Doe"); + + АдресРесурса4 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/path with spaces") + .УстановитьПараметрыURL(СтруктураПараметров4) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса4, "HTTP", "УстановитьПараметрыURL", "Вариант 4"); + + // URL с фрагментом + + СтруктураПараметров5 = Новый Структура; + СтруктураПараметров5.Вставить("param1", "search?text"); + СтруктураПараметров5.Вставить("param2", "John Doe"); + + АдресРесурса5 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page#section") + .УстановитьПараметрыURL(СтруктураПараметров5) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса5, "HTTP", "УстановитьПараметрыURL", "Вариант 5"); + + // Кириллица в пути + + СтруктураПараметров6 = Новый Структура; + СтруктураПараметров6.Вставить("param1", "search?text"); + СтруктураПараметров6.Вставить("param2", "John Doe"); + + АдресРесурса6 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/путь") + .УстановитьПараметрыURL(СтруктураПараметров6) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса6, "HTTP", "УстановитьПараметрыURL", "Вариант 6"); + + // Несколько параметров и кодировка + + СтруктураПараметров7 = Новый Структура; + СтруктураПараметров7.Вставить("param1", "value1"); + СтруктураПараметров7.Вставить("param2", "value two"); + СтруктураПараметров7.Вставить("param3", "value"); + + АдресРесурса7 = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров7) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + OPI_ПолучениеДанныхТестов.Обработать(АдресРесурса7, "HTTP", "УстановитьПараметрыURL", "Вариант 7"); + +КонецПроцедуры + +Процедура HTTP_УстановитьФайлОтвета(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + ИВФ = ПолучитьИмяВременногоФайла(); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьФайлОтвета(ИВФ) // <--- + .ОбработатьЗапрос("GET") + .ВернутьИмяФайлаТелаОтвета(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьФайлОтвета", , ИВФ); + + РезультатПроверки = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьФайлОтвета(ИВФ) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакДвоичныеДанные(); + + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "HTTP", "УстановитьФайлОтвета", "Тело", ИВФ); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура HTTP_УстановитьТипДанных(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + ТипMIME = "text/markdown"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьСтроковоеТело("# Привет мир!") + .УстановитьТипДанных(ТипMIME) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьТипДанных"); + +КонецПроцедуры + +Процедура HTTP_ПолучитьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + СтруктураПараметров = Новый Структура("param1,param2", "text", 10); + + HTTPКлиент = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("GET"); + + Ответ = HTTPКлиент.ВернутьОтветКакJSONКоллекцию(); + Лог = HTTPКлиент.ПолучитьЛог(Истина); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Лог, "HTTP", "ПолучитьЛог"); + +КонецПроцедуры + +Процедура HTTP_УстановитьДвоичноеТело(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьДвоичноеТело", , Картинка); + +КонецПроцедуры + +Процедура HTTP_УстановитьСтроковоеТело(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Текст = "Привет мир!"; + Кодировка = "Windows-1251"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ИспользоватьКодировку(Кодировка) + .УстановитьСтроковоеТело(Текст) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьСтроковоеТело"); + +КонецПроцедуры + +Процедура HTTP_УстановитьJsonТело(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + СлучайныйМассив = Новый Массив; + СлучайныйМассив.Добавить("A"); + СлучайныйМассив.Добавить("B"); + СлучайныйМассив.Добавить("C"); + + Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьJsonТело(Данные) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьJsonТело", , Данные); + +КонецПроцедуры + +Процедура HTTP_УстановитьFormТело(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Данные = Новый Структура("Поле1,Поле2", "10", "Текст"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьFormТело(Данные) // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьFormТело", , Данные); + +КонецПроцедуры + +Процедура HTTP_НачатьЗаписьТелаMultipart(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() // <--- + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("Поле1", "Текст") + .ДобавитьПолеMultipartFormData("Поле2", "10") + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "НачатьЗаписьТелаMultipart", , Картинка); + +КонецПроцедуры + +Процедура HTTP_ДобавитьФайлMultipartFormData(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") // <--- + .ДобавитьПолеMultipartFormData("Поле1", "Текст") + .ДобавитьПолеMultipartFormData("Поле2", "10") + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьФайлMultipartFormData", , Картинка); + +КонецПроцедуры + +Процедура HTTP_ДобавитьПолеMultipartFormData(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("Поле1", "Текст") // <--- + .ДобавитьПолеMultipartFormData("Поле2", "10") // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьПолеMultipartFormData", , Картинка); + +КонецПроцедуры + +Процедура HTTP_ДобавитьДанныеRelated(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + СлучайныйМассив = Новый Массив; + СлучайныйМассив.Добавить("A"); + СлучайныйМассив.Добавить("B"); + СлучайныйМассив.Добавить("C"); + + Данные = Новый Структура("Поле1,Поле2,Поле3", 10, "Текст", СлучайныйМассив); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart(Истина, "related") + .ДобавитьДанныеRelated(Данные, "application/json; charset=UTF-8") // <--- + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьДанныеRelated"); + +КонецПроцедуры + +Процедура HTTP_ИспользоватьКодировку(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Текст = "Привет мир!"; + Кодировка = "Windows-1251"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ИспользоватьКодировку(Кодировка) // <--- + .УстановитьСтроковоеТело(Текст) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьКодировку"); + +КонецПроцедуры + +Процедура HTTP_ИспользоватьСжатиеGzip(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ИспользоватьСжатиеGzip(Ложь) // <--- + .ОбработатьЗапрос("POST", Ложь) + .ВернутьЗапрос(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьСжатиеGzip"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ИспользоватьСжатиеGzip(Истина) // <--- + .ОбработатьЗапрос("POST", Ложь) + .ВернутьЗапрос(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьСжатиеGzip", "Включено"); + +КонецПроцедуры + +Процедура HTTP_ИспользоватьПоляТелаВOAuth(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Токен = "***"; + Секрет = "***"; + КлючПользователя = "***"; + СекретПользователя = "***"; + Версия = "1.0"; + + НовыйЗапрос = OPI_ЗапросыHTTP.НовыйЗапрос().Инициализировать(URL); + + Результат = НовыйЗапрос + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("field1", "Текст") + .ДобавитьПолеMultipartFormData("field2", "10") + .ИспользоватьПоляТелаВOAuth(Ложь) // <--- + .ДобавитьOauthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + ЛогСтрокой = НовыйЗапрос.ПолучитьЛог(Истина); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьПоляТелаВOAuth", , ЛогСтрокой); + + Результат = OPI_ЗапросыHTTP + .НовыйЗапрос() + .Инициализировать(URL) + .НачатьЗаписьТелаMultipart() + .ДобавитьФайлMultipartFormData("file1", "pic.png", Картинка, "image/png") + .ДобавитьПолеMultipartFormData("field1", "Текст") + .ДобавитьПолеMultipartFormData("field2", "10") + .ИспользоватьПоляТелаВOAuth(Истина) // <--- + .ДобавитьOauthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) + .ОбработатьЗапрос("POST", Ложь) + .ПолучитьЛог(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьПоляТелаВOAuth", "Включено"); + +КонецПроцедуры + +Процедура HTTP_УстановитьЗаголовки(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Заголовки = Новый Соответствие; + Заголовки.Вставить("X-Header1", "Value1"); + Заголовки.Вставить("X-Header2", "Value2"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьЗаголовки(Заголовки) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьЗаголовки"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("1111") + .УстановитьЗаголовки(Заголовки, Истина) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьЗаголовки", "Перезапись"); + +КонецПроцедуры + +Процедура HTTP_ДобавитьЗаголовок(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьЗаголовок("X-Header1", "Value1") // <--- + .ДобавитьЗаголовок("X-Header2", "Value2") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьЗаголовок"); + + Заголовки = Новый Соответствие; + Заголовки.Вставить("X-Header1", "Value1"); + Заголовки.Вставить("X-Header2", "Value2"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("1111") + .ДобавитьЗаголовок("X-Header3", "BadValue") // <--- + .ДобавитьЗаголовок("X-Header4", "BadValue") + .УстановитьЗаголовки(Заголовки, Истина) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьЗаголовок", "Замена"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("1111") + .ДобавитьЗаголовок("X-Header3", "BadValue") // <--- + .ДобавитьЗаголовок("X-Header4", "BadValue") + .УстановитьЗаголовки(Заголовки) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьЗаголовок", "Дополнение"); + +КонецПроцедуры + +Процедура HTTP_ДобавитьBasicАвторизацию(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBasicАвторизацию("user", "password") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьBasicАвторизацию"); + +КонецПроцедуры + +Процедура HTTP_ДобавитьBearerАвторизацию(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию("123123") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьBearerАвторизацию"); + +КонецПроцедуры + +Процедура HTTP_ДобавитьAWS4Авторизацию(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + AccessKey = "AccessKey"; + SecretKey = "SecretKey"; + Region = "Region"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьAWS4Авторизацию(AccessKey, SecretKey, Region) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьAWS4Авторизацию"); + +КонецПроцедуры + +Процедура HTTP_ДобавитьOAuthV1Авторизацию(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Токен = "***"; + Секрет = "***"; + КлючПользователя = "***"; + СекретПользователя = "***"; + Версия = "1.0"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ДобавитьOAuthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ДобавитьOAuthV1Авторизацию"); + +КонецПроцедуры + +Процедура HTTP_УстановитьАлгоритмOAuthV1(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Токен = "***"; + Секрет = "***"; + КлючПользователя = "***"; + СекретПользователя = "***"; + Версия = "1.0"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .ДобавитьOAuthV1Авторизацию(Токен, Секрет, КлючПользователя, СекретПользователя, Версия) + .УстановитьАлгоритмOAuthV1("HMAC", "SHA1") // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьАлгоритмOAuthV1"); + +КонецПроцедуры + +Процедура HTTP_ОбработатьЗапрос(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET") // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ОбработатьЗапрос"); + +КонецПроцедуры + +Процедура HTTP_ВыполнитьЗапрос(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВыполнитьЗапрос() // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВыполнитьЗапрос"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьОтвет(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВыполнитьЗапрос", "Без выполнения"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВыполнитьЗапрос() + .ВернутьОтвет(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВыполнитьЗапрос", "Выполнение"); + +КонецПроцедуры + +Процедура HTTP_ВернутьЗапрос(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьЗапрос"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ВернутьЗапрос(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьЗапрос", "Принудительно"); + +КонецПроцедуры + +Процедура HTTP_ВернутьСоединение(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьСоединение(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьСоединение"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ВернутьСоединение(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьСоединение", "Принудительно"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтвет(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтвет"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтветКакJSONКоллекцию(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакJSONКоллекцию(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтветКакJSONКоллекцию"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтветКакДвоичныеДанные(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакДвоичныеДанные(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтветКакДвоичныеДанные"); + +КонецПроцедуры + +Процедура HTTP_ВернутьОтветКакСтроку(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/post"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("POST") + .ВернутьОтветКакСтроку(); // <--- + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьОтветКакСтроку"); + +КонецПроцедуры + +Процедура HTTP_ВернутьИмяФайлаТелаОтвета(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + ИВФ = ПолучитьИмяВременногоФайла(); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьФайлОтвета(ИВФ) // <--- + .ОбработатьЗапрос("GET") + .ВернутьИмяФайлаТелаОтвета(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьИмяФайлаТелаОтвета", , ИВФ); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура HTTP_УстановитьПрокси(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + НастройкиПрокси = Новый ИнтернетПрокси; + НастройкиПрокси.Установить("https", "proxy.com", 443, "user", "password", Ложь); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьПрокси(НастройкиПрокси) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьСоединение(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьПрокси"); + +КонецПроцедуры + +Процедура HTTP_УстановитьТаймаут(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .УстановитьТаймаут(60) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьСоединение(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "УстановитьТаймаут"); + +КонецПроцедуры + +Процедура HTTP_ИспользоватьКодированиеURL(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + СтруктураПараметров = Новый Структура; + СтруктураПараметров.Вставить("param1", "search?text"); + СтруктураПараметров.Вставить("param2", "John Doe"); + СтруктураПараметров.Вставить("param3", "value&another"); + СтруктураПараметров.Вставить("param4", "кириллица"); + СтруктураПараметров.Вставить("param5", ""); + + БезКодирования = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .ИспользоватьКодированиеURL(Ложь) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + СКодированием = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + // END + + Результат = Новый Соответствие; + Результат.Вставить("Без кодирования", БезКодирования); + Результат.Вставить("С кодированием" , СКодированием); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ИспользоватьКодированиеURL"); + +КонецПроцедуры + +Процедура HTTP_РазделятьМассивыВURL(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/get"; + + ПараметрМассив = Новый Массив; + ПараметрМассив.Добавить("val1"); + ПараметрМассив.Добавить("val2"); + ПараметрМассив.Добавить("val3"); + + СтруктураПараметров = Новый Структура("arrayfield", ПараметрМассив); + + Разделение = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .РазделятьМассивыВURL(Истина) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + РазделениеPhp = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .РазделятьМассивыВURL(Истина, Истина) // <--- + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + БезРазделения = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать("https://example.com/page") + .УстановитьПараметрыURL(СтруктураПараметров) + .ОбработатьЗапрос("GET", Ложь) + .ВернутьЗапрос() + .АдресРесурса; + + // END + + Результат = Новый Соответствие; + Результат.Вставить("Без разделения", БезРазделения); + Результат.Вставить("Разделение" , Разделение); + Результат.Вставить("PHP" , РазделениеPhp); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "РазделятьМассивыВURL"); + +КонецПроцедуры + +Процедура HTTP_ОтправитьДанныеЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/put"; + + РазмерЧасти = 524288; + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Картинка) + .ОтправитьДанныеЧастями(РазмерЧасти) // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ОтправитьДанныеЧастями"); + +КонецПроцедуры + +Процедура HTTP_ОтправитьЧасть(ПараметрыФункции) + + URL = ПараметрыФункции["HTTP_URL"]; + URL = URL + "/put"; + + РазмерЧасти = 524288; + Данные = ПолучитьДвоичныеДанныеИзСтроки("Some data for sending"); + + // Отправляем только "data for" + НачальнаяПозиция = 5; + ЧислоБайт = 8; + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(URL) + .УстановитьДвоичноеТело(Данные) + .ОтправитьЧасть(НачальнаяПозиция, ЧислоБайт) // <--- + .ВернутьОтветКакJSONКоллекцию(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ОтправитьЧасть"); + +КонецПроцедуры + +Процедура HTTP_МаксимумПопыток(ПараметрыФункции) + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .МаксимумПопыток(10) + .ВернутьНастройки(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "МаксимумПопыток"); + +КонецПроцедуры + +Процедура HTTP_МаксимумПереадресаций(ПараметрыФункции) + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .МаксимумПереадресаций(15) + .ВернутьНастройки(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "МаксимумПереадресаций"); + +КонецПроцедуры + +Процедура HTTP_ВернутьНастройки(ПараметрыФункции) + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .ВернутьНастройки(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .ВернутьНастройки("КодировкаТелаЗапроса"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки", "Одиночный"); + + МассивНастроек = Новый Массив; + МассивНастроек.Добавить("МаксимумПопыток"); + МассивНастроек.Добавить("МаксимумПереадресаций"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .МаксимумПопыток(5) + .ВернутьНастройки(МассивНастроек); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки", "Массив"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .ВернутьНастройки("ААА"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "HTTP", "ВернутьНастройки", "Несуществующий"); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure HTTP_Initialization() Export + HTTP_Инициализация(); +EndProcedure + +Procedure HTTP_BodySet() Export + HTTP_УстановкаТела(); +EndProcedure + +Procedure HTTP_Settings() Export + HTTP_Настройки(); +EndProcedure + +Procedure HTTP_HeadersSetting() Export + HTTP_УстановкаЗаголовков(); +EndProcedure + +Procedure HTTP_Authorization() Export + HTTP_Авторизация(); +EndProcedure + +Procedure HTTP_RequestProcessing() Export + HTTP_ОбработкаЗапроса(); +EndProcedure + +Procedure HTTP_ResponseReceiving() Export + HTTP_ПолучениеОтвета(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_MSSQL.os b/src/ru/OInt/tests/Modules/OPItc_MSSQL.os new file mode 100644 index 0000000000..f8aa2431dd --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_MSSQL.os @@ -0,0 +1,1382 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MSSQL.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("MSSQL"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("MSSQL"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область MSSQL + +Процедура MSS_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста); + + MSSQL_СформироватьСтрокуПодключения(ПараметрыТеста); + MSSQL_ОткрытьСоединение(ПараметрыТеста); + MSSQL_ЗакрытьСоединение(ПараметрыТеста); + MSSQL_ЭтоКоннектор(ПараметрыТеста); + MSSQL_ВыполнитьЗапросSQL(ПараметрыТеста); + MSSQL_ПолучитьНастройкиTLS(ПараметрыТеста); + +КонецПроцедуры + +Процедура MSS_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + MSSQL_СоздатьБазуДанных(ПараметрыТеста); + MSSQL_СоздатьТаблицу(ПараметрыТеста); + MSSQL_ДобавитьЗаписи(ПараметрыТеста); + MSSQL_ГарантироватьЗаписи(ПараметрыТеста); + MSSQL_ПолучитьЗаписи(ПараметрыТеста); + MSSQL_ОбновитьЗаписи(ПараметрыТеста); + MSSQL_УдалитьЗаписи(ПараметрыТеста); + MSSQL_ОчиститьТаблицу(ПараметрыТеста); + MSSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + MSSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + MSSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + MSSQL_ГарантироватьТаблицу(ПараметрыТеста); + MSSQL_УдалитьТаблицу(ПараметрыТеста); + MSSQL_УдалитьБазуДанных(ПараметрыТеста); + MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // MSSQL + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область MSSQL + +Процедура MSSQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // END + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СформироватьСтрокуПодключения"); + +КонецПроцедуры + +Процедура MSSQL_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура MSSQL_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MSSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_MSSQL.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура MSSQL_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MSSQL.ЭтоКоннектор(Соединение); + + // END + + OPI_MSSQL.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура MSSQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_MSSQL.УдалитьТаблицу("users" , Соединение); // SKIP + OPI_MSSQL.УдалитьТаблицу("test_data" , Соединение); // SKIP + OPI_MSSQL.УдалитьТаблицу("test_table", Соединение); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "MSSQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + | ID INT PRIMARY KEY, + | FirstName NVARCHAR(50), + | LastName NVARCHAR(50), + | BirthDate DATE, + | IsEmployed BIT, + | Salary DECIMAL(10, 2), + | CreatedAt DATETIME, + | Age SMALLINT, + | RowGuid UNIQUEIDENTIFIER, + | Data VARBINARY(MAX) + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data) + |VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("INT" , 1)); + МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Vitaly")); + МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Alpaca")); + МассивПараметров.Добавить(Новый Структура("DATE" , ТекущаяДата)); + МассивПараметров.Добавить(Новый Структура("BIT" , Истина)); + МассивПараметров.Добавить(Новый Структура("DECIMAL" , 10.30)); + МассивПараметров.Добавить(Новый Структура("DATETIME", ТекущаяДата)); + МассивПараметров.Добавить(Новый Структура("SMALLINT", 20)); + МассивПараметров.Добавить(Новый Структура("UUID" , Новый УникальныйИдентификатор)); + МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка)); + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + ТекстЗапроса = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));"; // SKIP + Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Test data"); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql", ФайлSQL); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP + + Закрытие = OPI_MSSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MSSQL", "ВыполнитьЗапросSQL", "Запрос"); // SKIP + +КонецПроцедуры + +Процедура MSSQL_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура MSSQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + База = "testbase1"; + + OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьБазуДанных"); + + База = "testbase2"; + OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); + + Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MSSQL", "СоздатьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьБазуДанных", "Создание"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьБазуДанных", "Существующая"); + + OPI_MSSQL.ЗакрытьСоединение(Подключение); + +КонецПроцедуры + +Процедура MSSQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("tinyint_field" , "tinyint"); + СтруктураКолонок.Вставить("smallint_field" , "smallint"); + СтруктураКолонок.Вставить("int_field" , "int"); + СтруктураКолонок.Вставить("bigint_field" , "bigint"); + СтруктураКолонок.Вставить("float24_field" , "float(24)"); + СтруктураКолонок.Вставить("float53_field" , "float(53)"); + СтруктураКолонок.Вставить("bit_field" , "bit"); + СтруктураКолонок.Вставить("nvarchar_field" , "nvarchar(4000)"); + СтруктураКолонок.Вставить("varbinary_field", "varbinary(max)"); + СтруктураКолонок.Вставить("uid_field" , "uniqueidentifier"); + СтруктураКолонок.Вставить("numeric_field" , "numeric(5,3)"); // Или decimal + СтруктураКолонок.Вставить("xml_field" , "xml"); + СтруктураКолонок.Вставить("date_field" , "date"); + СтруктураКолонок.Вставить("time_field" , "time"); + СтруктураКолонок.Вставить("dto_field" , "datetimeoffset"); + СтруктураКолонок.Вставить("datetime_field" , "datetime"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьТаблицу"); + + Таблица = "АБВ ГДЕ"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьТаблицу", "Ошибка имени"); + + Таблица = "somename"; + СтруктураКолонок.Вставить("wtf_field", "WTF"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "СоздатьТаблицу", "Ошибка типа"); + +КонецПроцедуры + +Процедура MSSQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + XML = " + | + | Пример + | 123 + | + | + | Тест + | 456 + | + |"; + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("TINYINT" , 5)); + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 2000)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 200000)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 20000000000)); + СтруктураЗаписи.Вставить("float24_field" , Новый Структура("FLOAT24" , 10.1234567)); + СтруктураЗаписи.Вставить("float53_field" , Новый Структура("FLOAT53" , 10.123456789123456)); + СтруктураЗаписи.Вставить("bit_field" , Новый Структура("BIT" , Истина)); + СтруктураЗаписи.Вставить("nvarchar_field" , Новый Структура("NVARCHAR" , "Some text")); + СтруктураЗаписи.Вставить("varbinary_field", Новый Структура("BYTES" , Картинка)); + СтруктураЗаписи.Вставить("uid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор)); + СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , 5.333)); + СтруктураЗаписи.Вставить("xml_field" , Новый Структура("XML" , XML)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("dto_field" , Новый Структура("DATETIMEOFFSET", ТекущаяДатаЧП)); + СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATETIME" , ТекущаяДата)); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивЗаписей); + Опции.Вставить("trn", Истина); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ДобавитьЗаписи"); + +КонецПроцедуры + +Процедура MSSQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // Все записи без отборов + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьЗаписи"); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьЗаписи", "Отборы"); + +КонецПроцедуры + +Процедура MSSQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Количество = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Количество, "MSSQL", "ОбновитьЗаписи", "Количество"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОбновитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['ip_address']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); + +КонецПроцедуры + +Процедура MSSQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Получение = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Получение, "MSSQL", "УдалитьЗаписи", "Получение"); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьЗаписи", "Проверка", Остаток); + +КонецПроцедуры + +Процедура MSSQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьТаблицу"); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьТаблицу", "Тест"); + +КонецПроцедуры + +Процедура MSSQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + База = "testbase1"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных"); + + База = "testbase2"; + + Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MSSQL", "УдалитьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Удаление"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Ошибка"); + + Закрытие = OPI_MSSQL.ЗакрытьСоединение(Подключение); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MSSQL", "УдалитьБазуДанных", "Закрытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьБазуДанных", "Ошибка подключения"); + +КонецПроцедуры + +Процедура MSSQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура MSSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьИнформациюОТаблице"); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьИнформациюОТаблице", "Ошибка"); + +КонецПроцедуры + +Процедура MSSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + База = "testbase1"; + Таблица = "testtable"; + Имя = "new_field"; + ТипДанных = "bigint"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MSSQL_УдалитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + База = "testbase1"; + Таблица = "testtable"; + Имя = "new_field"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MSSQL_ГарантироватьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + + База = "testbase1"; + Таблица = "testtable"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("smallint_field" , "smallint"); + СтруктураКолонок.Вставить("double_field" , "real"); + СтруктураКолонок.Вставить("bigint_field" , "bigint"); + СтруктураКолонок.Вставить("custom_field" , "nvarchar"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + +КонецПроцедуры + +Процедура MSSQL_ГарантироватьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "SA"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTLS", Опции); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_guarantee"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "NVARCHAR(255)"); // SKIP + СтруктураКолонок.Вставить("age" , "INT"); // SKIP + СтруктураКолонок.Вставить("salary", "DECIMAL(10,2)"); // SKIP + OPI_MSSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); + СтруктураСтроки1.Вставить("name" , Новый Структура("NVARCHAR", "Vitaly")); + СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); + СтруктураСтроки1.Вставить("salary", Новый Структура("DECIMAL" , 1000.12)); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); + СтруктураСтроки2.Вставить("name" , Новый Структура("NVARCHAR", "Lesha")); + СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); + СтруктураСтроки2.Вставить("salary", Новый Структура("DECIMAL" , 200.20)); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , Новый Структура("NVARCHAR", "Vitaly Updated")); + СтруктураСтроки1.Вставить("salary", Новый Структура("DECIMAL" , 1500.50)); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); + СтруктураСтроки3.Вставить("name" , Новый Структура("NVARCHAR", "Anton")); + СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); + СтруктураСтроки3.Вставить("salary", Новый Структура("DECIMAL" , 3000.00)); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MSSQL", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_MSSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); + +КонецПроцедуры + +Процедура MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MSSQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +#КонецОбласти // MSSQL + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure MSS_CommonMethods() Export + MSS_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_MongoDB.os b/src/ru/OInt/tests/Modules/OPItc_MongoDB.os new file mode 100644 index 0000000000..df3aafc2ca --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_MongoDB.os @@ -0,0 +1,2025 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MongoDB.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("MongoDB"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("MongoDB"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область MongoDB + +Процедура Mongo_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СформироватьСтрокуПодключения(ПараметрыТеста); + MongoDB_ОткрытьСоединение(ПараметрыТеста); + MongoDB_ЗакрытьСоединение(ПараметрыТеста); + MongoDB_ЭтоКоннектор(ПараметрыТеста); + MongoDB_ВыполнитьКоманду(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_РаботаСБазами() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_ПолучитьБазуДанных(ПараметрыТеста); + MongoDB_ПолучитьСписокБаз(ПараметрыТеста); + MongoDB_УдалитьБазуДанных(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_РаботаСКоллекциями() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СоздатьКоллекцию(ПараметрыТеста); + MongoDB_ПолучитьСписокКоллекций(ПараметрыТеста); + MongoDB_УдалитьКоллекцию(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_РаботаСДокументами() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + MongoDB_ВставитьДокументы(ПараметрыТеста); + MongoDB_ПолучитьДокументы(ПараметрыТеста); + MongoDB_ПолучитьКурсор(ПараметрыТеста); + MongoDB_ПолучитьПакетДокументов(ПараметрыТеста); + MongoDB_ОбновитьДокументы(ПараметрыТеста); + MongoDB_УдалитьДокументы(ПараметрыТеста); + MongoDB_ПолучитьСтруктуруОбновленияДокументов(ПараметрыТеста); + MongoDB_ПолучитьСтруктуруУдаленияДокументов(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СоздатьПользователя(ПараметрыТеста); + MongoDB_ИзменитьПользователя(ПараметрыТеста); + MongoDB_ПолучитьПользователей(ПараметрыТеста); + MongoDB_ПолучитьПользователейБазы(ПараметрыТеста); + MongoDB_УдалитьПользователя(ПараметрыТеста); + +КонецПроцедуры + +Процедура Mongo_УправлениеРолями() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста); + + MongoDB_СоздатьРоль(ПараметрыТеста); + MongoDB_ПолучитьРоли(ПараметрыТеста); + MongoDB_НазначитьРоли(ПараметрыТеста); + MongoDB_СнятьРоли(ПараметрыТеста); + MongoDB_ИзменитьРоль(ПараметрыТеста); + MongoDB_УдалитьРоль(ПараметрыТеста); + MongoDB_ПолучитьСтруктуруПривилегииРоли(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // MongoDB + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область MongoDB + +Процедура MongoDB_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СформироватьСтрокуПодключения", , ПараметрыФункции); + +КонецПроцедуры + +Процедура MongoDB_ОткрытьСоединение(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Результат = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОткрытьСоединение"); + + Результат = OPI_MongoDB.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОткрытьСоединение", "Закрытие"); + +КонецПроцедуры + +Процедура MongoDB_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + Результат = OPI_MongoDB.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура MongoDB_ЭтоКоннектор(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + Результат = OPI_MongoDB.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура MongoDB_ВыполнитьКоманду(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + + Команда = "listDatabases"; + Данные = Новый Структура("nameOnly", Истина); + + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "MongoDB", "ВыполнитьКоманду", "Подключение"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("comm", Команда); + Опции.Вставить("data", Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВыполнитьКоманду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ВыполнитьКоманду"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьБазуДанных(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + База = "test_db"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьБазуДанных"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСписокБаз(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСписокБаз", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСписокБаз"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьБазуДанных"); + +КонецПроцедуры + +Процедура MongoDB_СоздатьКоллекцию(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Наименование = "test_collection"; + База = "test_database"; + + Параметры = Новый Соответствие; + Выражение = Новый Соответствие; + ГруппаИ = Новый Массив; + + Условие1 = Новый Соответствие; // Итог >= 0 + Элементы1 = Новый Массив; + Элементы1.Добавить("$total"); + Элементы1.Добавить(0); + Условие1.Вставить("$gte", Элементы1); + + Условие2 = Новый Соответствие; // Статус <= 3 + Элементы2 = Новый Массив; + Элементы2.Добавить("$status"); + Элементы2.Добавить(3); + Условие2.Вставить("$lte", Элементы2); + + ГруппаИ.Добавить(Условие1); + ГруппаИ.Добавить(Условие2); + + Выражение.Вставить("$expr", ГруппаИ); + Параметры.Вставить("validator", Выражение); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", Наименование); + Опции.Вставить("db", База); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьКоллекцию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьКоллекцию"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", Наименование); + Опции.Вставить("db", База); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьКоллекцию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьКоллекцию", "Существующая"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьКоллекцию(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "test_collection"; + База = "test_database"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьКоллекцию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьКоллекцию"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСписокКоллекций(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + База = "test_database"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСписокКоллекций", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСписокКоллекций"); + +КонецПроцедуры + +Процедура MongoDB_ВставитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + МассивДокументов = Новый Массив; + + // С неявным приведением типов + СтруктураДокумента = Новый Структура; + + ТестовыйМассив = Новый Массив; + ТестовыйМассив.Добавить("Значение1"); + ТестовыйМассив.Добавить("Значение2"); + + ТестоваяСтруктура = Новый Структура("text,number", "Текст", 10); + ТестовыеДвоичные = ПолучитьДвоичныеДанныеИзСтроки("Текст"); + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + СтруктураДокумента.Вставить("stringField", "Текст"); + СтруктураДокумента.Вставить("intField" , 200); + СтруктураДокумента.Вставить("doubleField", 123.456); + СтруктураДокумента.Вставить("boolField" , Истина); + СтруктураДокумента.Вставить("arrayField" , ТестовыйМассив); + СтруктураДокумента.Вставить("docField" , ТестоваяСтруктура); + СтруктураДокумента.Вставить("dateField" , ТекущаяДата); + СтруктураДокумента.Вставить("nullField"); + + МассивДокументов.Добавить(СтруктураДокумента); + + // С явным приведением типов + СтруктураДокумента = Новый Структура; + + RegExp = Новый Структура("pattern,options", "[a-z]+@[a-z]+\.[a-z]+", "i"); + КодJS = "const result = [1, 2, 3].map(x => x * 2).filter(x => x > 3);"; + + СтруктураДокумента.Вставить("stringField", Новый Структура("__OPI_STRING__" , "Текст")); + СтруктураДокумента.Вставить("oidField" , Новый Структура("__OPI_OBJECTID__" , "63ceed18f71dda7d8cf21e8e")); + СтруктураДокумента.Вставить("jsField" , Новый Структура("__OPI_JS__" , КодJS)); + СтруктураДокумента.Вставить("symbolField", Новый Структура("__OPI_SYMBOL__" , "Y")); + СтруктураДокумента.Вставить("int32Field" , Новый Структура("__OPI_INT32__" , 10)); + СтруктураДокумента.Вставить("int64Field" , Новый Структура("__OPI_INT64__" , 1000)); + СтруктураДокумента.Вставить("doubleField", Новый Структура("__OPI_DOUBLE__" , 124.456)); + СтруктураДокумента.Вставить("boolField" , Новый Структура("__OPI_BOOLEAN__" , Истина)); + СтруктураДокумента.Вставить("dateField" , Новый Структура("__OPI_DATETIME__" , "1763204141")); + СтруктураДокумента.Вставить("tsField" , Новый Структура("__OPI_TIMESTAMP__", ТекущаяДата)); + СтруктураДокумента.Вставить("regexpField", Новый Структура("__OPI_REGEXP__" , RegExp)); + СтруктураДокумента.Вставить("binaryField", Новый Структура("__OPI_BINARY__" , ТестовыеДвоичные)); + СтруктураДокумента.Вставить("nullField" , Новый Структура("__OPI_NULL__")); + СтруктураДокумента.Вставить("minkeyField", Новый Структура("__OPI_MINKEY__")); + СтруктураДокумента.Вставить("maxkeyField", Новый Структура("__OPI_MAXKEY__")); + + ТестовыйМассив = Новый Массив; + ТестовыйМассив.Добавить(Новый Структура("__OPI_SYMBOL__", "A")); + ТестовыйМассив.Добавить(Новый Структура("__OPI_MINKEY__")); + + ТестоваяСтруктура = Новый Структура("code,number" + , Новый Структура("__OPI_JS__", "const result = 1") + , Новый Структура("__OPI_DOUBLE__", 10)); + + // Документы и массивы в структуру не оборачиваются + СтруктураДокумента.Вставить("docField" , ТестоваяСтруктура); + СтруктураДокумента.Вставить("arrayField" , ТестовыйМассив); + + МассивДокументов.Добавить(СтруктураДокумента); + + OPI_MongoDB.УдалитьКоллекцию(Соединение, Коллекция, База); // SKIP + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("docs", МассивДокументов); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВставитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ВставитьДокументы"); + + МассивДокументов = Новый Массив; + + СоответствиеКатегорий = Новый Соответствие; + СоответствиеКатегорий.Вставить(1, "электроника"); + СоответствиеКатегорий.Вставить(2, "одежда"); + СоответствиеКатегорий.Вставить(3, "книги"); + СоответствиеКатегорий.Вставить(4, "продукты"); + + СоответствиеПоставщиков = Новый Соответствие; + СоответствиеПоставщиков.Вставить(1, "Поставщик А"); + СоответствиеПоставщиков.Вставить(2, "Поставщик Б"); + СоответствиеПоставщиков.Вставить(3, "Поставщик В"); + + Для Н = 1 По 15 Цикл + + СтруктураДокумента = Новый Структура; + + СтруктураДокумента.Вставить("productName", "Товар " + Н); + СтруктураДокумента.Вставить("category" , СоответствиеКатегорий.Получить(Н % 4)); + СтруктураДокумента.Вставить("price" , 50 + (Н * 30)); + СтруктураДокумента.Вставить("quantity" , 5 + (Н % 10)); + СтруктураДокумента.Вставить("rating" , Макс(1, Н % 6)); + СтруктураДокумента.Вставить("inStock" , Н % 3 > 0); + СтруктураДокумента.Вставить("tags" , OPI_ПолучениеДанныхТестов.ПолучитьМассивТегов(Н)); + СтруктураДокумента.Вставить("createdDate", OPI_Инструменты.ПолучитьТекущуюДату() - (Н * 86400)); + + Детали = Новый Структура; + Детали.Вставить("supplier" , СоответствиеПоставщиков.Получить(Н % 3)); + Детали.Вставить("weightKg" , Н * 0.3); + Детали.Вставить("dimensions", Новый Структура("length,width,height", Н * 8, Н * 4, Н * 2)); + СтруктураДокумента.Вставить("details", Детали); + + МассивДокументов.Добавить(СтруктураДокумента); + + КонецЦикла; + + ДокументСНулем = Новый Структура; + ДокументСНулем.Вставить("productName", "Товар с нулевой ценой"); + ДокументСНулем.Вставить("category" , "книги"); + ДокументСНулем.Вставить("price" , 0); + ДокументСНулем.Вставить("quantity" , 1); + ДокументСНулем.Вставить("rating" , 4); + ДокументСНулем.Вставить("inStock" , Истина); + ДокументСНулем.Вставить("tags" , Новый Массив); + МассивДокументов.Добавить(ДокументСНулем); + + ДокументБезКатегории = Новый Структура; + ДокументБезКатегории.Вставить("productName", "Товар без категории"); + ДокументБезКатегории.Вставить("price" , 250); + ДокументБезКатегории.Вставить("quantity" , 3); + ДокументБезКатегории.Вставить("rating" , 3); + ДокументБезКатегории.Вставить("inStock" , Ложь); + МассивДокументов.Добавить(ДокументБезКатегории); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("docs", МассивДокументов); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ВставитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ВставитьДокументы"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + // __4 = $ + Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); + Сортировка = Новый Структура("doubleField", -1); + Параметры = Новый Структура("limit", 2); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы"); + + // 1: Category and price range + Фильтр = Новый Структура("category,price", "электроника", Новый Структура("__4gte,__4lte", 100, 400)); + Сортировка = Новый Структура("price", 1); + Параметры = Новый Структура("limit", 5); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 1); + + // 2: Stock and rating + Фильтр = Новый Структура("inStock,rating", Истина, Новый Структура("__4gte", 4)); + Сортировка = Новый Структура("rating,price", -1, 1); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 2); + + // 3: By tags array + Фильтр = Новый Структура("tags", "распродажа"); + Сортировка = Новый Структура("createdDate", -1); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 3); + + // 4: By nested fields + Фильтр = Новый Соответствие; + Фильтр.Вставить("details.supplier", "Поставщик А"); + Фильтр.Вставить("details.weightKg", Новый Структура("__4lt", 3)); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 4); + + // 5: Projection + Фильтр = Новый Структура("category", "книги"); + Сортировка = Новый Структура("price", -1); + Параметры = Новый Структура("projection", Новый Структура("productName,price,rating", 1, 1, 1)); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьДокументы", 5); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьКурсор(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + Фильтр = Новый Структура("stringField", "Текст"); + Сортировка = Новый Структура("doubleField", -1); + Параметры = Новый Структура("limit,batchSize", 2, 1); + + Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьКурсор"); + + // Big batchSize with limit + Фильтр = Новый Структура("inStock", Истина); + Сортировка = Новый Структура("price", 1); + Параметры = Новый Структура("limit,batchSize", 8, 3); + + Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьКурсор", 1); + + // Small batchSize without limit + Фильтр = Новый Структура("category", "одежда"); + Сортировка = Новый Структура("rating", -1); + Параметры = Новый Структура("batchSize", 2); + + Результат = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьКурсор", 2); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьПакетДокументов(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + Фильтр = Новый Структура("stringField", "Текст"); + Сортировка = Новый Структура("doubleField", -1); + Параметры = Новый Структура("limit,batchSize", 2, 1); + + Курсор = OPI_MongoDB.ПолучитьКурсор(Соединение, Коллекция, База, Фильтр, Сортировка, Параметры); + + Если Не Курсор["result"] Тогда + ВызватьИсключение Курсор["error"]; + КонецЕсли; + + Курсор = Курсор["data"]["cursor"]; + МассивДокументов = Курсор["firstBatch"]; + IDКурсора = Курсор["id"]; + ПродолжатьВыборку = IDКурсора > 0; + + Пока ПродолжатьВыборку Цикл + + Результат = OPI_MongoDB.ПолучитьПакетДокументов(Соединение, Коллекция, IDКурсора, База); // <--- + + Если Не Результат["result"] Тогда + ВызватьИсключение Результат["error"]; + КонецЕсли; + + ПродолжатьВыборку = Результат["data"]["cursor"]["id"] > 0; + + Для Каждого Запись Из Результат["data"]["cursor"]["nextBatch"] Цикл + МассивДокументов.Добавить(Запись); + КонецЦикла; + + КонецЦикла; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПакетДокументов"); + +КонецПроцедуры + +Процедура MongoDB_ОбновитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + // __4 = $ + Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); + Данные = Новый Структура( "__4set", Новый Структура("doubleField", 999)); + + Обновление = OPI_MongoDB.ПолучитьСтруктуруОбновленияДокументов(Фильтр, Данные); // Массив или одиночное + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы"); + + Параметры = Новый Структура("limit,batchSize", 2, 1); + Сортировка = Новый Структура("doubleField", -1); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", "Получение"); + + Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Сортировка); + Опции.Вставить("params", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", "Получение новых"); + + // Multiply fields + Фильтр = Новый Структура("category", "электроника"); + Данные = Новый Структура("__4set", Новый Структура("price,inStock,rating", 777, Ложь, 5)); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 1); + + Фильтр = Новый Структура("category", "электроника", "price", 777); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 1"); + + // Number inc + Фильтр = Новый Структура("productName", "Товар 1"); + Данные = Новый Структура("__4inc", Новый Структура("quantity", 10)); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 2); + + Фильтр = Новый Структура("productName", "Товар 1"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 2"); + + // Array insertion + Фильтр = Новый Структура("productName", "Товар 2"); + Данные = Новый Структура("__4push", Новый Структура("tags", "обновленный")); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 3); + + Фильтр = Новый Структура("productName", "Товар 2", "tags", "обновленный"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 3"); + + // Nested field update + СоответствиеУстановки = Новый Соответствие; + СоответствиеУстановки.Вставить("details.weightKg", 2.5); + СоответствиеУстановки.Вставить("details.supplier", "Поставщик А+"); + + Фильтр = Новый Соответствие; + Фильтр.Вставить("details.supplier", "Поставщик А"); + + Данные = Новый Структура("__4set", СоответствиеУстановки); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 4); + + Фильтр = Новый Соответствие; + Фильтр.Вставить("details.supplier", "Поставщик А+"); + Фильтр.Вставить("details.weightKg", 2.5); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 4"); + + // Upsert + Фильтр = Новый Структура("productName", "Новый товар"); + + //@skip-check structure-consructor-too-many-keys + Данные = Новый Структура("__4set", Новый Структура("productName,category,price,quantity,inStock,createdDate" + , "Новый товар" + , "электроника" + , 1999 + , 1 + , Истина + , OPI_Инструменты.ПолучитьТекущуюДату() + )); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Ложь); + Опции.Вставить("upsert", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 5); + + Фильтр = Новый Структура("productName", "Новый товар"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 5"); + + // Field removing + Фильтр = Новый Структура("productName", "Товар 3"); + Данные = Новый Структура("__4unset", Новый Структура("rating", "")); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 6); + + Фильтр = Новый Структура("productName", "Товар 3"); + Параметры = Новый Структура("projection", Новый Структура("productName,rating", 1, 1)); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + Опции.Вставить("sort", Неопределено); + Опции.Вставить("params", Параметры); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 6"); + + // Multiply operators + Фильтр = Новый Структура("price", Новый Структура("__4lt", 200)); + Данные = Новый Структура; + Данные.Вставить("__4set", Новый Структура("inStock", Ложь)); + Данные.Вставить("__4inc", Новый Структура("quantity", -5)); + Данные.Вставить("__4push", Новый Структура("tags", "уценка")); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + + Обновление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", Обновление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 7); + + Фильтр = Новый Структура("price,tags", Новый Структура("__4lt", 200), "уценка"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 7"); + + // Updates array + МассивОбновлений = Новый Массив; + + Фильтр1 = Новый Структура("category", "электроника"); + Данные1 = Новый Структура("__4set", Новый Структура("price,discounted", 888, Истина)); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр1); + Опции.Вставить("data", Данные1); + Опции.Вставить("multi", Истина); + + Обновление1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление1); + + Фильтр2 = Новый Структура("category", "одежда"); + Данные2 = Новый Структура("__4inc", Новый Структура("quantity", 5)); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр2); + Опции.Вставить("data", Данные2); + Опции.Вставить("multi", Истина); + + Обновление2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление2); + + Фильтр3 = Новый Структура("category", "книги"); + Данные3 = Новый Структура("__4push", Новый Структура("tags", "массовое_обновление")); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр3); + Опции.Вставить("data", Данные3); + Опции.Вставить("multi", Истина); + + Обновление3 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление3); + + Фильтр4 = Новый Структура("productName", "Специальный товар из массива"); + + //@skip-check structure-consructor-too-many-keys + Данные4 = Новый Структура("__4set", Новый Структура("productName,category,price,quantity,inStock,createdDate" + , "Специальный товар из массива" + , "специальная" + , 1111 + , 7 + , Истина + , OPI_Инструменты.ПолучитьТекущуюДату() + )); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр4); + Опции.Вставить("data", Данные4); + Опции.Вставить("multi", Ложь); + Опции.Вставить("upsert", Истина); + + Обновление4 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление4); + + Фильтр5 = Новый Структура("rating", Новый Структура("__4lte", 2)); + Данные5 = Новый Структура; + Данные5.Вставить("__4set", Новый Структура("needsImprovement", Истина)); + Данные5.Вставить("__4inc", Новый Структура("quantity" , -2)); + Опции = Новый Структура; + Опции.Вставить("query", Фильтр5); + Опции.Вставить("data", Данные5); + Опции.Вставить("multi", Истина); + + Обновление5 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + МассивОбновлений.Добавить(Обновление5); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("updates", МассивОбновлений); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ОбновитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ОбновитьДокументы", 9); + + Фильтр = Новый Структура("category,price", "электроника", 888); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_1"); + + Фильтр = Новый Структура("category,tags", "книги", "массовое_обновление"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_2"); + + Фильтр = Новый Структура("productName", "Специальный товар из массива"); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_3"); + + Фильтр = Новый Структура("needsImprovement", Истина); + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + РезультатПроверки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + OPI_ПолучениеДанныхТестов.Обработать(РезультатПроверки, "MongoDB", "ОбновитьДокументы", "Проверка 8_4"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСтруктуруОбновленияДокументов(ПараметрыФункции) + + // __4 = $ + Фильтр = Новый Структура("stringField,doubleField", "Текст", Новый Структура("__4gte, __4lte", 100, 150)); + Данные = Новый Структура( "__4set", Новый Структура("doubleField", 999)); + + Опции = Новый Структура; + Опции.Вставить("query", Фильтр); + Опции.Вставить("data", Данные); + Опции.Вставить("multi", Истина); + Опции.Вставить("upsert", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруОбновленияДокументов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСтруктуруОбновленияДокументов"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСтруктуруУдаленияДокументов(ПараметрыФункции) + + Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); + Результат = OPI_MongoDB.ПолучитьСтруктуруУдаленияДокументов(Фильтр, 1); // Массив или одиночное + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСтруктуруУдаленияДокументов"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьДокументы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Коллекция = "new_collection"; + + Фильтр = Новый Структура("stringField,doubleField", "Текст", 999); + Удаление = OPI_MongoDB.ПолучитьСтруктуруУдаленияДокументов(Фильтр, 1); // Массив или одиночное + + Результат = OPI_MongoDB.ПолучитьДокументы(Соединение, Коллекция, База, Фильтр); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьДокументы", "Предпроверка"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("deletes", Удаление); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьДокументы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьДокументы"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("coll", Коллекция); + Опции.Вставить("db", База); + Опции.Вставить("query", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьДокументы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьДокументы", "Проверка"); + +КонецПроцедуры + +Процедура MongoDB_СоздатьПользователя(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("read"); + МассивРолей.Добавить("userAdmin"); + + ИмяПользователя = "newuser"; + ПарольПользователя = "1234"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьПользователя"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьПользователя", "Существующий"); + +КонецПроцедуры + +Процедура MongoDB_ИзменитьПользователя(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("readWrite"); + + ИмяПользователя = "newuser"; + ПарольПользователя = "4321"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ИзменитьПользователя"); + + ИмяПользователя = "anotheruser"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("roles", МассивРолей); + Опции.Вставить("db", База); + Опции.Вставить("pwd", ПарольПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ИзменитьПользователя", "Несуществующий"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьПользователя(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + ИмяПользователя = "newuser"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьПользователя"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяПользователя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьПользователя", "Повторно"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьПользователей(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + ИмяПользователя = "newuser"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("usrs", ИмяПользователя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПользователей", "Простой"); // SKIP + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить(Новый Структура("user,db", "bayselonarrend", "admin")); + МассивПользователей.Добавить(Новый Структура("user,db", "newuser" , "main")); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("usrs", МассивПользователей); + Опции.Вставить("db", База); + Опции.Вставить("spwd", Истина); + Опции.Вставить("sprv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПользователей"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьПользователейБазы(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = ПараметрыФункции["MongoDB_DB"]; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьПользователейБазы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьПользователейБазы"); + +КонецПроцедуры + +Процедура MongoDB_СоздатьРоль(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("read"); + МассивРолей.Добавить("userAdmin"); + + Ресурс = Новый Структура("db,collection", База, "new_collection"); + Действия = Новый Массив; + + Действия.Добавить("find"); + Действия.Добавить("insert"); + Действия.Добавить("update"); + + Опции = Новый Структура; + Опции.Вставить("res", Ресурс); + Опции.Вставить("act", Действия); + + Привилегия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); + + МассивПривилегий = Новый Массив; + МассивПривилегий.Добавить(Привилегия); + + ИмяРоли = "newrole"; + + OPI_MongoDB.УдалитьРоль(Соединение, ИмяРоли, База); // SKIP + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + Опции.Вставить("prvl", МассивПривилегий); + Опции.Вставить("roles", МассивРолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьРоль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьРоль"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + Опции.Вставить("prvl", МассивПривилегий); + Опции.Вставить("roles", МассивРолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СоздатьРоль", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СоздатьРоль", "Существующий"); + +КонецПроцедуры + +Процедура MongoDB_ИзменитьРоль(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + МассивРолей = Новый Массив; + МассивРолей.Добавить("read"); + МассивРолей.Добавить("userAdmin"); + + Ресурс = Новый Структура("db,collection", База, "new_collection2"); + Действия = Новый Массив; + + Действия.Добавить("find"); + Действия.Добавить("insert"); + + Опции = Новый Структура; + Опции.Вставить("res", Ресурс); + Опции.Вставить("act", Действия); + + Привилегия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); + + МассивПривилегий = Новый Массив; + МассивПривилегий.Добавить(Привилегия); + + ИмяРоли = "newrole"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + Опции.Вставить("prvl", МассивПривилегий); + Опции.Вставить("roles", МассивРолей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ИзменитьРоль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ИзменитьРоль"); + +КонецПроцедуры + +Процедура MongoDB_УдалитьРоль(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + ИмяРоли = "newrole"; + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьРоль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьРоль"); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("name", ИмяРоли); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "УдалитьРоль", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "УдалитьРоль", "Повторно"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьСтруктуруПривилегииРоли(ПараметрыФункции) + + База = ПараметрыФункции["MongoDB_DB"]; + Ресурс = Новый Структура("db,collection", База, "new_collection"); + Действия = Новый Массив; + + Действия.Добавить("find"); + Действия.Добавить("insert"); + Действия.Добавить("update"); + + Опции = Новый Структура; + Опции.Вставить("res", Ресурс); + Опции.Вставить("act", Действия); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьСтруктуруПривилегииРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьСтруктуруПривилегииРоли"); + +КонецПроцедуры + +Процедура MongoDB_ПолучитьРоли(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Роль = Новый Структура("role,db", "newrole", База); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("roles", Роль); + Опции.Вставить("db", База); + Опции.Вставить("sprv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "ПолучитьРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "ПолучитьРоли"); + +КонецПроцедуры + +Процедура MongoDB_НазначитьРоли(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Пользователь = "bayselonarrend"; + Роль = Новый Структура("role,db", "newrole", База); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("user", Пользователь); + Опции.Вставить("roles", Роль); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "НазначитьРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "НазначитьРоли"); + +КонецПроцедуры + +Процедура MongoDB_СнятьРоли(ПараметрыФункции) + + Адрес = "127.0.0.1:1234"; + Логин = ПараметрыФункции["MongoDB_User"]; + Пароль = ПараметрыФункции["MongoDB_Password"]; + База = "admin"; + + Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"]; // SKIP + + ПараметрыПодключения = Новый Структура("authSource", "admin"); + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("usr", Логин); + Опции.Вставить("pwd", Пароль); + Опции.Вставить("params", ПараметрыПодключения); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СформироватьСтрокуПодключения", Опции); + Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения); + + Пользователь = "bayselonarrend"; + Роль = Новый Структура("role,db", "newrole", База); + + Опции = Новый Структура; + Опции.Вставить("dbc", Соединение); + Опции.Вставить("user", Пользователь); + Опции.Вставить("roles", Роль); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mongodb", "СнятьРоли", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "СнятьРоли"); + +КонецПроцедуры + +#КонецОбласти // MongoDB + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure Mongo_CommonMethods() Export + Mongo_ОсновныеМетоды(); +EndProcedure + +Procedure Mong_DatabaseManagement() Export + Mongo_РаботаСБазами(); +EndProcedure + +Procedure Mongo_CollectionManagement() Export + Mongo_РаботаСКоллекциями(); +EndProcedure + +Procedure Mongo_DocumentsManagement() Export + Mongo_РаботаСДокументами(); +EndProcedure + +Procedure Mongo_UserManagement() Export + Mongo_УправлениеПользователями(); +EndProcedure + +Procedure Mongo_RoleManagement() Export + Mongo_УправлениеРолями(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_MySQL.os b/src/ru/OInt/tests/Modules/OPItc_MySQL.os new file mode 100644 index 0000000000..20392013b5 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_MySQL.os @@ -0,0 +1,1603 @@ +// OneScript: ./OInt/tests/Modules/OPItc_MySQL.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("MySQL"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("MySQL"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область MySQL + +Процедура MYS_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровMySQL(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + MySQL_СформироватьСтрокуПодключения(ПараметрыТеста); + MySQL_ОткрытьСоединение(ПараметрыТеста); + MySQL_ЗакрытьСоединение(ПараметрыТеста); + MySQL_ЭтоКоннектор(ПараметрыТеста); + MySQL_ВыполнитьЗапросSQL(ПараметрыТеста); + MySQL_ПолучитьНастройкиTLS(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура MYS_ORM() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровMySQL(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + MySQL_СоздатьБазуДанных(ПараметрыТеста); + MySQL_СоздатьТаблицу(ПараметрыТеста); + MySQL_ДобавитьЗаписи(ПараметрыТеста); + MySQL_ГарантироватьЗаписи(ПараметрыТеста); + MySQL_ПолучитьЗаписи(ПараметрыТеста); + MySQL_ОбновитьЗаписи(ПараметрыТеста); + MySQL_УдалитьЗаписи(ПараметрыТеста); + MySQL_ОчиститьТаблицу(ПараметрыТеста); + MySQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + MySQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + MySQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + MySQL_ГарантироватьТаблицу(ПараметрыТеста); + MySQL_УдалитьТаблицу(ПараметрыТеста); + MySQL_УдалитьБазуДанных(ПараметрыТеста); + MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // MySQL + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область MySQL + +Процедура MySQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + // END + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СформироватьСтрокуПодключения"); + +КонецПроцедуры + +Процедура MySQL_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Результат = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + // END + + OPI_MySQL.ЗакрытьСоединение(Результат); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура MySQL_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MySQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура MySQL_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_MySQL.ЭтоКоннектор(Соединение); + + OPI_MySQL.ЗакрытьСоединение(Результат); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура MySQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_MySQL.УдалитьТаблицу("users" , Соединение); // SKIP + OPI_MySQL.УдалитьТаблицу("test_data" , Соединение); // SKIP + OPI_MySQL.УдалитьТаблицу("test_table", Соединение); // SKIP + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "MySQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id INT AUTO_INCREMENT PRIMARY KEY, + |name VARCHAR(255), + |age INT, + |salary DOUBLE, + |amount FLOAT, + |type TINYINT UNSIGNED, + |date DATE, + |time TIME, + |data MEDIUMBLOB + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, amount, type, date, time, data) + |VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly")); + МассивПараметров.Добавить(Новый Структура("INT" , 25)); + МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12)); + МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12)); + МассивПараметров.Добавить(Новый Структура("UINT" , 1)); + МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка)); + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + Результат = OPI_MySQL.ВыполнитьЗапросSQL("create table test_data (id INT,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(50),gender VARCHAR(50),ip_address VARCHAR(20));", , , Соединение); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Test data"); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql", ФайлSQL); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP + + Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MySQL", "ВыполнитьЗапросSQL", "Закрытие"); // SKIP + +КонецПроцедуры + +Процедура MySQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьБазуДанных"); + + База = "testbase2"; + OPI_MySQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); + + Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MySQL", "СоздатьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьБазуДанных", "Создание"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьБазуДанных", "Существующая"); + + OPI_MySQL.ЗакрытьСоединение(Подключение); + +КонецПроцедуры + +Процедура MySQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("char_field" , "CHAR(5)"); + СтруктураКолонок.Вставить("varchar_field" , "VARCHAR(255)"); + СтруктураКолонок.Вставить("tinytext_field" , "TINYTEXT"); + СтруктураКолонок.Вставить("text_field" , "TEXT"); + СтруктураКолонок.Вставить("mediumtext_field", "MEDIUMTEXT"); + СтруктураКолонок.Вставить("longtext_field" , "LONGTEXT"); + СтруктураКолонок.Вставить("tinyint_field" , "TINYINT"); + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("mediumint_field" , "MEDIUMINT"); + СтруктураКолонок.Вставить("int_field" , "INT"); + СтруктураКолонок.Вставить("uint_field" , "INT UNSIGNED"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("float_field" , "FLOAT"); + СтруктураКолонок.Вставить("double_field" , "DOUBLE"); + СтруктураКолонок.Вставить("date_field" , "DATE"); + СтруктураКолонок.Вставить("time_field" , "TIME"); + СтруктураКолонок.Вставить("datetime_field" , "DATETIME"); + СтруктураКолонок.Вставить("timestamp_field" , "TIMESTAMP"); + СтруктураКолонок.Вставить("mediumblob_field", "MEDIUMBLOB"); + СтруктураКолонок.Вставить("set_field" , "SET('one','two','three')"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьТаблицу"); + + Таблица = "АБВ ГДЕ"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьТаблицу", "Ошибка имени"); + + Таблица = "somename"; + СтруктураКолонок.Вставить("wtf_field", "WTF"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "СоздатьТаблицу", "Ошибка типа"); + +КонецПроцедуры + +Процедура MySQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("char_field" , Новый Структура("TEXT" , "AAAAA")); + СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("TEXT" , "Some varchar")); + СтруктураЗаписи.Вставить("tinytext_field" , Новый Структура("TEXT" , "Some tiny text")); + СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); + СтруктураЗаписи.Вставить("mediumtext_field", Новый Структура("TEXT" , "Some medium text")); + СтруктураЗаписи.Вставить("longtext_field" , Новый Структура("TEXT" , "Some looooooong text")); + СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("INT" , 127)); + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("INT" , -32767)); + СтруктураЗаписи.Вставить("mediumint_field" , Новый Структура("INT" , 8388607)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , -2147483647)); + СтруктураЗаписи.Вставить("uint_field" , Новый Структура("UINT" , 4294967295)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("INT" , 9223372036854775807)); + СтруктураЗаписи.Вставить("float_field" , Новый Структура("FLOAT" , 100.50)); + СтруктураЗаписи.Вставить("double_field" , Новый Структура("FLOAT" , 100.512123)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("timestamp_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("mediumblob_field", Новый Структура("BYTES" , Картинка)); + СтруктураЗаписи.Вставить("set_field" , Новый Структура("TEXT" , "one")); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивЗаписей); + Опции.Вставить("trn", Истина); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ДобавитьЗаписи"); + +КонецПроцедуры + +Процедура MySQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + // Все записи без отборов + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьЗаписи"); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьЗаписи", "Отборы"); + +КонецПроцедуры + +Процедура MySQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Количество = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Количество, "MySQL", "ОбновитьЗаписи", "Количество"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОбновитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['ip_address']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); + +КонецПроцедуры + +Процедура MySQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Получение = OPI_MySQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Получение, "MySQL", "УдалитьЗаписи", "Получение"); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьЗаписи", "Проверка", Остаток); + +КонецПроцедуры + +Процедура MySQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьТаблицу"); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьТаблицу", "Тест"); + +КонецПроцедуры + +Процедура MySQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = ""; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных"); + + База = "testbase2"; + + Подключение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "MySQL", "УдалитьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Удаление"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Ошибка"); + + Закрытие = OPI_MySQL.ЗакрытьСоединение(Подключение); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "MySQL", "УдалитьБазуДанных", "Закрытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьБазуДанных", "Ошибка подключения"); + +КонецПроцедуры + +Процедура MySQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура MySQL_ГарантироватьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_merge"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP + СтруктураКолонок.Вставить("age" , "INT"); // SKIP + СтруктураКолонок.Вставить("salary", "DOUBLE"); // SKIP + OPI_MySQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly")); + СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); + СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1000.12)); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); + СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT" , "Lesha")); + СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); + СтруктураСтроки2.Вставить("salary", Новый Структура("DOUBLE", 200.20)); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly Updated")); + СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1500.50)); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); + СтруктураСтроки3.Вставить("name" , Новый Структура("TEXT" , "Anton")); + СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); + СтруктураСтроки3.Вставить("salary", Новый Структура("DOUBLE", 3000.00)); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_MySQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); + +КонецПроцедуры + +Процедура MySQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +Процедура MySQL_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура MySQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьИнформациюОТаблице"); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ПолучитьИнформациюОТаблице", "Ошибка"); + +КонецПроцедуры + +Процедура MySQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + ТипДанных = "MEDIUMTEXT"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MySQL_УдалитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура MySQL_ГарантироватьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 3306; + Порт = ?(TLS, 3307, 3306); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("double_field" , "DOUBLE"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("custom_field" , "TEXT"); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "MySQL", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mysql", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "MySQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + +КонецПроцедуры + +#КонецОбласти // MySQL + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure MYS_CommonMethods() Export + MYS_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Neocities.os b/src/ru/OInt/tests/Modules/OPItc_Neocities.os new file mode 100644 index 0000000000..24fb7a163a --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Neocities.os @@ -0,0 +1,323 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Neocities.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Neocities"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Neocities"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Neocities + +Процедура НС_РаботаСФайлами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Gif" , ПараметрыТеста); + + Neocities_ЗагрузитьФайл(ПараметрыТеста); + Neocities_ЗагрузитьФайлы(ПараметрыТеста); + Neocities_ПолучитьСписокФайлов(ПараметрыТеста); + Neocities_УдалитьВыбранныеФайлы(ПараметрыТеста); + Neocities_СинхронизироватьКаталоги(ПараметрыТеста); + +КонецПроцедуры + +Процедура НС_ПолучениеДанных() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Login" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("NC_Password", ПараметрыТеста); + + Neocities_ПолучитьДанныеОСайте(ПараметрыТеста); + Neocities_ПолучитьТокен(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Neocities + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Neocities + +Процедура Neocities_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Данные = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Путь = "testfolder/test_pic.png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("file", Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ЗагрузитьФайл"); + +КонецПроцедуры + +Процедура Neocities_ЗагрузитьФайлы(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + Гифка = ПараметрыФункции["Gif"]; // URL, Путь или Двоичные данные + + СоответствиеФайлов = Новый Соответствие; + СоответствиеФайлов.Вставить("test/pic1.png", Картинка1); + СоответствиеФайлов.Вставить("test/gif.gif" , Картинка2); + СоответствиеФайлов.Вставить("pic2.png" , Гифка); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("files", СоответствиеФайлов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ЗагрузитьФайлы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ЗагрузитьФайлы"); + +КонецПроцедуры + +Процедура Neocities_УдалитьВыбранныеФайлы(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + Пути = Новый Массив; + Пути.Добавить("/test/pic1.png"); + Пути.Добавить("/test/gif.gif"); + Пути.Добавить("/pic2.png"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", Пути); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", "/testfolder"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы", "Каталог 1"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("paths", "/test"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "УдалитьВыбранныеФайлы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "УдалитьВыбранныеФайлы", "Каталог 2"); + +КонецПроцедуры + +Процедура Neocities_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Путь = "test"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьСписокФайлов"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьСписокФайлов", "Все"); + +КонецПроцедуры + +Процедура Neocities_ПолучитьДанныеОСайте(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + Сайт = "2athenaeum"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьДанныеОСайте"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("sitename", Сайт); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьДанныеОСайте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьДанныеОСайте", "Сайт"); + +КонецПроцедуры + +Процедура Neocities_ПолучитьТокен(ПараметрыФункции) + + Логин = ПараметрыФункции["NC_Login"]; + Пароль = ПараметрыФункции["NC_Password"]; + + Опции = Новый Структура; + Опции.Вставить("login", Логин); + Опции.Вставить("password", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "ПолучитьТокен", Опции); + + // END + + Результат["api_key"] = "***"; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Neocities_СинхронизироватьКаталоги(ПараметрыФункции) + + Токен = ПараметрыФункции["NC_Token"]; + + ЛокальныйКаталог = "C:\test_site"; + УдаленныйКаталог = "test_sync"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("local", ЛокальныйКаталог); + Опции.Вставить("remote", УдаленныйКаталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("neocities", "СинхронизироватьКаталоги", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Neocities", "СинхронизироватьКаталоги"); + +КонецПроцедуры + +#КонецОбласти // Neocities + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure NC_FilesManagement() Export + НС_РаботаСФайлами(); +EndProcedure + +Procedure NC_DataRetrieving() Export + НС_ПолучениеДанных(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Notion.os b/src/ru/OInt/tests/Modules/OPItc_Notion.os new file mode 100644 index 0000000000..378da8e764 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Notion.os @@ -0,0 +1,476 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Notion.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Notion"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Notion"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Notion + +Процедура НоушнАпи_СоздатьСтраницу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста); + + Notion_СоздатьСтраницу(ПараметрыТеста); + Notion_ПолучитьСтраницу(ПараметрыТеста); + Notion_ИзменитьСвойстваСтраницы(ПараметрыТеста); + +КонецПроцедуры + +Процедура НоушнАпи_СоздатьИзменитьБазу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Notion_СоздатьБазуДанных(ПараметрыТеста); + Notion_ИзменитьСвойстваБазы(ПараметрыТеста); + Notion_ПолучитьБазуДанных(ПараметрыТеста); + Notion_СоздатьСтраницуВБазу(ПараметрыТеста); + +КонецПроцедуры + +Процедура НоушнАпи_СоздатьУдалитьБлок() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Parent", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Block" , ПараметрыТеста); + + Notion_ВернутьБлок(ПараметрыТеста); + Notion_СоздатьБлок(ПараметрыТеста); + Notion_ВернутьДочерниеБлоки(ПараметрыТеста); + Notion_УдалитьБлок(ПараметрыТеста); + +КонецПроцедуры + +Процедура НоушнАпи_ПолучитьПользователей() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Notion_User" , ПараметрыТеста); + + Notion_СписокПользователей(ПараметрыТеста); + Notion_ПолучитьДанныеПользователя(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Notion + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Notion + +Процедура Notion_СоздатьСтраницу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Заголовок = "Тестовый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Родитель); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьСтраницу", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Notion_СоздатьБазуДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Заголовок = "Тестовый заголовок"; + + Свойства = Новый Соответствие; + Свойства.Вставить("Имя" , "title"); + Свойства.Вставить("Описание" , "rich_text"); + Свойства.Вставить("Номер" , "number"); + Свойства.Вставить("Дата создания", "date"); + Свойства.Вставить("Картинка" , "files"); + Свойства.Вставить("Активен" , "checkbox"); + Свойства.Вставить("Сайт" , "url"); + Свойства.Вставить("Почта" , "email"); + Свойства.Вставить("Телефон" , "phone_number"); + Свойства.Вставить("Пользователь" , "people"); + + ВыборЗначения = Новый Соответствие; + ВыборЗначения.Вставить("Новый" , "green"); + ВыборЗначения.Вставить("В работе" , "yellow"); + ВыборЗначения.Вставить("Удаленный", "red"); + + Свойства.Вставить("Статус", ВыборЗначения); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Родитель); + Опции.Вставить("title", Заголовок); + Опции.Вставить("props", Свойства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьБазуДанных", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Notion_ИзменитьСвойстваБазы(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + + Заголовок = "Тестовый заголовок"; + Описание = "Тестовое описание"; + + Свойства = Новый Соответствие; + Свойства.Вставить("Почта", "rich_text"); // Тип поля "Почта" будет изменен с email на текст + Свойства.Вставить("Сайт"); // Поле "Сайт" будет удалено + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("props", Свойства); + Опции.Вставить("title", Заголовок); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваБазы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ИзменитьСвойстваБазы"); + +КонецПроцедуры + +Процедура Notion_ПолучитьСтраницу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Страница = ПараметрыФункции["Notion_Page"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Страница); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьСтраницу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ПолучитьСтраницу"); + +КонецПроцедуры + +Процедура Notion_ПолучитьБазуДанных(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ПолучитьБазуДанных"); + +КонецПроцедуры + +Процедура Notion_СоздатьСтраницуВБазу(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + База = ПараметрыФункции["Notion_Base"]; + Картинка_ = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + + Картинка = Новый Соответствие; + Картинка.Вставить("Лого", Картинка_); + + Свойства = Новый Соответствие; + Свойства.Вставить("Имя" , "ООО Вектор"); + Свойства.Вставить("Описание" , "Наш первый клиент"); + Свойства.Вставить("Номер" , 1); + Свойства.Вставить("Дата создания", OPI_Инструменты.ПолучитьТекущуюДату()); + Свойства.Вставить("Картинка" , Картинка); + Свойства.Вставить("Активен" , Истина); + Свойства.Вставить("Сайт" , "https://vector.ru"); + Свойства.Вставить("Почта" , "mail@vector.ru"); + Свойства.Вставить("Телефон" , "88005553535"); + Свойства.Вставить("Статус" , "Новый"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("base", База); + Опции.Вставить("data", Свойства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьСтраницуВБазу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьСтраницуВБазу", , База); + +КонецПроцедуры + +Процедура Notion_ИзменитьСвойстваСтраницы(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Страница = ПараметрыФункции["Notion_Page"]; + Иконка = ПараметрыФункции["Picture"]; + Обложка = ПараметрыФункции["Picture2"]; + Архивировать = Ложь; + + Свойства = Новый Соответствие; + Свойства.Вставить("Активен", Ложь); + Свойства.Вставить("Почта" , "vector@mail.ru"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Страница); + Опции.Вставить("data", Свойства); + Опции.Вставить("icon", Иконка); + Опции.Вставить("cover", Обложка); + Опции.Вставить("archive", Архивировать); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ИзменитьСвойстваСтраницы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ИзменитьСвойстваСтраницы"); + +КонецПроцедуры + +Процедура Notion_ВернутьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_Block"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ВернутьБлок"); + +КонецПроцедуры + +Процедура Notion_СоздатьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Родитель = ПараметрыФункции["Notion_Parent"]; + Блок = ПараметрыФункции["Notion_Block"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + ДанныеБлока = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьБлок", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("page", Родитель); + Опции.Вставить("block", ДанныеБлока); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СоздатьБлок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СоздатьБлок", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Notion_ВернутьДочерниеБлоки(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_NewBlock"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ВернутьДочерниеБлоки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ВернутьДочерниеБлоки"); + +КонецПроцедуры + +Процедура Notion_УдалитьБлок(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Блок = ПараметрыФункции["Notion_NewBlock"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("block", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "УдалитьБлок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "УдалитьБлок"); + +КонецПроцедуры + +Процедура Notion_СписокПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "СписокПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "СписокПользователей"); + +КонецПроцедуры + +Процедура Notion_ПолучитьДанныеПользователя(ПараметрыФункции) + + Токен = ПараметрыФункции["Notion_Token"]; + Пользователь = ПараметрыФункции["Notion_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("user", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("notion", "ПолучитьДанныеПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Notion", "ПолучитьДанныеПользователя"); + +КонецПроцедуры + +#КонецОбласти // Notion + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure NotionAPI_CreatePage() Export + НоушнАпи_СоздатьСтраницу(); +EndProcedure + +Procedure NotionAPI_CreateUpdateBase() Export + НоушнАпи_СоздатьИзменитьБазу(); +EndProcedure + +Procedure NotionAPI_CreateDeleteBlock() Export + НоушнАпи_СоздатьУдалитьБлок(); +EndProcedure + +Procedure NotionAPI_GetUsers() Export + НоушнАпи_ПолучитьПользователей(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Ollama.os b/src/ru/OInt/tests/Modules/OPItc_Ollama.os new file mode 100644 index 0000000000..860220f9ba --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Ollama.os @@ -0,0 +1,818 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Ollama.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Ollama"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Ollama"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Ollama + +Процедура OLLM_ОбработкаЗапросов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + + Ollama_СкачатьМодель(ПараметрыТеста); + Ollama_ПолучитьВерсию(ПараметрыТеста); + Ollama_ПолучитьОтвет(ПараметрыТеста); + Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста); + Ollama_ПолучитьПредставления(ПараметрыТеста); + Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыТеста); + Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыТеста); + Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыТеста); + Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыТеста); + +КонецПроцедуры + +Процедура OLLM_РаботаСМоделями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + + Ollama_СкачатьМодель(ПараметрыТеста); + Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста); + Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста); + Ollama_СоздатьМодель(ПараметрыТеста); + Ollama_ПолучитьИнформациюОМодели(ПараметрыТеста); + Ollama_ПолучитьСписокМоделей(ПараметрыТеста); + Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыТеста); + Ollama_КопироватьМодель(ПараметрыТеста); + Ollama_ОтправитьМодель(ПараметрыТеста); + Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыТеста); + Ollama_УдалитьМодель(ПараметрыТеста); + +КонецПроцедуры + +Процедура OLLM_РаботаСBlob() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ollama_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Ollama_ОтправитьBlob(ПараметрыТеста); + Ollama_ПроверитьBlob(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Ollama + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Ollama + +Процедура Ollama_ПолучитьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Промпт = "What is 1C:Enterprise?"; + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("prompt", Промпт); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтвет"); // SKIP + + // С параметрами + + Промпт = "Ollama is 22 years old and is busy saving the world. Respond using JSON"; + + Формат = OPI_Инструменты.JSONВСтруктуру(" + |{ + |""type"": ""object"", + |""properties"": { + | ""age"": { + | ""type"": ""integer"" + | }, + | ""available"": { + | ""type"": ""boolean"" + | } + |}, + |""required"": [ + | ""age"", + | ""available"" + |] + |}"); + + ДопПараметры = Новый Структура("format", Формат); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("prompt", Промпт); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтвет", "Параметры"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьОтветВКонтексте(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Модель = "tinyllama"; + + МассивСообщений = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Вопрос1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); + Вопрос2 = OPI_Ollama.ПолучитьСтруктуруСообщенияКонтекста("user", "When the first version was released?"); // Вопрос без конкретики + + // Добавляем первый вопрос в контекст + МассивСообщений.Добавить(Вопрос1); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("headers", ДопЗаголовки); + + Ответ1 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Ответ1, "Ollama", "ПолучитьОтветВКонтексте", "Предварительный"); // SKIP + + МассивСообщений.Добавить(Ответ1["message"]); // Добавляем ответ на первый вопрос в контекст + МассивСообщений.Добавить(Вопрос2); // Добавляем второй вопрос в контекст + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("headers", ДопЗаголовки); + + Ответ2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + МассивСообщений.Добавить(Ответ2["message"]); + + // ... + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Ответ2, "Ollama", "ПолучитьОтветВКонтексте"); + + МассивСообщений = Новый Массив; + + Вопрос = Новый Структура("role,content", "user", "Hello!"); + МассивСообщений.Добавить(Вопрос); + + Опции = Новый Структура("seed,temperature", 101, 0); + ДопПараметры = Новый Структура("options", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 1"); + + Сообщение1 = Результат["message"]["content"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 2"); + + Сообщение2 = Результат["message"]["content"]; + + Опции = Новый Структура("seed,temperature", 555, 10); + ДопПараметры = Новый Структура("options", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", МассивСообщений); + Опции.Вставить("options", ДопПараметры); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтветВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьОтветВКонтексте", "Сид 3"); + + Сообщение3 = Результат["message"]["content"]; + + OPI_ПолучениеДанныхТестов.Обработать(Сообщение3, "Ollama", "ПолучитьОтветВКонтексте", "Сравнение", Сообщение1, Сообщение2, Сообщение3); + +КонецПроцедуры + +Процедура Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + Период = 500; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("keep", Период); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ЗагрузитьМодельВПамять", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ЗагрузитьМодельВПамять"); + +КонецПроцедуры + +Процедура Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ВыгрузитьМодельИзПамяти", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ВыгрузитьМодельИзПамяти"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруПараметровЗапроса(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровЗапроса"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровЗапроса", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровЗапроса", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруПараметровВКонтексте(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровВКонтексте"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровВКонтексте", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровВКонтексте", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруСообщенияКонтекста(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "Hello!"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруСообщенияКонтекста", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруСообщенияКонтекста"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруНастроекМодели(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруНастроекМодели"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруНастроекМодели", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруНастроекМодели", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_СоздатьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Настройки = Новый Структура("from,system", "tinyllama", "You are Mario from Super Mario Bros."); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("settings", Настройки); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СоздатьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СоздатьМодель"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("prompt", "How are you?"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СоздатьМодель", "Запрос"); + +КонецПроцедуры + +Процедура Ollama_УдалитьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", "library/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель", "Tiny"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", "bayselonarrend/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "УдалитьМодель", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель", "Tiny, аккаунт"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "УдалитьМодель", "Список"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСписокМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСписокМоделей"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСписокЗапущенныхМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСписокЗапущенныхМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСписокЗапущенныхМоделей"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьИнформациюОМодели(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("verbose", Ложь); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьИнформациюОМодели", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьИнформациюОМодели"); + +КонецПроцедуры + +Процедура Ollama_КопироватьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "mario"; + Имя = "mario2"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("name", Имя); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "КопироватьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "КопироватьМодель"); + + OPI_Ollama.УдалитьМодель(URL, Имя, ДопЗаголовки); + +КонецПроцедуры + +Процедура Ollama_ПолучитьВерсию(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьВерсию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьВерсию"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьПредставления(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + МассивСтрок = Новый Массив; + МассивСтрок.Добавить("Why is the sky blue?"); + МассивСтрок.Добавить("Why is the grass green?"); + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("input", МассивСтрок); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьПредставления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьПредставления"); + +КонецПроцедуры + +Процедура Ollama_ПолучитьСтруктуруПараметровПредставлений(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровПредставлений"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПолучитьСтруктуруПараметровПредставлений", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПолучитьСтруктуруПараметровПредставлений", "Пустая"); + +КонецПроцедуры + +Процедура Ollama_ОтправитьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "bayselonarrend/tinyllama:latest"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ОтправитьМодель"); + +КонецПроцедуры + +Процедура Ollama_СкачатьМодель(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Модель = "tinyllama"; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", Модель); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СкачатьМодель"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("model", "bayselonarrend/tinyllama:latest"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "СкачатьМодель", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "СкачатьМодель", "Аккаунт"); + +КонецПроцедуры + +Процедура Ollama_ОтправитьBlob(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка, Истина); // SKIP + Рандом = ПолучитьДвоичныеДанныеИзСтроки(Строка(Новый УникальныйИдентификатор)); // SKIP + Картинка = OPI_Инструменты.СклеитьДанные(Картинка, Рандом); // SKIP + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("data", Картинка); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ОтправитьBlob", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ОтправитьBlob", , ПараметрыФункции); + +КонецПроцедуры + +Процедура Ollama_ПроверитьBlob(ПараметрыФункции) + + URL = ПараметрыФункции["Ollama_URL"]; + Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama + SHA256 = ПараметрыФункции["Ollama_Blob"]; + + ДопЗаголовки = Новый Соответствие; + ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("digest", SHA256); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПроверитьBlob"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("digest", "yoyoyo"); + Опции.Вставить("headers", ДопЗаголовки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ollama", "ПроверитьBlob", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Ollama", "ПроверитьBlob", "Ошибка"); + +КонецПроцедуры + +#КонецОбласти // Ollama + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure OLLM_RequestsProcessing() Export + OLLM_ОбработкаЗапросов(); +EndProcedure + +Procedure OLLM_ModelsManagement() Export + OLLM_РаботаСМоделями(); +EndProcedure + +Procedure OLLM_WorkingWithBlob() Export + OLLM_РаботаСBlob(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_OpenAI.os b/src/ru/OInt/tests/Modules/OPItc_OpenAI.os new file mode 100644 index 0000000000..aa8be9fad5 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_OpenAI.os @@ -0,0 +1,682 @@ +// OneScript: ./OInt/tests/Modules/OPItc_OpenAI.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("OpenAI"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("OpenAI"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область OpenAI + +Процедура OAI_ОбработкаЗапросов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_File" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + OpenAI_ПолучитьОтвет(ПараметрыТеста); + OpenAI_ПолучитьПредставления(ПараметрыТеста); + OpenAI_ПолучитьСтруктуруСообщения(ПараметрыТеста); + OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыТеста); + OpenAI_ПолучитьКартинки(ПараметрыТеста); + OpenAI_ПолучитьСообщениеАссистента(ПараметрыТеста); + OpenAI_ПолучитьСообщениеПользователя(ПараметрыТеста); + OpenAI_ПолучитьСообщениеСистемы(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_Ассистенты() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_СоздатьАссистента(ПараметрыТеста); + OpenAI_ПолучитьАссистента(ПараметрыТеста); + OpenAI_ПолучитьСписокАссистентов(ПараметрыТеста); + OpenAI_УдалитьАссистента(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_РаботаСФайлами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + OpenAI_ЗагрузитьФайл(ПараметрыТеста); + OpenAI_ПолучитьИнформациюОФайле(ПараметрыТеста); + OpenAI_ПолучитьСписокФайлов(ПараметрыТеста); + OpenAI_СкачатьФайл(ПараметрыТеста); + OpenAI_УдалитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_РаботаСАудио() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_СгенерироватьРечь(ПараметрыТеста); + OpenAI_СоздатьТранскрипцию(ПараметрыТеста); + +КонецПроцедуры + +Процедура OAI_РаботаСМоделями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста); + + OpenAI_ПолучитьСписокМоделей(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // OpenAI + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область OpenAI + +Процедура OpenAI_ПолучитьОтвет(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + // Текстовые сообщения + + Сообщения = Новый Массив; + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "What is 1C:Enterprise?")); + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("assistant", "1C:Enterprise is a full-stack, low-code platform")); + Сообщения.Добавить(OPI_OpenAI.ПолучитьСтруктуруСообщения("user" , "When the first version was released?")); + + Модель = "smolvlm-256m-instruct"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", Сообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьОтвет", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьОтвет"); // SKIP + + // Картинки + + Модель = "moondream2-20250414"; + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор())); + Назначение = "user_data"; + + Сообщения = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", ИмяФайла); + Опции.Вставить("data", Файл); + Опции.Вставить("purpose", Назначение); + + ЗагрузкаКартинки = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(ЗагрузкаКартинки, "OpenAI", "ПолучитьОтвет", "Загрузка картинки"); // SKIP + + IDКартинки = ЗагрузкаКартинки["id"]; + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("file", IDКартинки); + Опции.Вставить("prompt", "What is in this image?"); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции); + + Сообщения.Добавить(Описание); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("msgs", Сообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьОтвет", Опции); + + OPI_OpenAI.УдалитьФайл(URL, Токен, IDКартинки); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьОтвет", "Картинка"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьПредставления(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Текст = "What is 1C:Enterprise?"; + Модель = "arcee-ai_afm-4.5b"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("input", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьПредставления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьПредставления"); + +КонецПроцедуры + +Процедура OpenAI_СоздатьАссистента(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Инструкция = "You are a personal math tutor. When asked a question, write and run Python code to answer the question."; + Модель = "smolvlm-256m-instruct"; + Имя = "Math tutor"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("name", Имя); + Опции.Вставить("inst", Инструкция); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьАссистента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СоздатьАссистента", , ПараметрыФункции); + +КонецПроцедуры + +Процедура OpenAI_УдалитьАссистента(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDАссистента = ПараметрыФункции["OpenAI_Assistant"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDАссистента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "УдалитьАссистента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "УдалитьАссистента", , IDАссистента); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьАссистента(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDАссистента = ПараметрыФункции["OpenAI_Assistant"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDАссистента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьАссистента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьАссистента"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСписокАссистентов(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Количество = 2; + ДопПараметры = Новый Структура("after,order", "asst_2", "desc"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("limit", Количество); + Опции.Вставить("options", ДопПараметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокАссистентов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСписокАссистентов"); + +КонецПроцедуры + +Процедура OpenAI_ЗагрузитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор())); + Назначение = "assistants"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", ИмяФайла); + Опции.Вставить("data", Файл); + Опции.Вставить("purpose", Назначение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ЗагрузитьФайл", , ПараметрыФункции, ИмяФайла, Файл.Размер() + 2); + +КонецПроцедуры + +Процедура OpenAI_УдалитьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDФайла = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "УдалитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "УдалитьФайл", , IDФайла); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьИнформациюОФайле(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDФайла = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьИнформациюОФайле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьИнформациюОФайле"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСписокФайлов(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСписокФайлов"); + +КонецПроцедуры + +Процедура OpenAI_СкачатьФайл(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + IDФайла = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СкачатьФайл", , ПараметрыФункции); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСтруктуруСообщения(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСтруктуруСообщения"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + Картинка = ПараметрыФункции["OpenAI_File"]; + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("file", Картинка); + Опции.Вставить("prompt", "What is in this image?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСтруктуруСообщенияКартинки"); + +КонецПроцедуры + +Процедура OpenAI_СгенерироватьРечь(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Текст = "Attack ships on fire off the shoulder of Orion bright as magnesium"; + Модель = "bark-cpp-small"; + + ДопПараметры = Новый Структура("response_format", "wav"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("input", Текст); + Опции.Вставить("options", ДопПараметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СгенерироватьРечь", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СгенерироватьРечь", , ПараметрыФункции); + +КонецПроцедуры + +Процедура OpenAI_СоздатьТранскрипцию(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Аудио = ПараметрыФункции["OpenAI_Speech"]; + Модель = "whisper-1"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("audio", Аудио); + Опции.Вставить("type", "audio/wav"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьТранскрипцию", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(Аудио, "Не удалось удалить временный файл после теста!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "СоздатьТранскрипцию"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьКартинки(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Модель = "sd-1.5-ggml"; + Опции = Новый Структура; + Опции.Вставить("prompt", "Yellow alpaca"); + Опции.Вставить("amount", 1); + Опции.Вставить("size", "64x64"); + + Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруОписанияКартинок", Опции); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("model", Модель); + Опции.Вставить("descr", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьКартинки"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСписокМоделей(ПараметрыФункции) + + URL = ПараметрыФункции["OpenAI_URL"]; + Токен = ПараметрыФункции["OpenAI_Token"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокМоделей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСписокМоделей"); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСообщениеАссистента(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеАссистента", Опции); + + // END + + Опции = Новый Структура; + Опции.Вставить("role", "assistant"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + Проверка = OPI_Инструменты.JSONСтрокой(Проверка); + Результат = OPI_Инструменты.JSONСтрокой(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСообщениеАссистента", , Проверка); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСообщениеПользователя(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text", "What is 1C:Enterprise?"); + Опции.Вставить("name", "Vitaly"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеПользователя", Опции); + + // END + + Опции = Новый Структура; + Опции.Вставить("role", "user"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + Опции.Вставить("name", "Vitaly"); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + Проверка = OPI_Инструменты.JSONСтрокой(Проверка); + Результат = OPI_Инструменты.JSONСтрокой(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСообщениеПользователя", , Проверка); + +КонецПроцедуры + +Процедура OpenAI_ПолучитьСообщениеСистемы(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСообщениеСистемы", Опции); + + // END + + Опции = Новый Структура; + Опции.Вставить("role", "system"); + Опции.Вставить("text", "What is 1C:Enterprise?"); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции); + Проверка = OPI_Инструменты.JSONСтрокой(Проверка); + Результат = OPI_Инструменты.JSONСтрокой(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "OpenAI", "ПолучитьСообщениеСистемы", , Проверка); + +КонецПроцедуры + +#КонецОбласти // OpenAI + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure OAI_RequestsProcessing() Export + OAI_ОбработкаЗапросов(); +EndProcedure + +Procedure OAI_Assistants() Export + OAI_Ассистенты(); +EndProcedure + +Procedure OAI_FileManagement() Export + OAI_РаботаСФайлами(); +EndProcedure + +Procedure OAI_AudioProcessing() Export + OAI_РаботаСАудио(); +EndProcedure + +Procedure OAI_ModelsManagement() Export + OAI_РаботаСМоделями(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_PostgreSQL.os b/src/ru/OInt/tests/Modules/OPItc_PostgreSQL.os new file mode 100644 index 0000000000..e0acb3293d --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_PostgreSQL.os @@ -0,0 +1,1672 @@ +// OneScript: ./OInt/tests/Modules/OPItc_PostgreSQL.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("PostgreSQL"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("PostgreSQL"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область PostgreSQL + +Процедура Postgres_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровPostgres(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + PostgreSQL_СформироватьСтрокуПодключения(ПараметрыТеста); + PostgreSQL_ОткрытьСоединение(ПараметрыТеста); + PostgreSQL_ЗакрытьСоединение(ПараметрыТеста); + PostgreSQL_ЭтоКоннектор(ПараметрыТеста); + PostgreSQL_ВыполнитьЗапросSQL(ПараметрыТеста); + PostgreSQL_ПолучитьНастройкиTLS(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура Postgres_ORM() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровPostgres(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + PostgreSQL_СоздатьБазуДанных(ПараметрыТеста); + PostgreSQL_СоздатьТаблицу(ПараметрыТеста); + PostgreSQL_ДобавитьЗаписи(ПараметрыТеста); + PostgreSQL_ГарантироватьЗаписи(ПараметрыТеста); + PostgreSQL_ПолучитьЗаписи(ПараметрыТеста); + PostgreSQL_ОбновитьЗаписи(ПараметрыТеста); + PostgreSQL_УдалитьЗаписи(ПараметрыТеста); + PostgreSQL_ОчиститьТаблицу(ПараметрыТеста); + PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + PostgreSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + PostgreSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + PostgreSQL_ГарантироватьТаблицу(ПараметрыТеста); + PostgreSQL_УдалитьТаблицу(ПараметрыТеста); + PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста); + PostgreSQL_УдалитьБазуДанных(ПараметрыТеста); + PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // PostgreSQL + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область PostgreSQL + +Процедура PostgreSQL_СформироватьСтрокуПодключения(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + // END + + Результат = СтрЗаменить(Результат, Пароль, "***"); + Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СформироватьСтрокуПодключения"); + +КонецПроцедуры + +Процедура PostgreSQL_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Результат = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + // END + + OPI_PostgreSQL.ЗакрытьСоединение(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура PostgreSQL_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_PostgreSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура PostgreSQL_ЭтоКоннектор(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + Результат = OPI_PostgreSQL.ЭтоКоннектор(Соединение); + + OPI_PostgreSQL.ЗакрытьСоединение(Результат); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура PostgreSQL_ВыполнитьЗапросSQL(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Соединение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_PostgreSQL.УдалитьТаблицу("users" , Соединение); // SKIP + OPI_PostgreSQL.УдалитьТаблицу("test_data" , Соединение); // SKIP + OPI_PostgreSQL.УдалитьТаблицу("test_table", Соединение); // SKIP + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "PostgreSQL", "ВыполнитьЗапросSQL", "Соединение"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id SERIAL PRIMARY KEY, + |name NAME, + |age INT, + |salary REAL, + |is_active BOOL, + |created_at DATE, + |data BYTEA + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES ($1, $2, $3, $4, $5, $6);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("NAME" , "Vitaly")); + МассивПараметров.Добавить(Новый Структура("INT" , 25)); + МассивПараметров.Добавить(Новый Структура("REAL" , 1000.12)); + МассивПараметров.Добавить(Новый Структура("BOOL" , Истина)); + МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату())); + МассивПараметров.Добавить(Новый Структура("BYTEA", Картинка)); + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + // DO + Транзакция + + ТекстЗапроса = "DO $$ + |BEGIN + | CREATE TABLE users ( + | id SMALLSERIAL, + | name TEXT NOT NULL, + | age INT NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + |END $$ LANGUAGE plpgsql;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Transaction"); // SKIP + + // SQL запрос из файла + + ФайлSQL = ПараметрыФункции["SQL"]; // Двоичные данные, URL или путь к файлу + + Опции = Новый Структура; + Опции.Вставить("sql", ФайлSQL); + Опции.Вставить("dbc", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Файл"); // SKIP + + Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ВыполнитьЗапросSQL", "Закрытие"); + +КонецПроцедуры + +Процедура PostgreSQL_СоздатьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + Удаление = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); // SKIP + OPI_ПолучениеДанныхТестов.ВывестиСлужебнуюИнформацию(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных"); + + Подключение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "PostgreSQL", "СоздатьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных", "Существующая"); + + База = "testbase2"; + + OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS); + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьБазуДанных", "Новая"); + + OPI_PostgreSQL.ЗакрытьСоединение(Подключение); + +КонецПроцедуры + +Процедура PostgreSQL_СоздатьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("bool_field" , "BOOL"); + СтруктураКолонок.Вставить("oldchar_field" , """char"""); + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("smallserial_field", "SMALLSERIAL"); + СтруктураКолонок.Вставить("int_field" , "INT"); + СтруктураКолонок.Вставить("serial_field" , "SERIAL"); + СтруктураКолонок.Вставить("oid_field" , "OID"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("bigserial_field" , "BIGSERIAL"); + СтруктураКолонок.Вставить("real_field" , "REAL"); + СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION"); + СтруктураКолонок.Вставить("text_field" , "TEXT"); + СтруктураКолонок.Вставить("varchar_field" , "VARCHAR"); + СтруктураКолонок.Вставить("charn_field" , "CHAR(3)"); + СтруктураКолонок.Вставить("char_field" , "CHAR"); + СтруктураКолонок.Вставить("name_field" , "NAME"); + СтруктураКолонок.Вставить("bytea_field" , "BYTEA"); + СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP"); + СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE"); + СтруктураКолонок.Вставить("ip_field" , "INET"); + СтруктураКолонок.Вставить("json_field" , "JSON"); + СтруктураКолонок.Вставить("jsonb_field" , "JSONB"); + СтруктураКолонок.Вставить("date_field" , "DATE"); + СтруктураКолонок.Вставить("time_field" , "TIME"); + СтруктураКолонок.Вставить("uuid_field" , "UUID"); + СтруктураКолонок.Вставить("numeric_field" , "NUMERIC(15, 2)"); + + OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьТаблицу"); + + Таблица = "АБВ ГДЕ"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка имени"); + + Таблица = "somename"; + СтруктураКолонок.Вставить("wtf_field", "WTF"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "СоздатьТаблицу", "Ошибка типа"); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьИнформациюОТаблице"); + + Таблица = "heyho"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьИнформациюОТаблице", "Ошибка"); + +КонецПроцедуры + +Процедура PostgreSQL_ДобавитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + МассивЗаписей = Новый Массив; + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00"); + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина)); + СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char" + СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 5)); + СтруктураЗаписи.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 6)); + СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100)); + СтруктураЗаписи.Вставить("serial_field" , Новый Структура("SERIAL" , 100)); + СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576)); + СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999)); + СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999)); + СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2)); + СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0002)); // или DOUBLE PRECISION + СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text")); + СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar")); + СтруктураЗаписи.Вставить("charn_field" , Новый Структура("CHAR" , "AAA")); + СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A")); + СтруктураЗаписи.Вставить("name_field" , Новый Структура("NAME" , "Vitaly")); + СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка)); + СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , ТекущаяДата)); + СтруктураЗаписи.Вставить("tswtz_field" , Новый Структура("TIMESTAMP_WITH_TIME_ZONE", ТекущаяДатаЧП)); // или TIMESTAMP WITH TIME ZONE + СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1")); + СтруктураЗаписи.Вставить("json_field" , Новый Структура("JSON" , СлучайнаяСтруктура)); + СтруктураЗаписи.Вставить("jsonb_field" , Новый Структура("JSONB" , СлучайнаяСтруктура)); + СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата)); + СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата)); + СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор)); + СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , "15.2")); + + МассивЗаписей.Добавить(СтруктураЗаписи); + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивЗаписей); + Опции.Вставить("trn", Истина); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ДобавитьЗаписи"); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + // Все записи без отборов + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьЗаписи"); // SKIP + + // Отборы, выбранные поля, количество и сортировка + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", "test_data"); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Таблица = "test_data"; + + Поля = Новый Массив; + Поля.Добавить("first_name"); + Поля.Добавить("last_name"); + Поля.Добавить("email"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "gender"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Male"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "id"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 50"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("ip_address", "DESC"); + Количество = 5; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьЗаписи", "Отборы"); + +КонецПроцедуры + +Процедура PostgreSQL_ОбновитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1")); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Количество = OPI_PostgreSQl.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Количество, "PostgreSQL", "ОбновитьЗаписи", "Количество"); // SKIP + Количество = Количество["data"].Количество(); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Результат = OPI_PostgreSQl.ОбновитьЗаписи(Таблица + , СтруктураПолей + , СтруктураФильтра + , СтрокаПодключения + , НастройкиTLS); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОбновитьЗаписи"); + + Проверка = OPI_PostgreSQl.ПолучитьЗаписи(Таблица, "['ip_address']", Фильтры, , , СтрокаПодключения); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ОбновитьЗаписи", "Проверка", Количество, СтруктураПолей); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "test_data"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_data"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "gender"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "Male")); + СтруктураФильтра.Вставить("raw" , Ложь); + СтруктураФильтра.Вставить("union", "AND"); + + Фильтры.Добавить(СтруктураФильтра); + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "ip_address"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", Новый Структура("VARCHAR", "127.0.0.1")); + СтруктураФильтра.Вставить("raw" , Ложь); + + Получение = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Получение, "PostgreSQL", "УдалитьЗаписи", "Получение"); + + Количество = Получение["data"].Количество(); + Остаток = 100 - Количество; + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьЗаписи", "Проверка", Остаток); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьТаблицу"); + + База = "test_data"; + Таблица = "test_data"; + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьТаблицу", "Тест"); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьБазуДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "postgres"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + База = "testbase1"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных"); + + База = "testbase2"; + + Подключение = OPI_PostgreSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS); + + OPI_ПолучениеДанныхТестов.Обработать(Подключение, "PostgreSQL", "УдалитьБазуДанных", "Открытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Отключение"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Удаление"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Ошибка"); + + Закрытие = OPI_PostgreSQL.ЗакрытьСоединение(Подключение); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "PostgreSQL", "УдалитьБазуДанных", "Закрытие"); + + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", Подключение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьБазуДанных", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьБазуДанных", "Ошибка подключения"); + +КонецПроцедуры + +Процедура PostgreSQL_ОчиститьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() + Опции = Новый Структура; + Опции.Вставить("base", База); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ОтключитьВсеСоединенияБазыДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ОтключитьВсеСоединенияБазыДанных"); + +КонецПроцедуры + +Процедура PostgreSQL_ГарантироватьЗаписи(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "test_merge"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INT PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP + СтруктураКолонок.Вставить("age" , "INT"); // SKIP + СтруктураКолонок.Вставить("salary", "REAL"); // SKIP + OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1)); + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT", "Vitaly")); + СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25)); + СтруктураСтроки1.Вставить("salary", Новый Структура("REAL", 1000.12)); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2)); + СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT", "Lesha")); + СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20)); + СтруктураСтроки2.Вставить("salary", Новый Структура("REAL", 200.20)); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT", "Vitaly Updated")); + СтруктураСтроки1.Вставить("salary", Новый Структура("REAL", 1500.50)); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , Новый Структура("INT" , 3)); + СтруктураСтроки3.Вставить("name" , Новый Структура("TEXT", "Anton")); + СтруктураСтроки3.Вставить("age" , Новый Структура("INT" , 30)); + СтруктураСтроки3.Вставить("salary", Новый Структура("REAL", 3000.00)); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_PostgreSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +Процедура PostgreSQL_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура PostgreSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + ТипДанных = "TEXT"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура PostgreSQL_УдалитьКолонкуТаблицы(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + Имя = "new_field"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура PostgreSQL_ГарантироватьТаблицу(ПараметрыФункции) + + Адрес = ПараметрыФункции["PG_IP"]; + Логин = "bayselonarrend"; + Пароль = ПараметрыФункции["PG_Password"]; + База = "testbase1"; + + TLS = Истина; + TLS = ПараметрыФункции["TLS"]; // SKIP + + Порт = 5432; + Порт = ?(TLS, 5433, 5432); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", Адрес); + Опции.Вставить("db", База); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + Опции.Вставить("port", Порт); + + СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "СформироватьСтрокуПодключения", Опции); + + Если TLS Тогда + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьНастройкиTLS", Опции); + Иначе + НастройкиTLS = Неопределено; + КонецЕсли; + + Таблица = "testtable"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("smallint_field" , "SMALLINT"); + СтруктураКолонок.Вставить("uuid_field" , "uuid"); + СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); + СтруктураКолонок.Вставить("custom_field" , "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "PostgreSQL", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("dbc", СтрокаПодключения); + Опции.Вставить("tls", НастройкиTLS); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("postgres", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "PostgreSQL", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + +КонецПроцедуры + +#КонецОбласти // PostgreSQL + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure Postgres_CommonMethods() Export + Postgres_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_RCON.os b/src/ru/OInt/tests/Modules/OPItc_RCON.os new file mode 100644 index 0000000000..9cd2cbb25d --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_RCON.os @@ -0,0 +1,240 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RCON.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("RCON"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("RCON"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область RCON + +Процедура RC_ВыполнениеКоманд() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RCON_Password", ПараметрыТеста); + + RCON_СформироватьПараметрыСоединения(ПараметрыТеста); + RCON_ОткрытьСоединение(ПараметрыТеста); + RCON_ВыполнитьКоманду(ПараметрыТеста); + RCON_ЭтоКоннектор(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // RCON + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область RCON + +Процедура RCON_СформироватьПараметрыСоединения(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "СформироватьПараметрыСоединения"); + +КонецПроцедуры + +Процедура RCON_ОткрытьСоединение(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + Результат = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ОткрытьСоединение"); + +КонецПроцедуры + +Процедура RCON_ВыполнитьКоманду(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + Соединение = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); + + Команда = "list"; + Опции = Новый Структура; + Опции.Вставить("exec", Команда); + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ВыполнитьКоманду"); + + Команда = "list"; + Опции = Новый Структура; + Опции.Вставить("exec", Команда); + Опции.Вставить("conn", ПараметрыСоединения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ВыполнитьКоманду", "Без соединения"); + +КонецПроцедуры + +Процедура RCON_ЭтоКоннектор(ПараметрыФункции) + + URL = ПараметрыФункции["RCON_URL"]; + Пароль = ПараметрыФункции["RCON_Password"]; + ТаймаутЗаписи = 20; + ТаймаутЧтения = 20; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("pass", Пароль); + Опции.Вставить("rtout", ТаймаутЧтения); + Опции.Вставить("wtout", ТаймаутЗаписи); + + ПараметрыСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rcon", "СформироватьПараметрыСоединения", Опции); + Соединение = OPI_RCON.ОткрытьСоединение(ПараметрыСоединения); + Результат = OPI_RCON.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RCON", "ЭтоКоннектор"); + +КонецПроцедуры + +#КонецОбласти // RCON + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure RC_CommandsExecution() Export + RC_ВыполнениеКоманд(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_RSS.os b/src/ru/OInt/tests/Modules/OPItc_RSS.os new file mode 100644 index 0000000000..763e562cfd --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_RSS.os @@ -0,0 +1,335 @@ +// OneScript: ./OInt/tests/Modules/OPItc_RSS.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("RSS"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("RSS"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область RSS + +Процедура RSS_МетодыRSS() Экспорт + + ПараметрыТеста = Новый Структура; + + RSS_СоздатьФидRSS(ПараметрыТеста); + RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыТеста); + RSS_РазобратьФидRSS(ПараметрыТеста); + +КонецПроцедуры + +Процедура RSS_МетодыAtom() Экспорт + + ПараметрыТеста = Новый Структура; + + RSS_СоздатьФидAtom(ПараметрыТеста); + RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыТеста); + RSS_РазобратьФидAtom(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // RSS + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область RSS + +Процедура RSS_СоздатьФидRSS(ПараметрыФункции) + + НазваниеКанала = "Тестовый RSS канал"; + ОписаниеКанала = "Описание тестового RSS канала"; + СсылкаКанала = "https://example.com"; + + МассивЭлементов = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + СтруктураЭлемента["title"] = "Первый элемент"; + СтруктураЭлемента["description"] = "Описание первого элемента"; + СтруктураЭлемента["link"] = "https://example.com/item1"; + СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["author"] = "test@example.com"; + СтруктураЭлемента["guid"] = "item-1"; + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + СтруктураЭлемента["title"] = "Второй элемент"; + СтруктураЭлемента["description"] = "Описание второго элемента"; + СтруктураЭлемента["link"] = "https://example.com/item2"; + СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["author"] = "test@example.com"; + СтруктураЭлемента["guid"] = "item-2"; + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("name", НазваниеКанала); + Опции.Вставить("descr", ОписаниеКанала); + Опции.Вставить("link", СсылкаКанала); + Опции.Вставить("items", МассивЭлементов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "СоздатьФидRSS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "СоздатьФидRSS", , ПараметрыФункции); + +КонецПроцедуры + +Процедура RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Пустая"); + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + Опции.Вставить("map", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаRSS", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Соответствие"); + +КонецПроцедуры + +Процедура RSS_РазобратьФидRSS(ПараметрыФункции) + + ФидXML = ПараметрыФункции["RSS_FeedXML"]; + + Опции = Новый Структура; + Опции.Вставить("xml", ФидXML); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "РазобратьФидRSS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "РазобратьФидRSS"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФидXML, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура RSS_СоздатьФидAtom(ПараметрыФункции) + + НазваниеФида = "Тестовый Atom фид"; + СсылкаФида = "https://example.com"; + IDФида = "https://example.com/feed"; + + МассивЭлементов = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + СтруктураЭлемента["title"] = "Первая запись"; + СтруктураЭлемента["id"] = "https://example.com/entry1"; + СтруктураЭлемента["link"] = "https://example.com/entry1"; + СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["summary"] = "Краткое описание первой записи"; + СтруктураЭлемента["content"] = "Полное содержимое первой записи"; + СтруктураЭлемента["author"] = "Автор Первый"; + СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату(); + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + СтруктураЭлемента = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + СтруктураЭлемента["title"] = "Вторая запись"; + СтруктураЭлемента["id"] = "https://example.com/entry2"; + СтруктураЭлемента["link"] = "https://example.com/entry2"; + СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату(); + СтруктураЭлемента["summary"] = "Краткое описание второй записи"; + СтруктураЭлемента["content"] = "Полное содержимое второй записи"; + СтруктураЭлемента["author"] = "Автор Второй"; + СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату(); + + МассивЭлементов.Добавить(СтруктураЭлемента); + + Опции = Новый Структура; + Опции.Вставить("name", НазваниеФида); + Опции.Вставить("link", СсылкаФида); + Опции.Вставить("id", IDФида); + Опции.Вставить("items", МассивЭлементов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "СоздатьФидAtom", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "СоздатьФидAtom", , ПараметрыФункции); + +КонецПроцедуры + +Процедура RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Пустая"); + + Опции = Новый Структура; + Опции.Вставить("empty", Ложь); + Опции.Вставить("map", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "ПолучитьСтруктуруЭлементаФидаAtom", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Соответствие"); + +КонецПроцедуры + +Процедура RSS_РазобратьФидAtom(ПараметрыФункции) + + ФидXML = ПараметрыФункции["RSS_AtomFeedXML"]; + + Опции = Новый Структура; + Опции.Вставить("xml", ФидXML); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rss", "РазобратьФидAtom", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "RSS", "РазобратьФидAtom"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФидXML, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +#КонецОбласти // RSS + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure RSS_RSSMethods() Export + RSS_МетодыRSS(); +EndProcedure + +Procedure RSS_AtomMethods() Export + RSS_МетодыAtom(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_ReportPortal.os b/src/ru/OInt/tests/Modules/OPItc_ReportPortal.os new file mode 100644 index 0000000000..d43b318bc7 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_ReportPortal.os @@ -0,0 +1,1082 @@ +// OneScript: ./OInt/tests/Modules/OPItc_ReportPortal.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("ReportPortal"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("ReportPortal"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область ReportPortal + +Процедура RPortal_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_Login" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_UserID" , ПараметрыТеста); + + ReportPortal_ПолучитьВременныйТокен(ПараметрыТеста); + ReportPortal_ПолучитьПостоянныйТокен(ПараметрыТеста); + ReportPortal_УдалитьПостоянныйТокен(ПараметрыТеста); + ReportPortal_ПолучитьТокеныПользователя(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_УправлениеТестами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьЗапуск(ПараметрыТеста); + ReportPortal_ПолучитьЗапуск(ПараметрыТеста); + ReportPortal_ПолучитьЭлементыЗапуска(ПараметрыТеста); + ReportPortal_ИзменитьЗапуск(ПараметрыТеста); + ReportPortal_СоздатьЭлемент(ПараметрыТеста); + ReportPortal_ПолучитьЭлемент(ПараметрыТеста); + ReportPortal_ПолучитьЛогиЭлемента(ПараметрыТеста); + ReportPortal_ИзменитьЭлемент(ПараметрыТеста); + ReportPortal_ЗавершитьЭлемент(ПараметрыТеста); + ReportPortal_ЗавершитьЗапуск(ПараметрыТеста); + ReportPortal_УдалитьЭлемент(ПараметрыТеста); + ReportPortal_ПолучитьОтчетЗапуска(ПараметрыТеста); + ReportPortal_УдалитьЗапуск(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЗапуска(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЭлемента(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЗавершенияЭлемента(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЗавершенияЗапуска(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_ЗаписьЛогов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьЗапуск(ПараметрыТеста); + ReportPortal_СоздатьЭлемент(ПараметрыТеста); + + ReportPortal_ЗаписатьЛог(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруЛога(ПараметрыТеста); + ReportPortal_ПолучитьЛог(ПараметрыТеста); + ReportPortal_УдалитьЛог(ПараметрыТеста); + + ReportPortal_ЗавершитьЭлемент(ПараметрыТеста); + ReportPortal_ЗавершитьЗапуск(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_УправлениеПроектами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьПроект(ПараметрыТеста); + ReportPortal_ПолучитьПроект(ПараметрыТеста); + ReportPortal_ПолучитьПроекты(ПараметрыТеста); + ReportPortal_ДобавитьПользователейВПроект(ПараметрыТеста); + ReportPortal_ИсключитьПользователейИзПроекта(ПараметрыТеста); + ReportPortal_УдалитьПроект(ПараметрыТеста); + +КонецПроцедуры + +Процедура RPortal_УправлениеПользователями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_TempToken", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("RPortal_URL" , ПараметрыТеста); + + ReportPortal_СоздатьПользователя(ПараметрыТеста); + ReportPortal_ПолучитьТекущегоПользователя(ПараметрыТеста); + ReportPortal_ПолучитьПользователя(ПараметрыТеста); + ReportPortal_ПолучитьПользователей(ПараметрыТеста); + ReportPortal_ПолучитьПроектыПользователя(ПараметрыТеста); + ReportPortal_ИзменитьПользователя(ПараметрыТеста); + ReportPortal_УдалитьПользователя(ПараметрыТеста); + ReportPortal_ПолучитьСтруктуруПользователя(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // ReportPortal + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область ReportPortal + +Процедура ReportPortal_ПолучитьВременныйТокен(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Логин = ПараметрыФункции["RPortal_Login"]; + Пароль = ПараметрыФункции["RPortal_Password"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("login", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьВременныйТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьВременныйТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПостоянныйТокен(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПользователя = ПараметрыФункции["RPortal_UserID"]; + ИмяКлюча = "test_key_2"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("name", ИмяКлюча); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПостоянныйТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПостоянныйТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьПостоянныйТокен(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TestApiKey"]; + IDПользователя = ПараметрыФункции["RPortal_UserID"]; + IDКлюча = ПараметрыФункции["RPortal_TestKeyID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("id", IDКлюча); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПостоянныйТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьПостоянныйТокен"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьТокеныПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПользователя = ПараметрыФункции["RPortal_UserID"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьТокеныПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьТокеныПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Проект = "Test"; + + ДатаНачала = Дата("20260101100000"); + + СтруктураЗапуска = Новый Структура; + СтруктураЗапуска.Вставить("name" , "Test"); + СтруктураЗапуска.Вставить("startTime" , ДатаНачала); + СтруктураЗапуска.Вставить("description", "Test launch"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("params", СтруктураЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьЗапуск", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ЗавершитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + Проект = "Test"; + + ДатаЗавершения = Дата("20260101200000"); + Опции = Новый Структура; + Опции.Вставить("end", ДатаЗавершения); + Опции.Вставить("status", "passed"); + Опции.Вставить("descr", "Updated launch description"); + + СтруктураЗавершения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЗапуска", Опции); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", IDЗапуска); + Опции.Вставить("params", СтруктураЗавершения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗавершитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ЗавершитьЗапуск"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + Проект = "Test"; + + ДатаНачала = Дата("20260101100000"); + + СтруктураЭлемента = Новый Структура; + СтруктураЭлемента.Вставить("name" , "Test"); + СтруктураЭлемента.Вставить("startTime" , ДатаНачала); + СтруктураЭлемента.Вставить("type" , "test"); + СтруктураЭлемента.Вставить("description", "Test launch"); + СтруктураЭлемента.Вставить("launchUuid" , IDЗапуска); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("params", СтруктураЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьЭлемент", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ЗавершитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + + ДатаЗавершения = Дата("20260101200000"); + + СтруктураЗавершения = Новый Структура; + СтруктураЗавершения.Вставить("endTime", ДатаЗавершения); + СтруктураЗавершения.Вставить("status" , "passed"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", IDЭлемента); + Опции.Вставить("params", СтруктураЗавершения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗавершитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ЗавершитьЭлемент"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЗапуска(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗапуска"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗапуска", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗапуска", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЭлемента(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЭлемента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЭлемента"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЭлемента", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЭлемента", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЗавершенияЭлемента(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЭлемента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЭлемента"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЭлемента", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЭлемента", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЗавершенияЗапуска(ПараметрыФункции) + + Время = Дата("20260101100000"); + Статус = "passed"; + Описание = "Some test"; + Атрибуты = "key1:value1, key2:value2"; + + Опции = Новый Структура; + Опции.Вставить("end", Время); + Опции.Вставить("status", Статус); + Опции.Вставить("descr", Описание); + Опции.Вставить("attr", Атрибуты); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЗавершенияЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЗавершенияЗапуска"); + +КонецПроцедуры + +Процедура ReportPortal_ЗаписатьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + Время = Дата("20260101100010"); + Текст = "Some log 1"; + + Опции = Новый Структура; + Опции.Вставить("launch", IDЗапуска); + Опции.Вставить("id", IDЭлемента); + Опции.Вставить("time", Время); + Опции.Вставить("text", Текст); + + СтруктураЛога = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЛога", Опции); + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("params", СтруктураЛога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ЗаписатьЛог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ЗаписатьЛог", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруЛога(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + Время = Дата("20260101100010"); + Текст = "Some log"; + + Опции = Новый Структура; + Опции.Вставить("launch", IDЗапуска); + Опции.Вставить("id", IDЭлемента); + Опции.Вставить("time", Время); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруЛога", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруЛога"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + UUIDЛога = ПараметрыФункции["RPortal_TestLog"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", UUIDЛога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЛог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЛог", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьЛог(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЛога = ПараметрыФункции["RPortal_TestLogId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЛога); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЛог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьЛог"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Имя = "testproject"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьПроект", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПроекта = ПараметрыФункции["RPortal_TestProject"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDПроекта); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьПроект"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Имя = "TestProject"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПроект"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПроекты(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроекты", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПроекты"); + +КонецПроцедуры + +Процедура ReportPortal_ДобавитьПользователейВПроект(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + ИмяПроекта = "TestProject"; + + СписокПользователей = Новый Соответствие; + СписокПользователей.Вставить("default", "MEMBER"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", ИмяПроекта); + Опции.Вставить("users", СписокПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ДобавитьПользователейВПроект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ДобавитьПользователейВПроект"); + +КонецПроцедуры + +Процедура ReportPortal_ИсключитьПользователейИзПроекта(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + ИмяПроекта = "TestProject"; + + МассивПользователей = Новый Массив; + МассивПользователей.Добавить("default"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", ИмяПроекта); + Опции.Вставить("users", МассивПользователей); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИсключитьПользователейИзПроекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИсключитьПользователейИзПроекта"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + UUIDЗапуска = ПараметрыФункции["RPortal_TestLaunch"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", UUIDЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЗапуск", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЭлементыЗапуска(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЭлементыЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЭлементыЗапуска"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + UUIDЭлемента = ПараметрыФункции["RPortal_TestItem"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("uuid", UUIDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЭлемент", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьЛогиЭлемента(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("item", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьЛогиЭлемента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьЛогиЭлемента"); + +КонецПроцедуры + +Процедура ReportPortal_ИзменитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + СтруктураЗапуска = Новый Структура; + СтруктураЗапуска.Вставить("description", "New description"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + Опции.Вставить("params", СтруктураЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИзменитьЗапуск"); + +КонецПроцедуры + +Процедура ReportPortal_ИзменитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; + Проект = "Test"; + + СтруктураЗапуска = Новый Структура; + СтруктураЗапуска.Вставить("description", "New description"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЭлемента); + Опции.Вставить("params", СтруктураЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИзменитьЭлемент"); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьЗапуск(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЗапуск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьЗапуск"); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьЭлемент(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЭлемента = ПараметрыФункции["RPortal_TestItemId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЭлемента); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьЭлемент", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьЭлемент"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьОтчетЗапуска(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDЗапуска = ПараметрыФункции["RPortal_TestLaunchId"]; + Проект = "Test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("proj", Проект); + Опции.Вставить("id", IDЗапуска); + Опции.Вставить("format", "html"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьОтчетЗапуска", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьОтчетЗапуска"); + +КонецПроцедуры + +Процедура ReportPortal_СоздатьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Имя = "testproject"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("active" , Истина); + СтруктураПользователя.Вставить("login" , "test"); + СтруктураПользователя.Вставить("password" , "G00d_Pass"); + СтруктураПользователя.Вставить("fullName" , "Test User"); + СтруктураПользователя.Вставить("email" , "test@example.com"); + СтруктураПользователя.Вставить("accountRole" , "USER"); + СтруктураПользователя.Вставить("projectRole" , "MEMBER"); + СтруктураПользователя.Вставить("defaultProject", "test"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("params", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "СоздатьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "СоздатьПользователя", , ПараметрыФункции); + +КонецПроцедуры + +Процедура ReportPortal_УдалитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + IDПользователя = ПараметрыФункции["RPortal_TestUser"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("id", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "УдалитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "УдалитьПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьСтруктуруПользователя(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруПользователя"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьСтруктуруПользователя", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьСтруктуруПользователя", "Пустая"); + +КонецПроцедуры + +Процедура ReportPortal_ИзменитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Логин = "test"; + + СтруктураПользователя = Новый Структура; + СтруктураПользователя.Вставить("fullName", "Updated Test User"); + СтруктураПользователя.Вставить("email" , "updated@example.com"); + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("login", Логин); + Опции.Вставить("params", СтруктураПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ИзменитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ИзменитьПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьТекущегоПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьТекущегоПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьТекущегоПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Логин = "test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("login", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПользователя"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПользователей(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПользователей"); + +КонецПроцедуры + +Процедура ReportPortal_ПолучитьПроектыПользователя(ПараметрыФункции) + + URL = ПараметрыФункции["RPortal_URL"]; + Токен = ПараметрыФункции["RPortal_TempToken"]; + Логин = "test"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("token", Токен); + Опции.Вставить("login", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("rportal", "ПолучитьПроектыПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "ReportPortal", "ПолучитьПроектыПользователя"); + +КонецПроцедуры + +#КонецОбласти // ReportPortal + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure RPortal_Authorization() Export + RPortal_Авторизация(); +EndProcedure + +Procedure RPortal_TestManagement() Export + RPortal_УправлениеТестами(); +EndProcedure + +Procedure RPortal_LogRecording() Export + RPortal_ЗаписьЛогов(); +EndProcedure + +Procedure RPortal_ProjectManagement() Export + RPortal_УправлениеПроектами(); +EndProcedure + +Procedure RPortal_UserManagement() Export + RPortal_УправлениеПользователями(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_S3.os b/src/ru/OInt/tests/Modules/OPItc_S3.os new file mode 100644 index 0000000000..cc9e573454 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_S3.os @@ -0,0 +1,1628 @@ +// OneScript: ./OInt/tests/Modules/OPItc_S3.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("S3"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("S3"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область S3 + +Процедура AWS_ОбщиеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + S3_ПолучитьСтруктуруДанных(ПараметрыТеста); + S3_ОтправитьЗапросБезТела(ПараметрыТеста); + S3_ОтправитьЗапросСТелом(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура AWS_РаботаСБакетами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + S3_СоздатьБакет(ПараметрыТеста); + S3_ПолучитьСписокБакетов(ПараметрыТеста); + S3_ПроверитьДоступностьБакета(ПараметрыТеста); + S3_УстановитьТегиБакета(ПараметрыТеста); + S3_ПолучитьТегиБакета(ПараметрыТеста); + S3_УдалитьТегиБакета(ПараметрыТеста); + S3_УстановитьШифрованиеБакета(ПараметрыТеста); + S3_ПолучитьШифрованиеБакета(ПараметрыТеста); + S3_УдалитьШифрованиеБакета(ПараметрыТеста); + S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста); + S3_ПолучитьНастройкиВерсионированияБакета(ПараметрыТеста); + S3_УдалитьБакет(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +Процедура AWS_РаботаСОбъектами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровS3(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + S3_СоздатьБакет(ПараметрыТеста); + S3_ЗагрузитьОбъект(ПараметрыТеста); + S3_ЗагрузитьОбъектЦеликом(ПараметрыТеста); + S3_ИнициализироватьЗагрузкуЧастями(ПараметрыТеста); + S3_ЗагрузитьЧастьОбъекта(ПараметрыТеста); + S3_ЗавершитьЗагрузкуЧастями(ПараметрыТеста); + S3_ОтменитьЗагрузкуЧастями(ПараметрыТеста); + S3_ПолучитьОписаниеОбъекта(ПараметрыТеста); + S3_КопироватьОбъект(ПараметрыТеста); + S3_УстановитьТегиОбъекта(ПараметрыТеста); + S3_ПолучитьТегиОбъекта(ПараметрыТеста); + S3_УдалитьТегиОбъекта(ПараметрыТеста); + S3_ПолучитьСписокОбъектов(ПараметрыТеста); + S3_ПолучитьСписокВерсийОбъектов(ПараметрыТеста); + S3_ПолучитьОбъект(ПараметрыТеста); + S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыТеста); + S3_УдалитьОбъект(ПараметрыТеста); + S3_УдалитьБакет(ПараметрыТеста); + S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыТеста); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти // S3 + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область S3 + +Процедура S3_ПолучитьСтруктуруДанных(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСтруктуруДанных"); + +КонецПроцедуры + +Процедура S3_ОтправитьЗапросБезТела(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"] + "/opi-newbucket2"; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Метод = "GET"; + + Опции = Новый Структура; + Опции.Вставить("method", Метод); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросБезТела", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ОтправитьЗапросБезТела"); + +КонецПроцедуры + +Процедура S3_ОтправитьЗапросСТелом(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Метод = "PUT"; + Тело = "C:\test_data\document.docx"; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("method", Метод); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("body", Тело); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтправитьЗапросСТелом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ОтправитьЗапросСТелом"); + +КонецПроцедуры + +Процедура S3_СоздатьБакет(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Результат = OPI_S3.УдалитьБакет(Наименование, ОсновныеДанные, Каталог); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "СоздатьБакет", "Удаление"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "СоздатьБакет", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "СоздатьБакет"); + +КонецПроцедуры + +Процедура S3_УдалитьБакет(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьБакет", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьБакет"); + +КонецПроцедуры + +Процедура S3_ПолучитьСписокБакетов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Опции = Новый Структура; + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокБакетов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСписокБакетов"); + +КонецПроцедуры + +Процедура S3_ПроверитьДоступностьБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПроверитьДоступностьБакета"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + Опции.Вставить("account", "1234"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПроверитьДоступностьБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПроверитьДоступностьБакета", "Аккаунт"); + +КонецПроцедуры + +Процедура S3_ПолучитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьШифрованиеБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьШифрованиеБакета"); + +КонецПроцедуры + +Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьШифрованиеБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьШифрованиеБакета"); + +КонецПроцедуры + +Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + XMLКонфигурация = " + | + | + | AES256 + | + | + |"; + + ИВФ = ПолучитьИмяВременногоФайла("xml"); // SKIP + ПолучитьДвоичныеДанныеИзСтроки(XMLКонфигурация).Записать(ИВФ); // SKIP + XMLКонфигурация = ИВФ; // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("conf", XMLКонфигурация); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьШифрованиеБакета", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(XMLКонфигурация, "Ошибка удаления файла после теста"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьШифрованиеБакета"); + +КонецПроцедуры + +Процедура S3_ПолучитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьТегиБакета"); + +КонецПроцедуры + +Процедура S3_УстановитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + СтруктураТегов = Новый Структура; + СтруктураТегов.Вставить("MyTag1", "SomeValue"); + СтруктураТегов.Вставить("MyTag2", "AnotherOne"); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьТегиБакета"); + +КонецПроцедуры + +Процедура S3_УдалитьТегиБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьТегиБакета"); + +КонецПроцедуры + +Процедура S3_ПолучитьНастройкиВерсионированияБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьНастройкиВерсионированияБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьНастройкиВерсионированияБакета"); + +КонецПроцедуры + +Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + Статус = Истина; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Наименование = ПараметрыФункции["S3_DB"]; + Наименование = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("status", Статус); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьНастройкиВерсионированияБакета", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьНастройкиВерсионированияБакета"); + +КонецПроцедуры + +Процедура S3_ЗагрузитьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Наименование = "picture.jpg"; + Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data", Содержимое); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьОбъект"); // SKIP + + Наименование = "fileChunked.mp3"; + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + + ОсновныеДанные.Вставить("ChunkSize", 5242880); // Размер части для загрузки в несколько запросов + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data", Содержимое); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьОбъект", "Частями"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные, , , Каталог); + +КонецПроцедуры + +Процедура S3_ЗагрузитьОбъектЦеликом(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "pictureSmall.jpg"; + Содержимое = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("data", Содержимое); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗагрузитьОбъектЦеликом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьОбъектЦеликом"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные, , , Каталог); + +КонецПроцедуры + +Процедура S3_УдалитьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьОбъект"); + +КонецПроцедуры + +Процедура S3_ПолучитьОписаниеОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОписаниеОбъекта"); + +КонецПроцедуры + +Процедура S3_КопироватьОбъект(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + ПутьИсточник = "picture.jpg"; + БакетИсточник = "newbucket2"; + + ПутьПриемник = "new_picture.jpg"; + БакетПриемник = ПараметрыФункции["S3_DB"]; + БакетПриемник = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("sname", ПутьИсточник); + Опции.Вставить("sbucket", БакетИсточник); + Опции.Вставить("name", ПутьПриемник); + Опции.Вставить("bucket", БакетПриемник); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "КопироватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "КопироватьОбъект"); + + OPI_S3.УдалитьОбъект(ПутьПриемник, БакетПриемник, ОсновныеДанные, , , Каталог); + +КонецПроцедуры + +Процедура S3_УстановитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + СтруктураТегов = Новый Структура; + + СтруктураТегов.Вставить("MyTag1", "SomeValue"); + СтруктураТегов.Вставить("MyTag2", "AnotherOne"); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("tagset", СтруктураТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УстановитьТегиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УстановитьТегиОбъекта"); + +КонецПроцедуры + +Процедура S3_ПолучитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьТегиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьТегиОбъекта"); + +КонецПроцедуры + +Процедура S3_УдалитьТегиОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "УдалитьТегиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "УдалитьТегиОбъекта"); + +КонецПроцедуры + +Процедура S3_ПолучитьСписокОбъектов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокОбъектов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСписокОбъектов"); + +КонецПроцедуры + +Процедура S3_ПолучитьСписокВерсийОбъектов(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Префикс = "pic"; + Опции = Новый Структура; + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("prefix", Префикс); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСписокВерсийОбъектов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСписокВерсийОбъектов"); + +КонецПроцедуры + +Процедура S3_ПолучитьОбъект(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; // SKIP + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP + НеобходимыйРазмер = Картинка.Размер(); // SKIP + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", , НеобходимыйРазмер); // SKIP + + ВременныйФайл = ПолучитьИмяВременногоФайла(); + ОсновныеДанные.Вставить("ChunkSize", 200000); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("out", ВременныйФайл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", "Файл", НеобходимыйРазмер); + + Наименование = "bigfile.exe"; + Бакет = "newbucket2"; + + ВременныйФайлБольшой = ПолучитьИмяВременногоФайла(); + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("out", ВременныйФайлБольшой); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", "Большой файл", 34432400); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьОбъект", "Большой ДД", 34432400); + + OPI_Инструменты.УдалитьФайлВПопытке(ВременныйФайлБольшой, "Не удалось удалить временный файл после теста!"); + OPI_Инструменты.УдалитьФайлВПопытке(ВременныйФайл , "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура S3_ИнициализироватьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями"); // SKIP + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные + , Каталог); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями", "Часть"); // SKIP + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags", МассивТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ИнициализироватьЗагрузкуЧастями", "Завершение"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура S3_ЗавершитьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями", "Начало"); // SKIP + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные + , Каталог); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями", "Часть"); // SKIP + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags", МассивТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗавершитьЗагрузкуЧастями"); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура S3_ЗагрузитьЧастьОбъекта(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Содержимое = ПараметрыФункции["Audio"]; // URL, Путь или Двоичные данные + Содержимое = OPI_ЗапросыHTTP.Get(Содержимое); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта", "Начало"); // SKIP + + IDЗагрузки = Результат["response"]["InitiateMultipartUploadResult"]["UploadId"]; + ОбщийРазмер = Содержимое.Размер(); + РазмерУчастка = 5242880; + ПрочитаноБайт = 0; + НомерЧасти = 1; + + ЧтениеДанных = Новый ЧтениеДанных(Содержимое); + ИсходныйПоток = ЧтениеДанных.ИсходныйПоток(); + МассивТегов = Новый Массив; + + Пока ПрочитаноБайт < ОбщийРазмер Цикл + + ТекущееЧтение = ЧтениеДанных.Прочитать(РазмерУчастка); + ТекущиеДанные = ТекущееЧтение.ПолучитьДвоичныеДанные(); + + Если ТекущиеДанные.Размер() = 0 Тогда + Прервать; + КонецЕсли; + + Результат = OPI_S3.ЗагрузитьЧастьОбъекта(Наименование + , Бакет + , ОсновныеДанные + , IDЗагрузки + , НомерЧасти + , ТекущиеДанные + , Каталог); + + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта"); // SKIP + + ПрочитаноБайт = ИсходныйПоток.ТекущаяПозиция(); + + ETag = Результат["headers"]["Etag"]; + ETag = ?(ETag = Неопределено, Результат["headers"]["ETag"], ETag); + + МассивТегов.Добавить(ETag); + + НомерЧасти = НомерЧасти + 1; + + КонецЦикла; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("tags", МассивТегов); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ЗавершитьЗагрузкуЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ЗагрузитьЧастьОбъекта", "Завершение"); // SKIP + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +Процедура S3_ОтменитьЗагрузкуЧастями(ПараметрыФункции) + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "fileChunked.mp3"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("dir", Каталог); + + Начало = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ИнициализироватьЗагрузкуЧастями", Опции); + IDЗагрузки = Начало["response"]["InitiateMultipartUploadResult"]["UploadId"]; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("upload", IDЗагрузки); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ОтменитьЗагрузкуЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ОтменитьЗагрузкуЧастями"); + +КонецПроцедуры + +Процедура S3_ПолучитьСсылкуСкачиванияОбъекта(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; // SKIP + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP + НеобходимыйРазмер = Картинка.Размер(); // SKIP + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "picture.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = ПараметрыФункции["S3_DB"]; + Бакет = ?(Каталог, ПараметрыФункции["S3_DB"], ПараметрыФункции["S3_GPB"]); // SKIP + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("expires", 7200); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуСкачиванияОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуСкачиванияОбъекта"); + + Результат = OPI_ЗапросыHTTP.Get(Результат); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуСкачиванияОбъекта", "Проверка", НеобходимыйРазмер); + +КонецПроцедуры + +Процедура S3_ПолучитьСсылкуЗагрузкиОбъекта(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; // SKIP + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // SKIP + НеобходимыйРазмер = Картинка.Размер(); // SKIP + + URL = ПараметрыФункции["S3_URL"]; + AccessKey = ПараметрыФункции["S3_AccessKey"]; + SecretKey = ПараметрыФункции["S3_SecretKey"]; + Region = "BTC"; + + Опции = Новый Структура; + Опции.Вставить("url", URL); + Опции.Вставить("access", AccessKey); + Опции.Вставить("secret", SecretKey); + Опции.Вставить("region", Region); + + ОсновныеДанные = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСтруктуруДанных", Опции); + + Наименование = "pictureU.jpg"; + + Каталог = Истина; // Формирование URL в path-style + Каталог = ПараметрыФункции["Directory"]; // SKIP + + Бакет = "newbucket2"; + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + Опции.Вставить("expires", 7200); + Опции.Вставить("dir", Каталог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьСсылкуЗагрузкиОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуЗагрузкиОбъекта"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать(Результат) + .УстановитьДвоичноеТело(Картинка) + .ОбработатьЗапрос("PUT"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "S3", "ПолучитьСсылкуЗагрузкиОбъекта", "Загрузка"); + + Опции = Новый Структура; + Опции.Вставить("name", Наименование); + Опции.Вставить("bucket", Бакет); + Опции.Вставить("basic", ОсновныеДанные); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("s3", "ПолучитьОписаниеОбъекта", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "S3", "ПолучитьСсылкуЗагрузкиОбъекта", "Проверка", НеобходимыйРазмер); + + OPI_S3.УдалитьОбъект(Наименование, Бакет, ОсновныеДанные); + +КонецПроцедуры + +#КонецОбласти // S3 + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure AWS_CommonMethods() Export + AWS_ОбщиеМетоды(); +EndProcedure + +Procedure AWS_BucketsManagement() Export + AWS_РаботаСБакетами(); +EndProcedure + +Procedure AWS_ObjectsManagement() Export + AWS_РаботаСОбъектами(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_SFTP.os b/src/ru/OInt/tests/Modules/OPItc_SFTP.os new file mode 100644 index 0000000000..f083d70534 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_SFTP.os @@ -0,0 +1,1782 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SFTP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("SFTP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("SFTP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область SFTP + +Процедура SF_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SFTP_ОткрытьСоединение(ПараметрыТеста); + SFTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста); + SFTP_ЭтоКоннектор(ПараметрыТеста); + SFTP_ЗакрытьСоединение(ПараметрыТеста); + SFTP_ПолучитьНастройкиЛогинПароль(ПараметрыТеста); + SFTP_ПолучитьНастройкиПриватныйКлюч(ПараметрыТеста); + SFTP_ПолучитьНастройкиЧерезАгента(ПараметрыТеста); + SFTP_ПолучитьНастройкиKI(ПараметрыТеста); + SFTP_ПолучитьНастройкиПрокси(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +Процедура SF_РаботаСДиректориями() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SFTP_ПолучитьТекущийКаталог(ПараметрыТеста); + SFTP_ПолучитьСписокОбъектов(ПараметрыТеста); + SFTP_СоздатьНовуюДиректорию(ПараметрыТеста); + SFTP_УдалитьДиректорию(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +Процедура SF_РаботаСФайлами() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SFTP_ЗагрузитьФайл(ПараметрыТеста); + SFTP_ПолучитьИнформациюОФайле(ПараметрыТеста); + SFTP_ПолучитьДанныеФайла(ПараметрыТеста); + SFTP_СохранитьФайл(ПараметрыТеста); + SFTP_ИзменитьПуть(ПараметрыТеста); + SFTP_УдалитьФайл(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +#КонецОбласти // SFTP + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область SFTP + +Процедура SFTP_ОткрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Результат = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ОткрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SFTP_СоздатьНовуюДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "СоздатьНовуюДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "СоздатьНовуюДиректорию", Постфикс); + +КонецПроцедуры + +Процедура SFTP_УдалитьДиректорию(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "new_dir"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьДиректорию", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "УдалитьДиректорию", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьТекущийКаталог(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьТекущийКаталог", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьТекущийКаталог", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьСписокОбъектов(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "test_folder"); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьСписокОбъектов", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "test_folder"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьСписокОбъектов", Постфикс + ", Без рекурсии"); + +КонецПроцедуры + +Процедура SFTP_ЗагрузитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Картинка = "C:\pic.png"; + + Картинка = ПараметрыФункции["Picture"]; // SKIP + ИВФ = ПолучитьИмяВременногоФайла("png"); // SKIP + КопироватьФайл(Картинка, ИВФ); // SKIP + Картинка = ИВФ; // SKIP + + КартинкаДД = Новый ДвоичныеДанные(Картинка); + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", Картинка); + Опции.Вставить("path", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ЗагрузитьФайл", Опции); + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("file", КартинкаДД); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат2 = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ЗагрузитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + ЗагруженныйФайл = Новый Файл(Картинка); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ЗагрузитьФайл", Постфикс , ЗагруженныйФайл.Размер()); + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "SFTP", "ЗагрузитьФайл", "Двоичные, " + Постфикс, КартинкаДД.Размер()); + + РазмерФайлаЛокальный = ЗагруженныйФайл.Размер(); + РазмерФайлаЛокальныйДД = КартинкаДД.Размер(); + + РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, "pic_from_disk.png")["data"]["size"]; + РазмерФайлаУдаленныйДД = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, "files_folder/pic_from_binary.png")["data"]["size"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальный , "SFTP", "СохранитьФайл", "Размер файла, " + Постфикс , РазмерФайлаУдаленный); + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальныйДД, "SFTP", "СохранитьФайл", "Размер файла, ДД, " + Постфикс, РазмерФайлаУдаленныйДД); + + Для Н = 1 По 7 Цикл + + Результат = OPI_SFTP.ЗагрузитьФайл(Соединение, Картинка, "pic_from_disk.png"); + Результат2 = OPI_SFTP.ЗагрузитьФайл(Соединение, КартинкаДД, "files_folder/pic_from_binary.png"); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЗагрузитьФайл", "Множественный, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + Если Не Результат2["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат2, "SFTP", "ЗагрузитьФайл", "Множественный, двоичные, " + Постфикс, КартинкаДД.Размер()); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура SFTP_УдалитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьФайл", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "УдалитьФайл", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "УдалитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "УдалитьФайл", "Несуществующий, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder"); + Опции.Вставить("rcv", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьСписокОбъектов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "УдалитьФайл", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ЭтоКоннектор(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + Результат = OPI_SFTP.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЭтоКоннектор", Постфикс); + + Результат = OPI_SFTP.ЭтоКоннектор("a"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЭтоКоннектор", "Ошибка, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиЛогинПароль(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиЛогинПароль", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиПриватныйКлюч(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("key", ПриватныйКлюч); + Опции.Вставить("pub", ПубличныйКлюч); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПриватныйКлюч", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиПриватныйКлюч", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиЧерезАгента(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЧерезАгента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиЧерезАгента", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиKI(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("yes"); + МассивОтветов.Добавить(Пароль); + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("prompts", МассивОтветов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиKI", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиKI", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьНастройкиПрокси(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьНастройкиПрокси", Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьКонфигурациюСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("set", НастройкиSFTP); + Опции.Вставить("proxy", НастройкиПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьКонфигурациюСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьКонфигурациюСоединения", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Результат); + Опции.Вставить("comm", "whoami"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ЗакрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Результат = OPI_SFTP.ЗакрытьСоединение(Соединение); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ЗакрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SFTP_СохранитьФайл(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "pic_from_disk.png"; + ИмяФайла = ПолучитьИмяВременногоФайла("bin"); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", Путь); + Опции.Вставить("file", ИмяФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "СохранитьФайл", Опции); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "СохранитьФайл", Постфикс); + + ЗагруженныйФайл = Новый Файл(ИмяФайла); + РазмерФайлаЛокальный = ЗагруженныйФайл.Размер(); + РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, Путь)["data"]["size"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальный, "SFTP", "СохранитьФайл", "Размер файла, " + Постфикс, РазмерФайлаУдаленный); + + Путь = "files_folder/pic_from_binary.png"; + + Для Н = 1 По 20 Цикл + + Результат = OPI_SFTP.СохранитьФайл(Соединение, Путь, ИмяФайла); + + Если Не Результат["result"] Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "СохранитьФайл", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(ИмяФайла, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура SFTP_ПолучитьДанныеФайла(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + + Путь = "pic_from_disk.png"; + Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь); + + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьДанныеФайла", Постфикс); + + РазмерФайлаЛокальный = Результат.Размер(); + РазмерФайлаУдаленный = OPI_SFTP.ПолучитьИнформациюОФайле(Соединение, Путь)["data"]["size"]; + + OPI_ПолучениеДанныхТестов.Обработать(РазмерФайлаЛокальный, "SFTP", "ПолучитьДанныеФайла", "Размер файла, " + Постфикс, РазмерФайлаУдаленный); + + Путь = "files_folder/pic_from_binary.png"; + + Для Н = 1 По 20 Цикл + + Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь); + + Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SFTP", "ПолучитьДанныеФайла", "Множественный, " + Постфикс); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура SFTP_ИзменитьПуть(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "pic_from_disk.png"); + Опции.Вставить("new", "files_folder/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ИзменитьПуть", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Старый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Новый, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("old", "files_folder/pic_from_disk.png"); + Опции.Вставить("new", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ИзменитьПуть", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Старый, Обратно, " + Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "pic_from_disk.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ИзменитьПуть", "Проверка, Новый, Обратно, " + Постфикс); + +КонецПроцедуры + +Процедура SFTP_ПолучитьИнформациюОФайле(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSFTP = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP, НастройкиПрокси); + + Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("path", "files_folder/pic_from_binary.png"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sftp", "ПолучитьИнформациюОФайле", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат , "SFTP", "ПолучитьИнформациюОФайле", Постфикс); + +КонецПроцедуры + +#КонецОбласти // SFTP + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SF_CommonMethods() Export + SF_ОсновныеМетоды(); +EndProcedure + +Procedure SF_DirectoryManagement() Export + SF_РаботаСДиректориями(); +EndProcedure + +Procedure SF_FileManagement() Export + SF_РаботаСФайлами(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_SQLite.os b/src/ru/OInt/tests/Modules/OPItc_SQLite.os new file mode 100644 index 0000000000..442e38f7d4 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_SQLite.os @@ -0,0 +1,993 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SQLite.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("SQLite"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("SQLite"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область SQLite + +Процедура SQLL_ОсновныеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + + База = ПолучитьИмяВременногоФайла("sqlite"); + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); + OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_Ext" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQLite_ExtLinux", ПараметрыТеста); + + SQLite_ОткрытьСоединение(ПараметрыТеста); + SQLite_ЗакрытьСоединение(ПараметрыТеста); + SQLite_ВыполнитьЗапросSQL(ПараметрыТеста); + SQLite_ЭтоКоннектор(ПараметрыТеста); + SQLite_ПодключитьРасширение(ПараметрыТеста); + + OPI_Инструменты.УдалитьФайлВПопытке(База, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLL_ORM() Экспорт + + ПараметрыТеста = Новый Структура; + + База = ПолучитьИмяВременногоФайла("sqlite"); + + Соединение = OPI_SQLite.ОткрытьСоединение(База); + ПараметрыТеста.Вставить("SQLite_DB", Соединение); + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + SQLite_СоздатьТаблицу(ПараметрыТеста); + SQLite_ДобавитьЗаписи(ПараметрыТеста); + SQLite_ГарантироватьЗаписи(ПараметрыТеста); + SQLite_ПолучитьЗаписи(ПараметрыТеста); + SQLite_ОбновитьЗаписи(ПараметрыТеста); + SQLite_УдалитьЗаписи(ПараметрыТеста); + SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); + SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста); + SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста); + SQLite_ГарантироватьТаблицу(ПараметрыТеста); + SQLite_ОчиститьТаблицу(ПараметрыТеста); + SQLite_УдалитьТаблицу(ПараметрыТеста); + SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("SQLite_DB", База); + OPI_Инструменты.ДобавитьПоле("SQLite_DB", База, "Строка", ПараметрыТеста); + + SQLite_СоздатьТаблицу(ПараметрыТеста); + SQLite_ДобавитьЗаписи(ПараметрыТеста); + SQLite_ГарантироватьЗаписи(ПараметрыТеста); + SQLite_ПолучитьЗаписи(ПараметрыТеста); + SQLite_ОбновитьЗаписи(ПараметрыТеста); + SQLite_УдалитьЗаписи(ПараметрыТеста); + SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); + SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста); + SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста); + SQLite_ГарантироватьТаблицу(ПараметрыТеста); + SQLite_ОчиститьТаблицу(ПараметрыТеста); + SQLite_УдалитьТаблицу(ПараметрыТеста); + SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); + + OPI_Инструменты.УдалитьФайлВПопытке(База, "Ошибка удаления файла базы"); + +КонецПроцедуры + +#КонецОбласти // SQLite + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область SQLite + +Процедура SQLite_ОткрытьСоединение(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + БазаНаДиске = OPI_SQLite.ОткрытьСоединение(ИВФ); + БазаВПамяти = OPI_SQLite.ОткрытьСоединение(); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(БазаНаДиске, "SQLite", "ОткрытьСоединение"); + OPI_ПолучениеДанныхТестов.Обработать(БазаВПамяти, "SQLite", "ОткрытьСоединение", "IM"); + + Закрытие = OPI_SQLite.ЗакрытьСоединение(БазаНаДиске); + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "SQLite", "ОткрытьСоединение", "Закрытие"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLite_ЗакрытьСоединение(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "SQLite", "ЗакрытьСоединение", "Открытие"); // SKIP + + Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Закрытие, "SQLite", "ЗакрытьСоединение"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLite_ВыполнитьЗапросSQL(ПараметрыФункции) + + ИВФ = ПолучитьИмяВременногоФайла("sqlite"); + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + Соединение = OPI_SQLite.ОткрытьСоединение(ИВФ); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "SQLite", "ВыполнитьЗапросSQL", "Открытие"); // SKIP + + // CREATE + + ТекстЗапроса = " + |CREATE TABLE test_table ( + |id INTEGER PRIMARY KEY, + |name TEXT, + |age INTEGER, + |salary REAL, + |is_active BOOLEAN, + |created_at DATETIME, + |data BLOB + |);"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Create"); // SKIP + + // INSERT с параметрами + + ТекстЗапроса = " + |INSERT INTO test_table (name, age, salary, is_active, created_at, data) + |VALUES (?1, ?2, ?3, ?4, ?5, ?6);"; + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить("Vitaly"); // TEXT + МассивПараметров.Добавить(25); // INTEGER + МассивПараметров.Добавить(1000.12); // REAL + МассивПараметров.Добавить(Истина); // BOOL + МассивПараметров.Добавить(OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + МассивПараметров.Добавить(Новый Структура("blob", Картинка)); // BLOB + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("params", МассивПараметров); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Insert"); // SKIP + + // SELECT (Результат этого запроса приведен в следующем блоке) + + ТекстЗапроса = "SELECT id, name, age, salary, is_active, created_at, data FROM test_table;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", , Картинка); // SKIP + + // Транзакция + + ТекстЗапроса = "BEGIN TRANSACTION; + | CREATE TABLE IF NOT EXISTS users ( + | id INTEGER PRIMARY KEY AUTOINCREMENT, + | name TEXT NOT NULL, + | age INTEGER NOT NULL + | ); + | INSERT INTO users (name, age) VALUES ('Alice', 30); + | INSERT INTO users (name, age) VALUES ('Bob', 25); + | INSERT INTO users (name, age) VALUES ('Charlie', 35); + | COMMIT;"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Transaction"); // SKIP + + // С расширением + + Если OPI_Инструменты.ЭтоWindows() Тогда + Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные + Иначе + Расширение = ПараметрыФункции["SQLite_ExtLinux"]; // URL, Путь или Двоичные данные + КонецЕсли; + + ТочкаВхода = "sqlite3_uuid_init"; + + СоответствиеРасширений = Новый Соответствие; + СоответствиеРасширений.Вставить(Расширение, ТочкаВхода); + + ТекстЗапроса = "SELECT uuid4();"; + + Опции = Новый Структура; + Опции.Вставить("sql", ТекстЗапроса); + Опции.Вставить("db", Соединение); + Опции.Вставить("exts", СоответствиеРасширений); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ВыполнитьЗапросSQL", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Расширение"); // SKIP + + Закрытие = OPI_SQLite.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ВыполнитьЗапросSQL", "Закрытие"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла базы"); + +КонецПроцедуры + +Процедура SQLite_ЭтоКоннектор(ПараметрыФункции) + + Соединение = OPI_SQLite.ОткрытьСоединение(); + Результат = OPI_SQLite.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ЭтоКоннектор"); + +КонецПроцедуры + +Процедура SQLite_СоздатьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); + СтруктураКолонок.Вставить("name" , "TEXT"); + СтруктураКолонок.Вставить("age" , "INTEGER"); + СтруктураКолонок.Вставить("salary" , "REAL"); + СтруктураКолонок.Вставить("is_active" , "BOOLEAN"); + СтруктураКолонок.Вставить("created_at", "DATETIME"); + СтруктураКолонок.Вставить("data" , "BLOB"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "СоздатьТаблицу"); + + СоответствиеКолонок = Новый Соответствие; + СоответствиеКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); + СоответствиеКолонок.Вставить("[Непонятная колонка]", "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("cols", СоответствиеКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "СоздатьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "СоздатьТаблицу", "Непонятная колонка"); + +КонецПроцедуры + +Процедура SQLite_ДобавитьЗаписи(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные + + ФайлКартинки = ПолучитьИмяВременногоФайла("png"); + Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("name" , "Vitaly"); // TEXT + СтруктураСтроки1.Вставить("age" , 25); // INTEGER + СтруктураСтроки1.Вставить("salary" , 1000.12); // REAL + СтруктураСтроки1.Вставить("is_active" , Истина); // BOOL + СтруктураСтроки1.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + СтруктураСтроки1.Вставить("data" , Новый Структура("blob", Картинка)); // BLOB + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("name" , "Lesha"); // TEXT + СтруктураСтроки2.Вставить("age" , 20); // INTEGER + СтруктураСтроки2.Вставить("salary" , 200.20); // REAL + СтруктураСтроки2.Вставить("is_active" , Ложь); // BOOL + СтруктураСтроки2.Вставить("created_at", OPI_Инструменты.ПолучитьТекущуюДату()); // DATETIME + СтруктураСтроки2.Вставить("data" , Новый Структура("blob", ФайлКартинки)); // BLOB + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("trn", Ложь); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Без транзакции"); + + СтруктураСтроки2.Вставить("error", "Lesha"); + МассивДанных.Добавить(СтруктураСтроки2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка поля"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("trn", Ложь); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка без транзакции"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", "not valid json"); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Ошибка JSON"); + + СоответствиеСтроки = Новый Соответствие; + СоответствиеСтроки.Вставить("[Непонятная колонка]", "yo"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("rows", СоответствиеСтроки); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьЗаписи", "Непонятная колонка"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлКартинки, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура SQLite_ПолучитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Поля = Новый Массив; + Поля.Добавить("name"); + Поля.Добавить("salary"); + + Фильтры = Новый Массив; + + СтруктураФильтра1 = Новый Структура; + + СтруктураФильтра1.Вставить("field", "name"); + СтруктураФильтра1.Вставить("type" , "="); + СтруктураФильтра1.Вставить("value", "Vitaly"); + СтруктураФильтра1.Вставить("union", "AND"); + СтруктураФильтра1.Вставить("raw" , Ложь); + + СтруктураФильтра2 = Новый Структура; + + СтруктураФильтра2.Вставить("field", "age"); + СтруктураФильтра2.Вставить("type" , "BETWEEN"); + СтруктураФильтра2.Вставить("value", "20 AND 30"); + СтруктураФильтра2.Вставить("raw" , Истина); + + Фильтры.Добавить(СтруктураФильтра1); + Фильтры.Добавить(СтруктураФильтра2); + + Сортировка = Новый Структура("created_at", "DESC"); + Количество = 1; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", Поля); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("order", Сортировка); + Опции.Вставить("limit", Количество); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Без параметров"); + + СтруктураФильтра2.Вставить("type", "SOMETHING"); + Фильтры.Добавить(СтруктураФильтра2); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','age','salary','is_active','created_at']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Ошибка"); + + Опции = Новый Структура; + Опции.Вставить("table", "test1"); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьЗаписи", "Непонятная колонка"); + +КонецПроцедуры + +Процедура SQLite_ОбновитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + СтруктураПолей = Новый Структура; + СтруктураПолей.Вставить("name" , "Vitaly A."); + СтруктураПолей.Вставить("salary", "999999"); + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "name"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", "Vitaly"); + СтруктураФильтра.Вставить("union", "AND"); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("values", СтруктураПолей); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОбновитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ОбновитьЗаписи"); + + СтруктураФильтра.Вставить("value", "Vitaly A."); + + Фильтры = Новый Массив; + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','salary']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ОбновитьЗаписи", "Проверка", СтруктураПолей); + +КонецПроцедуры + +Процедура SQLite_УдалитьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Фильтры = Новый Массив; + + СтруктураФильтра = Новый Структура; + + СтруктураФильтра.Вставить("field", "name"); + СтруктураФильтра.Вставить("type" , "="); + СтруктураФильтра.Вставить("value", "Vitaly A."); + СтруктураФильтра.Вставить("union", "AND"); + СтруктураФильтра.Вставить("raw" , Ложь); + + Фильтры.Добавить(СтруктураФильтра); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("filter", СтруктураФильтра); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьЗаписи"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "['name','salary']"); + Опции.Вставить("filter", Фильтры); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "УдалитьЗаписи", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_ПолучитьИнформациюОТаблице(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьИнформациюОТаблице"); + +КонецПроцедуры + +Процедура SQLite_ГарантироватьЗаписи(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test_merge"; + + СтруктураКолонок = Новый Структура; // SKIP + СтруктураКолонок.Вставить("id" , "INTEGER PRIMARY KEY"); // SKIP + СтруктураКолонок.Вставить("name" , "TEXT"); // SKIP + СтруктураКолонок.Вставить("age" , "INTEGER"); // SKIP + СтруктураКолонок.Вставить("salary" , "REAL"); // SKIP + OPI_SQLite.СоздатьТаблицу(Таблица, СтруктураКолонок, База); // SKIP + + МассивДанных = Новый Массив; + + СтруктураСтроки1 = Новый Структура; + СтруктураСтроки1.Вставить("id" , 1); + СтруктураСтроки1.Вставить("name" , "Vitaly"); + СтруктураСтроки1.Вставить("age" , 25); + СтруктураСтроки1.Вставить("salary", 1000.12); + + СтруктураСтроки2 = Новый Структура; + СтруктураСтроки2.Вставить("id" , 2); + СтруктураСтроки2.Вставить("name" , "Lesha"); + СтруктураСтроки2.Вставить("age" , 20); + СтруктураСтроки2.Вставить("salary", 200.20); + + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки2); + + КлючевыеПоля = Новый Массив; + КлючевыеПоля.Добавить("id"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьЗаписи", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьЗаписи", "Вставка"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьЗаписи", "Проверка вставки"); + + СтруктураСтроки1.Вставить("name" , "Vitaly Updated"); + СтруктураСтроки1.Вставить("salary", 1500.50); + + СтруктураСтроки3 = Новый Структура; + СтруктураСтроки3.Вставить("id" , 3); + СтруктураСтроки3.Вставить("name" , "Anton"); + СтруктураСтроки3.Вставить("age" , 30); + СтруктураСтроки3.Вставить("salary", 3000.00); + + МассивДанных = Новый Массив; + МассивДанных.Добавить(СтруктураСтроки1); + МассивДанных.Добавить(СтруктураСтроки3); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("rows", МассивДанных); + Опции.Вставить("unique", КлючевыеПоля); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьЗаписи", "Обновление"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("fields", "*"); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьЗаписи", "Проверка обновления"); + + OPI_SQLite.УдалитьТаблицу(Таблица, База); + +КонецПроцедуры + +Процедура SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции) + + Опции = Новый Структура; + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьСтруктуруФильтраЗаписей"); + + Опции = Новый Структура; + Опции.Вставить("empty", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьСтруктуруФильтраЗаписей", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПолучитьСтруктуруФильтраЗаписей", "Пустая"); + +КонецПроцедуры + +Процедура SQLite_УдалитьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "УдалитьТаблицу", "Проверка"); + + OPI_SQLite.УдалитьТаблицу("test1", База); + +КонецПроцедуры + +Процедура SQLite_ОчиститьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ОчиститьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ОчиститьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ОчиститьТаблицу", "Таблица"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьЗаписи", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ОчиститьТаблицу", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_ПодключитьРасширение(ПараметрыФункции) + + Если OPI_Инструменты.ЭтоWindows() Тогда + Расширение = ПараметрыФункции["SQLite_Ext"]; // URL, Путь или Двоичные данные + Иначе + Расширение = ПараметрыФункции["SQLite_ExtLinux"]; // URL, Путь или Двоичные данные + КонецЕсли; + + База = ПараметрыФункции["SQLite_DB"]; + ТочкаВхода = "sqlite3_uuid_init"; + + Соединение = OPI_SQLite.ОткрытьСоединение(База); + Результат = OPI_SQLite.ПодключитьРасширение(Расширение, ТочкаВхода, Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПодключитьРасширение"); + + ИВФ = ПолучитьИмяВременногоФайла("dll"); + КопироватьФайл(Расширение, ИВФ); + + Результат = OPI_SQLite.ПодключитьРасширение(ИВФ, ТочкаВхода, Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПодключитьРасширение", "Путь"); + + Результат = OPI_SQLite.ПодключитьРасширение(Новый ДвоичныеДанные(ИВФ), ТочкаВхода, Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ПодключитьРасширение", "Двоичные"); + + Результат = OPI_SQLite.ЗакрытьСоединение(Соединение); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Ошибка удаления файла расширение"); + +КонецПроцедуры + +Процедура SQLite_ДобавитьКолонкуТаблицы(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + Имя = "new_col"; + ТипДанных = "TEXT"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("type", ТипДанных); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ДобавитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_УдалитьКолонкуТаблицы(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + Таблица = "test"; + Имя = "new_col"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("name", Имя); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьКолонкуТаблицы", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьКолонкуТаблицы"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "УдалитьКолонкуТаблицы", "Проверка"); + +КонецПроцедуры + +Процедура SQLite_ГарантироватьТаблицу(ПараметрыФункции) + + База = ПараметрыФункции["SQLite_DB"]; + + Таблица = "test"; + + СтруктураКолонок = Новый Структура; + СтруктураКолонок.Вставить("id" , "INTEGER"); + СтруктураКолонок.Вставить("code" , "INTEGER"); + СтруктураКолонок.Вставить("name" , "TEXT"); + СтруктураКолонок.Вставить("age" , "INTEGER"); + СтруктураКолонок.Вставить("info" , "TEXT"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьТаблицу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьТаблицу"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьТаблицу", "Проверка", СтруктураКолонок); + + Таблица = "test_new"; + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("cols", СтруктураКолонок); + Опции.Вставить("db", База); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ГарантироватьТаблицу", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SQLite", "ГарантироватьТаблицу", "Новая"); + + Опции = Новый Структура; + Опции.Вставить("table", Таблица); + Опции.Вставить("db", База); + + Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Проверка, "SQLite", "ГарантироватьТаблицу", "Проверка 2", СтруктураКолонок); + +КонецПроцедуры + +#КонецОбласти // SQLite + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SQLL_CommonMethods() Export + SQLL_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_SSH.os b/src/ru/OInt/tests/Modules/OPItc_SSH.os new file mode 100644 index 0000000000..0361c13bd0 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_SSH.os @@ -0,0 +1,728 @@ +// OneScript: ./OInt/tests/Modules/OPItc_SSH.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("SSH"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("SSH"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область SSH + +Процедура SShell_ОсновныеМетоды() Экспорт + + МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровSSH(); + + Для Каждого ПараметрыТеста Из МассивВариантов Цикл + + SSH_ОткрытьСоединение(ПараметрыТеста); + SSH_ПолучитьКонфигурациюСоединения(ПараметрыТеста); + SSH_ВыполнитьКоманду(ПараметрыТеста); + SSH_ЗакрытьСоединение(ПараметрыТеста); + SSH_ЭтоКоннектор(ПараметрыТеста); + SSH_ПолучитьНастройкиЛогинПароль(ПараметрыТеста); + SSH_ПолучитьНастройкиПриватныйКлюч(ПараметрыТеста); + SSH_ПолучитьНастройкиЧерезАгента(ПараметрыТеста); + SSH_ПолучитьНастройкиKI(ПараметрыТеста); + SSH_ПолучитьНастройкиПрокси(ПараметрыТеста); + + КонецЦикла; + + OPI_Инструменты.УдалитьФайлВПопытке(МассивВариантов[0]["SSH_Key"], "Ошибка удаления файла после теста"); + +КонецПроцедуры + +#КонецОбласти // SSH + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область SSH + +Процедура SSH_ОткрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Результат = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ОткрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SSH_ВыполнитьКоманду(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + + Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда + Опции = Новый Структура; + Опции.Вставить("conn", Соединение); + Опции.Вставить("comm", "whoami"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ВыполнитьКоманду", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьКонфигурациюСоединения(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Опции = Новый Структура; + Опции.Вставить("set", НастройкиSSH); + Опции.Вставить("proxy", НастройкиПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьКонфигурациюСоединения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьКонфигурациюСоединения", Постфикс); + + Опции = Новый Структура; + Опции.Вставить("conn", Результат); + Опции.Вставить("comm", "whoami"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ВыполнитьКоманду", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьКонфигурациюСоединения", "Проверка, " + Постфикс); + +КонецПроцедуры + +Процедура SSH_ЗакрытьСоединение(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = ПараметрыФункции["SSH_PortKI"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + + Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда + Результат = OPI_SSH.ЗакрытьСоединение(Соединение); + Иначе + Результат = Соединение; // Ошибка соединения + КонецЕсли; + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ЗакрытьСоединение", Постфикс); + +КонецПроцедуры + +Процедура SSH_ЭтоКоннектор(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + + ИспользоватьПрокси = Истина; + НастройкиПрокси = Неопределено; + ВидАвторизации = "По логину и паролю"; + + ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP + ВидАвторизации = ПараметрыФункции["AuthType"]; // SKIP + + Если ВидАвторизации = "По логину и паролю" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + ИначеЕсли ВидАвторизации = "По ключу" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч); + + ИначеЕсли ВидАвторизации = "Keyboard interactive" Тогда + + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить(Пароль); + + Порт = 2223; // SKIP + + НастройкиSSH = OPI_SSH.ПолучитьНастройкиKI(Хост, Порт, Логин, МассивОтветов); + + Иначе + + Логин = ПараметрыФункции["SSH_User"]; + НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин); + + КонецЕсли; + + Если ИспользоватьПрокси Тогда + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + НастройкиПрокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + КонецЕсли; + + Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси); + Результат = OPI_SSH.ЭтоКоннектор(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ЭтоКоннектор", Постфикс); + + Результат = OPI_SSH.ЭтоКоннектор("a"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ЭтоКоннектор", "Ошибка, " + Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиЛогинПароль(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("pass", Пароль); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЛогинПароль", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиЛогинПароль", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиПриватныйКлюч(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + ПриватныйКлюч = "./ssh_key"; + ПубличныйКлюч = "./ssh_key.pub"; + + ПриватныйКлюч = ПараметрыФункции["SSH_Key"]; // SKIP + ПубличныйКлюч = ПараметрыФункции["SSH_Pub"]; // SKIP + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("key", ПриватныйКлюч); + Опции.Вставить("pub", ПубличныйКлюч); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПриватныйКлюч", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиПриватныйКлюч", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиЧерезАгента(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЧерезАгента", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиЧерезАгента", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиKI(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + Хост = ПараметрыФункции["SSH_Host"]; + Порт = ПараметрыФункции["SSH_Port"]; + Логин = ПараметрыФункции["SSH_User"]; + Пароль = ПараметрыФункции["SSH_Password"]; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("yes"); + МассивОтветов.Добавить(Пароль); + + Опции = Новый Структура; + Опции.Вставить("host", Хост); + Опции.Вставить("port", Порт); + Опции.Вставить("user", Логин); + Опции.Вставить("prompts", МассивОтветов); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиKI", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиKI", Постфикс); + +КонецПроцедуры + +Процедура SSH_ПолучитьНастройкиПрокси(ПараметрыФункции) + + Постфикс = ПараметрыФункции["Postfix"]; // SKIP + + ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Proxy_IP"]; + ПортПрокси = ПараметрыФункции["Proxy_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "SSH", "ПолучитьНастройкиПрокси", Постфикс); + +КонецПроцедуры + +#КонецОбласти // SSH + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SShell_CommonMethods() Export + SShell_ОсновныеМетоды(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Slack.os b/src/ru/OInt/tests/Modules/OPItc_Slack.os new file mode 100644 index 0000000000..8dc79496d2 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Slack.os @@ -0,0 +1,984 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Slack.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Slack"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Slack"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Slack + +Процедура Слак_ПолучитьИнформацию() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + + Slack_ПолучитьИнформациюОБоте(ПараметрыТеста); + Slack_ПолучитьСписокПользователей(ПараметрыТеста); + Slack_ПолучитьСписокРабочихОбластей(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ОтправитьУдалитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + Slack_ОтправитьСообщение(ПараметрыТеста); + Slack_ИзменитьСообщение(ПараметрыТеста); + Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыТеста); + Slack_ПолучитьСсылкуНаСообщение(ПараметрыТеста); + Slack_УдалитьСообщение(ПараметрыТеста); + Slack_ОтправитьЭфемерноеСообщение(ПараметрыТеста); + Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыТеста); + Slack_СформироватьБлокКартинку(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_СоздатьАрхивироватьКанал() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + Slack_СоздатьКанал(ПараметрыТеста); + Slack_УстановитьТемуКанала(ПараметрыТеста); + Slack_УстановитьЦельКанала(ПараметрыТеста); + Slack_ПолучитьКанал(ПараметрыТеста); + Slack_ПригласитьПользователейВКанал(ПараметрыТеста); + Slack_ВыгнатьПользователяИзКанала(ПараметрыТеста); + Slack_ПолучитьИсториюКанала(ПараметрыТеста); + Slack_ПолучитьСписокПользователейКанала(ПараметрыТеста); + Slack_ПокинутьКанал(ПараметрыТеста); + Slack_ВступитьВКанал(ПараметрыТеста); + Slack_ПереименоватьКанал(ПараметрыТеста); + Slack_АрхивироватьКанал(ПараметрыТеста); + Slack_ПолучитьСписокКаналов(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ОткрытьЗакрытьДиалог() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_User" , ПараметрыТеста); + + Slack_ОткрытьДиалог(ПараметрыТеста); + Slack_ЗакрытьДиалог(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Slack_ПолучитьСписокФайлов(ПараметрыТеста); + Slack_ЗагрузитьФайл(ПараметрыТеста); + Slack_СделатьФайлПубличным(ПараметрыТеста); + Slack_СделатьФайлПриватным(ПараметрыТеста); + Slack_ПолучитьДанныеФайла(ПараметрыТеста); + Slack_УдалитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Слак_ЗагрузитьУдалитьВФ() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Slack_Channel", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Slack_ПолучитьСписокВнешнихФайлов(ПараметрыТеста); + Slack_ДобавитьВнешнийФайл(ПараметрыТеста); + Slack_ПолучитьВнешнийФайл(ПараметрыТеста); + Slack_ОтправитьВнешнийФайл(ПараметрыТеста); + Slack_УдалитьВнешнийФайл(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Slack + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Slack + +Процедура Slack_ПолучитьИнформациюОБоте(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИнформациюОБоте", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьИнформациюОБоте"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокПользователей"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокРабочихОбластей(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокРабочихОбластей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокРабочихОбластей"); + +КонецПроцедуры + +Процедура Slack_ОтправитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + // Текстовое + + Текст = "Тестовое сообщение 1"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьСообщение", , ПараметрыФункции, Текст, Канал); // SKIP + + // С вложениями (в примере: блок с картинкой) + + Текст = "Сообщение с картинкой"; + Картинка = ПараметрыФункции["Picture"]; + МассивБлоков = Новый Массив; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt", "Картинка"); + + Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + МассивБлоков.Добавить(Блок); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + Опции.Вставить("blocks", МассивБлоков); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьСообщение", "Картинка", ПараметрыФункции, Текст, Канал); // SKIP + + // Отложенное + + Текст = "Отложенное сообщение"; + Час = 3600; + Сутки = 24; + + ДатаОтправки = OPI_Инструменты.ПолучитьТекущуюДату() + (Сутки * Час); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + Опции.Вставить("date", ДатаОтправки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьСообщение", "Отложенное", ПараметрыФункции, Текст, Канал); + + Токен = ПараметрыФункции["Slack_Token"]; + Отметка = Результат["scheduled_message_id"]; + + OPI_Slack.УдалитьСообщение(Токен, Канал, Отметка, Истина); + +КонецПроцедуры + +Процедура Slack_СформироватьБлокКартинку(ПараметрыФункции) + + Картинка = ПараметрыФункции["Picture"]; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt", "Картинка"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СформироватьБлокКартинку"); + +КонецПроцедуры + +Процедура Slack_ИзменитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Текст = "Тестовое сообщение 2"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ИзменитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ИзменитьСообщение", , Текст, Канал); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокОтветовНаСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтветовНаСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокОтветовНаСообщение"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСсылкуНаСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСсылкуНаСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСсылкуНаСообщение", , Канал); + +КонецПроцедуры + +Процедура Slack_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Отметка = ПараметрыФункции["Slack_MessageTS"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("stamp", Отметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура Slack_ОтправитьЭфемерноеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + Картинка = ПараметрыФункции["Picture"]; + Текст = "Эфимерное сообщение"; + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("alt", "Картинка"); + + Блок = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СформироватьБлокКартинку", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", Текст); + Опции.Вставить("user", Пользователь); + Опции.Вставить("blocks", Блок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьЭфемерноеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьЭфемерноеСообщение"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокОтложенныхСообщений(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокОтложенныхСообщений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокОтложенныхСообщений"); + +КонецПроцедуры + +Процедура Slack_СоздатьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Имя = "testconv" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Имя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СоздатьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СоздатьКанал", , ПараметрыФункции, Имя); + +КонецПроцедуры + +Процедура Slack_УстановитьТемуКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Тема = "Тестовая тема"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("theme", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьТемуКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УстановитьТемуКанала", , Тема); + +КонецПроцедуры + +Процедура Slack_УстановитьЦельКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Цель = "Тестовая цель"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("purpose", Цель); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УстановитьЦельКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УстановитьЦельКанала"); + +КонецПроцедуры + +Процедура Slack_ПолучитьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьКанал", , ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура Slack_ПригласитьПользователейВКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("users", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПригласитьПользователейВКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПригласитьПользователейВКанал", , ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура Slack_ВыгнатьПользователяИзКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("user", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВыгнатьПользователяИзКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ВыгнатьПользователяИзКанала"); + +КонецПроцедуры + +Процедура Slack_ПолучитьИсториюКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьИсториюКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьИсториюКанала"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокПользователейКанала(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокПользователейКанала", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокПользователейКанала"); + +КонецПроцедуры + +Процедура Slack_ПокинутьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПокинутьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПокинутьКанал"); + +КонецПроцедуры + +Процедура Slack_ВступитьВКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ВступитьВКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ВступитьВКанал", , ПараметрыФункции["Slack_NewChannelName"]); + +КонецПроцедуры + +Процедура Slack_ПереименоватьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + Название = "testconv" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("title", Название); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПереименоватьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПереименоватьКанал", , Название); + +КонецПроцедуры + +Процедура Slack_АрхивироватьКанал(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_NewChannel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "АрхивироватьКанал", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "АрхивироватьКанал"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокКаналов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокКаналов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокКаналов"); + +КонецПроцедуры + +Процедура Slack_ОткрытьДиалог(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Пользователь = ПараметрыФункции["Slack_User"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("users", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОткрытьДиалог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОткрытьДиалог", , ПараметрыФункции); + + Канал = Результат["channel"]["id"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + Опции.Вставить("text", "Тест диалог"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОткрытьДиалог", "Сообщение", ПараметрыФункции); + +КонецПроцедуры + +Процедура Slack_ЗакрытьДиалог(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Диалог = ПараметрыФункции["Slack_Dialog"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("conv", Диалог); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗакрытьДиалог", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ЗакрытьДиалог"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокФайлов"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокФайлов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокФайлов", "Все"); + +КонецПроцедуры + +Процедура Slack_ЗагрузитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + Файл = ПараметрыФункции["Document"]; // URL, Двоичные данные или Путь к файлу + + ИмяФайла = "megadoc.docx"; + Заголовок = "Новый файл"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ЗагрузитьФайл", , ПараметрыФункции, ИмяФайла); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПубличным"); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПриватным"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", Файл); + Опции.Вставить("filename", ИмяФайла); + Опции.Вставить("title", Заголовок); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ЗагрузитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ЗагрузитьФайл", "Канал", ПараметрыФункции, ИмяФайла); + OPI_Slack.УдалитьФайл(ПараметрыФункции["Slack_Token"], Результат["files"][0]["id"]); + +КонецПроцедуры + +Процедура Slack_СделатьФайлПубличным(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПубличным", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПубличным", "Без записи"); + +КонецПроцедуры + +Процедура Slack_СделатьФайлПриватным(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "СделатьФайлПриватным", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "СделатьФайлПриватным", "Без записи"); + +КонецПроцедуры + +Процедура Slack_ПолучитьДанныеФайла(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьДанныеФайла", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьДанныеФайла", , "megadoc.docx"); + +КонецПроцедуры + +Процедура Slack_УдалитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УдалитьФайл"); + +КонецПроцедуры + +Процедура Slack_ПолучитьСписокВнешнихФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("channel", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокВнешнихФайлов"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьСписокВнешнихФайлов", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьСписокВнешнихФайлов", "Все"); + +КонецПроцедуры + +Процедура Slack_ДобавитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Заголовок = "Новый файл"; + Файл = ПараметрыФункции["Document"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", Файл); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ДобавитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ДобавитьВнешнийФайл", , ПараметрыФункции, Заголовок); + +КонецПроцедуры + +Процедура Slack_ПолучитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ПолучитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ПолучитьВнешнийФайл"); + +КонецПроцедуры + +Процедура Slack_ОтправитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + Канал = ПараметрыФункции["Slack_Channel"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + Опции.Вставить("channels", Канал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "ОтправитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "ОтправитьВнешнийФайл"); + +КонецПроцедуры + +Процедура Slack_УдалитьВнешнийФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["Slack_Token"]; + ИдентификаторФайла = ПараметрыФункции["Slack_ExtFileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", ИдентификаторФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("slack", "УдалитьВнешнийФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Slack", "УдалитьВнешнийФайл"); + +КонецПроцедуры + +#КонецОбласти // Slack + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure SlackGetData() Export + Слак_ПолучитьИнформацию(); +EndProcedure + +Procedure Slack_SendDeleteMessage() Export + Слак_ОтправитьУдалитьСообщение(); +EndProcedure + +Procedure Slack_CreateArchiveChannel() Export + Слак_СоздатьАрхивироватьКанал(); +EndProcedure + +Procedure Slack_OpenCloseDialog() Export + Слак_ОткрытьЗакрытьДиалог(); +EndProcedure + +Procedure Slack_UploadDeleteFile() Export + Слак_ЗагрузитьУдалитьФайл(); +EndProcedure + +Procedure Slack_UploadDeleteExternalFile() Export + Слак_ЗагрузитьУдалитьВФ(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_TCP.os b/src/ru/OInt/tests/Modules/OPItc_TCP.os new file mode 100644 index 0000000000..aa9ebbc091 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_TCP.os @@ -0,0 +1,839 @@ +// OneScript: ./OInt/tests/Modules/OPItc_TCP.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("TCP"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("TCP"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область TCP + +Процедура TC_Клиент() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTLS", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_User" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_Password", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_IP" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_Port" , ПараметрыТеста); + + TCP_ОткрытьСоединение(ПараметрыТеста); + TCP_ЗакрытьСоединение(ПараметрыТеста); + TCP_ПрочитатьДвоичныеДанные(ПараметрыТеста); + TCP_ОтправитьДвоичныеДанные(ПараметрыТеста); + TCP_ПрочитатьСтроку(ПараметрыТеста); + TCP_ОтправитьСтроку(ПараметрыТеста); + TCP_ОбработатьЗапрос(ПараметрыТеста); + TCP_ПолучитьНастройкиTLS(ПараметрыТеста); + TCP_ПолучитьПоследнююОшибку(ПараметрыТеста); + TCP_ПолучитьНастройкиПрокси(ПараметрыТеста); + +КонецПроцедуры + +Процедура TC_Сервер() Экспорт + + ПараметрыТеста = Новый Структура; + + TCP_ЗапуститьСервер(ПараметрыТеста); + TCP_ОстановитьСервер(ПараметрыТеста); + TCP_ПолучитьДанныеОчередногоСоединения(ПараметрыТеста); + TCP_ПолучитьДанныеСоединения(ПараметрыТеста); + TCP_ОтправитьДанные(ПараметрыТеста); + TCP_ЗакрытьВходящееСоединение(ПараметрыТеста); + TCP_ЗавершитьОтправку(ПараметрыТеста); + TCP_ЗавершитьПолучение(ПараметрыТеста); + TCP_ПолучитьСписокСоединений(ПараметрыТеста); + TCP_ЭтоОбъектСервера(ПараметрыТеста); + TCP_ПолучитьЛог(ПараметрыТеста); + TCP_ПолучитьНастройкиЛогирования(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // TCP + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область TCP + +Процедура TCP_ОткрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "TCP", "ОткрытьСоединение"); // SKIP + + OPI_TCP.ЗакрытьСоединение(Соединение); + + Адрес = "tcpbin.com:4243"; + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + ПроксиПользователь = ПараметрыФункции["Proxy_User"]; + ПроксиПароль = ПараметрыФункции["Proxy_Password"]; + ПроксиАдрес = ПараметрыФункции["Socks5_IP"]; + ПроксиПорт = ПараметрыФункции["Socks5_Port"]; + + ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", ПроксиАдрес); + Опции.Вставить("port", ПроксиПорт); + Опции.Вставить("type", "socks5"); + Опции.Вставить("login", ПроксиПользователь); + Опции.Вставить("pass", ПроксиПароль); + + Прокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес, TLS, Прокси); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Соединение, "TCP", "ОткрытьСоединение", "TLS"); + +КонецПроцедуры + +Процедура TCP_ЗакрытьСоединение(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + Результат = OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьСоединение"); + +КонецПроцедуры + +Процедура TCP_ПрочитатьДвоичныеДанные(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Сообщение = "Hello server!" + Символы.ПС; + Данные = ПолучитьДвоичныеДанныеИзСтроки(Сообщение); + + OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , Маркер); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьДвоичныеДанные", , Сообщение); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьДвоичныеДанные", "Таймаут", Сообщение); + +КонецПроцедуры + +Процедура TCP_ОтправитьДвоичныеДанные(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Сообщение = "Hello server!" + Символы.ПС; + Данные = ПолучитьДвоичныеДанныеИзСтроки(Сообщение); + + Результат = OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Ответ = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , Маркер); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Ответ, "TCP", "ОтправитьДвоичныеДанные", , Сообщение); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьДвоичныеДанные(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьДвоичныеДанные(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОтправитьДвоичныеДанные", "Таймаут", Сообщение); + +КонецПроцедуры + +Процедура TCP_ОбработатьЗапрос(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Данные = "Echo this!" + Символы.ПС; + + Опции = Новый Структура; + Опции.Вставить("address", Адрес); + Опции.Вставить("data", Данные); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОбработатьЗапрос", , "Echo this!" + Символы.ПС); // SKIP + + Адрес = ПараметрыФункции["TCP_AddressTLS"]; + + ПроксиПользователь = ПараметрыФункции["Proxy_User"]; + ПроксиПароль = ПараметрыФункции["Proxy_Password"]; + ПроксиАдрес = ПараметрыФункции["Socks5_IP"]; + ПроксиПорт = ПараметрыФункции["Socks5_Port"]; + + ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP + + Опции = Новый Структура; + Опции.Вставить("addr", ПроксиАдрес); + Опции.Вставить("port", ПроксиПорт); + Опции.Вставить("type", "socks5"); + Опции.Вставить("login", ПроксиПользователь); + Опции.Вставить("pass", ПроксиПароль); + + Прокси = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + Опции = Новый Структура; + Опции.Вставить("address", Адрес); + Опции.Вставить("data", Данные); + Опции.Вставить("tls", Tls); + Опции.Вставить("proxy", Прокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ОбработатьЗапрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОбработатьЗапрос", "TLS", "Echo this!" + Символы.ПС); + +КонецПроцедуры + +Процедура TCP_ПрочитатьСтроку(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Данные = "Hello server!" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(Соединение, Данные); + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , Маркер); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьСтроку", , Данные); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьСтроку(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПрочитатьСтроку", "Таймаут", Данные); + +КонецПроцедуры + +Процедура TCP_ОтправитьСтроку(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Данные = "Hello server!" + Символы.ПС; + + Результат = OPI_TCP.ОтправитьСтроку(Соединение, Данные); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + // Маркер конца сообщения для исключения ожидания конца таймаута + Маркер = Символы.ПС; + Ответ = OPI_TCP.ПрочитатьСтроку(Соединение, , Маркер); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Ответ, "TCP", "ОтправитьСтроку", , Данные); + + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_TCP.ОтправитьСтроку(Соединение, Данные); + Результат = OPI_TCP.ПрочитатьСтроку(Соединение, , , 50000); + + OPI_TCP.ЗакрытьСоединение(Соединение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОтправитьСтроку", "Таймаут", Данные); + +КонецПроцедуры + +Процедура TCP_ПолучитьНастройкиTLS(ПараметрыФункции) + + Опции = Новый Структура; + Опции.Вставить("trust", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиTLS", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиTLS"); + +КонецПроцедуры + +Процедура TCP_ПолучитьПоследнююОшибку(ПараметрыФункции) + + Адрес = ПараметрыФункции["TCP_Address"]; + Соединение = OPI_TCP.ОткрытьСоединение(Адрес); + Данные = "Hello server!" + Символы.ПС; + + Отправка = OPI_TCP.ОтправитьСтроку(Соединение, Данные); + Результат = OPI_TCP.ПолучитьПоследнююОшибку(Соединение); // SKIP + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьПоследнююОшибку"); + +КонецПроцедуры + +Процедура TCP_ПолучитьНастройкиПрокси(ПараметрыФункции) + + ТипПрокси = "socks5"; // http, socks5, socks4 + + АдресПрокси = ПараметрыФункции["Socks5_IP"]; + ПортПрокси = ПараметрыФункции["Socks5_Port"]; + ЛогинПрокси = ПараметрыФункции["Proxy_User"]; + ПарольПрокси = ПараметрыФункции["Proxy_Password"]; + + Опции = Новый Структура; + Опции.Вставить("addr", АдресПрокси); + Опции.Вставить("port", ПортПрокси); + Опции.Вставить("type", ТипПрокси); + Опции.Вставить("login", ЛогинПрокси); + Опции.Вставить("pass", ПарольПрокси); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("tcp", "ПолучитьНастройкиПрокси", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиПрокси"); + +КонецПроцедуры + +Процедура TCP_ЗапуститьСервер(ПараметрыФункции) + + Порт = 9876; + РазмерПула = 10; + + Сервер = OPI_TCP.ЗапуститьСервер(Порт, РазмерПула); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Сервер, "TCP", "ЗапуститьСервер"); + + OPI_TCP.ОстановитьСервер(Сервер); + +КонецПроцедуры + +Процедура TCP_ОстановитьСервер(ПараметрыФункции) + + Порт = 9877; + Сервер = OPI_TCP.ЗапуститьСервер(Порт); + + Результат = OPI_TCP.ОстановитьСервер(Сервер); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОстановитьСервер"); + + РезультатСписка = OPI_TCP.ПолучитьСписокСоединений(Сервер); + + OPI_ПолучениеДанныхТестов.Обработать(РезультатСписка, "TCP", "ОстановитьСервер", "Список"); + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Порт); + + Адрес = СтрШаблон("127.0.0.1:%1", Порт); + Клиент = OPI_TCP.ОткрытьСоединение(Адрес); + + OPI_ПолучениеДанныхТестов.Обработать(Клиент, "TCP", "ОстановитьСервер", "Подключение"); + +КонецПроцедуры + +Процедура TCP_ПолучитьДанныеОчередногоСоединения(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Отправляем сообщение от клиента + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + Иначе + Сообщение = "Hello from client!" + Символы.ПС; + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + КонецЕсли; + + // Получаем сообщение на сервере + Результат = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000, 8192); + + // END + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеОчередногоСоединения", , Сообщение); + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + + Результат = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000, 8192); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеОчередногоСоединения", "Закрытое", Сообщение); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ПолучитьДанныеСоединения(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + OPI_Инструменты.Пауза(1); // SKIP + + // Получаем список соединений сервера + СписокСоединений = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + Если Не СписокСоединений["result"] Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(СписокСоединений); + КонецЕсли; + + Если СписокСоединений["connections"].Количество() = 0 Тогда + ВызватьИсключение "Список соединений пуст"; + Иначе + IDСоединения = СписокСоединений["connections"][0]["connectionId"]; + КонецЕсли; + + РезультатПустой = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); // SKIP + OPI_ПолучениеДанныхТестов.Обработать(РезультатПустой, "TCP", "ПолучитьДанныеСоединения", "Пустое"); // SKIP + + Для Н = 0 По 5 Цикл + + // Отправляем из клиента + ТекущееСообщение = СтрШаблон("Message no. %1%2", Н, Символы.ПС); + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, ТекущееСообщение); + + // Получем на сервере + Результат = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", , ТекущееСообщение); // SKIP + + КонецЦикла; + + // END + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + + Результат = OPI_TCP.ПолучитьДанныеСоединения(ОбъектСервера, IDСоединения, 5000, 8192); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", "Закрытое"); + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьДанныеСоединения", "ПустойСписок"); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ОтправитьДанные(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + Сообщение = "Hello!" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + // Получаем сообщение и ID соединения + ОчередноеСообщение = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000); + IDСоединения = ОчередноеСообщение["connectionId"]; + + // Отправляем ответ от сервера + ОтветСервера = "Response from server!" + Символы.ПС; + Результат = OPI_TCP.ОтправитьДанные(ОбъектСервера, IDСоединения, ОтветСервера); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ОтправитьДанные"); + + // Проверяем получение на клиенте + ОтветКлиента = OPI_TCP.ПрочитатьСтроку(ОбъектКлиента, , Символы.ПС); + + OPI_ПолучениеДанныхТестов.Обработать(ОтветКлиента, "TCP", "ОтправитьДанные", "Проверка", ОтветСервера); + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЗакрытьВходящееСоединение(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + Сообщение = "Hello!" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + // Получаем ID соединения + ПервоеСообщение = OPI_TCP.ПолучитьДанныеОчередногоСоединения(ОбъектСервера, 5000); + IDСоединения = ПервоеСообщение["connectionId"]; + + // Закрываем соединение со стороны сервера + Результат = OPI_TCP.ЗакрытьВходящееСоединение(ОбъектСервера, IDСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение"); + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение", "ПустойСписок"); + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + Результат = OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗакрытьВходящееСоединение", "ОтправкаВЗакрытое"); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЗавершитьОтправку(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + OPI_Инструменты.Пауза(1); // SKIP + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + АктивныеСоединения = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + IDСоединения = АктивныеСоединения["connections"][0]["connectionId"]; + + // Завершаем отправку со стороны сервера + Результат = OPI_TCP.ЗавершитьОтправку(ОбъектСервера, IDСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьОтправку"); + + Сообщение = "Hello" + Символы.ПС; + + OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + Результат = OPI_TCP.ОтправитьСтроку(ОбъектКлиента, Сообщение); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьОтправку", "ОтправкаКлиент"); + + ОтветСервера = "Response from server!" + Символы.ПС; + Результат = OPI_TCP.ОтправитьДанные(ОбъектСервера, IDСоединения, ОтветСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьОтправку", "ОтправкаСервер"); + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ПолучитьСписокСоединений(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + + Клиент1 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + Клиент2 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + Если Не OPI_TCP.ЭтоОбъектКлиента(Клиент1) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент1); + КонецЕсли; + + Если Не OPI_TCP.ЭтоОбъектКлиента(Клиент2) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(Клиент2); + КонецЕсли; + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьСписокСоединений"); + + OPI_TCP.ЗакрытьСоединение(Клиент1); + OPI_TCP.ЗакрытьСоединение(Клиент2); + + Клиент3 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + Клиент4 = OPI_TCP.ОткрытьСоединение(АдресПодключения); + + OPI_TCP.ОтправитьСтроку(Клиент3, "Yo" + Символы.ПС); + + OPI_TCP.ЗакрытьСоединение(Клиент3); + OPI_TCP.ЗакрытьСоединение(Клиент4); + + Результат = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьСписокСоединений", "Закрытые"); + + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЗавершитьПолучение(ПараметрыФункции) + + ПортЗапуска = 9877; + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + OPI_Инструменты.Пауза(1); // SKIP + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + АктивныеСоединения = OPI_TCP.ПолучитьСписокСоединений(ОбъектСервера); + IDСоединения = АктивныеСоединения["connections"][0]["connectionId"]; + + // Завершаем получение со стороны сервера + Результат = OPI_TCP.ЗавершитьПолучение(ОбъектСервера, IDСоединения); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЗавершитьПолучение"); + + OPI_TCP.ЗакрытьСоединение(ОбъектКлиента); + OPI_TCP.ОстановитьСервер(ОбъектСервера); + +КонецПроцедуры + +Процедура TCP_ЭтоОбъектСервера(ПараметрыФункции) + + Порт = 9884; + Сервер = OPI_TCP.ЗапуститьСервер(Порт); + + Результат = OPI_TCP.ЭтоОбъектСервера(Сервер); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЭтоОбъектСервера"); + + OPI_TCP.ОстановитьСервер(Сервер); + + // Проверка с неправильным объектом + Результат = OPI_TCP.ЭтоОбъектСервера("Не сервер"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ЭтоОбъектСервера", "Ложь"); + +КонецПроцедуры + +Процедура TCP_ПолучитьЛог(ПараметрыФункции) + + ПортЗапуска = 9877; + ФайлЛога = ПолучитьИмяВременногоФайла("txt"); + НастройкиЛогирования = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога); + ОбъектСервера = OPI_TCP.ЗапуститьСервер(ПортЗапуска, , НастройкиЛогирования); + + // Подключаемся к запущенному серверу + АдресПодключения = "127.0.0.1:9877"; + ОбъектКлиента = OPI_TCP.ОткрытьСоединение(АдресПодключения); + OPI_Инструменты.Пауза(1); // SKIP + + Если Не OPI_TCP.ЭтоОбъектКлиента(ОбъектКлиента) Тогда + ВызватьИсключение OPI_Инструменты.JSONСтрокой(ОбъектКлиента); + КонецЕсли; + + Результат = OPI_TCP.ПолучитьЛог(ОбъектСервера); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьЛог", , ФайлЛога); + +КонецПроцедуры + +Процедура TCP_ПолучитьНастройкиЛогирования(ПараметрыФункции) + + Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Истина, 100, ПолучитьИмяВременногоФайла()); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования"); + + Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Ложь, , ПолучитьИмяВременногоФайла()); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования", "Файл"); + + Результат = OPI_TCP.ПолучитьНастройкиЛогирования(Истина); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "TCP", "ПолучитьНастройкиЛогирования", "Память"); + +КонецПроцедуры + +#КонецОбласти // TCP + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure TC_Client() Export + TC_Клиент(); +EndProcedure + +Procedure TC_Server() Export + TC_Сервер(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Telegram.os b/src/ru/OInt/tests/Modules/OPItc_Telegram.os new file mode 100644 index 0000000000..444e3882cc --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Telegram.os @@ -0,0 +1,1662 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Telegram.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Telegram"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Telegram"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Telegram + +Процедура Телеграм_ПолучитьИнформациюБота() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + Telegram_ПолучитьИнформациюБота(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьОбновления() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + Telegram_УдалитьWebhook(ПараметрыТеста); + Telegram_ПолучитьОбновления(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_УстановитьWebhook() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_URL" , ПараметрыТеста); + + Telegram_УстановитьWebhook(ПараметрыТеста); + Telegram_УдалитьWebhook(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьТекстовоеСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + + Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста); + Telegram_ЗаменитьТекстСообщения(ПараметрыТеста); + Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста); + Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьКартинку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Telegram_ОтправитьКартинку(ПараметрыТеста); + Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста); + Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьВидео() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + Telegram_ОтправитьВидео(ПараметрыТеста); + Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьАудио() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); + + Telegram_ОтправитьАудио(ПараметрыТеста); + Telegram_СкачатьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьДокумент() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Telegram_ОтправитьДокумент(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьГифку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); + + Telegram_ОтправитьГифку(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьМедиагруппу() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Telegram_ОтправитьМедиагруппу(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьМестоположение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Long" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Lat" , ПараметрыТеста); + + Telegram_ОтправитьМестоположение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьКонтакт() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Name" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Surname" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Phone" , ПараметрыТеста); + + Telegram_ОтправитьКонтакт(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьОпрос() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_ОтправитьОпрос(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПереслатьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); + + Telegram_ПереслатьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_БанРазбан() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_Бан(ПараметрыТеста); + Telegram_Разбан(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_СоздатьСсылкуПриглашение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_СоздатьСсылкуПриглашение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ЗакрепитьОткрепитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelMessageID", ПараметрыТеста); + + Telegram_ЗакрепитьСообщение(ПараметрыТеста); + Telegram_ОткрепитьСообщение(ПараметрыТеста); + Telegram_УдалитьСообщение(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьЧислоУчастников() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ChannelID", ПараметрыТеста); + + Telegram_ПолучитьЧислоУчастников(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьСписокАватаровФорума() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token", ПараметрыТеста); + + Telegram_ПолучитьСписокИконокАватаров(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_СоздатьУдалитьТемуФорума() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста); + + Telegram_СоздатьТемуФорума(ПараметрыТеста); + Telegram_ИзменитьТемуФорума(ПараметрыТеста); + Telegram_ЗакрытьТемуФорума(ПараметрыТеста); + Telegram_ОткрытьТемуФорума(ПараметрыТеста); + Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыТеста); + Telegram_УдалитьТемуФорума(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_СкрытьПоказатьГлавнуюТему() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + + Telegram_СкрытьГлавнуюТемуФорума(ПараметрыТеста); + Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыТеста); + +КонецПроцедуры + +Процедура Телеграм_ИзменитьИмяГлавнойТемы() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Telegram_ForumID", ПараметрыТеста); + + Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Telegram + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Telegram + +Процедура Telegram_ПолучитьИнформациюБота(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьИнформациюБота", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьИнформациюБота"); + +КонецПроцедуры + +Процедура Telegram_ПолучитьОбновления(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьОбновления", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьОбновления"); + +КонецПроцедуры + +Процедура Telegram_УстановитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + URL = ПараметрыФункции["Telegram_URL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УстановитьWebhook", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УстановитьWebhook"); + +КонецПроцедуры + +Процедура Telegram_УдалитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьWebhook", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УдалитьWebhook"); + +КонецПроцедуры + +Процедура Telegram_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + + МассивКнопокКлавиатуры = Новый Массив; + МассивКнопокКлавиатуры.Добавить("Кнопка1"); + МассивКнопокКлавиатуры.Добавить("Кнопка2"); + + // С клавиатурой, в чат + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопокКлавиатуры); + Опции.Вставить("under", Истина); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", , ПараметрыФункции, Текст); // SKIP + + // Простое, в канал + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Канал", ПараметрыФункции, Текст); + + Текст = "Текст html %F0%9F%93%9E 10%"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemode", "HTML"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "HTML"); + + Текст = "%F0%9F%A4%BC"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Emoji"); + + Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Текст + Emoji"); + + Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура, Ложь); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Клавиатура структура"); + + Текст = "%F0%9F%94%A5 *Новый релиз\!* + | + |%F0%9F%8F%B0 *Репозиторий*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Версия*: \{0.6.0} + |%F0%9F%93%85 *Дата релиза*: 6 декабря 2025 г. + | + |>*AI сводка* + |>Devtools - это инструмент для автоматизации работы с конфигурациями\расширениями 1С:Предприятия и интеграции с Git. Приложение позволяет выгружать и загружать объекты, а также синхронизировать изменения между Git и хранилищем 1С. В релизе 0.6.0 реализованы оптимизация логики работы и добавлено логирование, что способствует стабильности и упрощает анализ работы приложения. + | + | + |_Не забывайте ставить %E2%AD%90 понравившимся проектам_"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьТекстовоеСообщение", "Сложный"); + +КонецПроцедуры + +Процедура Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка1"); + МассивКнопок.Добавить("Кнопка2"); + МассивКнопок.Добавить("Кнопка3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СформироватьКлавиатуруПоМассивуКнопок"); + +КонецПроцедуры + +Процедура Telegram_ОтправитьКартинку(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Картинка = ПараметрыФункции["Picture"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + КартинкаДД = Новый ДвоичныеДанные(КартинкаПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", КартинкаПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", КартинкаДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Двоичные", ПараметрыФункции, Текст); + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка1"); + МассивКнопок.Добавить("Кнопка2"); + МассивКнопок.Добавить("Кнопка3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + Опции.Вставить("under", Истина); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Клавиатура", ПараметрыФункции, Текст); + + Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура); + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Клавиатура коллекция", ПараметрыФункции, Текст); + + Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Текст + Emoji"); + + Текст = "%F0%9F%94%A5 *Новый релиз\!* + | + |%F0%9F%8F%B0 *Репозиторий*: [240596448/devtools](https://github.com/240596448/devtools) + |%F0%9F%94%A2 *Версия*: \{0.6.0} + |%F0%9F%93%85 *Дата релиза*: 6 декабря 2025 г. + | + |>*AI сводка* + |>Devtools - это инструмент для автоматизации работы с конфигурациями\расширениями 1С:Предприятия и интеграции с Git. Приложение позволяет выгружать и загружать объекты, а также синхронизировать изменения между Git и хранилищем 1С. В релизе 0.6.0 реализованы оптимизация логики работы и добавлено логирование, что способствует стабильности и упрощает анализ работы приложения. + | + | + |_Не забывайте ставить %E2%AD%90 понравившимся проектам_"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("picture", Картинка); + Опции.Вставить("parsemode", "MarkdownV2"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКартинку", "Сложный"); + + OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьВидео(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Видео = ПараметрыФункции["Video"]; + + ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); + КопироватьФайл(Видео, ВидеоПуть); + + ВидеоДД = Новый ДвоичныеДанные(ВидеоПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("video", Видео); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьВидео", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("video", ВидеоПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьВидео", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("video", ВидеоДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьВидео", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ВидеоПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьВидео", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьАудио(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Аудио = ПараметрыФункции["Audio"]; + + АудиоПуть = ПолучитьИмяВременногоФайла("mp3"); + КопироватьФайл(Аудио, АудиоПуть); + + АудиоДД = Новый ДвоичныеДанные(АудиоПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("audio", Аудио); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьАудио", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("audio", АудиоПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьАудио", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("audio", АудиоДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьАудио", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(АудиоПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьАудио", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьДокумент(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Документ = ПараметрыФункции["Document"]; + + ДокументПуть = ПолучитьИмяВременногоФайла("docx"); + КопироватьФайл(Документ, ДокументПуть); + + ДокументДД = Новый ДвоичныеДанные(ДокументПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", Документ); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", , ПараметрыФункции, Текст); // SKIP + + // В чат, по URL, с указанием имени файла + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", Документ); + Опции.Вставить("filename", "customname.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", "С именем", ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", ДокументПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных, с указанием имени файла + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("doc", ДокументДД); + Опции.Вставить("filename", "customname.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьДокумент", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ДокументПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьДокумент", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьГифку(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Текст = ПараметрыФункции["String"]; + Гифка = ПараметрыФункции["GIF"]; + + ГифкаПуть = ПолучитьИмяВременногоФайла("gif"); + КопироватьФайл(Гифка, ГифкаПуть); + + ГифкаДД = Новый ДвоичныеДанные(ГифкаПуть); + + // В чат, по URL + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("gif", Гифка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьГифку", , ПараметрыФункции, Текст); // SKIP + + // В канал, на диске + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("gif", ГифкаПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьГифку", "Путь", ПараметрыФункции, Текст); // SKIP + + // В канал, из двоичных данных + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("gif", ГифкаДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьГифку", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ГифкаПуть, "Не удалось удалить временный файл после теста!"); + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьГифку", "Двоичные", ПараметрыФункции, Текст); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьМедиагруппу(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + Текст = ПараметрыФункции["String"]; + Картинка = ПараметрыФункции["Picture"]; + Видео = ПараметрыФункции["Video"]; + + КартинкаПуть = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, КартинкаПуть); + + ВидеоПуть = ПолучитьИмяВременногоФайла("mp4"); + КопироватьФайл(Видео, ВидеоПуть); + + ВидеоДД = Новый ДвоичныеДанные(ВидеоПуть); + + Медиагруппа = Новый Соответствие; + Медиагруппа.Вставить(КартинкаПуть, "photo"); + Медиагруппа.Вставить(ВидеоДД , "video"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("media", Медиагруппа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМедиагруппу"); + + ДокументURL = ПараметрыФункции["Document"]; + ДокументПуть = ПолучитьИмяВременногоФайла("docx"); + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + КопироватьФайл(ДокументURL, ДокументПуть); + + МедиаГруппа = Новый Соответствие; + Медиагруппа.Вставить(ДокументURL , "document"); + Медиагруппа.Вставить(ДокументПуть, "document"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("text", Текст); + Опции.Вставить("media", Медиагруппа); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМедиагруппу", Опции); + + OPI_Инструменты.УдалитьФайлВПопытке(ВидеоПуть , "Не удалось удалить временный файл после теста!"); + OPI_Инструменты.УдалитьФайлВПопытке(КартинкаПуть, "Не удалось удалить временный файл после теста!"); + OPI_Инструменты.УдалитьФайлВПопытке(ДокументПуть, "Не удалось удалить временный файл после теста!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМедиагруппу", "Документы"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьМестоположение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Ширина = ПараметрыФункции["Lat"]; + Долгота = ПараметрыФункции["Long"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("lat", Ширина); + Опции.Вставить("long", Долгота); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМестоположение"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("lat", Ширина); + Опции.Вставить("long", Долгота); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьМестоположение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьМестоположение", "Канал"); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_ОтправитьКонтакт(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Имя = ПараметрыФункции["Name"]; + Фамилия = ПараметрыФункции["Surname"]; + Телефон = ПараметрыФункции["Phone"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("phone", Телефон); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКонтакт", , Имя); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("name", Имя); + Опции.Вставить("surname", Фамилия); + Опции.Вставить("phone", Телефон); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьКонтакт", "Канал", Имя); + +КонецПроцедуры + +Процедура Telegram_ОтправитьОпрос(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Вопрос = "Какой ваш любимый цвет?"; + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("Красный"); + МассивОтветов.Добавить("Желтый"); + МассивОтветов.Добавить("Зеленый"); + МассивОтветов.Добавить("Синий"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивОтветов); + Опции.Вставить("anonymous", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьОпрос", , Вопрос); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивОтветов); + Опции.Вставить("anonymous", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьОпрос", "Канал", Вопрос); // SKIP + + // END + + СтрочныйМассив = "['Красный', 'Желтый','Зеленый' ,'Синий']"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", СтрочныйМассив); + Опции.Вставить("anonymous", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОтправитьОпрос", "Вопросы строкой", Вопрос); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура Telegram_СкачатьФайл(ПараметрыФункции) + + IDФайла = ПараметрыФункции["Telegram_FileID"]; + Токен = ПараметрыФункции["Telegram_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СкачатьФайл"); + +КонецПроцедуры + +Процедура Telegram_ПереслатьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("from", IDКанала); + Опции.Вставить("to", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПереслатьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПереслатьСообщение", , IDСообщения); + +КонецПроцедуры + +Процедура Telegram_Бан(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDПользователя = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Бан", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "Бан"); + +КонецПроцедуры + +Процедура Telegram_Разбан(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDПользователя = ПараметрыФункции["Telegram_ChatID"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "Разбан", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "Разбан"); + +КонецПроцедуры + +Процедура Telegram_СоздатьСсылкуПриглашение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + Сутки = 86400; + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + + Заголовок = "Ссылка " + Строка(ТекущаяДата); + Истечение = ТекущаяДата + Сутки; + UnixИстечение = OPI_Инструменты.UNIXTime(Истечение); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("title", Заголовок); + Опции.Вставить("expire", Истечение); + Опции.Вставить("limit", 200); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьСсылкуПриглашение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СоздатьСсылкуПриглашение", , Заголовок, UnixИстечение); + +КонецПроцедуры + +Процедура Telegram_ЗакрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗакрепитьСообщение"); + +КонецПроцедуры + +Процедура Telegram_ОткрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОткрепитьСообщение"); + +КонецПроцедуры + +Процедура Telegram_ПолучитьЧислоУчастников(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDКанала = ПараметрыФункции["Telegram_ChannelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDКанала); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьЧислоУчастников", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьЧислоУчастников"); + +КонецПроцедуры + +Процедура Telegram_ПолучитьСписокИконокАватаров(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПолучитьСписокИконокАватаров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПолучитьСписокИконокАватаров"); + +КонецПроцедуры + +Процедура Telegram_СоздатьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Иконка = "5357419403325481346"; + Имя = "Тестовая тема " + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("title", Имя); + Опции.Вставить("icon", Иконка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СоздатьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СоздатьТемуФорума", , ПараметрыФункции, Имя, Иконка); + + ЧатТема = Чат + "*" + ПараметрыФункции["Telegram_TopicID"]; + Текст = ПараметрыФункции["String"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", ЧатТема); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СоздатьТемуФорума", "Сообщение", ПараметрыФункции, Текст); + +КонецПроцедуры + +Процедура Telegram_ИзменитьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + НовоеИмя = "Новый тестовый заголовок"; + НоваяИконка = "5310132165583840589"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + Опции.Вставить("title", НовоеИмя); + Опции.Вставить("icon", НоваяИконка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ИзменитьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ЗакрытьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); // SKIP + + Результат = OPI_Telegram.ЗакрытьТемуФорума(Токен, Чат); // Закрывает главную тему + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗакрытьТемуФорума", "Главная"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗакрытьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗакрытьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ОткрытьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + Результат = OPI_Telegram.ОткрытьТемуФорума(Токен, Чат); // Открывает главную тему + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОткрытьТемуФорума", "Главная"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОткрытьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОткрытьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_УдалитьТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("topic", Тема); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УдалитьТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + Тема = ПараметрыФункции["Telegram_TopicID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы", "Главная"); // SKIP + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ОчиститьСписокЗакрепленныхСообщенийТемы"); + +КонецПроцедуры + +Процедура Telegram_СкрытьГлавнуюТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СкрытьГлавнуюТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "СкрытьГлавнуюТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ПоказатьГлавнуюТемуФорума(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ПоказатьГлавнуюТемуФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ПоказатьГлавнуюТемуФорума"); + +КонецПроцедуры + +Процедура Telegram_ИзменитьИмяГлавнойТемыФорума(ПараметрыФункции) + + Заголовок = "Новое имя главной темы " + Строка(Новый УникальныйИдентификатор); + Токен = ПараметрыФункции["Telegram_Token"]; + Чат = ПараметрыФункции["Telegram_ForumID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("forum", Чат); + Опции.Вставить("title", Заголовок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ИзменитьИмяГлавнойТемыФорума", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ИзменитьИмяГлавнойТемыФорума"); + +КонецПроцедуры + +Процедура Telegram_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура Telegram_ЗаменитьТекстСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChannelID"]; + IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьТекстСообщения", , Текст); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("text", "Полужирный текст"); + Опции.Вставить("parsemode", "HTML"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьТекстСообщения", "Разметка", "Полужирный текст"); + +КонецПроцедуры + +Процедура Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDСообщения = ПараметрыФункции["Telegram_MessageID"]; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Новая кнопка 1"); + МассивКнопок.Добавить("Новая кнопка 2"); + МассивКнопок.Добавить("Новая кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + Опции.Вставить("under", Истина); + Опции.Вставить("column", Ложь); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "СформироватьКлавиатуруПоМассивуКнопок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьКлавиатуруСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьКлавиатуруСообщения", , Клавиатура); + +КонецПроцедуры + +Процедура Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["Telegram_Token"]; + IDЧата = ПараметрыФункции["Telegram_ChatID"]; + IDСообщения = ПараметрыФункции["Telegram_PicMessageID"]; + + Описание = "Новое описание картинки"; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chat", IDЧата); + Опции.Вставить("message", IDСообщения); + Опции.Вставить("caption", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("telegram", "ЗаменитьОписаниеСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Telegram", "ЗаменитьОписаниеСообщения", , Описание); + +КонецПроцедуры + +#КонецОбласти // Telegram + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure TelegramAPI_GetBotInfo() Export + Телеграм_ПолучитьИнформациюБота(); +EndProcedure + +Procedure TelegramAPI_GetUpdates() Export + Телеграм_ПолучитьОбновления(); +EndProcedure + +Procedure TelegramAPI_SetWebhook() Export + Телеграм_УстановитьWebhook(); +EndProcedure + +Procedure TelegramAPI_SendTextMessage() Export + Телеграм_ОтправитьТекстовоеСообщение(); +EndProcedure + +Procedure TelegramAPI_SendImage() Export + Телеграм_ОтправитьКартинку(); +EndProcedure + +Procedure TelegramAPI_SendVideo() Export + Телеграм_ОтправитьВидео(); +EndProcedure + +Procedure TelegramAPI_SendAudio() Export + Телеграм_ОтправитьАудио(); +EndProcedure + +Procedure TelegramAPI_SendDocument() Export + Телеграм_ОтправитьДокумент(); +EndProcedure + +Procedure TelegramAPI_SendGIF() Export + Телеграм_ОтправитьГифку(); +EndProcedure + +Procedure TelegramAPI_SendMediaGroup() Export + Телеграм_ОтправитьМедиагруппу(); +EndProcedure + +Procedure TelegramAPI_SendLocation() Export + Телеграм_ОтправитьМестоположение(); +EndProcedure + +Procedure TelegramAPI_SendContact() Export + Телеграм_ОтправитьКонтакт(); +EndProcedure + +Procedure TelegramAPI_SendPoll() Export + Телеграм_ОтправитьОпрос(); +EndProcedure + +Procedure TelegramAPI_ForwardMessage() Export + Телеграм_ПереслатьСообщение(); +EndProcedure + +Procedure TelegramAPI_BanUnban() Export + Телеграм_БанРазбан(); +EndProcedure + +Procedure TelegramAPI_CreateInvitationLink() Export + Телеграм_СоздатьСсылкуПриглашение(); +EndProcedure + +Procedure TelegramAPI_PinUnpinMessage() Export + Телеграм_ЗакрепитьОткрепитьСообщение(); +EndProcedure + +Procedure TelegramAPI_GetMemberCount() Export + Телеграм_ПолучитьЧислоУчастников(); +EndProcedure + +Procedure TelegramAPI_GetForumAvatarsList() Export + Телеграм_ПолучитьСписокАватаровФорума(); +EndProcedure + +Procedure TelegramAPI_CreateDeleteForumTopic() Export + Телеграм_СоздатьУдалитьТемуФорума(); +EndProcedure + +Procedure TelegramAPI_HideShowMainTopic() Export + Телеграм_СкрытьПоказатьГлавнуюТему(); +EndProcedure + +Procedure TelegramAPI_ChangeMainTopicName() Export + Телеграм_ИзменитьИмяГлавнойТемы(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Twitter.os b/src/ru/OInt/tests/Modules/OPItc_Twitter.os new file mode 100644 index 0000000000..ab2d42cca9 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Twitter.os @@ -0,0 +1,469 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Twitter.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Twitter"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Twitter"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Twitter + +Процедура Твиттер_ДанныеАккаунта() Экспорт + + ПараметрыТеста = Новый Структура; + + Twitter_ПолучитьТокен(ПараметрыТеста); + Twitter_ПолучитьСсылкуАвторизации(ПараметрыТеста); + // !DISABLED! Twitter_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура Твиттер_Твиты() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("GIF" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + Twitter_СоздатьТекстовыйТвит(ПараметрыТеста); + Twitter_ЗагрузитьМассивВложений(ПараметрыТеста); + Twitter_СоздатьТвитВидео(ПараметрыТеста); + Twitter_СоздатьТвитКартинки(ПараметрыТеста); + Twitter_СоздатьТвитГифки(ПараметрыТеста); + Twitter_СоздатьТвитОпрос(ПараметрыТеста); + Twitter_СоздатьПроизвольныйТвит(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // Twitter + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьПараметрыАвторизацииТвиттер() + + Параметры = Новый Соответствие; + + ТокенСервера = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Access_Token"); + + URL = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_TokenURL"); + + Результат = OPI_ЗапросыHTTP.НовыйЗапрос() + .Инициализировать() + .УстановитьURL(URL) + .ДобавитьBearerАвторизацию(ТокенСервера) // <--- + .ОбработатьЗапрос("GET") + .ВернутьОтветКакJSONКоллекцию(); + + Токен = Результат["data"]; + + Параметры.Вставить("redirect_uri" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Redirect")); + Параметры.Вставить("client_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientID")); + Параметры.Вставить("client_secret" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_ClientSecret")); + Параметры.Вставить("access_token" , Токен); + Параметры.Вставить("refresh_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_Refresh")); + Параметры.Вставить("oauth_token" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthToken")); + Параметры.Вставить("oauth_token_secret", OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthSecret")); + + Параметры.Вставить("oauth_consumer_key" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Twitter_OAuthConsumerKey")); + Параметры.Вставить("oauth_consumer_secret", OPI_ПолучениеДанныхТестов.ПолучитьПараметр( + "Twitter_OAuthConsumerSecret")); + + Возврат Параметры; + +КонецФункции + +#Область АтомарныеТесты + +#Область Twitter + +Процедура Twitter_ПолучитьТокен(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Код = "123456"; + + Опции = Новый Структура; + Опции.Вставить("code", Код); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ПолучитьТокен"); + +КонецПроцедуры + +Процедура Twitter_ПолучитьСсылкуАвторизации(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ПолучитьСсылкуАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ПолучитьСсылкуАвторизации"); + +КонецПроцедуры + +Процедура Twitter_ОбновитьТокен(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ОбновитьТокен"); + +КонецПроцедуры + +Процедура Twitter_СоздатьТекстовыйТвит(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТекстовыйТвит", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТекстовыйТвит", , Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитКартинки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", МассивКартинок); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитКартинки", , Текст); // SKIP + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитКартинки", "Одиночная", Текст); + + Картинка = OPI_ЗапросыHTTP.Get(Картинка); + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитКартинки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитКартинки", "Двоичные", Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитВидео(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Видео = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу + Видео2 = ПараметрыФункции["Video"]; // URL, Двоичные или Путь к файлу + + МассивВидео = Новый Массив; + МассивВидео.Добавить(Видео); + МассивВидео.Добавить(Видео2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("videos", МассивВидео); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитВидео", , Текст); // SKIP + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("videos", Видео); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитВидео", "Одиночная", Текст); + + Видео = OPI_ЗапросыHTTP.Get(Видео); + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("videos", Видео); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитВидео", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитВидео", "Двоичные", Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитГифки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Гифка = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу + Гифка2 = ПараметрыФункции["GIF"]; // URL, Двоичные или Путь к файлу + + МассивГифок = Новый Массив; + МассивГифок.Добавить(Гифка); + МассивГифок.Добавить(Гифка2); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", МассивГифок); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитГифки", , Текст); // SKIP + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", Гифка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитГифки", "Одиночная", Текст); + + Гифка = OPI_ЗапросыHTTP.Get(Гифка); + + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("gifs", Гифка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитГифки", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитГифки", "Двоичные", Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьТвитОпрос(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + МассивОтветов = Новый Массив; + МассивОтветов.Добавить("Вариант 1"); + МассивОтветов.Добавить("Вариант 2"); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("options", МассивОтветов); + Опции.Вставить("duration", 60); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьТвитОпрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьТвитОпрос", , Текст); + +КонецПроцедуры + +Процедура Twitter_СоздатьПроизвольныйТвит(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + Текст = "Тестовый твит" + Строка(Новый УникальныйИдентификатор); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("files", МассивКартинок); + Опции.Вставить("type", "tweet_image"); + Опции.Вставить("auth", Параметры); + + МассивМедиа = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("media", МассивМедиа); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "СоздатьПроизвольныйТвит", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "СоздатьПроизвольныйТвит", , Текст); + +КонецПроцедуры + +Процедура Twitter_ЗагрузитьМассивВложений(ПараметрыФункции) + + Параметры = ПолучитьПараметрыАвторизацииТвиттер(); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные данные или Путь к файлу + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Опции = Новый Структура; + Опции.Вставить("files", МассивКартинок); + Опции.Вставить("type", "tweet_image"); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("twitter", "ЗагрузитьМассивВложений", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Twitter", "ЗагрузитьМассивВложений"); + +КонецПроцедуры + +#КонецОбласти // Twitter + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure TwitterAPI_AccountData() Export + Твиттер_ДанныеАккаунта(); +EndProcedure + +Procedure TwitterAPI_Tweets() Export + Твиттер_Твиты(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_VK.os b/src/ru/OInt/tests/Modules/OPItc_VK.os new file mode 100644 index 0000000000..70beacfce0 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_VK.os @@ -0,0 +1,1531 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VK.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("VK"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("VK"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область VK + +Процедура ВК_СоздатьСсылкуТокена() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AppID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_GroupID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_Token" , ПараметрыТеста); + + VK_СоздатьСсылкуПолученияТокена(ПараметрыТеста); + VK_ПолучитьПараметрыАвторизации(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьУдалитьПост() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + VK_СоздатьПост(ПараметрыТеста); + VK_УдалитьПост(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьСоставнойПост() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video" , ПараметрыТеста); + + VK_СоздатьСоставнойПост(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьОпрос() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + VK_СоздатьОпрос(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СохранитьУдалитьКартинку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + VK_СоздатьАльбом(ПараметрыТеста); + VK_СохранитьКартинкуВАльбом(ПараметрыТеста); + VK_УдалитьКартинку(ПараметрыТеста); + VK_УдалитьАльбом(ПараметрыТеста); + VK_ЗагрузитьФотоНаСервер(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_СоздатьИсторию() Экспорт + + ПараметрыТеста = Новый Соответствие; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture", ПараметрыТеста); + + VK_СоздатьИсторию(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ЛайкРепостКоммент() Экспорт + + ПараметрыТеста = Новый Структура; + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + + Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); + ИДПоста = Результат["response"]["post_id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID", ПараметрыТеста); + + VK_СделатьРепост(ПараметрыТеста); + VK_НаписатьКомментарий(ПараметрыТеста); + VK_СократитьСсылку(ПараметрыТеста); + + OPI_VK.УдалитьПост(ИДПоста , Параметры); + OPI_VK.УдалитьПост(ПараметрыТеста["Repost"], Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ПолучитьСтатистику() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСтатистику(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ПолучитьСтатистикуПостов() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСтатистикуПостов(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_СоздатьРекламнуюКампанию() Экспорт + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + + Результат = OPI_VK.СоздатьПост(Текст, Новый Массив, , , Параметры); + ИДПоста = Результат["response"]["post_id"]; + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("VK_PostID", ИДПоста); + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_AdsCabinetID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_PostID" , ПараметрыТеста); + + // !DISABLED! VK_СоздатьРекламнуюКампанию(ПараметрыТеста); + // !DISABLED! VK_СоздатьРекламноеОбъявление(ПараметрыТеста); + // !DISABLED! VK_ПриостановитьРекламноеОбъявление(ПараметрыТеста); + VK_ПолучитьСписокРекламныхКатегорий(ПараметрыТеста); + + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ОтправитьСообщение() Экспорт + + ПараметрыТеста = Новый Структура; + + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_UserID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VK_CommunityToken", ПараметрыТеста); + + VK_СформироватьКлавиатуру(ПараметрыТеста); + VK_НаписатьСообщение(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_ПолучитьКатегорииТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокКатегорийТоваров(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_СоздатьТоварПодборку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + VK_СоздатьПодборкуТоваров(ПараметрыТеста); + VK_ИзменитьПодборкуТоваров(ПараметрыТеста); + VK_ПолучитьПодборкиПоИД(ПараметрыТеста); + VK_ДобавитьТовар(ПараметрыТеста); + VK_ИзменитьТовар(ПараметрыТеста); + VK_ДобавитьТоварВПодборку(ПараметрыТеста); + VK_УдалитьТоварИзПодборки(ПараметрыТеста); + VK_УдалитьТовар(ПараметрыТеста); + VK_УдалитьПодборку(ПараметрыТеста); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ВК_СоздатьТоварСоСвойствами() Экспорт + + Параметры = ПолучитьПараметрыВК(); + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2", ПараметрыТеста); + + VK_ПолучитьОписаниеТовара(ПараметрыТеста); + VK_СоздатьСвойствоТовара(ПараметрыТеста); + VK_ИзменитьСвойствоТовара(ПараметрыТеста); + VK_ДобавитьВариантСвойстваТовара(ПараметрыТеста); + VK_ИзменитьВариантСвойстваТовара(ПараметрыТеста); + VK_СоздатьТоварСоСвойством(ПараметрыТеста); + VK_ПолучитьТоварыПоИД(ПараметрыТеста); + VK_СгруппироватьТовары(ПараметрыТеста); + + OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID2"], Параметры); + OPI_VK.УдалитьТовар(ПараметрыТеста["VK_MarketItemID3"], Параметры); + + VK_УдалитьВариантСвойстваТовара(ПараметрыТеста); + VK_УдалитьСвойствоТовара(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокТоваров() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокТоваров(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокПодборок() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокПодборок(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокСвойств() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокСвойств(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ПолучитьСписокЗаказов() Экспорт + + ПараметрыТеста = Новый Структура; + + VK_ПолучитьСписокЗаказов(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВК_ЗагрузитьВидео() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Video", ПараметрыТеста); + + VK_ЗагрузитьВидеоНаСервер(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // VK + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьПараметрыВК() + + Параметры = Новый Структура; + НомерГруппы = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_GroupID"); + + Параметры.Вставить("access_token", OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_Token")); + Параметры.Вставить("owner_id" , "-" + НомерГруппы); + Параметры.Вставить("app_id" , OPI_ПолучениеДанныхТестов.ПолучитьПараметр("VK_AppID")); + Параметры.Вставить("group_id" , НомерГруппы); + + Возврат Параметры; + +КонецФункции + +#Область АтомарныеТесты + +#Область VK + +Процедура VK_СоздатьСсылкуПолученияТокена(ПараметрыФункции) + + Приложение = ПараметрыФункции["VK_AppID"]; + Опции = Новый Структура; + Опции.Вставить("app", Приложение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСсылкуПолученияТокена", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьСсылкуПолученияТокена"); + +КонецПроцедуры + +Процедура VK_ПолучитьПараметрыАвторизации(ПараметрыФункции) + + IDГруппы = ПараметрыФункции["VK_GroupID"]; + IDПриложения = ПараметрыФункции["VK_AppID"]; + Токен = ПараметрыФункции["VK_Token"]; + + Опции = Новый Структура; + Опции.Вставить("group", IDГруппы); + Опции.Вставить("app", IDПриложения); + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПараметрыАвторизации", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьПараметрыАвторизации"); + +КонецПроцедуры + +Процедура VK_СоздатьПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Путь или Двоичные данные + + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка2, ИВФ); + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка); + МассивКартинок.Добавить(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", МассивКартинок); + Опции.Вставить("ad", Истина); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПост", , Параметры); // SKIP + + ИДПоста = Результат["response"]["post_id"]; // SKIP + OPI_VK.УдалитьПост(ИДПоста, Параметры); // SKIP + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", Картинка); + Опции.Вставить("ad", Ложь); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПост", "Картинка", Параметры); + + ИДПоста = Результат["response"]["post_id"]; + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("pictures", ИВФ); + Опции.Вставить("ad", Истина); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПост", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПост", "Путь", ПараметрыФункции); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VK_УдалитьПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДПоста = ПараметрыФункции["VK_PostID"]; + + Опции = Новый Структура; + Опции.Вставить("post", ИДПоста); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьПост"); + +КонецПроцедуры + +Процедура VK_СоздатьСоставнойПост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Пост из автотеста"; + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные + Видео = ПараметрыФункции["Video"]; // URL, Путь или Двоичные данные + + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, ИВФ); + + ЗагрузкаКартинки = OPI_VK.ЗагрузитьФотоНаСервер(ИВФ, Параметры)["response"][0]; + Опции = Новый Структура; + Опции.Вставить("file", Видео); + Опции.Вставить("title", "Новое видео"); + Опции.Вставить("auth", Параметры); + + ЗагрузкаВидео = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); + + ВладелецКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["owner_id"]); + ВладелецВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["owner_id"]); + + IDКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["id"]); + IDВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["video_id"]); + + МассивВложений = Новый Массив; + МассивВложений.Добавить("photo" + ВладелецКартинки + "_" + IDКартинки); + МассивВложений.Добавить("video" + ВладелецВидео + "_" + IDВидео); + + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("objects", МассивВложений); + Опции.Вставить("ad", Ложь); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСоставнойПост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьСоставнойПост"); + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VK_СоздатьОпрос(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Вопрос = "Какой ваш любимый цвет?"; + + МассивВариантов = Новый Массив; + МассивВариантов.Добавить("Красный"); + МассивВариантов.Добавить("Желтый"); + МассивВариантов.Добавить("Зеленый"); + + Опции = Новый Структура; + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивВариантов); + Опции.Вставить("text", "Текст поста"); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьОпрос", "Текст"); // SKIP + + // С картинкой + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("question", Вопрос); + Опции.Вставить("options", МассивВариантов); + Опции.Вставить("picture", Картинка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьОпрос", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьОпрос"); + + ИДПоста = Результат["response"]["post_id"]; + OPI_VK.УдалитьПост(ИДПоста, Параметры); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура VK_СоздатьАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Имя = "Альбом из автотеста"; + Описание = "Новый альбом из автотеста"; + + Опции = Новый Структура; + Опции.Вставить("title", Имя); + Опции.Вставить("description", Описание); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьАльбом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьАльбом", , ПараметрыФункции, Описание); + +КонецПроцедуры + +Процедура VK_СохранитьКартинкуВАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ОписаниеКартинки = "Картинка автотест"; + ИДАльбома = ПараметрыФункции["VK_AlbumID"]; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + + Опции = Новый Структура; + Опции.Вставить("album", ИДАльбома); + Опции.Вставить("picture", Картинка); + Опции.Вставить("description", ОписаниеКартинки); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СохранитьКартинкуВАльбом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СохранитьКартинкуВАльбом", , ПараметрыФункции, ОписаниеКартинки, ИДАльбома); + +КонецПроцедуры + +Процедура VK_УдалитьКартинку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДКартинки = ПараметрыФункции["VK_PictureID"]; + + Опции = Новый Структура; + Опции.Вставить("pictureid", ИДКартинки); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьКартинку"); + +КонецПроцедуры + +Процедура VK_УдалитьАльбом(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + ИДАльбома = ПараметрыФункции["VK_AlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("album", ИДАльбома); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьАльбом", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьАльбом"); + +КонецПроцедуры + +Процедура VK_СоздатьИсторию(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + Картинка = ПараметрыФункции["Picture"]; // URL, Путь к файлу или Двоичные данные + ИВФ = ПолучитьИмяВременногоФайла("png"); + КопироватьФайл(Картинка, ИВФ); + Картинка = Новый ДвоичныеДанные(ИВФ); + + Опции = Новый Структура; + Опции.Вставить("picture", Картинка); + Опции.Вставить("url", URL); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьИсторию"); // SKIP + + // END + + Опции = Новый Структура; + Опции.Вставить("picture", ИВФ); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьИсторию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьИсторию", "Путь"); + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VK_СделатьРепост(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + IDПоста = 2571; + IDСтены = -218704372; + + Опции = Новый Структура; + Опции.Вставить("post", IDПоста); + Опции.Вставить("from", IDСтены); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СделатьРепост", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СделатьРепост", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_НаписатьКомментарий(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Текст = "Новый комментарий"; + IDПоста = ПараметрыФункции["VK_PostID"]; + IDСтены = Параметры["owner_id"]; + + Опции = Новый Структура; + Опции.Вставить("post", IDПоста); + Опции.Вставить("wall", IDСтены); + Опции.Вставить("text", Текст); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьКомментарий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "НаписатьКомментарий"); + +КонецПроцедуры + +Процедура VK_ПолучитьСтатистику(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату(); + ДатаНачала = НачалоДня(ТекущаяДата); + ДатаОкончания = КонецДня(ДатаНачала); + + Опции = Новый Структура; + Опции.Вставить("datefrom", ДатаНачала); + Опции.Вставить("dateto", ДатаОкончания); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистику", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСтатистику"); + +КонецПроцедуры + +Процедура VK_ПолучитьСтатистикуПостов(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + МассивПостов = Новый Массив; + МассивПостов.Добавить(214); + МассивПостов.Добавить(215); + + Опции = Новый Структура; + Опции.Вставить("posts", МассивПостов); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСтатистикуПостов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСтатистикуПостов"); + +КонецПроцедуры + +Процедура VK_СоздатьРекламнуюКампанию(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + Наименование = "Новая кампания"; + + Опции = Новый Структура; + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("title", Наименование); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламнуюКампанию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьРекламнуюКампанию", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_СоздатьРекламноеОбъявление(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + НомерКампании = ПараметрыФункции["VK_AdsCampaignID"]; + ДневнойЛимит = 150; + НомерКатегории = 126; + IDПоста = ПараметрыФункции["VK_PostID"]; + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + + Опции = Новый Структура; + Опции.Вставить("campaign", НомерКампании); + Опции.Вставить("limit", ДневнойЛимит); + Опции.Вставить("category", НомерКатегории); + Опции.Вставить("post", IDПоста); + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьРекламноеОбъявление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьРекламноеОбъявление", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ПриостановитьРекламноеОбъявление(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + IDКабинета = ПараметрыФункции["VK_AdsCabinetID"]; + IDОбъявления = ПараметрыФункции["VK_AdsPostID"]; + + Опции = Новый Структура; + Опции.Вставить("cabinet", IDКабинета); + Опции.Вставить("adv", IDОбъявления); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПриостановитьРекламноеОбъявление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПриостановитьРекламноеОбъявление"); + +КонецПроцедуры + +Процедура VK_СформироватьКлавиатуру(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Button 1"); + МассивКнопок.Добавить("Button 2"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СформироватьКлавиатуру"); + +КонецПроцедуры + +Процедура VK_НаписатьСообщение(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Текст = "Сообщение из автотеста"; + IDПользователя = ПараметрыФункции["VK_UserID"]; + Communitytoken = ПараметрыФункции["VK_CommunityToken"]; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Button 1"); + МассивКнопок.Добавить("Button 2"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СформироватьКлавиатуру", Опции); + Опции = Новый Структура; + Опции.Вставить("text", Текст); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ct", Communitytoken); + Опции.Вставить("keyboard", Клавиатура); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "НаписатьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "НаписатьСообщение"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокКатегорийТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокКатегорийТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокКатегорийТоваров"); + +КонецПроцедуры + +Процедура VK_СоздатьПодборкуТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Тестовая подборка"; + Картинка = ПараметрыФункции["Picture"]; + Основная = Истина; + Скрытая = Ложь; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("picture", Картинка); + Опции.Вставить("main", Основная); + Опции.Вставить("hidden", Скрытая); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьПодборкуТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьПодборкуТоваров", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ИзменитьПодборкуТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Измененная подборка"; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьПодборкуТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьПодборкуТоваров"); + +КонецПроцедуры + +Процедура VK_ПолучитьПодборкиПоИД(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sels", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьПодборкиПоИД", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьПодборкиПоИД"); + +КонецПроцедуры + +Процедура VK_ДобавитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка1 = ПараметрыФункции["Picture"]; // URL, Двоичные или Путь к файлу + Картинка2 = ПараметрыФункции["Picture2"]; // URL, Двоичные или Путь к файлу + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + ОписаниеТовара = Новый Соответствие; + ОписаниеТовара.Вставить("Имя" , "Тестовый товар"); + ОписаниеТовара.Вставить("Описание" , "Описание товара"); + ОписаниеТовара.Вставить("Категория" , "20173"); + ОписаниеТовара.Вставить("Цена" , 1); + ОписаниеТовара.Вставить("СтараяЦена" , 15); + ОписаниеТовара.Вставить("ОсновноеФото" , Картинка1); + ОписаниеТовара.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + ОписаниеТовара.Вставить("ДополнительныеФото", МассивКартинок); + ОписаниеТовара.Вставить("ГлавныйВГруппе" , Истина); + ОписаниеТовара.Вставить("Ширина" , 20); + ОписаниеТовара.Вставить("Высота" , 30); + ОписаниеТовара.Вставить("Глубина" , 40); + ОписаниеТовара.Вставить("Вес" , 100); + ОписаниеТовара.Вставить("SKU" , "12345"); + ОписаниеТовара.Вставить("ДоступныйОстаток" , "10"); + + Опции = Новый Структура; + Опции.Вставить("product", ОписаниеТовара); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ДобавитьТовар", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ИзменитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + + ОписаниеТовара = Новый Соответствие; + ОписаниеТовара.Вставить("Имя", "Тестовый товар измененный"); + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("product", ОписаниеТовара); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьТовар"); + +КонецПроцедуры + +Процедура VK_ДобавитьТоварВПодборку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("items", Товар); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТоварВПодборку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ДобавитьТоварВПодборку"); + +КонецПроцедуры + +Процедура VK_УдалитьТоварИзПодборки(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТоварИзПодборки", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьТоварИзПодборки"); + +КонецПроцедуры + +Процедура VK_УдалитьТовар(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар = ПараметрыФункции["VK_MarketItemID"]; + + Опции = Новый Структура; + Опции.Вставить("item", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьТовар"); + +КонецПроцедуры + +Процедура VK_УдалитьПодборку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Подборка = ПараметрыФункции["VK_MarketAlbumID"]; + + Опции = Новый Структура; + Опции.Вставить("sel", Подборка); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьПодборку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьПодборку"); + +КонецПроцедуры + +Процедура VK_СоздатьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Цвет"; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СоздатьСвойствоТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьСвойствоТовара", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VK_ИзменитьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Название = "Цвет (изм.)"; + Свойство = ПараметрыФункции["VK_PropID"]; + + Опции = Новый Структура; + Опции.Вставить("title", Название); + Опции.Вставить("prop", Свойство); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьСвойствоТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьСвойствоТовара"); + +КонецПроцедуры + +Процедура VK_ДобавитьВариантСвойстваТовара(ПараметрыФункции) + + Счетчик = 1; // SKIP + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + МассивВариантов = Новый Массив; + МассивВариантов.Добавить("Желтый"); + МассивВариантов.Добавить("Синий"); + МассивВариантов.Добавить("Красный"); + + Для Каждого Значение Из МассивВариантов Цикл + + Результат = OPI_VK.ДобавитьВариантСвойстваТовара(Значение, Свойство, Параметры); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ДобавитьВариантСвойстваТовара", , ПараметрыФункции, Счетчик); // SKIP + + Счетчик = Счетчик + 1; // SKIP + + КонецЦикла; + + // END + +КонецПроцедуры + +Процедура VK_ИзменитьВариантСвойстваТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + Вариант = ПараметрыФункции["VK_PropVarID1"]; + Значение = "Новое имя варианта"; + + Опции = Новый Структура; + Опции.Вставить("value", Значение); + Опции.Вставить("prop", Свойство); + Опции.Вставить("option", Вариант); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ИзменитьВариантСвойстваТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ИзменитьВариантСвойстваТовара"); + +КонецПроцедуры + +Процедура VK_СоздатьТоварСоСвойством(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка1 = ПараметрыФункции["Picture"]; + Картинка2 = ПараметрыФункции["Picture2"]; + ВариантСвойства1 = ПараметрыФункции["VK_PropVarID1"]; + ВариантСвойства2 = ПараметрыФункции["VK_PropVarID2"]; + + МассивКартинок = Новый Массив; + МассивКартинок.Добавить(Картинка1); + МассивКартинок.Добавить(Картинка2); + + Товар = Новый Соответствие; + Товар.Вставить("Имя" , "Тестовый товар (со свойством)"); + Товар.Вставить("Описание" , "Описание товара"); + Товар.Вставить("Категория" , "20173"); + Товар.Вставить("Цена" , 1); + Товар.Вставить("СтараяЦена" , 15); + Товар.Вставить("ОсновноеФото" , Картинка1); + Товар.Вставить("URL" , "https://github.com/Bayselonarrend/OpenIntegrations"); + Товар.Вставить("ДополнительныеФото", МассивКартинок); + Товар.Вставить("ГлавныйВГруппе" , Истина); + Товар.Вставить("Ширина" , 20); + Товар.Вставить("Высота" , 30); + Товар.Вставить("Глубина" , 40); + Товар.Вставить("Вес" , 100); + Товар.Вставить("SKU" , 12345); + Товар.Вставить("ДоступныйОстаток" , "10"); + Товар.Вставить("ЗначенияСвойств" , ВариантСвойства1); + + Опции = Новый Структура; + Опции.Вставить("product", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьТоварСоСвойством", "Первый", ПараметрыФункции, 2); + + Товар.Вставить("Имя" , "Тестовый товар (другой)"); + Товар.Вставить("ЗначенияСвойств", ВариантСвойства2); + + Опции = Новый Структура; + Опции.Вставить("product", Товар); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ДобавитьТовар", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СоздатьТоварСоСвойством", "Второй", ПараметрыФункции, 3); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура VK_ПолучитьТоварыПоИД(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар1 = ПараметрыФункции["VK_MarketItemID2"]; + Товар2 = ПараметрыФункции["VK_MarketItemID3"]; + + МассивТоваров = Новый Массив; + МассивТоваров.Добавить(Товар1); + МассивТоваров.Добавить(Товар2); + + Опции = Новый Структура; + Опции.Вставить("items", МассивТоваров); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьТоварыПоИД", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьТоварыПоИД"); + +КонецПроцедуры + +Процедура VK_СгруппироватьТовары(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Товар1 = ПараметрыФункции["VK_MarketItemID2"]; + Товар2 = ПараметрыФункции["VK_MarketItemID3"]; + + МассивТоваров = Новый Массив; + МассивТоваров.Добавить(Товар1); + МассивТоваров.Добавить(Товар2); + + Опции = Новый Структура; + Опции.Вставить("items", МассивТоваров); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СгруппироватьТовары", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "СгруппироватьТовары"); + +КонецПроцедуры + +Процедура VK_УдалитьВариантСвойстваТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Вариант = ПараметрыФункции["VK_PropVarID1"]; + + Опции = Новый Структура; + Опции.Вставить("option", Вариант); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьВариантСвойстваТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьВариантСвойстваТовара"); + +КонецПроцедуры + +Процедура VK_УдалитьСвойствоТовара(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Свойство = ПараметрыФункции["VK_PropID"]; + + Опции = Новый Структура; + Опции.Вставить("prop", Свойство); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "УдалитьСвойствоТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "УдалитьСвойствоТовара"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокТоваров(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокТоваров", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокТоваров"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокПодборок(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокПодборок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокПодборок"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокСвойств(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокСвойств", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокСвойств"); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокЗаказов(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокЗаказов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокЗаказов"); + +КонецПроцедуры + +Процедура VK_ЗагрузитьВидеоНаСервер(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Видео = ПараметрыФункции["Video"]; // URL, Двоичные данные или Путь к файлу + Наименование = "Новое видео"; + Описание = "Описание видео"; + + Опции = Новый Структура; + Опции.Вставить("file", Видео); + Опции.Вставить("title", Наименование); + Опции.Вставить("description", Описание); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьВидеоНаСервер", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ЗагрузитьВидеоНаСервер"); + +КонецПроцедуры + +Процедура VK_ЗагрузитьФотоНаСервер(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Картинка = ПараметрыФункции["Picture"]; // URL, Двоичные данные или Путь к файлу + Вид = "Пост"; + + Опции = Новый Структура; + Опции.Вставить("file", Картинка); + Опции.Вставить("auth", Параметры); + Опции.Вставить("type", Вид); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ЗагрузитьФотоНаСервер", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ЗагрузитьФотоНаСервер"); + +КонецПроцедуры + +Процедура VK_СократитьСсылку(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("url", "https://github.com/Bayselonarrend/OpenIntegrations"); + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "СократитьСсылку", Опции); + +КонецПроцедуры + +Процедура VK_ПолучитьСписокРекламныхКатегорий(ПараметрыФункции) + + Параметры = ПолучитьПараметрыВК(); + + Опции = Новый Структура; + Опции.Вставить("auth", Параметры); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьСписокРекламныхКатегорий", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьСписокРекламныхКатегорий"); + +КонецПроцедуры + +Процедура VK_ПолучитьОписаниеТовара(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vk", "ПолучитьОписаниеТовара", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VK", "ПолучитьОписаниеТовара"); + +КонецПроцедуры + +#КонецОбласти // VK + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure VKAPI_CreateTokenLink() Export + ВК_СоздатьСсылкуТокена(); +EndProcedure + +Procedure VKAPI_CreateDeletePost() Export + ВК_СоздатьУдалитьПост(); +EndProcedure + +Procedure VKAPI_CreateCompositePost() Export + ВК_СоздатьСоставнойПост(); +EndProcedure + +Procedure VKAPI_CreatePoll() Export + ВК_СоздатьОпрос(); +EndProcedure + +Procedure VKAPI_SaveDeleteImage() Export + ВК_СохранитьУдалитьКартинку(); +EndProcedure + +Procedure VKAPI_CreateStory() Export + ВК_СоздатьИсторию(); +EndProcedure + +Procedure VKAPI_LikeRepostComment() Export + ВК_ЛайкРепостКоммент(); +EndProcedure + +Procedure VKAPI_GetStatistics() Export + ВК_ПолучитьСтатистику(); +EndProcedure + +Procedure VKAPI_GetPostStatistics() Export + ВК_ПолучитьСтатистикуПостов(); +EndProcedure + +Procedure VKAPI_CreateAdCampaign() Export + ВК_СоздатьРекламнуюКампанию(); +EndProcedure + +Procedure VKAPI_SendMessage() Export + ВК_ОтправитьСообщение(); +EndProcedure + +Procedure VKAPI_GetProductCategories() Export + ВК_ПолучитьКатегорииТоваров(); +EndProcedure + +Procedure VKAPI_CreateProductSelection() Export + ВК_СоздатьТоварПодборку(); +EndProcedure + +Procedure VKAPI_CreateProductWithProperties() Export + ВК_СоздатьТоварСоСвойствами(); +EndProcedure + +Procedure VKAPI_GetProductList() Export + ВК_ПолучитьСписокТоваров(); +EndProcedure + +Procedure VKAPI_GetSelectionList() Export + ВК_ПолучитьСписокПодборок(); +EndProcedure + +Procedure VKAPI_GetPropertyList() Export + ВК_ПолучитьСписокСвойств(); +EndProcedure + +Procedure VKAPI_GetOrderList() Export + ВК_ПолучитьСписокЗаказов(); +EndProcedure + +Procedure VKAPI_UploadVideo() Export + ВК_ЗагрузитьВидео(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_VKTeams.os b/src/ru/OInt/tests/Modules/OPItc_VKTeams.os new file mode 100644 index 0000000000..057725ffd9 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_VKTeams.os @@ -0,0 +1,921 @@ +// OneScript: ./OInt/tests/Modules/OPItc_VKTeams.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("VKTeams"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("VKTeams"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область VkTeams + +Процедура ВКТ_ОбщиеМетоды() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_FileID", ПараметрыТеста); + + VkTeams_ПроверитьТокен(ПараметрыТеста); + VkTeams_ПолучитьСобытия(ПараметрыТеста); + VKTeams_ПолучитьИнформациюОФайле(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВКТ_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_MessageID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio2" , ПараметрыТеста); + + VkTeams_ОтправитьТекстовоеСообщение(ПараметрыТеста); + OPI_Инструменты.Пауза(60); + + VKTeams_ОтветитьНаСобытиеКлавиатуры(ПараметрыТеста); + VKTeams_ПереслатьСообщение(ПараметрыТеста); + VKTeams_ОтправитьФайл(ПараметрыТеста); + VKTeams_ПереслатьФайл(ПараметрыТеста); + VKTeams_ИзменитьТекстСообщения(ПараметрыТеста); + VKTeams_ЗакрепитьСообщение(ПараметрыТеста); + VKTeams_ОткрепитьСообщение(ПараметрыТеста); + VKTeams_УдалитьСообщение(ПараметрыТеста); + VKTeams_ОтправитьГолосовоеСообщение(ПараметрыТеста); + VKTeams_ПереслатьГолосовоеСообщение(ПараметрыТеста); + VKTeams_СформироватьКнопкуДействия(ПараметрыТеста); + +КонецПроцедуры + +Процедура ВКТ_УправлениеЧатами() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("VkTeams_ChatID2", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture3" , ПараметрыТеста); + + VKTeams_ИсключитьПользователейЧата(ПараметрыТеста); + VKTeams_ИзменитьАватарЧата(ПараметрыТеста); + VKTeams_ПолучитьИнформациюОЧате(ПараметрыТеста); + VKTeams_ПолучитьАдминистраторовЧата(ПараметрыТеста); + VKTeams_ПолучитьПользователейЧата(ПараметрыТеста); + VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыТеста); + VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыТеста); + VKTeams_ЗаблокироватьПользователяЧата(ПараметрыТеста); + VKTeams_РазблокироватьПользователяЧата(ПараметрыТеста); + VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыТеста); + VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыТеста); + VKTeams_УстановитьЗаголовокЧата(ПараметрыТеста); + VKTeams_УстановитьОписаниеЧата(ПараметрыТеста); + VKTeams_УстановитьПравилаЧата(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // VkTeams + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область VKTeams + +Процедура VKTeams_ПроверитьТокен(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПроверитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПроверитьТокен"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьСобытия(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDПоследнего = 0; + + Для Н = 1 По 5 Цикл // В реальной работе - бесконечный цикл + + Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьСобытия"); // SKIP + + События = Результат["events"]; + + // Обработка событий... + + Если Не События.Количество() = 0 Тогда + + IDПоследнего = События[События.ВГраница()]["eventId"]; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_Инструменты.Пауза(3); + +КонецПроцедуры + +Процедура VKTeams_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + Текст = "Текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьТекстовоеСообщение", "Простое", ПараметрыФункции); // SKIP + + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; + Текст = "Полужирный текст сообщения"; + Разметка = "HTML"; + + Клавиатура = Новый Массив; + МассивСтрокиКнопок = Новый Массив; + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка1", "НажатиеКнопки1", , "attention")); + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Клавиатура.Добавить(МассивСтрокиКнопок); + Клавиатура.Добавить(МассивСтрокиКнопок); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + Опции.Вставить("reply", IDЦитируемого); + Опции.Вставить("keyboard", Клавиатура); + Опции.Вставить("parsemod", Разметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьТекстовоеСообщение", , ПараметрыФункции); + +КонецПроцедуры + +Процедура VKTeams_ПереслатьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDЧатаИсточника = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("fromid", IDЧатаИсточника); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьСообщение", "Простое"); // SKIP + + Текст = "Дополнительный текст"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("fromid", IDЧатаИсточника); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОтправитьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + Текст = "Подпись к файлу"; + + Файл = ПараметрыФункции["Document"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("docx"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьФайл", "URL", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлПуть); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьФайл", "Путь", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлДД); + Опции.Вставить("text", Текст); + Опции.Вставить("filename", "ВажныйДокумент.docx"); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьФайл", , ПараметрыФункции); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VKTeams_ПереслатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDФайла = ПараметрыФункции["VkTeams_FileID"]; + Текст = "Подпись к файлу"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("fileid", IDФайла); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьФайл"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьИнформациюОФайле(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDФайла = ПараметрыФункции["VkTeams_FileID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОФайле", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьИнформациюОФайле"); + +КонецПроцедуры + +Процедура VKTeams_ИзменитьТекстСообщения(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + Текст = "Новый текст сообщения"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьТекстСообщения", "Путь"); // SKIP + + Текст = "Новый полужирный текст сообщения"; + Разметка = "HTML"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + Опции.Вставить("text", Текст); + Опции.Вставить("parsemod", Разметка); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьТекстСообщения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьТекстСообщения"); + +КонецПроцедуры + +Процедура VKTeams_УдалитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УдалитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УдалитьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОтправитьГолосовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDЦитируемого = ПараметрыФункции["VkTeams_MessageID"]; + + Файл = ПараметрыФункции["Audio2"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("m4a"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", "URL", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлПуть); + Опции.Вставить("reply", IDЦитируемого); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", "Путь", ПараметрыФункции); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтправитьГолосовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтправитьГолосовоеСообщение", , ПараметрыФункции); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VKTeams_ПереслатьГолосовоеСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + IDФайла = ПараметрыФункции["VkTeams_VoiceID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("fileid", IDФайла); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПереслатьГолосовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПереслатьГолосовоеСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ИсключитьПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("members", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИсключитьПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИсключитьПользователейЧата"); + +КонецПроцедуры + +Процедура VKTeams_ИзменитьАватарЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Файл = ПараметрыФункции["Picture3"]; // URL + ФайлПуть = ПолучитьИмяВременногоФайла("png"); // Путь + + КопироватьФайл(Файл, ФайлПуть); + + ФайлДД = Новый ДвоичныеДанные(ФайлПуть); // Двоичные + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", Файл); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьАватарЧата", "URL"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлПуть); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьАватарЧата", "Путь"); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("file", ФайлДД); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ИзменитьАватарЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ИзменитьАватарЧата"); + + OPI_Инструменты.УдалитьФайлВПопытке(ФайлПуть, "Не удалось удалить временный файл после теста!"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьИнформациюОЧате(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьИнформациюОЧате", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьИнформациюОЧате"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьАдминистраторовЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьАдминистраторовЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьАдминистраторовЧата"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьПользователейЧата"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьЗаблокированныхПользователейЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗаблокированныхПользователейЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьЗаблокированныхПользователейЧата"); + +КонецПроцедуры + +Процедура VKTeams_ПолучитьЗапросыВступленияЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ПолучитьЗапросыВступленияЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ПолучитьЗапросыВступленияЧата"); + +КонецПроцедуры + +Процедура VKTeams_ЗаблокироватьПользователяЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + Опции.Вставить("dellast", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗаблокироватьПользователяЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ЗаблокироватьПользователяЧата"); + +КонецПроцедуры + +Процедура VKTeams_РазблокироватьПользователяЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "РазблокироватьПользователяЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "РазблокироватьПользователяЧата"); + +КонецПроцедуры + +Процедура VKTeams_ЗакрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ЗакрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ЗакрепитьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОткрепитьСообщение(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + IDСообщения = ПараметрыФункции["VkTeams_MessageID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("messageid", IDСообщения); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОткрепитьСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОткрепитьСообщение"); + +КонецПроцедуры + +Процедура VKTeams_ОдобритьЗаявкуНаВступление(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОдобритьЗаявкуНаВступление", "Один"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОдобритьЗаявкуНаВступление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОдобритьЗаявкуНаВступление"); + +КонецПроцедуры + +Процедура VKTeams_ОтклонитьЗаявкуНаВступление(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Пользователь = 1011987091; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("userid", Пользователь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтклонитьЗаявкуНаВступление", "Один"); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "ОтклонитьЗаявкуНаВступление", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтклонитьЗаявкуНаВступление"); + +КонецПроцедуры + +Процедура VKTeams_УстановитьЗаголовокЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Новый заголовок"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьЗаголовокЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УстановитьЗаголовокЧата"); + +КонецПроцедуры + +Процедура VKTeams_УстановитьОписаниеЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Новое описание"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьОписаниеЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УстановитьОписаниеЧата"); + +КонецПроцедуры + +Процедура VKTeams_УстановитьПравилаЧата(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDЧата = ПараметрыФункции["VkTeams_ChatID2"]; + Текст = "Текст новых правил"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("chatid", IDЧата); + Опции.Вставить("text", Текст); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("vkteams", "УстановитьПравилаЧата", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "УстановитьПравилаЧата"); + +КонецПроцедуры + +Процедура VKTeams_ОтветитьНаСобытиеКлавиатуры(ПараметрыФункции) + + Токен = ПараметрыФункции["VkTeams_Token"]; + IDПоследнего = 0; + + Для Н = 1 По 5 Цикл + + Результат = OPI_VKTeams.ПолучитьСобытия(Токен, IDПоследнего, 3); + События = Результат["events"]; + + Если Не События.Количество() = 0 Тогда + + Для Каждого Событие Из События Цикл + + ДанныеСобытия = Событие["payload"]; + + Если ДанныеСобытия["callbackData"] = "НажатиеКнопки1" Тогда + + IDСобытия = ДанныеСобытия["queryId"]; + Результат = OPI_VKTeams.ОтветитьНаСобытиеКлавиатуры(Токен, IDСобытия, "Получено!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "VKTeams", "ОтветитьНаСобытиеКлавиатуры"); // SKIP + + КонецЕсли; + + КонецЦикла; + + IDПоследнего = События[События.ВГраница()]["eventId"]; + + КонецЕсли; + + КонецЦикла; + + // END + + OPI_Инструменты.Пауза(3); + +КонецПроцедуры + +Процедура VKTeams_СформироватьКнопкуДействия(ПараметрыФункции) + + Клавиатура = Новый Массив; + МассивСтрокиКнопок = Новый Массив; + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка1", "НажатиеКнопки1", , "attention")); + + МассивСтрокиКнопок.Добавить(OPI_VKTeams.СформироватьКнопкуДействия("Кнопка2", , "https://openintegrations.dev")); + + // BSLLS:DuplicatedInsertionIntoCollection-off // SKIP + Клавиатура.Добавить(МассивСтрокиКнопок); + Клавиатура.Добавить(МассивСтрокиКнопок); + // BSLLS:DuplicatedInsertionIntoCollection-on // SKIP + + // END + +КонецПроцедуры + +#КонецОбласти // VKTeams + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure VKT_CommonMethods() Export + ВКТ_ОбщиеМетоды(); +EndProcedure + +Procedure VKT_MessagesSending() Export + ВКТ_ОтправкаСообщений(); +EndProcedure + +Procedure VKT_ChatManagement() Export + ВКТ_УправлениеЧатами(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_Viber.os b/src/ru/OInt/tests/Modules/OPItc_Viber.os new file mode 100644 index 0000000000..4a8ececcb1 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_Viber.os @@ -0,0 +1,498 @@ +// OneScript: ./OInt/tests/Modules/OPItc_Viber.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Viber"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Viber"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область Viber + +Процедура Вайбер_ПолучениеИнформации() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); + + Возврат; + + //@skip-check unreachable-statements + // BSLLS:UnreachableCode-off + + Viber_ПолучитьИнформациюОКанале(ПараметрыТеста); + Viber_ПолучитьДанныеПользователя(ПараметрыТеста); + Viber_ПолучитьОнлайнПользователей(ПараметрыТеста); + Viber_УстановитьWebhook(ПараметрыТеста); + + // BSLLS:UnreachableCode-on + +КонецПроцедуры + +Процедура Вайбер_ОтправкаСообщений() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelToken" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_ChannelAdminID", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Viber_UserID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Document" , ПараметрыТеста); + + Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыТеста); + + Возврат; + + //@skip-check unreachable-statement + // BSLLS:UnreachableCode-off + + Viber_ОтправитьТекстовоеСообщение(ПараметрыТеста); + Viber_ОтправитьКартинку(ПараметрыТеста); + Viber_ОтправитьФайл(ПараметрыТеста); + Viber_ОтправитьКонтакт(ПараметрыТеста); + Viber_ОтправитьЛокацию(ПараметрыТеста); + Viber_ОтправитьСсылку(ПараметрыТеста); + + // BSLLS:UnreachableCode-on + +КонецПроцедуры + +#КонецОбласти // Viber + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область Viber + +Процедура Viber_УстановитьWebhook(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + URL = "http://api.athenaeum.digital/hs/viber"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "УстановитьWebhook", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "УстановитьWebhook"); + +КонецПроцедуры + +Процедура Viber_ПолучитьИнформациюОКанале(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьИнформациюОКанале", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ПолучитьИнформациюОКанале"); + +КонецПроцедуры + +Процедура Viber_ПолучитьДанныеПользователя(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("user", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьДанныеПользователя", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ПолучитьДанныеПользователя"); + +КонецПроцедуры + +Процедура Viber_ПолучитьОнлайнПользователей(ПараметрыФункции) + + Токен = ПараметрыФункции["Viber_ChannelToken"]; + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("users", IDПользователя); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ПолучитьОнлайнПользователей", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ПолучитьОнлайнПользователей"); + +КонецПроцедуры + +Процедура Viber_СформироватьКлавиатуруИзМассиваКнопок(ПараметрыФункции) + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка 1"); + МассивКнопок.Добавить("Кнопка 2"); + МассивКнопок.Добавить("Кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "СформироватьКлавиатуруИзМассиваКнопок"); + +КонецПроцедуры + +Процедура Viber_ОтправитьТекстовоеСообщение(ПараметрыФункции) + + Текст = "Тестовое сообщение"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + МассивКнопок = Новый Массив; + МассивКнопок.Добавить("Кнопка 1"); + МассивКнопок.Добавить("Кнопка 2"); + МассивКнопок.Добавить("Кнопка 3"); + + Опции = Новый Структура; + Опции.Вставить("buttons", МассивКнопок); + + Клавиатура = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "СформироватьКлавиатуруИзМассиваКнопок", Опции); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("text", Текст); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьТекстовоеСообщение"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("text", Текст); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("keyboard", Клавиатура); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьТекстовоеСообщение", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьТекстовоеСообщение", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьКартинку(ПараметрыФункции) + + Описание = "Тестовое сообщение"; + URL = ПараметрыФункции["Picture"]; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("picture", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКартинку"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("picture", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("description", Описание); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКартинку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКартинку", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьФайл(ПараметрыФункции) + + Расширение = "docx"; + URL = ПараметрыФункции["Document"]; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("ext", Расширение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьФайл"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("file", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + Опции.Вставить("ext", Расширение); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьФайл", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьКонтакт(ПараметрыФункции) + + Имя = "Петр Петров"; + Телефон = "+123456789"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + Опции.Вставить("phone", Телефон); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКонтакт"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("name", Имя); + Опции.Вставить("phone", Телефон); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьКонтакт", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьКонтакт", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьЛокацию(ПараметрыФункции) + + Широта = "48.87373649724122"; + Долгота = "2.2954639195323967"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьЛокацию"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("lat", Широта); + Опции.Вставить("long", Долгота); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьЛокацию", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьЛокацию", "Канал"); + +КонецПроцедуры + +Процедура Viber_ОтправитьСсылку(ПараметрыФункции) + + URL = "https://github.com/Bayselonarrend/OpenIntegrations"; + + IDПользователя = ПараметрыФункции["Viber_UserID"]; + Токен = ПараметрыФункции["Viber_Token"]; + ОтправкаВКанал = Ложь; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьСсылку"); // SKIP + + IDПользователя = ПараметрыФункции["Viber_ChannelAdminID"]; + Токен = ПараметрыФункции["Viber_ChannelToken"]; + ОтправкаВКанал = Истина; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + Опции.Вставить("user", IDПользователя); + Опции.Вставить("ischannel", ОтправкаВКанал); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("viber", "ОтправитьСсылку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "Viber", "ОтправитьСсылку", "Канал"); + +КонецПроцедуры + +#КонецОбласти // Viber + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure Viber_DataRetrieval() Export + Вайбер_ПолучениеИнформации(); +EndProcedure + +Procedure Viber_MessagesSending() Export + Вайбер_ОтправкаСообщений(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_WebSocket.os b/src/ru/OInt/tests/Modules/OPItc_WebSocket.os new file mode 100644 index 0000000000..7ce64aae97 --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_WebSocket.os @@ -0,0 +1,95 @@ +// OneScript: ./OInt/tests/Modules/OPItc_WebSocket.os + +// MIT License + +// Copyright (c) 2023-2026 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:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("WebSocket"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("WebSocket"); + +КонецФункции + + +#Region Alternate + + + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_YandexDisk.os b/src/ru/OInt/tests/Modules/OPItc_YandexDisk.os new file mode 100644 index 0000000000..c6d039c35a --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_YandexDisk.os @@ -0,0 +1,767 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexDisk.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("YandexDisk"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("YandexDisk"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область YandexDisk + +Процедура ЯДиск_Авторизация() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_ClientID" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_ClientSecret", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_RefreshToken", ПараметрыТеста); + + YandexDisk_ПолучитьКодПодтверждения(ПараметрыТеста); + YandexDisk_ПреобразоватьКодВТокен(ПараметрыТеста); + YandexDisk_ОбновитьТокен(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьИнформациюОДиске() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_ПолучитьИнформациюОДиске(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_СоздатьПапку() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_СоздатьПапку(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + YandexDisk_ЗагрузитьФайлПоURL(ПараметрыТеста); + YandexDisk_ПолучитьОбъект(ПараметрыТеста); + YandexDisk_УдалитьОбъект(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ЗагрузитьУдалитьФайл() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Audio" , ПараметрыТеста); + + YandexDisk_ЗагрузитьФайлЧастями(ПараметрыТеста); + YandexDisk_ЗагрузитьФайл(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_СоздатьКопиюОбъекта() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + YandexDisk_СоздатьКопиюОбъекта(ПараметрыТеста); + + ПутьКопии = ПараметрыТеста["YandexDisk_CopyFilePath"]; + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьКопии , Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьСсылкуНаСкачивание() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, Путь, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_PathForLink", Путь); + ПараметрыТеста.Вставить("YandexDisk_PathForLink", Путь); + + YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыТеста); + YandexDisk_СкачатьФайл(ПараметрыТеста); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьСписокФайлов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_ПолучитьСписокФайлов(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯДиск_ПереместитьОбъект() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + YandexDisk_ПереместитьОбъект(ПараметрыТеста); + + ПутьНового = ПараметрыТеста["YandexDisk_NewFilePath"]; + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьНового , Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ЯДиск_ДействияПубличныхОбъектов() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста); + + Токен = ПараметрыТеста["YandexDisk_Token"]; + URL = ПараметрыТеста["Picture"]; + + ПутьОригинала = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + OPI_YandexDisk.ЗагрузитьФайлПоURL(Токен, ПутьОригинала, URL); + OPI_Инструменты.Пауза(35); + + OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("YandexDisk_OriginalFilePath", ПутьОригинала); + ПараметрыТеста.Вставить("YandexDisk_OriginalFilePath", ПутьОригинала); + + YandexDisk_ОпубликоватьОбъект(ПараметрыТеста); + YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыТеста); + YandexDisk_ПолучитьПубличныйОбъект(ПараметрыТеста); + YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыТеста); + YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыТеста); + + OPI_YandexDisk.УдалитьОбъект(Токен, ПутьОригинала, Ложь); + + OPI_Инструменты.Пауза(5); + +КонецПроцедуры + +Процедура ЯДиск_ПолучитьСписокОпубликованных() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("YandexDisk_Token", ПараметрыТеста); + + YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // YandexDisk + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область YandexDisk + +Процедура YandexDisk_ПолучитьКодПодтверждения(ПараметрыФункции) + + ClientID = ПараметрыФункции["YandexDisk_ClientID"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьКодПодтверждения", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьКодПодтверждения"); + +КонецПроцедуры + +Процедура YandexDisk_ПреобразоватьКодВТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["YandexDisk_ClientID"]; + ClientSecret = ПараметрыФункции["YandexDisk_ClientSecret"]; + КодУстройства = "12345678"; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("device", КодУстройства); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПреобразоватьКодВТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПреобразоватьКодВТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура YandexDisk_ОбновитьТокен(ПараметрыФункции) + + ClientID = ПараметрыФункции["YandexDisk_ClientID"]; + ClientSecret = ПараметрыФункции["YandexDisk_ClientSecret"]; + RefreshToken = ПараметрыФункции["YandexDisk_RefreshToken"]; + + Опции = Новый Структура; + Опции.Вставить("id", ClientID); + Опции.Вставить("secret", ClientSecret); + Опции.Вставить("refresh", RefreshToken); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОбновитьТокен", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ОбновитьТокен", , ПараметрыФункции); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьИнформациюОДиске(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьИнформациюОДиске", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьИнформациюОДиске"); + +КонецПроцедуры + +Процедура YandexDisk_СоздатьПапку(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьПапку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СоздатьПапку", , Токен, Путь); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь, Ложь); + +КонецПроцедуры + +Процедура YandexDisk_ЗагрузитьФайлПоURL(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Адрес = ПараметрыФункции["Picture"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("url", Адрес); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлПоURL", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлПоURL", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьОбъект", , Путь); + +КонецПроцедуры + +Процедура YandexDisk_УдалитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_FileByURLPath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("can", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "УдалитьОбъект"); + +КонецПроцедуры + +Процедура YandexDisk_ЗагрузитьФайл(ПараметрыФункции) + + Путь1 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + Путь2 = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Картинка = ПараметрыФункции["Picture"]; // URL + + ИВФ = ПолучитьИмяВременногоФайла("png"); // Путь + КопироватьФайл(Картинка, ИВФ); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь1); + Опции.Вставить("file", Картинка); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайл", "URL"); // SKIP + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь1, Ложь); // SKIP + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь2); + Опции.Вставить("file", ИВФ); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайл", Опции); + + // END + + OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить временный файл после теста!"); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайл"); + + OPI_YandexDisk.УдалитьОбъект(Токен, Путь2, Ложь); // SKIP + +КонецПроцедуры + +Процедура YandexDisk_СоздатьКопиюОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Оригинал); + Опции.Вставить("to", Путь); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СоздатьКопиюОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СоздатьКопиюОбъекта", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСсылкуДляСкачивания(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_PathForLink"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуДляСкачивания", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСсылкуДляСкачивания"); + +КонецПроцедуры + +Процедура YandexDisk_СкачатьФайл(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_PathForLink"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СкачатьФайл"); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСписокФайлов(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Количество = 2; + СмещениеОтНачала = 1; + ОтборПоТипу = "image"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("amount", Количество); + Опции.Вставить("offset", СмещениеОтНачала); + Опции.Вставить("type", ОтборПоТипу); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокФайлов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСписокФайлов", , Количество, СмещениеОтНачала); + +КонецПроцедуры + +Процедура YandexDisk_ПереместитьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Оригинал = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + Путь = "/" + Строка(Новый УникальныйИдентификатор) + ".png"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("from", Оригинал); + Опции.Вставить("to", Путь); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПереместитьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПереместитьОбъект", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСписокОпубликованныхОбъектов(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Количество = 2; + СмещениеОтНачала = 1; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("amount", Количество); + Опции.Вставить("offset", СмещениеОтНачала); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСписокОпубликованныхОбъектов", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСписокОпубликованныхОбъектов", , Количество, СмещениеОтНачала); + +КонецПроцедуры + +Процедура YandexDisk_ОпубликоватьОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОпубликоватьОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ОпубликоватьОбъект", , ПараметрыФункции, Путь); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьСсылкуСкачиванияПубличногоОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьСсылкуСкачиванияПубличногоОбъекта"); + +КонецПроцедуры + +Процедура YandexDisk_ПолучитьПубличныйОбъект(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ПолучитьПубличныйОбъект", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ПолучитьПубличныйОбъект"); + +КонецПроцедуры + +Процедура YandexDisk_СохранитьПубличныйОбъектНаДиск(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + URL = ПараметрыФункции["YandexDisk_PublicURL"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("url", URL); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СохранитьПубличныйОбъектНаДиск", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "СохранитьПубличныйОбъектНаДиск"); + +КонецПроцедуры + +Процедура YandexDisk_ОтменитьПубликациюОбъекта(ПараметрыФункции) + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Путь = ПараметрыФункции["YandexDisk_OriginalFilePath"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ОтменитьПубликациюОбъекта", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ОтменитьПубликациюОбъекта", , Путь); + +КонецПроцедуры + +Процедура YandexDisk_ЗагрузитьФайлЧастями(ПараметрыФункции) + + Путь = "/song.mp3"; + + Токен = ПараметрыФункции["YandexDisk_Token"]; + Файл = ПараметрыФункции["Audio"]; // URL, Двоичные или Путь к файлу + + РазмерЧасти = 1048576; // 1 MB + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("file", Файл); + Опции.Вставить("psize", РазмерЧасти); + Опции.Вставить("rewrite", Истина); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "ЗагрузитьФайлЧастями", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", , Файл); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "СкачатьФайл", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", "Скачивание", Файл); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("path", Путь); + Опции.Вставить("can", Ложь); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("yadisk", "УдалитьОбъект", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexDisk", "ЗагрузитьФайлЧастями", "Удаление"); + +КонецПроцедуры + +#КонецОбласти // YandexDisk + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure YDisk_Authorization() Export + ЯДиск_Авторизация(); +EndProcedure + +Procedure YDisk_GetDiskInfo() Export + ЯДиск_ПолучитьИнформациюОДиске(); +EndProcedure + +Procedure YDisk_CreateFolder() Export + ЯДиск_СоздатьПапку(); +EndProcedure + +Procedure YDisk_UploadByUrlAndGetObject() Export + ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект(); +EndProcedure + +Procedure YDisk_UploadDeleteFile() Export + ЯДиск_ЗагрузитьУдалитьФайл(); +EndProcedure + +Procedure YDisk_CreateObjectCopy() Export + ЯДиск_СоздатьКопиюОбъекта(); +EndProcedure + +Procedure YDisk_GetDownloadLink() Export + ЯДиск_ПолучитьСсылкуНаСкачивание(); +EndProcedure + +Procedure YDisk_GetFileList() Export + ЯДиск_ПолучитьСписокФайлов(); +EndProcedure + +Procedure YDisk_MoveObject() Export + ЯДиск_ПереместитьОбъект(); +EndProcedure + +Procedure YDisk_PublicObjectActions() Export + ЯДиск_ДействияПубличныхОбъектов(); +EndProcedure + +Procedure YDisk_GetPublishedList() Export + ЯДиск_ПолучитьСписокОпубликованных(); +EndProcedure + +#EndRegion diff --git a/src/ru/OInt/tests/Modules/OPItc_YandexMetrika.os b/src/ru/OInt/tests/Modules/OPItc_YandexMetrika.os new file mode 100644 index 0000000000..2f5784614c --- /dev/null +++ b/src/ru/OInt/tests/Modules/OPItc_YandexMetrika.os @@ -0,0 +1,461 @@ +// OneScript: ./OInt/tests/Modules/OPItc_YandexMetrika.os + +// MIT License + +// Copyright (c) 2023-2026 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 + +// Набор тестов для YAxUnit + +// BSLLS:Typo-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:IncorrectLineBreak-off +// BSLLS:UsingServiceTag-off +// BSLLS:UnusedParameters-off +// BSLLS:DuplicateStringLiteral-off +// BSLLS:UsingHardcodePath-off +// BSLLS:UnusedLocalVariable-off +// BSLLS:DeprecatedMessage-off +// BSLLS:LineLength-off +// BSLLS:MagicNumber-off +// BSLLS:CommentedCode-off +// BSLLS:AssignAliasFieldsInQuery-off +// BSLLS:UsingHardcodeNetworkAddress-off +// BSLLS:UnreachableCode-off +// BSLLS:UnusedLocalMethod-off +// BSLLS:NestedFunctionInParameters-off +// BSLLS:MissingTemporaryFileDeletion-off +// BSLLS:UsingSynchronousCalls-off +// BSLLS:MagicNumber-off +// BSLLS:MagicDate-off +// BSLLS:MissingParameterDescription-off +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MethodSize-off +// BSLLS:NestedConstructorsInStructureDeclaration-off +// BSLLS:NumberOfValuesInStructureConstructor-off +// BSLLS:UsingHardcodeSecretInformation-off +// BSLLS:SpaceAtStartComment-off + +//@skip-check undefined-variable +//@skip-check wrong-string-literal-content +//@skip-check module-structure-top-region +//@skip-check module-structure-method-in-regions +//@skip-check undefined-function-or-procedure +//@skip-check wrong-string-literal-content +//@skip-check module-unused-local-variable +//@skip-check bsl-legacy-check-string-literal +//@skip-check bsl-legacy-check-method-for-statements-after-return +//@skip-check missing-temporary-file-deletion +//@skip-check module-unused-method + +#Использовать "../../tools/main" +#Использовать "../../tools/http" +#Использовать "../../api" +#Использовать asserts +#Использовать "internal" + + +// Для YaxUnit + +Процедура ИсполняемыеСценарии() Экспорт + + OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("YandexMetrika"); + +КонецПроцедуры + +// Для Asserts + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("YandexMetrika"); + +КонецФункции + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ЗапускаемыеТесты + +#Область YandexMetrika + +Процедура ЯМетрика_УправлениеМетками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + YandexMetrika_СоздатьМетку(ПараметрыТеста); + YandexMetrika_ПолучитьСписокМеток(ПараметрыТеста); + YandexMetrika_ИзменитьМетку(ПараметрыТеста); + YandexMetrika_ПолучитьМетку(ПараметрыТеста); + YandexMetrika_УдалитьМетку(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯМетрика_УправлениеСчетчиками() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыТеста); + YandexMetrika_СоздатьСчетчик(ПараметрыТеста); + YandexMetrika_ПолучитьСчетчик(ПараметрыТеста); + YandexMetrika_ИзменитьСчетчик(ПараметрыТеста); + YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + YandexMetrika_ВосстановитьСчетчик(ПараметрыТеста); + YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыТеста); + YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + +КонецПроцедуры + +Процедура ЯМетрика_УправлениеОперациями() Экспорт + + ПараметрыТеста = Новый Структура; + OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Metrika_Token", ПараметрыТеста); + + YandexMetrika_СоздатьСчетчик(ПараметрыТеста); + YandexMetrika_ПолучитьСписокОпераций(ПараметрыТеста); + YandexMetrika_УдалитьСчетчик(ПараметрыТеста); + +КонецПроцедуры + +#КонецОбласти // YandexMetrika + +#КонецОбласти // ЗапускаемыеТесты + +#КонецОбласти // СлужебныйПрограммныйИнтерфейс + +#Область СлужебныеПроцедурыИФункции + +#Область АтомарныеТесты + +#Область YandexMetrika + +Процедура YandexMetrika_ПолучитьСписокМеток(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокМеток", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокМеток"); + +КонецПроцедуры + +Процедура YandexMetrika_СоздатьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + Наименование = "Новая метка"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "СоздатьМетку", , ПараметрыФункции, Наименование); + +КонецПроцедуры + +Процедура YandexMetrika_УдалитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "УдалитьМетку"); + +КонецПроцедуры + +Процедура YandexMetrika_ИзменитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + Наименование = "Новое имя метки"; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + Опции.Вставить("title", Наименование); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ИзменитьМетку", , Наименование); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьМетку(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDМетки = ПараметрыФункции["Metrika_LabelID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("label", IDМетки); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьМетку", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьМетку"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСтруктуруСчетчика(ПараметрыФункции) + + Пустая = Ложь; + Опции = Новый Структура; + Опции.Вставить("empty", Пустая); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСтруктуруСчетчика", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСтруктуруСчетчика"); + +КонецПроцедуры + +Процедура YandexMetrika_СоздатьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", Истина); + + СтруктураНастроекКода = Новый Структура; + СтруктураНастроекКода.Вставить("async" , 0); + СтруктураНастроекКода.Вставить("clickmap" , 1); + СтруктураНастроекКода.Вставить("ecommerce" , 1); + СтруктураНастроекКода.Вставить("in_one_line" , 0); + СтруктураНастроекКода.Вставить("track_hash" , 1); + СтруктураНастроекКода.Вставить("visor" , 1); + СтруктураНастроекКода.Вставить("xml_site" , 0); + СтруктураНастроекКода.Вставить("ytm" , 0); + СтруктураНастроекКода.Вставить("alternative_cdn", 1); + + СтруктураИнформера = Новый Структура; + СтруктураИнформера.Вставить("color_arrow", 1); + СтруктураИнформера.Вставить("color_end" , "EFEFEFFE"); + СтруктураИнформера.Вставить("color_start", "EEEEEEEE"); + СтруктураИнформера.Вставить("color_text" , 0); + СтруктураИнформера.Вставить("enabled" , 1); + СтруктураИнформера.Вставить("indicator" , "uniques"); + СтруктураИнформера.Вставить("size" , 2); + СтруктураИнформера.Вставить("type" , "ext"); + + СтруктураНастроекКода.Вставить("informer", СтруктураИнформера); + + СтруктураСчетчика.Вставить("code_options", СтруктураНастроекКода); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , Истина); + СтруктураФлагов.Вставить("measurement_enabled" , Истина); + СтруктураФлагов.Вставить("use_in_benchmarks" , Истина); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Истина); + + СтруктураСчетчика.Вставить("counter_flags" , СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , 1); + СтруктураСчетчика.Вставить("filter_robots" , 2); + СтруктураСчетчика.Вставить("gdpr_agreement_accepted", 1); + + СтруктураДомена = Новый Структура("site", "openintegrations.dev"); + + СтруктураСчетчика.Вставить("site2", СтруктураДомена); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("fields", СтруктураСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "СоздатьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "СоздатьСчетчик", , ПараметрыФункции); + +КонецПроцедуры + +Процедура YandexMetrika_УдалитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "УдалитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "УдалитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ИзменитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + СтруктураСчетчика = Новый Структура; + СтруктураСчетчика.Вставить("autogoals_enabled", Истина); + + СтруктураФлагов = Новый Структура; + СтруктураФлагов.Вставить("collect_first_party_data" , Ложь); + СтруктураФлагов.Вставить("measurement_enabled" , Ложь); + СтруктураФлагов.Вставить("use_in_benchmarks" , Ложь); + СтруктураФлагов.Вставить("direct_allow_use_goals_without_access", Ложь); + + СтруктураСчетчика.Вставить("counter_flags", СтруктураФлагов); + СтруктураСчетчика.Вставить("favorite" , 0); + СтруктураСчетчика.Вставить("filter_robots", 1); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + Опции.Вставить("fields", СтруктураСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ИзменитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ИзменитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ВосстановитьСчетчик(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ВосстановитьСчетчик", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ВосстановитьСчетчик"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСписокСчетчиков(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокСчетчиков"); // SKIP + + // Фильтр по списку ID + + Фильтр = Новый Структура; + + МассивСчетчиков = Новый Массив; + МассивСчетчиков.Добавить(IDСчетчика); + + Фильтр.Вставить("counter_ids", МассивСчетчиков); + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("filter", Фильтр); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокСчетчиков", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокСчетчиков", "Фильтр"); + +КонецПроцедуры + +Процедура YandexMetrika_ПолучитьСписокОпераций(ПараметрыФункции) + + Токен = ПараметрыФункции["Metrika_Token"]; + IDСчетчика = ПараметрыФункции["Metrika_CounterID"]; + + Опции = Новый Структура; + Опции.Вставить("token", Токен); + Опции.Вставить("counter", IDСчетчика); + + Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("metrika", "ПолучитьСписокОпераций", Опции); + + // END + + OPI_ПолучениеДанныхТестов.Обработать(Результат, "YandexMetrika", "ПолучитьСписокОпераций"); + +КонецПроцедуры + +#КонецОбласти // YandexMetrika + +#КонецОбласти // АтомарныеТесты + +#КонецОбласти // СлужебныеПроцедурыИФункции + +#Region Alternate + +Procedure YaMetrika_TagsManagement() Export + ЯМетрика_УправлениеМетками(); +EndProcedure + +Procedure YaMetrika_CountersManagement() Export + ЯМетрика_УправлениеСчетчиками(); +EndProcedure + +Procedure YaMetrika_ActionsManagement() Export + ЯМетрика_УправлениеОперациями(); +EndProcedure + +#EndRegion