From 707b425ac178325aec6f4fa645eba0640aafd47c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Wed, 25 Jun 2025 18:51:17 +0700 Subject: [PATCH 01/15] =?UTF-8?q?=D0=BD=D0=B0=D0=BA=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B0=D0=B9=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=20Vault?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 3 +- ...1\320\264\320\265\321\200\320\260Vault.os" | 69 +++++++++++ ...20\265\321\202\321\200\320\276\320\262.os" | 4 + ...5\321\202\321\200\320\276\320\262VAULT.os" | 110 ++++++++++++++++++ ...20\265\321\202\321\200\320\276\320\262.os" | 16 ++- 5 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\260Vault.os" create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" diff --git a/packagedef b/packagedef index 2fbb049..20e62c7 100644 --- a/packagedef +++ b/packagedef @@ -4,7 +4,7 @@ // Описание.Имя("configor") - .Версия("0.9.1") + .Версия("0.9.2") .Автор("Khorev Aleksey") .АдресАвтора("Khorevaa@gmail.com") .Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml") @@ -18,6 +18,7 @@ .ЗависитОт("fluent", "0.6.0") .ЗависитОт("notify", "0.2.0") .ЗависитОт("tempfiles") + .ЗависитОт("1connector") .ЗависитОт("reflector", "0.3.1") .РазработкаЗависитОт("coverage", "0.6.1") .РазработкаЗависитОт("1testrunner", "1.8.0") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\260Vault.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\260Vault.os" new file mode 100644 index 0000000..b268a9d --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\260Vault.os" @@ -0,0 +1,69 @@ + +Перем Адрес; // Строка +Перем Токен; // Строка +Перем Запрос; // Строка + +#Область Публичное_API + +// Устанавливает путь к корню API +// +// Параметры: +// АдресАпи - Строка - URL сервера + корень API +// +// Возвращаемое значение: +// Объект.НастройкиПровайдераVault - ссылка на текущий элемент класса <НастройкиПровайдераVault> +// +Функция УстановитьАдрес(Знач АдресАпи) Экспорт + Адрес = АдресАпи; + Возврат ЭтотОбъект; +КонецФункции + +// Устанавливает токен авторизации +// +// Параметры: +// ТокенАвторизации - Строка - токен авторизации +// +// Возвращаемое значение: +// Объект.НастройкиПровайдераVault - ссылка на текущий элемент класса <НастройкиПровайдераVault> +// +Функция УстановитьТокен(Знач ТокенАвторизации) Экспорт + Токен = ТокенАвторизации; + Возврат ЭтотОбъект; +КонецФункции + +// Устанавливает путь к корню API +// +// Параметры: +// УРЛЗапроса - Строка - URL запроса данных vault +// +// Возвращаемое значение: +// Объект.НастройкиПровайдераVault - ссылка на текущий элемент класса <НастройкиПровайдераVault> +// +Функция УстановитьЗапрос(Знач УРЛЗапроса) Экспорт + Запрос = УРЛЗапроса; + Возврат ЭтотОбъект; +КонецФункции + +// Возвращает структуру настроек провайдера +// +// Возвращаемое значение: +// Структура - подготовленная структура настроек для файловых провайдеров +// * Адрес - Строка - путь к API +// * Токен - Строка - токен авторизации +// * Запрос - Строка - путь к данным vault +// +Функция ПолучитьНастройки() Экспорт + + Настройка = Новый Структура(); + Настройка.Вставить("Адрес", Адрес); + Настройка.Вставить("Токен", Токен); + Настройка.Вставить("Запрос", Запрос); + + Возврат Настройка; +КонецФункции + +#КонецОбласти + +#Область Вспомогательные_процедуры_и_функции + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 3a8a141..35b8b40 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -83,6 +83,10 @@ КонецФункции +Функция ЭтоПровайдерVault() Экспорт + Возврат ВРег(ТипПровайдера) = ВРег("vault"); +КонецФункции + Процедура ПриСозданииОбъекта(Знач ВходящийКлассПровайдера) ИнтерфейсПровайдера = Новый ИнтерфейсОбъекта; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" new file mode 100644 index 0000000..c3b24aa --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -0,0 +1,110 @@ +#Использовать asserts +#Использовать logos +#Использовать 1connector + +Перем Лог; + +#Область ПрограммныйИнтерфейс + +// Возвращает приоритет провайдера +// +// Возвращаемое значение: +// Число - текущий приоритет провайдера +// +Функция Приоритет() Экспорт + Возврат 1; +КонецФункции + +// Возвращает идентификатор провайдера +// +// Возвращаемое значение: +// Строка - текущий идентификатор провайдера +// +Функция Идентификатор() Экспорт + Возврат "vault"; +КонецФункции + +// Возвращает тип провайдера +// +// Возвращаемое значение: +// Строка - текущий тип провайдера +// +Функция ТипПровайдера() Экспорт + Возврат "vault"; +КонецФункции + +// Выполняет чтение параметров для провайдера +// +// Параметры: +// НастройкиПровайдера - Структура - структура настроек провайдера +// +// Возвращаемое значение: +// Соответствие - результат чтения провайдера +// +Функция ПрочитатьПараметры(Знач НастройкиПровайдера) Экспорт + + ПрочитанныеПараметры = Новый Соответствие; + + Адрес = НастройкиПровайдера.Адрес; + Токен = НастройкиПровайдера.Токен; + Запрос = НастройкиПровайдера.Запрос; + + Если Не ЗначениеЗаполнено(АдресСервера) Тогда + Лог.Отладка("Не указан адрес сервера. Чтение невозможно"); + Возврат ПрочитанныеПараметры; + КонецЕсли; + + Лог.Отладка("Выполняю чтение файла параметров из <%1>/%2", Адрес, Запрос); + ПрочитанныеПараметры = Прочитать(Адрес, Токен, Запрос); + + Возврат ПрочитанныеПараметры; +КонецФункции + +#КонецОбласти + +// Выполнить чтение настроек из vault +// +// Параметры: +// Адрес - Cтрока - URL сервера vault +// Токен - Cтрока - токен авторизации +// Запрос - Cтрока - путь к данным vault +// Возвращаемое значение: +// Соответствие - итоговые параметры +// +Функция Прочитать(Знач Адрес, Знач Токен, Знач Запрос) + + Настройки = Новый Соответствие; + + Попытка + + URL = СтрШаблон("%1/%2", Адрес, Запрос); + + Заголовки = Новый Соответствие; + Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Настройки = КоннекторHTTP.Get(URL, , Заголовки).Json()["data"]; + + Лог.Отладка("Итоговые параметры:"); + ПоказатьПараметрыВРежимеОтладки(Настройки); + + Исключение + + Лог.Ошибка("Ошибка чтения настроек + |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ВызватьИсключение; + + КонецПопытки; + + Возврат Настройки; + +КонецФункции + +Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров) + + ПроцессорВывода = Новый ВыводВРежимеОтладки(Лог); + ПроцессорВывода.ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров); + +КонецПроцедуры + +Лог = Логирование.ПолучитьЛог("oscript.lib.configor.vault"); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index b4bf79d..3847217 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -15,6 +15,7 @@ Перем ПровайдерыПараметров; // Соответствие Перем НастройкаФайловогоПровайдера; // Класс НастройкиФайловогоПровайдера +Перем НастройкаПровайдераVault; // Класс НастройкиПровайдераVault Перем ИнтерфейсПриемника; // Класс ИнтерфейсОбъекта @@ -324,9 +325,12 @@ ИдентификаторПровайдера = КлассПровайдера.Идентификатор; - ПараметрыПровайдера = Новый Структура; Если КлассПровайдера.ЭтоФайловыйПровайдер() Тогда ПараметрыПровайдера = ПолучитьНастройкуФайловогоПровайдера().ПолучитьНастройки(); + ИначеЕсли КлассПровайдера.ЭтоПровайдерVault() Тогда + ПараметрыПровайдера = ПолучитьНастройкуПровайдераVault().ПолучитьНастройки(); + Иначе + ПараметрыПровайдера = Новый Структура; КонецЕсли; Попытка @@ -419,6 +423,16 @@ КонецФункции +Функция ПолучитьНастройкуПровайдераVault() + + Если НастройкаПровайдераVault = Неопределено Тогда + НастройкаПровайдераVault = Новый НастройкаПровайдераVault; + КонецЕсли; + + Возврат НастройкаПровайдераVault; + +КонецФункции + #КонецОбласти #Область Инициализация From f2e7719c408ac021f4c172016b5898e3a691b5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Thu, 26 Jun 2025 11:18:11 +0700 Subject: [PATCH 02/15] =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=B2=D0=BE=D0=BB=D1=82=D0=B0=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...65\321\202\321\200\320\276\320\262VAULT.os" | 6 ++++-- ...320\265\321\202\321\200\320\276\320\262.os" | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index c3b24aa..90dd722 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -49,7 +49,7 @@ Токен = НастройкиПровайдера.Токен; Запрос = НастройкиПровайдера.Запрос; - Если Не ЗначениеЗаполнено(АдресСервера) Тогда + Если Не ЗначениеЗаполнено(Адрес) Тогда Лог.Отладка("Не указан адрес сервера. Чтение невозможно"); Возврат ПрочитанныеПараметры; КонецЕсли; @@ -82,7 +82,9 @@ Заголовки = Новый Соответствие; Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); - Настройки = КоннекторHTTP.Get(URL, , Заголовки).Json()["data"]; + ДопПараметры = Новый Структура("Заголовки", Заголовки); + + Настройки = КоннекторHTTP.Get(URL, , ДопПараметры).Json()["data"]; Лог.Отладка("Итоговые параметры:"); ПоказатьПараметрыВРежимеОтладки(Настройки); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 3847217..649e5fa 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -113,6 +113,20 @@ КонецПроцедуры +// Устанавливает настройки провайдера параметров +// +// Параметры: +// Настройки - Структура - настройки провайдера +// +Процедура УстановитьНастройкиVault(Знач Настройки) Экспорт + + НастройкаПровайдераVault = ПолучитьНастройкуПровайдераVault(); + + НастройкаПровайдераVault.УстановитьАдрес(Настройки.Сервер) + .УстановитьТокен(Настройки.Токен) + .УстановитьЗапрос(Настройки.Запрос); +КонецПроцедуры + // Добавляет в таблицу провайдеров произвольный класс-провайдер // // Параметры: @@ -426,7 +440,7 @@ Функция ПолучитьНастройкуПровайдераVault() Если НастройкаПровайдераVault = Неопределено Тогда - НастройкаПровайдераVault = Новый НастройкаПровайдераVault; + НастройкаПровайдераVault = Новый НастройкиПровайдераVault; КонецЕсли; Возврат НастройкаПровайдераVault; @@ -464,4 +478,4 @@ #КонецОбласти -Лог = Логирование.ПолучитьЛог("oscript.lib.configor"); \ No newline at end of file +Лог = Логирование.ПолучитьЛог("oscript.lib.configor"); From 88a985d05ae0deb306b7d35361c4edf1b6cbd0ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Thu, 26 Jun 2025 11:49:26 +0700 Subject: [PATCH 03/15] =?UTF-8?q?=D1=87=D1=83=D1=82=D0=BE=D0=BA=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B4=D0=BE=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 ++++++++++++++++++ ...320\265\321\202\321\200\320\276\320\262.os" | 11 +++++++++++ 2 files changed, 29 insertions(+) diff --git a/README.md b/README.md index cf8bc58..2c33abb 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,24 @@ Сообщить(ПроксиСервер); +``` +* Чтение параметров из vault +```bsl + + НастройкиVault = Новый Структура; + НастройкиVault.Вставить("Адрес", "https://vault.server.local"); + НастройкиVault.Вставить("Токен", ПолучитьПеременнуюСреды("VAULT_TOKEN")); + НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret"); + + МенеджерПараметров = Новый МенеджерПараметров(); + МенеджерПараметров.ИспользоватьПровайдерVAULT(); + МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault); + МенеджерПараметров.Прочитать(); + + ПроксиСервер = МенеджерПараметров.Параметр("Настройки.Глобальные.НастройкиПрокси.Сервер") + + Сообщить(ПроксиСервер); + ``` * Чтения параметров через конструктор параметров diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 649e5fa..154b1b2 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -195,6 +195,17 @@ КонецПроцедуры +// Добавляет и включает встроенный провайдер VAULT +// +// Параметры: +// Приоритет - Число - Числовой приоритет выполнения провайдеры (по умолчанию 0) +// +Процедура ИспользоватьПровайдерVAULT(Знач Приоритет = 0) Экспорт + + ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT, Приоритет); + +КонецПроцедуры + // Производит автоматическую настройку провайдеров // // Параметры: From e50f2984bfcbeed1dfa6eb746839b4f3adfaae83 Mon Sep 17 00:00:00 2001 From: Golovanoff <41572553+Golovanoff@users.noreply.github.com> Date: Sun, 24 Aug 2025 14:13:49 +0700 Subject: [PATCH 04/15] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B0=D1=8F=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Nikita Fedkin --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 20e62c7..448d601 100644 --- a/packagedef +++ b/packagedef @@ -4,7 +4,7 @@ // Описание.Имя("configor") - .Версия("0.9.2") + .Версия("0.10.0") .Автор("Khorev Aleksey") .АдресАвтора("Khorevaa@gmail.com") .Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml") From 627d314f3883f82be1408ce679469495e6c61f89 Mon Sep 17 00:00:00 2001 From: Golovanoff <41572553+Golovanoff@users.noreply.github.com> Date: Sun, 24 Aug 2025 14:21:47 +0700 Subject: [PATCH 05/15] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=9B=D0=BE=D0=B3.=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B0,=20?= =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=20=D0=BD=D0=B5=20=D1=83=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0=D0=BD=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=20=D1=81?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0=20vault.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index 90dd722..7ec1858 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -50,7 +50,7 @@ Запрос = НастройкиПровайдера.Запрос; Если Не ЗначениеЗаполнено(Адрес) Тогда - Лог.Отладка("Не указан адрес сервера. Чтение невозможно"); + Лог.Ошибка("Не указан адрес сервера. Чтение невозможно"); Возврат ПрочитанныеПараметры; КонецЕсли; From 8111197a32bc2b34f7dfdf78e41bf8c4fc09f453 Mon Sep 17 00:00:00 2001 From: Golovanoff <41572553+Golovanoff@users.noreply.github.com> Date: Sun, 24 Aug 2025 14:39:48 +0700 Subject: [PATCH 06/15] =?UTF-8?q?=D0=A3=D0=BA=D0=B0=D0=B7=D0=B0=D0=BB=20?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BE=D1=82=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D0=BD=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 448d601..f835b9c 100644 --- a/packagedef +++ b/packagedef @@ -18,7 +18,7 @@ .ЗависитОт("fluent", "0.6.0") .ЗависитОт("notify", "0.2.0") .ЗависитОт("tempfiles") - .ЗависитОт("1connector") + .ЗависитОт("1connector", "2.2.1") .ЗависитОт("reflector", "0.3.1") .РазработкаЗависитОт("coverage", "0.6.1") .РазработкаЗависитОт("1testrunner", "1.8.0") From 87c8053e916a181429685aa9f4e36e743c860c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Sun, 24 Aug 2025 18:13:01 +0700 Subject: [PATCH 07/15] =?UTF-8?q?=D0=BD=D0=B0=D0=BA=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=20-=20=D0=BD=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=B5=D1=82,=20=D1=80=D1=83=D0=B3=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BD=D0=B0=20=D0=9A=D0=BE=D0=BD=D0=BD=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80HTTP=D0=A1=D0=BB=D1=83=D0=B6=D0=B5?= =?UTF-8?q?=D0=B1=D0=BD=D1=8B=D0=B9=20=D0=B8=20=D1=80=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=20=D0=BF=D1=8B=D1=82=D0=B0=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B8=D0=B4=D1=82=D0=B8=20=D0=BD=D0=B0=20=D1=83=D0=BA?= =?UTF-8?q?=D0=B0=D0=B7=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=B0=D0=B4=D1=80?= =?UTF-8?q?=D0=B5=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 1 + ...5\321\202\321\200\320\276\320\262VAULT.os" | 7 ++- ...20\265\321\202\321\200\320\276\320\262.os" | 2 +- ...5\321\202\321\200\320\276\320\262VAULT.os" | 52 +++++++++++++++++++ 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 "tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" diff --git a/packagedef b/packagedef index f835b9c..9030382 100644 --- a/packagedef +++ b/packagedef @@ -23,6 +23,7 @@ .РазработкаЗависитОт("coverage", "0.6.1") .РазработкаЗависитОт("1testrunner", "1.8.0") .РазработкаЗависитОт("1bdd", "1.14.0") + .РазработкаЗависитОт("moskito", "0.4.1") .ОпределяетКласс("МенеджерПараметров", "src/Классы/МенеджерПараметров.os") .ОпределяетКласс("КонструкторПараметров", "src/Классы/КонструкторПараметров.os") ; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index 7ec1858..017c8bc 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -3,6 +3,7 @@ #Использовать 1connector Перем Лог; +Перем Коннектор; #Область ПрограммныйИнтерфейс @@ -49,6 +50,10 @@ Токен = НастройкиПровайдера.Токен; Запрос = НастройкиПровайдера.Запрос; + Если Не НастройкиПровайдера.Свойство("КоннекторHTTP", Коннектор) Тогда + Коннектор = КоннекторHTTP; + КонецЕсли; + Если Не ЗначениеЗаполнено(Адрес) Тогда Лог.Ошибка("Не указан адрес сервера. Чтение невозможно"); Возврат ПрочитанныеПараметры; @@ -84,7 +89,7 @@ ДопПараметры = Новый Структура("Заголовки", Заголовки); - Настройки = КоннекторHTTP.Get(URL, , ДопПараметры).Json()["data"]; + Настройки = Коннектор.Get(URL, , ДопПараметры).Json()["data"]; Лог.Отладка("Итоговые параметры:"); ПоказатьПараметрыВРежимеОтладки(Настройки); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index 154b1b2..7ee8028 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -122,7 +122,7 @@ НастройкаПровайдераVault = ПолучитьНастройкуПровайдераVault(); - НастройкаПровайдераVault.УстановитьАдрес(Настройки.Сервер) + НастройкаПровайдераVault.УстановитьАдрес(Настройки.Адрес) .УстановитьТокен(Настройки.Токен) .УстановитьЗапрос(Настройки.Запрос); КонецПроцедуры diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" new file mode 100644 index 0000000..f7f778b --- /dev/null +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -0,0 +1,52 @@ +#использовать "../src/" +#Использовать asserts +#Использовать moskito + +&Тест +Процедура ПроверитьПолучениеПараметровИзVault() Экспорт + + // Дано + + СекретыVault = "{ + | ""owner"" : { + | ""contact"" : { + | ""email"" : "", + | ""tel"" : ""77777777"" + | }, + | ""person"" : { + | ""address"" : ""Alpha Centauri"" + | } + | }, + | ""admin"" : { + | ""contact"" : { + | ""email"" : ""admin.ru"", + | } + | } + |}"; + + МокСервераVault = Мок.Получить(КоннекторHTTP); + МокСервераVault.Когда().Get(Новый HTTPЗапрос("v1/my_secret_store/super_secret")).ТогдаВозвращает(СекретыVault); + + НастройкиVault = Новый Структура; + НастройкиVault.Вставить("Адрес", "https://localhost:3333"); + НастройкиVault.Вставить("Токен", ПолучитьПеременнуюСреды("VAULT_TOKEN")); + НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret"); + НастройкиVault.Вставить("КоннекторHTTP", МокСервераVault); + + МенеджерПараметров = Новый МенеджерПараметров(); + МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT()); + МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault); + + // Когда + + МенеджерПараметров.Прочитать(); + + // Тогда + + Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно("mail.ru"); + Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.tel")).Равно("77777777"); + Ожидаем.Что(МенеджерПараметров.Параметр("owner.person.address")).Равно("Alpha Centauri"); + Ожидаем.Что(МенеджерПараметров.Параметр("admin.contact.email")).Равно("admin.ru"); + Ожидаем.Что(МенеджерПараметров.Параметр("person.address")).ЭтоНеопределено(); + +КонецПроцедуры From 5dd3115f3133c72e5d86d8ceaefb1cf456a1121a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Fri, 31 Oct 2025 18:29:33 +0700 Subject: [PATCH 08/15] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=82=20=D0=B2=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B5,=20=20=D0=BD=D0=BE=20?= =?UTF-8?q?=D1=81=D1=8B=D0=BF=D1=8F=D1=82=20=D1=81=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=BC=20=D0=BF=D1=80=D0=B8=20opm=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\321\202\321\200\320\276\320\262VAULT.os" | 22 ++++---- .../app/controls/test_controller.os" | 30 +++++++++++ .../main.os" | 18 +++++++ ...5\321\202\321\200\320\276\320\262VAULT.os" | 52 ++++++++++--------- 4 files changed, 86 insertions(+), 36 deletions(-) create mode 100644 "tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" create mode 100644 "tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index 017c8bc..f904afe 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -3,7 +3,6 @@ #Использовать 1connector Перем Лог; -Перем Коннектор; #Область ПрограммныйИнтерфейс @@ -50,16 +49,12 @@ Токен = НастройкиПровайдера.Токен; Запрос = НастройкиПровайдера.Запрос; - Если Не НастройкиПровайдера.Свойство("КоннекторHTTP", Коннектор) Тогда - Коннектор = КоннекторHTTP; - КонецЕсли; - Если Не ЗначениеЗаполнено(Адрес) Тогда Лог.Ошибка("Не указан адрес сервера. Чтение невозможно"); Возврат ПрочитанныеПараметры; КонецЕсли; - Лог.Отладка("Выполняю чтение файла параметров из <%1>/%2", Адрес, Запрос); + Лог.Отладка("Выполняю чтение данных vault из <%1>/%2", Адрес, Запрос); ПрочитанныеПараметры = Прочитать(Адрес, Токен, Запрос); Возврат ПрочитанныеПараметры; @@ -79,25 +74,30 @@ Функция Прочитать(Знач Адрес, Знач Токен, Знач Запрос) Настройки = Новый Соответствие; - + Попытка URL = СтрШаблон("%1/%2", Адрес, Запрос); Заголовки = Новый Соответствие; - Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + + Если ЗначениеЗаполнено(Токен) Тогда + Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + КонецЕсли; ДопПараметры = Новый Структура("Заголовки", Заголовки); - Настройки = Коннектор.Get(URL, , ДопПараметры).Json()["data"]; + Ответ = КоннекторHTTP.Get(URL, , ДопПараметры); + ДесериализованныйОтвет = Ответ.Json(); + Настройки = ДесериализованныйОтвет["data"]; Лог.Отладка("Итоговые параметры:"); ПоказатьПараметрыВРежимеОтладки(Настройки); Исключение - Лог.Ошибка("Ошибка чтения настроек - |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Лог.Отладка("Ошибка чтения настроек vault из %1 + |%2", URL, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" new file mode 100644 index 0000000..85cb636 --- /dev/null +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" @@ -0,0 +1,30 @@ +&Контроллер("/v1") +Процедура ПриСозданииОбъекта() + +КонецПроцедуры + +&ТочкаМаршрута("my_secret_store/super_secret") +Процедура ДанныеVault(ТелоЗапросОбъект, Ответ) Экспорт + + ТестовыйОтвет = "{ + | ""data"" : { + | ""owner"" : { + | ""contact"" : { + | ""email"" : """", + | ""tel"" : ""77777777"" + | }, + | ""person"" : { + | ""address"" : ""Alpha Centauri"" + | } + | }, + | ""admin"" : { + | ""contact"" : { + | ""email"" : ""admin.ru"", + | } + | } + | } + |}"; + + Ответ.УстановитьТипКонтента("json"); + Ответ.ТелоТекст = ТестовыйОтвет; +КонецПроцедуры diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" new file mode 100644 index 0000000..37b5423 --- /dev/null +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" @@ -0,0 +1,18 @@ +#Использовать autumn +#Использовать winow +#Использовать autumn-logos + +НастройкиВина = Новый Соответствие(); +НастройкиВина.Вставить("Автостарт", true); +НастройкиВина.Вставить("Порт", 3333); + +Детальки = Новый Соответствие(); +Детальки.Вставить("winow", НастройкиВина); + +СоветДругогоМастера = Новый СоветДругогоМастера(); +СоветДругогоМастера.ЗначенияДеталек(Детальки); + +Поделка = Новый Поделка(СоветДругогоМастера); +Поделка.ЗапуститьПриложение(); + +Сообщить("Запустили и продолжаемся!"); diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index f7f778b..c4dab46 100644 --- "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -1,37 +1,18 @@ #использовать "../src/" #Использовать asserts -#Использовать moskito +#Использовать 1connector &Тест Процедура ПроверитьПолучениеПараметровИзVault() Экспорт - // Дано + ЗапуститьТестовыйВолт(ОбъединитьПути(КаталогFixtures(), "ТестовыйVault", "main.os")); - СекретыVault = "{ - | ""owner"" : { - | ""contact"" : { - | ""email"" : "", - | ""tel"" : ""77777777"" - | }, - | ""person"" : { - | ""address"" : ""Alpha Centauri"" - | } - | }, - | ""admin"" : { - | ""contact"" : { - | ""email"" : ""admin.ru"", - | } - | } - |}"; - - МокСервераVault = Мок.Получить(КоннекторHTTP); - МокСервераVault.Когда().Get(Новый HTTPЗапрос("v1/my_secret_store/super_secret")).ТогдаВозвращает(СекретыVault); + // Дано НастройкиVault = Новый Структура; - НастройкиVault.Вставить("Адрес", "https://localhost:3333"); - НастройкиVault.Вставить("Токен", ПолучитьПеременнуюСреды("VAULT_TOKEN")); + НастройкиVault.Вставить("Адрес", "http://localhost:3333"); + НастройкиVault.Вставить("Токен", "VAULT_TOKEN"); НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret"); - НастройкиVault.Вставить("КоннекторHTTP", МокСервераVault); МенеджерПараметров = Новый МенеджерПараметров(); МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT()); @@ -43,10 +24,31 @@ // Тогда - Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно("mail.ru"); + Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно(""); Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.tel")).Равно("77777777"); Ожидаем.Что(МенеджерПараметров.Параметр("owner.person.address")).Равно("Alpha Centauri"); Ожидаем.Что(МенеджерПараметров.Параметр("admin.contact.email")).Равно("admin.ru"); Ожидаем.Что(МенеджерПараметров.Параметр("person.address")).ЭтоНеопределено(); КонецПроцедуры + +Функция КаталогFixtures() + Возврат ОбъединитьПути(КаталогБиблиотеки(), "tests", "fixtures"); +КонецФункции + +Функция КаталогБиблиотеки() + Возврат ОбъединитьПути(ТекущийСценарий().Каталог, ".."); +КонецФункции + +Функция ЗапуститьТестовыйВолт(Знач Путь) + ФоновоеДляВина = Новый Массив; + ФоновоеДляВина.Добавить(Путь); + + УстановитьТекущийКаталог(Новый Файл(Путь).Путь); + Возврат ФоновыеЗадания.Выполнить(ЭтотОбъект, "ЗапускВина", ФоновоеДляВина); +КонецФункции + +Функция ЗапускВина(Знач Путь) Экспорт + ЗагрузитьСценарий(Путь); + Возврат Истина; +КонецФункции From ce5d5a397cc3070d4bcf04ddd0dd529858684367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Fri, 31 Oct 2025 18:30:29 +0700 Subject: [PATCH 09/15] =?UTF-8?q?=D1=8D=D1=82=D0=BE=20=D0=B1=D1=8B=D0=BB?= =?UTF-8?q?=D0=BE=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main.os" | 2 -- 1 file changed, 2 deletions(-) diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" index 37b5423..eb78900 100644 --- "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/main.os" @@ -14,5 +14,3 @@ Поделка = Новый Поделка(СоветДругогоМастера); Поделка.ЗапуститьПриложение(); - -Сообщить("Запустили и продолжаемся!"); From 8d610c4569bda533224ad3e9696fcceecf5082b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Sat, 1 Nov 2025 10:53:42 +0700 Subject: [PATCH 10/15] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B8=D0=B9=20=D0=BA=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B3,=20=D0=BF=D0=BE=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D0=BE=D1=87=D0=B5=D0=BF=D1=8F=D1=82=D0=BA?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\274\320\265\321\202\321\200\320\276\320\262.os" | 2 +- .../app/controls/test_controller.os" | 7 +++++++ ...320\265\321\202\321\200\320\276\320\262VAULT.os" | 13 ++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\271\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\271\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" index a135ddb..7d0e690 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\271\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\271\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262.os" @@ -336,7 +336,7 @@ ОбработатьПараметрыРекурсивно(Значение, ИмяФайлаПараметров); Иначе - Лог.Отладка("Ищю ключ чтения файла: <%1>", Ключ); + Лог.Отладка("Ищу ключ чтения файла: <%1>", Ключ); Если СтрНачинаетсяС( ВРег(Ключ), ВРег(ПрефиксПараметрФайл)) Тогда КлючиКДополнительномуЧтению.Добавить(Ключ); КонецЕсли; diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" index 85cb636..0a01b99 100644 --- "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" @@ -1,3 +1,5 @@ +&Пластилин Перем ПрикладнойВебСервер; + &Контроллер("/v1") Процедура ПриСозданииОбъекта() @@ -28,3 +30,8 @@ Ответ.УстановитьТипКонтента("json"); Ответ.ТелоТекст = ТестовыйОтвет; КонецПроцедуры + +&ТочкаМаршрута("kill") +Процедура ЗавершениеРаботы(ТелоЗапросОбъект, Ответ) Экспорт + ПрикладнойВебСервер.Стоп(); +КонецПроцедуры diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index c4dab46..c78a510 100644 --- "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -30,6 +30,8 @@ Ожидаем.Что(МенеджерПараметров.Параметр("admin.contact.email")).Равно("admin.ru"); Ожидаем.Что(МенеджерПараметров.Параметр("person.address")).ЭтоНеопределено(); + УбитьТестовыйВолт(НастройкиVault["Адрес"]); + КонецПроцедуры Функция КаталогFixtures() @@ -44,11 +46,20 @@ ФоновоеДляВина = Новый Массив; ФоновоеДляВина.Добавить(Путь); + ТекущийКаталог = ТекущийКаталог(); УстановитьТекущийКаталог(Новый Файл(Путь).Путь); - Возврат ФоновыеЗадания.Выполнить(ЭтотОбъект, "ЗапускВина", ФоновоеДляВина); + ФЗ = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ЗапускВина", ФоновоеДляВина); + УстановитьТекущийКаталог(ТекущийКаталог); + + Возврат ФЗ; КонецФункции Функция ЗапускВина(Знач Путь) Экспорт ЗагрузитьСценарий(Путь); Возврат Истина; КонецФункции + +Функция УбитьТестовыйВолт(Знач Адрес) + URL = СтрШаблон("%1/v1/kill", Адрес); + Возврат КоннекторHTTP.Get(URL, , Новый Структура("Заголовки", Новый Соответствие)); +КонецФункции From 9924e7a67f59505ac672cd39c238fcca5195f817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Mon, 3 Nov 2025 12:15:35 +0700 Subject: [PATCH 11/15] =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\321\202\321\200\320\276\320\262VAULT.os" | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index c78a510..7017858 100644 --- "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -1,11 +1,12 @@ #использовать "../src/" #Использовать asserts #Использовать 1connector +#Использовать 1commands &Тест Процедура ПроверитьПолучениеПараметровИзVault() Экспорт - ЗапуститьТестовыйВолт(ОбъединитьПути(КаталогFixtures(), "ТестовыйVault", "main.os")); + ЗапуститьТестовыйВолт(); // Дано @@ -42,21 +43,18 @@ Возврат ОбъединитьПути(ТекущийСценарий().Каталог, ".."); КонецФункции -Функция ЗапуститьТестовыйВолт(Знач Путь) - ФоновоеДляВина = Новый Массив; - ФоновоеДляВина.Добавить(Путь); +Функция ЗапуститьТестовыйВолт() + + Путь = ОбъединитьПути(КаталогFixtures(), "ТестовыйVault"); - ТекущийКаталог = ТекущийКаталог(); - УстановитьТекущийКаталог(Новый Файл(Путь).Путь); - ФЗ = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ЗапускВина", ФоновоеДляВина); - УстановитьТекущийКаталог(ТекущийКаталог); + ЗапускВина = Новый Команда; + ЗапускВина.УстановитьСтрокуЗапуска("oscript main.os"); + ЗапускВина.УстановитьРабочийКаталог(Путь); - Возврат ФЗ; -КонецФункции + Процесс = ЗапускВина.ЗапуститьПроцесс(); + Приостановить(5000); // чтобы вино успело стартануть -Функция ЗапускВина(Знач Путь) Экспорт - ЗагрузитьСценарий(Путь); - Возврат Истина; + Возврат Процесс; КонецФункции Функция УбитьТестовыйВолт(Знач Адрес) From db67ba543fce0670807f0b4af30f31051a04892a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Mon, 3 Nov 2025 12:30:03 +0700 Subject: [PATCH 12/15] =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B8,=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F.=20=D0=BD=D0=B5=D1=82=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BE=D0=BA=20HTTP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 3 ++- ...60\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packagedef b/packagedef index 9030382..69430ea 100644 --- a/packagedef +++ b/packagedef @@ -23,7 +23,8 @@ .РазработкаЗависитОт("coverage", "0.6.1") .РазработкаЗависитОт("1testrunner", "1.8.0") .РазработкаЗависитОт("1bdd", "1.14.0") - .РазработкаЗависитОт("moskito", "0.4.1") + .РазработкаЗависитОт("1commands", "1.5.0") + .РазработкаЗависитОт("winow", "0.11.0") .ОпределяетКласс("МенеджерПараметров", "src/Классы/МенеджерПараметров.os") .ОпределяетКласс("КонструкторПараметров", "src/Классы/КонструкторПараметров.os") ; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index f904afe..e68a4f4 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -50,7 +50,7 @@ Запрос = НастройкиПровайдера.Запрос; Если Не ЗначениеЗаполнено(Адрес) Тогда - Лог.Ошибка("Не указан адрес сервера. Чтение невозможно"); + Лог.Отладка("Не указан адрес сервера. Чтение невозможно"); Возврат ПрочитанныеПараметры; КонецЕсли; From 0cadaadb941b604ea73155fe0a01b6382fa4c071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Tue, 4 Nov 2025 14:59:09 +0700 Subject: [PATCH 13/15] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20HTTP=20?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=BE=D1=82=20?= =?UTF-8?q?=D0=B2=D0=BE=D0=BB=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\321\202\321\200\320\276\320\262VAULT.os" | 40 ++++++++++++++----- ...5\321\202\321\200\320\276\320\262VAULT.os" | 10 ++--- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index e68a4f4..2bafcce 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -75,21 +75,33 @@ Настройки = Новый Соответствие; + URL = СтрШаблон("%1/%2", Адрес, Запрос); + Заголовки = Новый Соответствие; + + Если ЗначениеЗаполнено(Токен) Тогда + Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + КонецЕсли; + + ДопПараметры = Новый Структура("Заголовки", Заголовки); + Попытка - URL = СтрШаблон("%1/%2", Адрес, Запрос); - - Заголовки = Новый Соответствие; - - Если ЗначениеЗаполнено(Токен) Тогда - Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен)); + Ответ = КоннекторHTTP.Get(URL, , ДопПараметры); + ВолтОтветил = ВолтОтветил(Ответ); + Если Не ВолтОтветил Тогда + Лог.Отладка("Ошибка получения данных из vault: + |%1", КодыСостоянияHTTP.Представление(Ответ.КодСостояния)); КонецЕсли; - ДопПараметры = Новый Структура("Заголовки", Заголовки); - - Ответ = КоннекторHTTP.Get(URL, , ДопПараметры); ДесериализованныйОтвет = Ответ.Json(); - Настройки = ДесериализованныйОтвет["data"]; + Ошибки = ДесериализованныйОтвет.Получить("errors"); + Если Не Ошибки = Неопределено Тогда + Для Каждого Ошибка Из Ошибки Цикл + Лог.Отладка(Ошибка["message"]); + КонецЦикла; + КонецЕсли; + + Настройки = ?(ВолтОтветил, ДесериализованныйОтвет["data"], Новый Соответствие); Лог.Отладка("Итоговые параметры:"); ПоказатьПараметрыВРежимеОтладки(Настройки); @@ -104,7 +116,15 @@ КонецПопытки; Возврат Настройки; +КонецФункции + +Функция ВолтОтветил(Знач Ответ) + + ХорошиеКоды = Новый Массив; + ХорошиеКоды.Добавить(200); + ХорошиеКоды.Добавить(204); + Возврат Не ХорошиеКоды.Найти(Ответ.КодСостояния) = Неопределено; КонецФункции Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров) diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index 7017858..562205b 100644 --- "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -7,13 +7,14 @@ Процедура ПроверитьПолучениеПараметровИзVault() Экспорт ЗапуститьТестовыйВолт(); - + Приостановить(5000); // чтобы вино успело стартануть + // Дано НастройкиVault = Новый Структура; НастройкиVault.Вставить("Адрес", "http://localhost:3333"); НастройкиVault.Вставить("Токен", "VAULT_TOKEN"); - НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret"); + НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secrett"); МенеджерПараметров = Новый МенеджерПараметров(); МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT()); @@ -51,10 +52,7 @@ ЗапускВина.УстановитьСтрокуЗапуска("oscript main.os"); ЗапускВина.УстановитьРабочийКаталог(Путь); - Процесс = ЗапускВина.ЗапуститьПроцесс(); - Приостановить(5000); // чтобы вино успело стартануть - - Возврат Процесс; + Возврат ЗапускВина.ЗапуститьПроцесс(); КонецФункции Функция УбитьТестовыйВолт(Знач Адрес) From 973be2d05941b6ba82dc3753eb65eb33e8916a2f Mon Sep 17 00:00:00 2001 From: sfaqer Date: Tue, 4 Nov 2025 22:44:41 +1000 Subject: [PATCH 14/15] =?UTF-8?q?*=20=D0=9F=D0=BE=D0=B4=D0=BD=D1=8F=D1=82?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D0=BE=D1=82=201connector=20=D0=B4=D0=BE=20?= =?UTF-8?q?=D1=82=D1=80=D0=B5=D0=B1=D1=83=D0=B5=D0=BC=D0=BE=D0=B9=20*=20?= =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B8=20VAULT=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=B2=D0=BE=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=81=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D0=B0=D1=8F=D1=85=20=D1=82=D1=83=D1=88=D0=B8=D1=82=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20=D0=B2=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=B0=20=D0=BD=D0=B5=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B5=D0=BB=D1=91=D0=BD=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=BF=D1=80=D0=BE=D0=B3=D0=BE=D0=BD=D0=B5=20*=20?= =?UTF-8?q?=D0=94=D0=BB=D1=8F=20winow=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D1=85=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=20*=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0=20win?= =?UTF-8?q?ow,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D0=B4=D1=91=D1=82=20=D0=BA=20?= =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82=D0=B2=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20=D1=83=20=D1=82=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BA=D1=82=D0=BE=20=D0=BE=D1=82=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- .../app/controls/test_controller.os" | 9 ++++++-- .../oscript.cfg" | 1 + ...5\321\202\321\200\320\276\320\262VAULT.os" | 22 +++++++++++-------- 4 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 "tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/oscript.cfg" diff --git a/packagedef b/packagedef index 69430ea..a18a2ff 100644 --- a/packagedef +++ b/packagedef @@ -18,7 +18,7 @@ .ЗависитОт("fluent", "0.6.0") .ЗависитОт("notify", "0.2.0") .ЗависитОт("tempfiles") - .ЗависитОт("1connector", "2.2.1") + .ЗависитОт("1connector", "2.3.3") .ЗависитОт("reflector", "0.3.1") .РазработкаЗависитОт("coverage", "0.6.1") .РазработкаЗависитОт("1testrunner", "1.8.0") diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" index 0a01b99..39427ae 100644 --- "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" @@ -1,4 +1,4 @@ -&Пластилин Перем ПрикладнойВебСервер; +&Пластилин Перем ВебСервер; &Контроллер("/v1") Процедура ПриСозданииОбъекта() @@ -33,5 +33,10 @@ &ТочкаМаршрута("kill") Процедура ЗавершениеРаботы(ТелоЗапросОбъект, Ответ) Экспорт - ПрикладнойВебСервер.Стоп(); + ФоновыеЗадания.Выполнить(ЭтотОбъект, "ОстановитсяОтложено"); +КонецПроцедуры + +Процедура ОстановитсяОтложено() Экспорт + Приостановить(100); + ВебСервер.Стоп(); КонецПроцедуры diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/oscript.cfg" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/oscript.cfg" new file mode 100644 index 0000000..d353076 --- /dev/null +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/oscript.cfg" @@ -0,0 +1 @@ +lib.system=../../../oscript_modules diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index 562205b..e93b84a 100644 --- "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -1,4 +1,4 @@ -#использовать "../src/" +#Использовать "../src" #Использовать asserts #Использовать 1connector #Использовать 1commands @@ -6,34 +6,38 @@ &Тест Процедура ПроверитьПолучениеПараметровИзVault() Экспорт - ЗапуститьТестовыйВолт(); - Приостановить(5000); // чтобы вино успело стартануть - // Дано НастройкиVault = Новый Структура; НастройкиVault.Вставить("Адрес", "http://localhost:3333"); НастройкиVault.Вставить("Токен", "VAULT_TOKEN"); - НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secrett"); + НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret"); МенеджерПараметров = Новый МенеджерПараметров(); МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT()); МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault); + ЗапуститьТестовыйВолт(); + Приостановить(1000); // чтобы вино успело стартануть + // Когда - МенеджерПараметров.Прочитать(); + Попытка + МенеджерПараметров.Прочитать(); + Исключение + УбитьТестовыйВолт(НастройкиVault["Адрес"]); + ВызватьИсключение; + КонецПопытки; - // Тогда + УбитьТестовыйВолт(НастройкиVault["Адрес"]); + // Тогда Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно(""); Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.tel")).Равно("77777777"); Ожидаем.Что(МенеджерПараметров.Параметр("owner.person.address")).Равно("Alpha Centauri"); Ожидаем.Что(МенеджерПараметров.Параметр("admin.contact.email")).Равно("admin.ru"); Ожидаем.Что(МенеджерПараметров.Параметр("person.address")).ЭтоНеопределено(); - УбитьТестовыйВолт(НастройкиVault["Адрес"]); - КонецПроцедуры Функция КаталогFixtures() From 0a826bf37f2fab568e72e5f3e56f6080537920f2 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Tue, 4 Nov 2025 23:34:57 +1000 Subject: [PATCH 15/15] =?UTF-8?q?*=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BD=D0=BE=20=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=BD=D0=B0,=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5?= =?UTF-8?q?=D0=BC=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BE=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=20=D0=B2=20=D1=81=D0=B5=D0=BA=D1=83=D0=BD=D0=B4?= =?UTF-8?q?=D1=83=20*=20=D0=92=D0=BE=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=B8=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B0?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B2=20=D1=82.=D1=87=20=D0=B5=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controls/test_controller.os" | 6 ++ ...5\321\202\321\200\320\276\320\262VAULT.os" | 75 +++++++++++++------ 2 files changed, 59 insertions(+), 22 deletions(-) diff --git "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" index 39427ae..f9ea842 100644 --- "a/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" +++ "b/tests/fixtures/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\271Vault/app/controls/test_controller.os" @@ -36,6 +36,12 @@ ФоновыеЗадания.Выполнить(ЭтотОбъект, "ОстановитсяОтложено"); КонецПроцедуры +&ТочкаМаршрута("ping") +Процедура Проверка(ТелоЗапросОбъект, Ответ) Экспорт + Ответ.УстановитьТипКонтента("txt"); + Ответ.ТелоТекст = "ОК"; +КонецПроцедуры + Процедура ОстановитсяОтложено() Экспорт Приостановить(100); ВебСервер.Стоп(); diff --git "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" index e93b84a..39a60d6 100644 --- "a/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" +++ "b/tests/\320\237\321\200\320\276\320\262\320\260\320\271\320\264\320\265\321\200\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\276\320\262VAULT.os" @@ -3,13 +3,25 @@ #Использовать 1connector #Использовать 1commands +Перем ПроцессВина; +Перем АдресВина; + +&ПередКаждым +Процедура ЗапуститьВино() Экспорт + ЗапуститьТестовыйВолт(); +КонецПроцедуры + +&ПослеКаждого +Процедура ОстановитьВино() Экспорт + УбитьТестовыйВолт(); +КонецПроцедуры + &Тест Процедура ПроверитьПолучениеПараметровИзVault() Экспорт // Дано - НастройкиVault = Новый Структура; - НастройкиVault.Вставить("Адрес", "http://localhost:3333"); + НастройкиVault.Вставить("Адрес", АдресВина); НастройкиVault.Вставить("Токен", "VAULT_TOKEN"); НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret"); @@ -17,19 +29,8 @@ МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT()); МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault); - ЗапуститьТестовыйВолт(); - Приостановить(1000); // чтобы вино успело стартануть - // Когда - - Попытка - МенеджерПараметров.Прочитать(); - Исключение - УбитьТестовыйВолт(НастройкиVault["Адрес"]); - ВызватьИсключение; - КонецПопытки; - - УбитьТестовыйВолт(НастройкиVault["Адрес"]); + МенеджерПараметров.Прочитать(); // Тогда Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно(""); @@ -48,18 +49,48 @@ Возврат ОбъединитьПути(ТекущийСценарий().Каталог, ".."); КонецФункции -Функция ЗапуститьТестовыйВолт() - +Процедура ЗапуститьТестовыйВолт() + Путь = ОбъединитьПути(КаталогFixtures(), "ТестовыйVault"); ЗапускВина = Новый Команда; ЗапускВина.УстановитьСтрокуЗапуска("oscript main.os"); ЗапускВина.УстановитьРабочийКаталог(Путь); - Возврат ЗапускВина.ЗапуститьПроцесс(); -КонецФункции + ПроцессВина = ЗапускВина.ЗапуститьПроцесс(); -Функция УбитьТестовыйВолт(Знач Адрес) - URL = СтрШаблон("%1/v1/kill", Адрес); - Возврат КоннекторHTTP.Get(URL, , Новый Структура("Заголовки", Новый Соответствие)); -КонецФункции + Для Сч = 0 По 10 Цикл + + Приостановить(1000); + + Попытка + + Ответ = КоннекторHTTP.Get( + СтрШаблон("%1/v1/ping", АдресВина), , + Новый Структура("Заголовки", Новый Соответствие) + ).Текст(); + + Если Ответ = "ОК" Тогда + Прервать; + КонецЕсли; + + Исключение + Продолжить; + КонецПопытки; + + КонецЦикла; + +КонецПроцедуры + +Процедура УбитьТестовыйВолт() + + КоннекторHTTP.Get( + СтрШаблон("%1/v1/kill", АдресВина), , + Новый Структура("Заголовки", Новый Соответствие) + ); + + ПроцессВина.Завершить(); + +КонецПроцедуры + +АдресВина = "http://localhost:3333";