Files
EventHubBack/test/api/admins/admin_refresh_tests.erl

48 lines
1.8 KiB
Erlang

%%%-------------------------------------------------------------------
%%% @doc Тесты административного API для обновления токена.
%%% Покрывает эндпоинт:
%%% POST /v1/admin/refresh
%%% @end
%%%-------------------------------------------------------------------
-module(admin_refresh_tests).
-include_lib("eunit/include/eunit.hrl").
-export([test/0]).
-spec test() -> ok.
test() ->
ct:pal("=== Admin Refresh Tests ==="),
RefreshToken = api_test_runner:get_admin_refresh_token(),
test_successful_refresh(RefreshToken),
test_invalid_refresh_token(),
test_missing_refresh_token(),
ct:pal("=== All admin refresh tests passed ==="),
ok.
-spec test_successful_refresh(binary()) -> ok.
test_successful_refresh(RefreshToken) ->
ct:pal(" TEST: Successful admin token refresh"),
Resp = api_test_runner:admin_request(post, <<"/v1/admin/refresh">>, <<>>,
jsx:encode(#{refresh_token => RefreshToken})),
{ok, 200, _, Body} = Resp,
#{<<"token">> := NewToken, <<"refresh_token">> := NewRefresh} =
jsx:decode(list_to_binary(Body), [return_maps]),
?assert(is_binary(NewToken)),
?assert(is_binary(NewRefresh)),
?assertNotEqual(RefreshToken, NewRefresh),
ct:pal(" OK: got new admin token pair").
-spec test_invalid_refresh_token() -> ok.
test_invalid_refresh_token() ->
ct:pal(" TEST: Invalid admin refresh token"),
Resp = api_test_runner:admin_request(post, <<"/v1/admin/refresh">>, <<>>,
jsx:encode(#{refresh_token => <<"bad">>})),
{ok, 401, _, _} = Resp,
ct:pal(" OK: got 401").
-spec test_missing_refresh_token() -> ok.
test_missing_refresh_token() ->
ct:pal(" TEST: Missing refresh_token field for admin"),
Resp = api_test_runner:admin_request(post, <<"/v1/admin/refresh">>, <<>>,
jsx:encode(#{})),
?assertMatch({ok, 400, _, _}, Resp),
ct:pal(" OK: got 400").