fix(backend): IP в аудите, closed_at тикетов и admin_activity в статистике. Refs EventHub/EventHubBack#27 #28 #29
This commit is contained in:
@@ -70,6 +70,8 @@ test() ->
|
||||
|
||||
test_stats_with_dates(SuperToken),
|
||||
test_node_metrics_history(SuperToken),
|
||||
test_avg_ticket_resolution_after_close(SuperToken, UserToken),
|
||||
test_admin_activity(SuperToken),
|
||||
|
||||
% Детальная статистика
|
||||
test_user_stats(SuperToken),
|
||||
@@ -116,6 +118,7 @@ test_stats_for_role(RoleName, Token, Strictness) ->
|
||||
?assert(maps:is_key(<<"tickets_by_day">>, Stats)),
|
||||
?assert(maps:is_key(<<"subscriptions_by_day">>, Stats)),
|
||||
?assert(maps:is_key(<<"pending_users_by_day">>, Stats)),
|
||||
?assert(maps:is_key(<<"avg_ticket_resolution_h">>, Stats)),
|
||||
% Проверка, что они действительно списки
|
||||
?assert(is_list(maps:get(<<"registrations_by_day">>, Stats))),
|
||||
?assert(is_list(maps:get(<<"events_by_day">>, Stats))),
|
||||
@@ -244,4 +247,35 @@ test_node_metrics_history(Token) ->
|
||||
?assert(maps:is_key(<<"memory_total">>, First)),
|
||||
?assert(maps:is_key(<<"memory_available">>, First)),
|
||||
?assert(maps:is_key(<<"cpu_utilization">>, First)),
|
||||
ct:pal(" OK: ~p metrics received", [length(Metrics)]).
|
||||
ct:pal(" OK: ~p metrics received", [length(Metrics)]).
|
||||
|
||||
test_avg_ticket_resolution_after_close(Token, UserToken) ->
|
||||
ct:pal(" TEST: avg_ticket_resolution_h after closing ticket"),
|
||||
Ticket = api_test_runner:client_post(<<"/v1/tickets">>, UserToken,
|
||||
#{<<"error_message">> => <<"Resolution metric">>, <<"stacktrace">> => <<"trace">>}),
|
||||
#{<<"id">> := TicketId} = Ticket,
|
||||
Path = <<"/v1/admin/tickets/", TicketId/binary>>,
|
||||
timer:sleep(20000),
|
||||
Closed = api_test_runner:admin_put(Path, Token, #{<<"status">> => <<"closed">>}),
|
||||
?assertEqual(<<"closed">>, maps:get(<<"status">>, Closed)),
|
||||
?assertNotEqual(<<"1970-01-01T00:00:00Z">>, maps:get(<<"closed_at">>, Closed)),
|
||||
Stats = api_test_runner:admin_get(<<"/v1/admin/stats">>, Token),
|
||||
Avg = maps:get(<<"avg_ticket_resolution_h">>, Stats),
|
||||
?assert(is_number(Avg)),
|
||||
?assert(Avg > 0.0),
|
||||
ct:pal(" OK: avg_ticket_resolution_h=~p", [Avg]).
|
||||
|
||||
test_admin_activity(Token) ->
|
||||
ct:pal(" TEST: admin_activity in dashboard stats"),
|
||||
Stats = api_test_runner:admin_get(<<"/v1/admin/stats">>, Token),
|
||||
Activity = maps:get(<<"admin_activity">>, Stats),
|
||||
?assert(is_list(Activity)),
|
||||
?assert(length(Activity) >= 1),
|
||||
First = hd(Activity),
|
||||
?assert(maps:is_key(<<"admin_id">>, First)),
|
||||
?assert(maps:is_key(<<"email">>, First)),
|
||||
?assert(maps:is_key(<<"role">>, First)),
|
||||
?assert(maps:is_key(<<"actions">>, First)),
|
||||
?assert(maps:is_key(<<"last_login">>, First)),
|
||||
?assert(maps:get(<<"actions">>, First) >= 1),
|
||||
ct:pal(" OK: ~p admin activity rows", [length(Activity)]).
|
||||
Reference in New Issue
Block a user