chore(api): add api_sub http api test

This commit is contained in:
zhongwencool 2022-01-21 10:56:41 +08:00
parent f36791bab9
commit 140a1c0276
2 changed files with 62 additions and 3 deletions

View File

@ -91,12 +91,14 @@ list(#{node := Node} = Bindings, Params) ->
add_meta(Params, List) -> add_meta(Params, List) ->
Page = emqx_mgmt_api:page(Params), Page = emqx_mgmt_api:page(Params),
Limit = emqx_mgmt_api:limit(Params), Limit = emqx_mgmt_api:limit(Params),
Data = lists:sublist(List, (Page - 1) * Limit + 1, Limit), Count = erlang:length(List),
Start = (Page - 1) * Limit + 1,
Data = lists:sublist(List, Start, Limit),
#{meta => #{ #{meta => #{
page => Page, page => Page,
limit => Limit, limit => Limit,
hasnext => erlang:length(Data) >= Limit, hasnext => Start + Limit - 1 < Count,
count => erlang:length(List) count => Count
}, },
data => Data, data => Data,
code => 0 code => 0

View File

@ -551,6 +551,8 @@ t_routes_and_subscriptions(_) ->
[Subscription] = get(<<"data">>, Result3), [Subscription] = get(<<"data">>, Result3),
?assertEqual(Topic, maps:get(<<"topic">>, Subscription)), ?assertEqual(Topic, maps:get(<<"topic">>, Subscription)),
?assertEqual(ClientId, maps:get(<<"clientid">>, Subscription)), ?assertEqual(ClientId, maps:get(<<"clientid">>, Subscription)),
?assertMatch(#{<<"page">> := 1, <<"limit">> := 10000, <<"hasnext">> := false, <<"count">> := 1},
get(<<"meta">>, Result3)),
{ok, Result3} = request_api(get, api_path(["nodes", atom_to_list(node()), "subscriptions"]), auth_header_()), {ok, Result3} = request_api(get, api_path(["nodes", atom_to_list(node()), "subscriptions"]), auth_header_()),
@ -561,6 +563,61 @@ t_routes_and_subscriptions(_) ->
ok = emqtt:disconnect(C1). ok = emqtt:disconnect(C1).
t_subscription_topic(_Config) ->
ClientId = <<"myclient">>,
Topic = <<"topic">>,
Query = "topic=" ++ binary_to_list(Topic),
{ok, NonSubscription} = request_api(get, api_path(["subscriptions"]), Query, auth_header_()),
?assertEqual([], get(<<"data">>, NonSubscription)),
?assertMatch(#{<<"page">> := 1, <<"limit">> := 10000, <<"hasnext">> := false, <<"count">> := 0},
get(<<"meta">>, NonSubscription)),
{ok, NonSubscription1} = request_api(get, api_path(["nodes", atom_to_list(node()), "subscriptions"]),
Query, auth_header_()),
?assertEqual([], get(<<"data">>, NonSubscription1)),
?assertMatch(#{<<"page">> := 1, <<"limit">> := 10000, <<"hasnext">> := false, <<"count">> := 0},
get(<<"meta">>, NonSubscription)),
Conn =
[begin
{ok, C1} = emqtt:start_link(#{clean_start => true, proto_ver => ?MQTT_PROTO_V5,
clientid => <<ClientId/binary, (integer_to_binary(I))/binary>>}),
{ok, _} = emqtt:connect(C1),
{ok, _, [2]} = emqtt:subscribe(C1, Topic, qos2),
C1
end|| I <- lists:seq(1,10)],
{ok, Result3} = request_api(get, api_path(["subscriptions"]), Query, auth_header_()),
[Subscription | Subscriptions] = get(<<"data">>, Result3),
?assertEqual(Topic, maps:get(<<"topic">>, Subscription)),
?assertEqual(9, erlang:length(Subscriptions)),
?assertMatch(#{<<"page">> := 1, <<"limit">> := 10000, <<"hasnext">> := false, <<"count">> := 10},
get(<<"meta">>, Result3)),
{ok, Result3} = request_api(get, api_path(["nodes", atom_to_list(node()), "subscriptions"]), Query, auth_header_()),
?assertMatch(#{<<"page">> := 1, <<"limit">> := 10000, <<"hasnext">> := false, <<"count">> := 10},
get(<<"meta">>, Result3)),
Query1 = Query ++ "&_page=1&_limit=5",
{ok, Result4} = request_api(get, api_path(["subscriptions"]), Query1, auth_header_()),
?assertMatch(#{<<"page">> := 1, <<"limit">> := 5, <<"hasnext">> := true, <<"count">> := 10},
get(<<"meta">>, Result4)),
?assertEqual(5, erlang:length(get(<<"data">>, Result4))),
Query2 = Query ++ "&_page=2&_limit=5",
{ok, Result5} = request_api(get, api_path(["subscriptions"]), Query2, auth_header_()),
?assertMatch(#{<<"page">> := 2, <<"limit">> := 5, <<"hasnext">> := false, <<"count">> := 10},
get(<<"meta">>, Result5)),
?assertEqual(5, erlang:length(get(<<"data">>, Result4))),
Query3 = Query ++ "&_page=3&_limit=3",
{ok, Result6} = request_api(get, api_path(["subscriptions"]), Query3, auth_header_()),
?assertMatch(#{<<"page">> := 3, <<"limit">> := 3, <<"hasnext">> := true, <<"count">> := 10},
get(<<"meta">>, Result6)),
[ok = emqtt:disconnect(C1) ||C1 <- Conn],
ok.
t_stats(_) -> t_stats(_) ->
{ok, _} = request_api(get, api_path(["stats"]), auth_header_()), {ok, _} = request_api(get, api_path(["stats"]), auth_header_()),
{ok, _} = request_api(get, api_path(["nodes", atom_to_list(node()), "stats"]), auth_header_()), {ok, _} = request_api(get, api_path(["nodes", atom_to_list(node()), "stats"]), auth_header_()),