Skip to content

Commit ab9c1f1

Browse files
authored
Merge pull request #1 from Golovanoff/Тесты_на_vault
Тесты на vault
2 parents 8111197 + 0cadaad commit ab9c1f1

File tree

7 files changed

+154
-13
lines changed

7 files changed

+154
-13
lines changed

packagedef

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
.РазработкаЗависитОт("coverage", "0.6.1")
2424
.РазработкаЗависитОт("1testrunner", "1.8.0")
2525
.РазработкаЗависитОт("1bdd", "1.14.0")
26+
.РазработкаЗависитОт("1commands", "1.5.0")
27+
.РазработкаЗависитОт("winow", "0.11.0")
2628
.ОпределяетКласс("МенеджерПараметров", "src/Классы/МенеджерПараметров.os")
2729
.ОпределяетКласс("КонструкторПараметров", "src/Классы/КонструкторПараметров.os")
2830
;

src/Классы/internal/Классы/ПровайдерПараметровVAULT.os

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@
5050
Запрос = НастройкиПровайдера.Запрос;
5151

5252
Если Не ЗначениеЗаполнено(Адрес) Тогда
53-
Лог.Ошибка("Не указан адрес сервера. Чтение невозможно");
53+
Лог.Отладка("Не указан адрес сервера. Чтение невозможно");
5454
Возврат ПрочитанныеПараметры;
5555
КонецЕсли;
5656

57-
Лог.Отладка("Выполняю чтение файла параметров из <%1>/%2", Адрес, Запрос);
57+
Лог.Отладка("Выполняю чтение данных vault из <%1>/%2", Адрес, Запрос);
5858
ПрочитанныеПараметры = Прочитать(Адрес, Токен, Запрос);
5959

6060
Возврат ПрочитанныеПараметры;
@@ -74,32 +74,57 @@
7474
Функция Прочитать(Знач Адрес, Знач Токен, Знач Запрос)
7575

7676
Настройки = Новый Соответствие;
77+
78+
URL = СтрШаблон("%1/%2", Адрес, Запрос);
79+
Заголовки = Новый Соответствие;
80+
81+
Если ЗначениеЗаполнено(Токен) Тогда
82+
Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
83+
КонецЕсли;
7784

85+
ДопПараметры = Новый Структура("Заголовки", Заголовки);
86+
7887
Попытка
7988

80-
URL = СтрШаблон("%1/%2", Адрес, Запрос);
81-
82-
Заголовки = Новый Соответствие;
83-
Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
89+
Ответ = КоннекторHTTP.Get(URL, , ДопПараметры);
90+
ВолтОтветил = ВолтОтветил(Ответ);
91+
Если Не ВолтОтветил Тогда
92+
Лог.Отладка("Ошибка получения данных из vault:
93+
|%1", КодыСостоянияHTTP.Представление(Ответ.КодСостояния));
94+
КонецЕсли;
8495

85-
ДопПараметры = Новый Структура("Заголовки", Заголовки);
86-
87-
Настройки = КоннекторHTTP.Get(URL, , ДопПараметры).Json()["data"];
96+
ДесериализованныйОтвет = Ответ.Json();
97+
Ошибки = ДесериализованныйОтвет.Получить("errors");
98+
Если Не Ошибки = Неопределено Тогда
99+
Для Каждого Ошибка Из Ошибки Цикл
100+
Лог.Отладка(Ошибка["message"]);
101+
КонецЦикла;
102+
КонецЕсли;
103+
104+
Настройки = ?(ВолтОтветил, ДесериализованныйОтвет["data"], Новый Соответствие);
88105

89106
Лог.Отладка("Итоговые параметры:");
90107
ПоказатьПараметрыВРежимеОтладки(Настройки);
91108

92109
Исключение
93110

94-
Лог.Ошибка("Ошибка чтения настроек
95-
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
111+
Лог.Отладка("Ошибка чтения настроек vault из %1
112+
|%2", URL, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
96113

97114
ВызватьИсключение;
98115

99116
КонецПопытки;
100117

101118
Возврат Настройки;
119+
КонецФункции
120+
121+
Функция ВолтОтветил(Знач Ответ)
122+
123+
ХорошиеКоды = Новый Массив;
124+
ХорошиеКоды.Добавить(200);
125+
ХорошиеКоды.Добавить(204);
102126

127+
Возврат Не ХорошиеКоды.Найти(Ответ.КодСостояния) = Неопределено;
103128
КонецФункции
104129

105130
Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров)

src/Классы/internal/Классы/ФайловыйПровайдерПараметров.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@
336336
ОбработатьПараметрыРекурсивно(Значение, ИмяФайлаПараметров);
337337

338338
Иначе
339-
Лог.Отладка("Ищю ключ чтения файла: <%1>", Ключ);
339+
Лог.Отладка("Ищу ключ чтения файла: <%1>", Ключ);
340340
Если СтрНачинаетсяС( ВРег(Ключ), ВРег(ПрефиксПараметрФайл)) Тогда
341341
КлючиКДополнительномуЧтению.Добавить(Ключ);
342342
КонецЕсли;

src/Классы/МенеджерПараметров.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122

123123
НастройкаПровайдераVault = ПолучитьНастройкуПровайдераVault();
124124

125-
НастройкаПровайдераVault.УстановитьАдрес(Настройки.Сервер)
125+
НастройкаПровайдераVault.УстановитьАдрес(Настройки.Адрес)
126126
.УстановитьТокен(Настройки.Токен)
127127
.УстановитьЗапрос(Настройки.Запрос);
128128
КонецПроцедуры
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
&Пластилин Перем ПрикладнойВебСервер;
2+
3+
&Контроллер("/v1")
4+
Процедура ПриСозданииОбъекта()
5+
6+
КонецПроцедуры
7+
8+
&ТочкаМаршрута("my_secret_store/super_secret")
9+
Процедура ДанныеVault(ТелоЗапросОбъект, Ответ) Экспорт
10+
11+
ТестовыйОтвет = "{
12+
| ""data"" : {
13+
| ""owner"" : {
14+
| ""contact"" : {
15+
| ""email"" : """",
16+
| ""tel"" : ""77777777""
17+
| },
18+
| ""person"" : {
19+
| ""address"" : ""Alpha Centauri""
20+
| }
21+
| },
22+
| ""admin"" : {
23+
| ""contact"" : {
24+
| ""email"" : ""admin.ru"",
25+
| }
26+
| }
27+
| }
28+
|}";
29+
30+
Ответ.УстановитьТипКонтента("json");
31+
Ответ.ТелоТекст = ТестовыйОтвет;
32+
КонецПроцедуры
33+
34+
&ТочкаМаршрута("kill")
35+
Процедура ЗавершениеРаботы(ТелоЗапросОбъект, Ответ) Экспорт
36+
ПрикладнойВебСервер.Стоп();
37+
КонецПроцедуры
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#Использовать autumn
2+
#Использовать winow
3+
#Использовать autumn-logos
4+
5+
НастройкиВина = Новый Соответствие();
6+
НастройкиВина.Вставить("Автостарт", true);
7+
НастройкиВина.Вставить("Порт", 3333);
8+
9+
Детальки = Новый Соответствие();
10+
Детальки.Вставить("winow", НастройкиВина);
11+
12+
СоветДругогоМастера = Новый СоветДругогоМастера();
13+
СоветДругогоМастера.ЗначенияДеталек(Детальки);
14+
15+
Поделка = Новый Поделка(СоветДругогоМастера);
16+
Поделка.ЗапуститьПриложение();
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#использовать "../src/"
2+
#Использовать asserts
3+
#Использовать 1connector
4+
#Использовать 1commands
5+
6+
&Тест
7+
Процедура ПроверитьПолучениеПараметровИзVault() Экспорт
8+
9+
ЗапуститьТестовыйВолт();
10+
Приостановить(5000); // чтобы вино успело стартануть
11+
12+
// Дано
13+
14+
НастройкиVault = Новый Структура;
15+
НастройкиVault.Вставить("Адрес", "http://localhost:3333");
16+
НастройкиVault.Вставить("Токен", "VAULT_TOKEN");
17+
НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secrett");
18+
19+
МенеджерПараметров = Новый МенеджерПараметров();
20+
МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT());
21+
МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault);
22+
23+
// Когда
24+
25+
МенеджерПараметров.Прочитать();
26+
27+
// Тогда
28+
29+
Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно("");
30+
Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.tel")).Равно("77777777");
31+
Ожидаем.Что(МенеджерПараметров.Параметр("owner.person.address")).Равно("Alpha Centauri");
32+
Ожидаем.Что(МенеджерПараметров.Параметр("admin.contact.email")).Равно("admin.ru");
33+
Ожидаем.Что(МенеджерПараметров.Параметр("person.address")).ЭтоНеопределено();
34+
35+
УбитьТестовыйВолт(НастройкиVault["Адрес"]);
36+
37+
КонецПроцедуры
38+
39+
Функция КаталогFixtures()
40+
Возврат ОбъединитьПути(КаталогБиблиотеки(), "tests", "fixtures");
41+
КонецФункции
42+
43+
Функция КаталогБиблиотеки()
44+
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..");
45+
КонецФункции
46+
47+
Функция ЗапуститьТестовыйВолт()
48+
49+
Путь = ОбъединитьПути(КаталогFixtures(), "ТестовыйVault");
50+
51+
ЗапускВина = Новый Команда;
52+
ЗапускВина.УстановитьСтрокуЗапуска("oscript main.os");
53+
ЗапускВина.УстановитьРабочийКаталог(Путь);
54+
55+
Возврат ЗапускВина.ЗапуститьПроцесс();
56+
КонецФункции
57+
58+
Функция УбитьТестовыйВолт(Знач Адрес)
59+
URL = СтрШаблон("%1/v1/kill", Адрес);
60+
Возврат КоннекторHTTP.Get(URL, , Новый Структура("Заголовки", Новый Соответствие));
61+
КонецФункции

0 commit comments

Comments
 (0)