Перенести все админские эндпоинты на порт 8445 и добавить отдельную авторизацию для админов. Часть 2. Final #3

This commit is contained in:
2026-04-28 12:42:10 +03:00
parent 4ed6a961ab
commit 7ea4efd7d9
38 changed files with 1252 additions and 1124 deletions

View File

@@ -4,9 +4,6 @@
-define(JWT_SECRET, <<"test-user-secret-key-32-byt!">>).
-define(ADMIN_JWT_SECRET, <<"test-admin-secret-key-32-b">>).
%% ------------------------------------------------------------------
%% Фикстуры
%% ------------------------------------------------------------------
setup() ->
application:set_env(eventhub, jwt_secret, ?JWT_SECRET),
application:set_env(eventhub, admin_jwt_secret, ?ADMIN_JWT_SECRET),
@@ -18,9 +15,6 @@ cleanup(_) ->
application:unset_env(eventhub, admin_jwt_secret),
application:stop(jose).
%% ------------------------------------------------------------------
%% Тесты
%% ------------------------------------------------------------------
logic_auth_test_() ->
[
{"Password hash test", fun test_password_hash/0},
@@ -31,7 +25,6 @@ logic_auth_test_() ->
]}
].
%% ── Хеширование паролей (остаётся в logic_auth) ──────────────────
test_password_hash() ->
Password = <<"secret123">>,
{ok, Hash} = logic_auth:hash_password(Password),
@@ -39,27 +32,23 @@ test_password_hash() ->
{ok, true} = logic_auth:verify_password(Password, Hash),
{ok, false} = logic_auth:verify_password(<<"wrong">>, Hash).
%% ── JWT тесты (перенесены в auth) ─────────────────────────────────
test_jwt() ->
UserId = <<"user123">>,
Role = <<"user">>,
Token = auth:generate_user_token(UserId, Role),
Token = eventhub_auth:generate_user_token(UserId, Role),
?assert(is_binary(Token)),
{ok, ReturnedUserId, ReturnedRole} = auth:verify_user_token(Token),
{ok, ReturnedUserId, ReturnedRole} = eventhub_auth:verify_user_token(Token),
?assertEqual(UserId, ReturnedUserId),
?assertEqual(Role, ReturnedRole),
% Проверка невалидного токена
{error, invalid_token} = auth:verify_user_token(<<"invalid.token.here">>).
{error, invalid_token} = eventhub_auth:verify_user_token(<<"invalid.token.here">>).
test_jwt_expired() ->
% Тест на истечение срока пока пропущен, так как требует мока времени
ok.
%% ── Refresh token (перенесён в auth) ────────────────────────────
test_refresh_token() ->
{Token, ExpiresAt} = auth:generate_refresh_token(<<"user123">>),
{Token, ExpiresAt} = eventhub_auth:generate_refresh_token(<<"user123">>),
?assert(is_binary(Token)),
?assert(size(Token) >= 32),
?assert(is_integer(ExpiresAt)),
Now = os:system_time(second),
?assert(is_tuple(ExpiresAt)),
Now = calendar:universal_time(),
?assert(ExpiresAt > Now).