From 0ae23913f049221c9978dd231e0ab27c1d83e9ca Mon Sep 17 00:00:00 2001 From: Egor Ivanov Date: Thu, 24 Sep 2026 19:05:37 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B:=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20(#1?= =?UTF-8?q?9),=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B0=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20(#13)=20=D0=B8=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=B5=20=D0=BF=D0=B0=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D1=8F=20(#20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/ibcmdrunner-test.os | 73 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/tests/ibcmdrunner-test.os b/tests/ibcmdrunner-test.os index 06a3878..0638662 100644 --- a/tests/ibcmdrunner-test.os +++ b/tests/ibcmdrunner-test.os @@ -38,6 +38,9 @@ СписокТестов.Добавить("ТестДолжен_ЗагрузитьВыбранныйФайлКонфигурации"); СписокТестов.Добавить("ТестДолжен_ВернутьНомерВерсии"); СписокТестов.Добавить("ТестДолжен_СоздатьПустуюФайловуюБазу"); + СписокТестов.Добавить("ТестДолжен_ПередатьВсеВыбранныеФайлы"); + СписокТестов.Добавить("ТестДолжен_ПередатьПараметрыАвторизацииСоСпецсимволами"); + СписокТестов.Добавить("ТестДолжен_ЗавершитьсяОшибкойПриЗапросеПароля"); Если ВерсияПлатформыБольше("8.3.21") Тогда СписокТестов.Добавить("ТестДолжен_СоздатьФайловуюБазуИзАрхива"); @@ -586,6 +589,33 @@ КонецПроцедуры +Процедура ТестДолжен_ПередатьВсеВыбранныеФайлы() Экспорт + + // Дано + УстановитьПараметрыВременнойИБ(); + КаталогВыгрузки = ПолныйПутьШаблонаДанных("1.0", "files"); + УправлениеИБ.СоздатьИБИзФайловКонфигурации(КаталогВыгрузки); + УправлениеИБ.УстановитьПараметрыАвторизацииИБ(""); // в ИБ из файлов нет пользователей + + ВыбранныеФайлы = Новый Массив; + ВыбранныеФайлы.Добавить("Missing.xml"); + ВыбранныеФайлы.Добавить("Configuration.xml"); + + ПараметрыМетода = Новый Массив; + ПараметрыМетода.Добавить(КаталогВыгрузки); + ПараметрыМетода.Добавить(ВыбранныеФайлы); + ПараметрыМетода.Добавить(""); + ПараметрыМетода.Добавить(Истина); + + // Тогда: первый файл списка дошёл до ibcmd, и она сообщила, что его нет + Ожидаем.Что(УправлениеИБ) + .Метод("ЗагрузитьВыбранныеФайлыКонфигурации", ПараметрыМетода) + .ВыбрасываетИсключение("Missing.xml"); + + УдалитьФайлы(ВременныйКаталог); + +КонецПроцедуры + Процедура ТестДолжен_ВернутьНомерВерсии() Экспорт // Когда @@ -634,6 +664,49 @@ КонецПроцедуры +Процедура ТестДолжен_ПередатьПараметрыАвторизацииСоСпецсимволами() Экспорт + + // Когда + Пользователь = "user & (x) ^ %PATH% $HOME"; + ТекстОшибки = ТекстОшибкиАутентификации(Пользователь, "pass & word"); + + // Тогда: ibcmd называет пользователя в ошибке, значит имя дошло целиком + Утверждения.ПроверитьИстину(СтрНайти(ТекстОшибки, Пользователь) > 0, + "Имя пользователя должно дойти до ibcmd целиком: " + ТекстОшибки); + +КонецПроцедуры + +Процедура ТестДолжен_ЗавершитьсяОшибкойПриЗапросеПароля() Экспорт + + // Когда: ibcmd запрашивает пароль в консоли + ТекстОшибки = ТекстОшибкиАутентификации("admin", "admin"); + + // Тогда + Утверждения.ПроверитьИстину(ЗначениеЗаполнено(ТекстОшибки), + "Команда должна завершиться ошибкой, а не ждать ввода пароля"); + +КонецПроцедуры + +Функция ТекстОшибкиАутентификации(Пользователь, Пароль) + + // В пустой ИБ нет пользователей: аутентификация заведомо не проходит + УстановитьПараметрыВременнойИБ(); + УправлениеИБ.СоздатьИБ(); + УправлениеИБ.УстановитьПараметрыАвторизацииИБ(Пользователь, Пароль); + + ТекстОшибки = ""; + Попытка + УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ОбъединитьПути(ВременныйКаталог, "1Cv8.cf")); + Исключение + ТекстОшибки = ОписаниеОшибки(); + КонецПопытки; + + УдалитьФайлы(ВременныйКаталог); + + Возврат ТекстОшибки; + +КонецФункции + Функция ПолучитьПутьКIBCMD() Возврат ПолучитьПеременнуюСреды("IBCMD_PATH", РасположениеПеременнойСреды.Процесс); КонецФункции From 4115da2cd4d780ac0c8fb87dcdae3b49593f1514 Mon Sep 17 00:00:00 2001 From: Egor Ivanov Date: Thu, 24 Sep 2026 19:30:14 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B0=20=D0=B2=20ibcmd=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B8=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8,=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8F=20(#19,=20#13,=20#20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibcmdrunner.os" | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" index 90f3a03..28930a3 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" @@ -1085,6 +1085,12 @@ УспешныеКодыВозврата.Добавить(УстановленныйКодВозврата); КонецЕсли; + // При ошибке аутентификации ibcmd запрашивает пароль в консоли: без ввода команда зависает + Если ПараметрыЗапуска.Найти("<") = Неопределено Тогда + ПараметрыЗапуска.Добавить("<"); + ПараметрыЗапуска.Добавить(?(ЭтоWindows, "NUL", "/dev/null")); + КонецЕсли; + КомандаВыполнения = ПутьКПриложению; Лог.Отладка("Запуск: %1 %2", КомандаВыполнения, СтрСоединить(ПараметрыЗапуска, " ")); @@ -1213,8 +1219,8 @@ Лог.Отладка("Значение параметра %1 передается через переменную среды %2", ИмяПараметра, ИмяПеременнойСреды); ПеременныеСредыКоманды.Вставить(ИмяПеременнойСреды, Значение); - МассивПараметров.Добавить(СтрШаблон("%1=%2", ИмяПараметра, - СлужебныйIbcmdRunner.ШаблонПеременнойСреды(ИмяПеременнойСреды, ЭтоWindows))); + Подстановка = ОбернутьВКавычки(СлужебныйIbcmdRunner.ШаблонПеременнойСреды(ИмяПеременнойСреды, ЭтоWindows)); + МассивПараметров.Добавить(СтрШаблон("%1=%2", ИмяПараметра, Подстановка)); КонецПроцедуры @@ -1336,7 +1342,7 @@ СтрокаДляЗаписи = ""; ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаПараметров, Кодировка); Для Каждого ВыбранныйФайл Из ВыбранныеФайлы Цикл - СтрокаДляЗаписи = ?(СтрокаДляЗаписи = "", "", Символы.ПС) + СокрЛП(ВыбранныйФайл); + СтрокаДляЗаписи = СтрокаДляЗаписи + ?(СтрокаДляЗаписи = "", "", Символы.ПС) + СокрЛП(ВыбранныйФайл); КонецЦикла; ЗаписьТекста.ЗаписатьСтроку(СокрЛП(СтрокаДляЗаписи), ""); ЗаписьТекста.Закрыть();