67 lines
2.4 KiB
Erlang
67 lines
2.4 KiB
Erlang
%%%-------------------------------------------------------------------
|
|
%%% @doc Тесты административного API для управления пользователями.
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
-module(admin_users_tests).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-export([test/0]).
|
|
|
|
test() ->
|
|
ct:pal("=== Admin Users Tests ==="),
|
|
Token = api_test_runner:get_admin_token(),
|
|
|
|
%% Создаём тестового пользователя
|
|
Email = api_test_runner:unique_email(<<"usertest">>),
|
|
UserToken = api_test_runner:register_and_login(Email, <<"testpass">>),
|
|
Me = api_test_runner:client_get(<<"/v1/user/me">>, UserToken),
|
|
UserId = maps:get(<<"id">>, Me),
|
|
|
|
test_list_users(Token),
|
|
test_get_user(Token, UserId),
|
|
test_update_user(Token, UserId),
|
|
test_filter_users(Token),
|
|
test_delete_user(Token, UserId),
|
|
|
|
ct:pal("=== All admin users tests passed ==="),
|
|
ok.
|
|
|
|
test_list_users(Token) ->
|
|
ct:pal(" TEST: List all users"),
|
|
Users = api_test_runner:admin_get(<<"/v1/admin/users">>, Token),
|
|
?assert(is_list(Users)),
|
|
?assert(length(Users) >= 1),
|
|
ct:pal(" OK: ~p users", [length(Users)]).
|
|
|
|
test_get_user(Token, UserId) ->
|
|
ct:pal(" TEST: Get user by ID"),
|
|
Path = <<"/v1/admin/users/", UserId/binary>>,
|
|
User = api_test_runner:admin_get(Path, Token),
|
|
?assertEqual(UserId, maps:get(<<"id">>, User)),
|
|
ct:pal(" OK: ~s", [maps:get(<<"email">>, User)]).
|
|
|
|
test_update_user(Token, UserId) ->
|
|
ct:pal(" TEST: Update user (change role and status)"),
|
|
Path = <<"/v1/admin/users/", UserId/binary>>,
|
|
Updated = api_test_runner:admin_put(Path, Token, #{
|
|
<<"role">> => <<"bot">>,
|
|
<<"status">> => <<"frozen">>,
|
|
<<"reason">> => <<"Test freeze">>
|
|
}),
|
|
?assertEqual(<<"bot">>, maps:get(<<"role">>, Updated)),
|
|
?assertEqual(<<"frozen">>, maps:get(<<"status">>, Updated)),
|
|
ct:pal(" OK").
|
|
|
|
test_filter_users(Token) ->
|
|
ct:pal(" TEST: Filter users by status=frozen"),
|
|
Users = api_test_runner:admin_get(<<"/v1/admin/users?status=frozen">>, Token),
|
|
?assert(is_list(Users)),
|
|
[?assertEqual(<<"frozen">>, maps:get(<<"status">>, U)) || U <- Users],
|
|
ct:pal(" OK: ~p frozen users", [length(Users)]).
|
|
|
|
test_delete_user(Token, UserId) ->
|
|
ct:pal(" TEST: Delete (soft-delete) user"),
|
|
Path = <<"/v1/admin/users/", UserId/binary>>,
|
|
Deleted = api_test_runner:admin_delete(Path, Token),
|
|
?assertEqual(<<"deleted">>, maps:get(<<"status">>, Deleted)),
|
|
ct:pal(" OK"). |