133 lines
5.2 KiB
Erlang
133 lines
5.2 KiB
Erlang
%%%-------------------------------------------------------------------
|
|
%%% @doc Тесты административного API для модерации сущностей.
|
|
%%%
|
|
%%% Покрывает эндпоинты:
|
|
%%% PUT /v1/admin/:target_type/:id
|
|
%%%
|
|
%%% Проверяет:
|
|
%%% - заморозку/разморозку календаря
|
|
%%% - заморозку/разморозку события
|
|
%%% - скрытие/раскрытие отзыва
|
|
%%% - блокировку/разблокировку пользователя
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
-module(admin_moderation_tests).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-export([test/0]).
|
|
|
|
%%%===================================================================
|
|
%%% Главная тестовая функция
|
|
%%%===================================================================
|
|
|
|
-spec test() -> ok.
|
|
test() ->
|
|
ct:pal("=== Admin Moderation Tests ==="),
|
|
Token = api_test_runner:get_admin_token(),
|
|
UserToken = api_test_runner:get_user_token(),
|
|
|
|
% Создаём календарь и событие
|
|
CalId = api_test_runner:create_calendar(UserToken, #{title => <<"ModTestCal">>}),
|
|
EventId = api_test_runner:create_event(UserToken, CalId, #{
|
|
title => <<"Event to moderate">>,
|
|
start_time => api_test_runner:future_date(),
|
|
duration => 60
|
|
}),
|
|
|
|
% Создаём пользователя для блокировки
|
|
UserEmail = api_test_runner:unique_email(<<"moduser">>),
|
|
UserTok = api_test_runner:register_and_login(UserEmail, <<"pass">>),
|
|
#{<<"id">> := UserId} = api_test_runner:client_get(<<"/v1/user/me">>, UserTok),
|
|
|
|
% Создаём отзыв (требуется участие)
|
|
#{<<"id">> := BookingId} = api_test_runner:client_post(
|
|
<<"/v1/events/", EventId/binary, "/bookings">>, UserTok, #{}),
|
|
api_test_runner:client_put(<<"/v1/bookings/", BookingId/binary>>, UserToken,
|
|
#{action => <<"confirm">>}),
|
|
#{<<"id">> := ReviewId} = api_test_runner:client_post(<<"/v1/reviews">>, UserTok, #{
|
|
target_type => <<"event">>,
|
|
target_id => EventId,
|
|
rating => 3,
|
|
comment => <<"Moderate me">>
|
|
}),
|
|
|
|
% Тесты модерации
|
|
test_freeze_calendar(Token, CalId),
|
|
test_unfreeze_calendar(Token, CalId),
|
|
test_freeze_event(Token, EventId),
|
|
test_unfreeze_event(Token, EventId),
|
|
test_hide_review(Token, ReviewId),
|
|
test_unhide_review(Token, ReviewId),
|
|
test_block_user(Token, UserId),
|
|
test_unblock_user(Token, UserId),
|
|
|
|
ct:pal("=== All admin moderation tests passed ==="),
|
|
ok.
|
|
|
|
%%%===================================================================
|
|
%%% Тестовые функции
|
|
%%%===================================================================
|
|
|
|
test_freeze_calendar(Token, Id) ->
|
|
ct:pal(" TEST: Freeze calendar"),
|
|
Path = <<"/v1/admin/calendar/", Id/binary>>,
|
|
Body = #{<<"action">> => <<"freeze">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"frozen">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_unfreeze_calendar(Token, Id) ->
|
|
ct:pal(" TEST: Unfreeze calendar"),
|
|
Path = <<"/v1/admin/calendar/", Id/binary>>,
|
|
Body = #{<<"action">> => <<"unfreeze">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"active">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_freeze_event(Token, Id) ->
|
|
ct:pal(" TEST: Freeze event"),
|
|
Path = <<"/v1/admin/event/", Id/binary>>,
|
|
Body = #{<<"action">> => <<"freeze">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"frozen">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_unfreeze_event(Token, Id) ->
|
|
ct:pal(" TEST: Unfreeze event"),
|
|
Path = <<"/v1/admin/event/", Id/binary>>,
|
|
Body = #{<<"action">> => <<"unfreeze">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"active">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_hide_review(Token, ReviewId) ->
|
|
ct:pal(" TEST: Hide review"),
|
|
Path = <<"/v1/admin/review/", ReviewId/binary>>,
|
|
Body = #{<<"action">> => <<"hide">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"hidden">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_unhide_review(Token, ReviewId) ->
|
|
ct:pal(" TEST: Unhide review"),
|
|
Path = <<"/v1/admin/review/", ReviewId/binary>>,
|
|
Body = #{<<"action">> => <<"unhide">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"visible">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_block_user(Token, UserId) ->
|
|
ct:pal(" TEST: Block user"),
|
|
Path = <<"/v1/admin/user/", UserId/binary>>,
|
|
Body = #{<<"action">> => <<"block">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"blocked">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK").
|
|
|
|
test_unblock_user(Token, UserId) ->
|
|
ct:pal(" TEST: Unblock user"),
|
|
Path = <<"/v1/admin/user/", UserId/binary>>,
|
|
Body = #{<<"action">> => <<"unblock">>, <<"reason">> => <<"Test">>},
|
|
Resp = api_test_runner:admin_put(Path, Token, Body),
|
|
?assertEqual(<<"active">>, maps:get(<<"status">>, Resp)),
|
|
ct:pal(" OK"). |