55 lines
2.2 KiB
Erlang
55 lines
2.2 KiB
Erlang
%%%-------------------------------------------------------------------
|
|
%%% @doc Тесты клиентского API для получения профиля текущего пользователя.
|
|
%%%
|
|
%%% Покрывает эндпоинты:
|
|
%%% GET /v1/user/me
|
|
%%%
|
|
%%% Проверяет:
|
|
%%% - успешное получение профиля с валидным токеном
|
|
%%% - ошибку 401 при отсутствии токена
|
|
%%% - наличие ключевых полей в ответе
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
-module(user_me_tests).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-export([test/0]).
|
|
|
|
%%%===================================================================
|
|
%%% Главная тестовая функция
|
|
%%%===================================================================
|
|
|
|
-spec test() -> ok.
|
|
test() ->
|
|
ct:pal("=== User Profile (me) Tests ==="),
|
|
Token = api_test_runner:get_user_token(),
|
|
|
|
test_get_me_success(Token),
|
|
test_get_me_unauthorized(),
|
|
|
|
ct:pal("=== All user me tests passed ==="),
|
|
ok.
|
|
|
|
%%%===================================================================
|
|
%%% Тестовые функции
|
|
%%%===================================================================
|
|
|
|
%% @doc Успешное получение профиля: 200 OK, возвращает данные пользователя.
|
|
-spec test_get_me_success(binary()) -> ok.
|
|
test_get_me_success(Token) ->
|
|
ct:pal(" TEST: Get current user profile"),
|
|
User = api_test_runner:client_get(<<"/v1/user/me">>, Token),
|
|
?assert(is_map(User)),
|
|
?assert(maps:is_key(<<"id">>, User)),
|
|
?assert(maps:is_key(<<"email">>, User)),
|
|
?assert(maps:is_key(<<"role">>, User)),
|
|
?assert(maps:is_key(<<"status">>, User)),
|
|
ct:pal(" OK: got profile for ~s", [maps:get(<<"email">>, User)]).
|
|
|
|
%% @doc Отсутствие токена: 401 Unauthorized.
|
|
-spec test_get_me_unauthorized() -> ok.
|
|
test_get_me_unauthorized() ->
|
|
ct:pal(" TEST: Get profile without token"),
|
|
Resp = api_test_runner:client_request(get, <<"/v1/user/me">>, <<>>),
|
|
?assertMatch({ok, 401, _, _}, Resp),
|
|
ct:pal(" OK: got 401 unauthorized"). |