48 lines
1.8 KiB
Erlang
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"). |