1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-06-20 09:19:27 +02:00

MSSQL: Дополнение тестов

This commit is contained in:
Anton Titovets
2025-06-28 23:15:45 +03:00
parent 1631143de0
commit 96ed042b57
3 changed files with 174 additions and 58 deletions
+9 -9
View File
@@ -1,13 +1,13 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffed17e9000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007d2a01600000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007d2a00e00000)
libm.so.6 => /lib64/libm.so.6 (0x00007d2a00a00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007d2a00600000)
libc.so.6 => /lib64/libc.so.6 (0x00007d2a00200000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007d29ffe00000)
/lib64/ld-linux-x86-64.so.2 (0x00007d2a01a00000)
libz.so.1 => /lib64/libz.so.1 (0x00007d29ffa00000)
linux-vdso.so.1 (0x00007fff0854e000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007eb959400000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007eb958c00000)
libm.so.6 => /lib64/libm.so.6 (0x00007eb958800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007eb958400000)
libc.so.6 => /lib64/libc.so.6 (0x00007eb958000000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007eb957c00000)
/lib64/ld-linux-x86-64.so.2 (0x00007eb959800000)
libz.so.1 => /lib64/libz.so.1 (0x00007eb957800000)
GLIBC_2.2.5
GLIBC_2.12
GLIBC_2.3
+10 -12
View File
@@ -3,7 +3,7 @@ mod methods;
use addin1c::{name, Variant};
use crate::core::getset;
use serde_json::json;
use tiberius::{Client, Config, EncryptionLevel};
use tiberius::{Client, Config};
use tokio::net::TcpStream;
use tokio_util::compat::{Compat, TokioAsyncWriteCompatExt};
use std::sync::{Arc, Mutex};
@@ -102,20 +102,14 @@ impl AddIn {
Err(e) => return Self::process_error(&e.to_string()),
};
match self.use_tls {
true => {
config.encryption(EncryptionLevel::Required);
if self.use_tls {
if self.accept_invalid_certs {
config.trust_cert();
}else if self.ca_cert_path.is_empty() == false {
config.trust_cert_ca(&self.ca_cert_path);
}
}
false => {
if self.accept_invalid_certs {
config.trust_cert();
config.encryption(EncryptionLevel::Off)
}else if self.ca_cert_path.is_empty() == false {
config.trust_cert_ca(&self.ca_cert_path);
}
}
let rt = match self.get_runtime() {
@@ -163,6 +157,10 @@ impl AddIn {
json!({"result": true}).to_string()
}
fn get_connection(&self) -> Result<Arc<Mutex<Client<Compat<TcpStream>>>>, String> {
self.connection.clone().ok_or_else(|| Self::process_error("No active connection").to_string())
}
// TOKIO
pub fn get_runtime(&mut self) -> Result<&Runtime, String> {
+155 -37
View File
@@ -2825,6 +2825,10 @@
MSSQL_СформироватьСтрокуПодключения(ПараметрыТеста);
MSSQL_ОткрытьСоединение(ПараметрыТеста);
MSSQL_ЗакрытьСоединение(ПараметрыТеста);
MSSQL_ЭтоКоннектор(ПараметрыТеста);
MSSQL_ВыполнитьЗапросSQL(ПараметрыТеста);
MSSQL_ПолучитьНастройкиTls(ПараметрыТеста);
КонецПроцедуры
@@ -23776,46 +23780,15 @@
Пароль = ПараметрыФункции["PG_Password"];
Порт = 1434;
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль, Порт);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль);
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_MSSQL.Main"); // SKIP
OPI_MSSQL.ЗакрытьСоединение(Результат);
// С TLS
Адрес = ПараметрыФункции["PG_IP"];
Порт = "1434";
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль, Порт);
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS);
OPI_MSSQL.ЗакрытьСоединение(Результат);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение (TLS)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_MSSQL.Main");
Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение (ошибка без TLS)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Адрес = ПараметрыФункции["PG_IP"];
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль, Порт);
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
Результат = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение (TLS игнор)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_MSSQL.Main");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_MSSQL.Main");
Адрес = ПараметрыФункции["PG_IP"];
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль, Порт);
@@ -23840,6 +23813,151 @@
КонецПроцедуры
Процедура MSSQL_ЗакрытьСоединение(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
Порт = 1434;
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль);
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS);
Результат = OPI_MSSQL.ЗакрытьСоединение(Соединение);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗакрытьСоединение", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MSSQL_ЭтоКоннектор(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль);
Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения);
Результат = OPI_MSSQL.ЭтоКоннектор(Соединение);
OPI_MSSQL.ЗакрытьСоединение(Результат);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЭтоКоннектор", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Истина(Результат);
КонецПроцедуры
Процедура MSSQL_ВыполнитьЗапросSQL(ПараметрыФункции)
Картинка = ПараметрыФункции["Picture"];
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения);
OPI_MSSQL.УдалитьТаблицу("users" , Соединение); // SKIP
OPI_MSSQL.УдалитьТаблицу("test_data", Соединение); // SKIP
Удаление = OPI_MSSQL.УдалитьТаблицу("test_table", Соединение); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Соединение, "ВыполнитьЗапросSQL (удаление 1)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Соединение, "ВыполнитьЗапросSQL (соединение)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Соединение, "AddIn.OPI_MSSQL.Main"); // 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
|);";
Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Create)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // 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" , Картинка));
Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ТекстЗапроса, МассивПараметров, , Соединение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (Insert)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// SELECT (Результат этого запроса приведен в следующем блоке)
ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
Blob = Результат["data"][0]["data"]["BYTES"]; // SKIP
Результат["data"][0]["data"]["BYTES"] = "Base64"; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // 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
// SQL запрос из файла
ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу
Результат = OPI_MSSQL.ВыполнитьЗапросSQL(ФайлSQL, , , Соединение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыполнитьЗапросSQL (файл)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
Закрытие = OPI_MSSQL.ЗакрытьСоединение(Соединение);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗакрытьПодключение (запрос)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MSSQL_ПолучитьНастройкиTls(ПараметрыФункции)
Результат = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкиTls", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти