1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

Тесты FTP и unwind для теста в postgres

This commit is contained in:
Anton Titovets
2025-08-06 18:49:36 +03:00
parent 20d94f9e52
commit 4991d4e83e
8 changed files with 247 additions and 70 deletions

View File

@@ -8,6 +8,8 @@ use chrono::{DateTime, Utc};
use serde::Serialize;
use std::string::String;
use std::time::{Duration, Instant};
use base64::{encode, Engine};
use base64::engine::general_purpose;
use crate::component::configuration::{FtpProxySettings, FtpSettings, FtpTlsSettings};
use crate::component::tls_establish;
use crate::component::tcp_establish;
@@ -227,6 +229,34 @@ impl FtpClient {
}
}
pub fn execute_custom_command(&mut self, command: &str) -> String {
let result = match self {
FtpClient::Secure(stream) => stream.site(command),
FtpClient::Insecure(stream) => stream.site(command),
};
match result {
Ok(r) => {
let code = r.status.code();
let body = r.body;
let body_json = match String::from_utf8(body) {
Ok(text) => {
json!(text)
}
Err(original_bytes) => {
let base64 = general_purpose::STANDARD.encode(&original_bytes.into_bytes());
json!({ "BYTES": base64 })
}
};
json!({"result": true, "data": body_json, "status": code}).to_string()
},
Err(e) => format_json_error(&e.to_string())
}
}
fn upload_from_reader<R: Read>(
&mut self,
path: &str,

View File

@@ -9,9 +9,8 @@ crate-type = ["cdylib"]
[profile.release]
lto = "fat" # Enable Link Time Optimization
codegen-units = 1 # Reduce number of codegen units to increase optimizations.
panic = "abort" # Abort on panic
strip = true # Automatically strip symbols from the binary.
opt-level = "z"
debug = true
# Основные зависимости
[dependencies]

View File

@@ -1,12 +1,12 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffee53e1000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007bc44b600000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007bc44ae00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007bc44aa00000)
libc.so.6 => /lib64/libc.so.6 (0x00007bc44a600000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007bc44a200000)
/lib64/ld-linux-x86-64.so.2 (0x00007bc44bc00000)
libz.so.1 => /lib64/libz.so.1 (0x00007bc449e00000)
linux-vdso.so.1 (0x00007ffd7fb79000)
libssl.so.3 => /lib64/libssl.so.3 (0x0000740872000000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x0000740871800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000740871400000)
libc.so.6 => /lib64/libc.so.6 (0x0000740871000000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000740870c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000740872600000)
libz.so.1 => /lib64/libz.so.1 (0x0000740870800000)
GLIBC_2.2.5
GLIBC_2.12
GLIBC_2.3

View File

@@ -4,6 +4,8 @@ use base64::{engine::general_purpose, Engine as _};
use crate::component::AddIn;
use std::collections::HashMap;
use std::net::IpAddr;
use std::panic;
use std::panic::AssertUnwindSafe;
use chrono::{NaiveDate, NaiveTime, FixedOffset, NaiveDateTime, DateTime};
use uuid::Uuid;
use dateparser::parse;
@@ -14,6 +16,7 @@ pub fn execute_query(
params_json: String,
force_result: bool,
) -> String {
let result = panic::catch_unwind(AssertUnwindSafe(|| {
let client_arc = match add_in.get_connection() {
Some(c) => c,
@@ -25,7 +28,6 @@ pub fn execute_query(
Err(_) => return format_json_error("Cannot acquire client lock"),
};
// Парсинг JSON параметров
let params: Vec<Value> = match serde_json::from_str(&params_json) {
Ok(params) => params,
Err(e) => return format_json_error(&e.to_string()),
@@ -40,9 +42,7 @@ pub fn execute_query(
if query.trim_start().to_uppercase().starts_with("SELECT") || force_result {
match client.query(&query, &params_unboxed) {
Ok(rows) => {
rows_to_json(rows)
}
Ok(rows) => rows_to_json(rows),
Err(e) => format_json_error(&e.to_string()),
}
} else {
@@ -51,6 +51,23 @@ pub fn execute_query(
Err(e) => format_json_error(&e.to_string()),
}
}
}));
result.unwrap_or_else(|payload| {
let message = match payload.downcast_ref::<&str>() {
Some(s) => *s,
None => match payload.downcast_ref::<String>() {
Some(s) => &s[..],
None => "Unknown panic (non-string payload)",
},
};
let backtrace = std::backtrace::Backtrace::capture();
let panic_info = format!("Panic: {}\nBacktrace:\n{}", message, backtrace);
format_json_error(&panic_info)
})
}
/// Конвертирует JSON-параметры в Postgres-совместимые типы

View File

@@ -16,12 +16,13 @@ pub const METHODS: &[&[u16]] = &[
name!("Connect"),
name!("Close"),
name!("Execute"),
name!("SetTLS")
name!("SetTLS"),
];
// Число параметров функций компоненты
pub fn get_params_amount(num: usize) -> usize {
match num {
0 => 0,
1 => 0,

View File

@@ -194,7 +194,7 @@
КонецФункции
// Переименовать объект
// Изменить путь
// Изменяет путь объекта на указанный
//
// Примечание:
@@ -207,7 +207,7 @@
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ПереименоватьОбъект(Знач Соединение, Знач Путь, Знач НовыйПуть) Экспорт
Функция ИзменитьПуть(Знач Соединение, Знач Путь, Знач НовыйПуть) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
@@ -615,6 +615,43 @@
КонецФункции
// Получить данные файла !NOCLI
// Получает файл с сервера как двоичные данные
//
// Параметры:
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
// Путь - Строка - Путь файла на сервере - path
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение, ДвоичныеДанные - Данные файла или информация об ошибке
Функция ПолучитьДанныеФайла(Знач Соединение, Знач Путь) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
Данные = Соединение.DownloadToBuffer(Путь);
Если ТипЗнч(Данные) = Тип("Строка") Тогда
Результат = OPI_Инструменты.JsonВСтруктуру(Данные);
Иначе
Возврат Данные;
КонецЕсли;
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@@ -2889,6 +2889,7 @@
FTP_ЗагрузитьФайл(ПараметрыТеста);
FTP_СохранитьФайл(ПараметрыТеста);
FTP_ПолучитьДанныеФайла(ПараметрыТеста);
FTP_УдалитьФайл(ПараметрыТеста);
КонецЦикла
@@ -2910,7 +2911,7 @@
FTP_ПолучитьНастройкиПрокси(ПараметрыТеста);
FTP_ПолучитьНастройкиTls(ПараметрыТеста);
FTP_ПолучитьРазмерОбъекта(ПараметрыТеста);
FTP_ПереименоватьОбъект(ПараметрыТеста);
FTP_ИзменитьПуть(ПараметрыТеста);
КонецЦикла;
@@ -25595,7 +25596,7 @@
КонецПроцедуры
Процедура FTP_ПереименоватьОбъект(ПараметрыФункции)
Процедура FTP_ИзменитьПуть(ПараметрыФункции)
Хост = ПараметрыФункции["FTP_IP"];
Порт = ПараметрыФункции["FTP_Port"];
@@ -25633,7 +25634,7 @@
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ПереименоватьОбъект(Соединение, "new_dir/big.bin", "new_dir/giant.bin");
Результат = OPI_FTP.ИзменитьПуть(Соединение, "new_dir/big.bin", "new_dir/giant.bin");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;
@@ -25642,45 +25643,45 @@
Постфикс = ПараметрыФункции["Postfix"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/giant.bin");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (проверка, новый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (проверка, новый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, "new_dir/big.bin");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (проверка, старый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (проверка, старый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
Результат = OPI_FTP.ПереименоватьОбъект(Соединение, "new_dir", "brand_new_dir");
Результат = OPI_FTP.ИзменитьПуть(Соединение, "new_dir", "brand_new_dir");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (каталог)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (каталог)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьСписокОбъектов(Соединение, ".", Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (список)", "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (список)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["data"][0]["path"] , "brand_new_dir");
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["data"][0]["objects"][0]["path"], "brand_new_dir/giant.bin");
Результат = OPI_FTP.ПереименоватьОбъект(Соединение, "brand_new_dir", "new_dir");
Результат = OPI_FTP.ИзменитьПуть(Соединение, "brand_new_dir", "new_dir");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (каталог, обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (каталог, обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПереименоватьОбъект(Соединение, "new_dir/giant.bin", "new_dir/big.bin");
Результат = OPI_FTP.ИзменитьПуть(Соединение, "new_dir/giant.bin", "new_dir/big.bin");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьСписокОбъектов(Соединение, ".", Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПереименоватьОбъект (список, обратно)", "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПуть (список, обратно)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["data"][0]["path"] , "new_dir");
@@ -25759,6 +25760,19 @@
OPI_ПолучениеДанныхТестов.Проверка_Равенство(РазмерФайла, РазмерРезультата);
OPI_ПолучениеДанныхТестов.Проверка_Равенство(РазмерФайла, РазмерПроверки);
Путь = "new_dir/pic_from_disk.png";
Для Н = 1 По 20 Цикл
Результат = OPI_FTP.СохранитьФайл(Соединение, Путь, ИмяФайла);
Если Не Результат["result"] Тогда
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СохранитьФайл (множественный)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецЕсли;
КонецЦикла;
Попытка
УдалитьФайлы(ИмяФайла);
Исключение
@@ -25767,6 +25781,85 @@
КонецПроцедуры
Процедура FTP_ПолучитьДанныеФайла(ПараметрыФункции)
Хост = ПараметрыФункции["FTP_IP"];
Порт = ПараметрыФункции["FTP_Port"];
Логин = ПараметрыФункции["FTP_User"];
Пароль = ПараметрыФункции["FTP_Password"];
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
FTPS = ПараметрыФункции["TLS"]; // SKIP
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
АдресПрокси = ПараметрыФункции["Proxy_IP"];
ПортПрокси = ПараметрыФункции["Proxy_Port"];
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Путь = "new_dir/big.bin";
Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь);
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;
// END
Постфикс = ПараметрыФункции["Postfix"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьДанныеФайла" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат);
Размер = OPI_FTP.ПолучитьРазмерОбъекта(Соединение, Путь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Размер, "ПолучитьДанныеФайла (размер)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Размер);
РазмерФайла = Результат.Размер();
РазмерПроверки = Размер["bytes"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(РазмерФайла, "ПолучитьДанныеФайла (размер файла)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Равенство(РазмерФайла, РазмерПроверки);
Путь = "new_dir/pic_from_disk.png";
Для Н = 1 По 20 Цикл
Результат = OPI_FTP.ПолучитьДанныеФайла(Соединение, Путь);
Если Не ТипЗнч(Результат) = Тип("ДвоичныеДанные") Тогда
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьДанныеФайла (множественный)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@@ -2778,7 +2778,7 @@
CLI_FTP_ПолучитьНастройкиПрокси(ПараметрыТеста);
CLI_FTP_ПолучитьНастройкиTls(ПараметрыТеста);
CLI_FTP_ПолучитьРазмерОбъекта(ПараметрыТеста);
CLI_FTP_ПереименоватьОбъект(ПараметрыТеста);
CLI_FTP_ИзменитьПуть(ПараметрыТеста);
OPI_Инструменты.Пауза(5);
@@ -27261,7 +27261,7 @@
КонецПроцедуры
Процедура CLI_FTP_ПереименоватьОбъект(ПараметрыФункции)
Процедура CLI_FTP_ИзменитьПуть(ПараметрыФункции)
Домен = ПараметрыФункции["FTP_IP"];
Порт = ПараметрыФункции["FTP_Port"];
@@ -27328,11 +27328,11 @@
Опции.Вставить("old" , "new_dir/big.bin");
Опции.Вставить("new" , "new_dir/giant.bin");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПереименоватьОбъект", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции);
Постфикс = ПараметрыФункции["Postfix"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Опции.Вставить("conn", Соединение);
@@ -27340,7 +27340,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (проверка, новый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (проверка, новый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Опции.Вставить("conn", Соединение);
@@ -27348,16 +27348,16 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьРазмерОбъекта", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (проверка, старый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (проверка, старый)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
Опции.Вставить("conn", Соединение);
Опции.Вставить("old" , "new_dir");
Опции.Вставить("new" , "brand_new_dir");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПереименоватьОбъект", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (каталог)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (каталог)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Опции.Вставить("conn", Соединение);
@@ -27366,7 +27366,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (список)", "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (список)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["data"][0]["path"] , "brand_new_dir");
@@ -27376,18 +27376,18 @@
Опции.Вставить("new" , "new_dir");
Опции.Вставить("old" , "brand_new_dir");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПереименоватьОбъект", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (каталог, обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (каталог, обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Опции.Вставить("conn", Соединение);
Опции.Вставить("new" , "new_dir/big.bin");
Опции.Вставить("old" , "new_dir/giant.bin");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПереименоватьОбъект", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ИзменитьПуть", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (обратно)" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Опции.Вставить("conn", Соединение);
@@ -27396,7 +27396,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ftp", "ПолучитьСписокОбъектов", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПереименоватьОбъект (список, обратно)", "FTP");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ИзменитьПуть (список, обратно)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 1);
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["data"][0]["path"] , "new_dir");