Merge pull request #13234 from thalesmg/fix-clients-api-client-attrs-union-r57-20240611
fix(client mgmt api): allow projecting `client_attrs` from client fields
This commit is contained in:
commit
c81a3ebc0a
|
@ -815,7 +815,8 @@ fields(mqueue_message) ->
|
|||
fields(requested_client_fields) ->
|
||||
%% NOTE: some Client fields actually returned in response are missing in schema:
|
||||
%% enable_authn, is_persistent, listener, peerport
|
||||
ClientFields = [element(1, F) || F <- fields(client)],
|
||||
ClientFields0 = [element(1, F) || F <- fields(client)],
|
||||
ClientFields = [client_attrs | ClientFields0],
|
||||
[
|
||||
{fields,
|
||||
hoconsc:mk(
|
||||
|
|
|
@ -1032,6 +1032,7 @@ t_query_multiple_clients_urlencode(_) ->
|
|||
t_query_clients_with_fields(_) ->
|
||||
process_flag(trap_exit, true),
|
||||
TCBin = atom_to_binary(?FUNCTION_NAME),
|
||||
APIPort = 18083,
|
||||
ClientId = <<TCBin/binary, "_client">>,
|
||||
Username = <<TCBin/binary, "_user">>,
|
||||
{ok, C} = emqtt:start_link(#{clientid => ClientId, username => Username}),
|
||||
|
@ -1040,6 +1041,13 @@ t_query_clients_with_fields(_) ->
|
|||
|
||||
Auth = emqx_mgmt_api_test_util:auth_header_(),
|
||||
?assertEqual([#{<<"clientid">> => ClientId}], get_clients_all_fields(Auth, "fields=clientid")),
|
||||
?assertMatch(
|
||||
{ok,
|
||||
{{_, 200, _}, _, #{
|
||||
<<"data">> := [#{<<"client_attrs">> := #{}}]
|
||||
}}},
|
||||
list_request(APIPort, "fields=client_attrs")
|
||||
),
|
||||
?assertEqual(
|
||||
[#{<<"clientid">> => ClientId, <<"username">> => Username}],
|
||||
get_clients_all_fields(Auth, "fields=clientid,username")
|
||||
|
@ -1072,6 +1080,7 @@ get_clients(Auth, Qs, ExpectError, ClientIdOnly) ->
|
|||
Resp = emqx_mgmt_api_test_util:request_api(get, ClientsPath, Qs, Auth),
|
||||
case ExpectError of
|
||||
false ->
|
||||
ct:pal("get clients response:\n ~p", [Resp]),
|
||||
{ok, Body} = Resp,
|
||||
#{<<"data">> := Clients} = emqx_utils_json:decode(Body),
|
||||
case ClientIdOnly of
|
||||
|
|
Loading…
Reference in New Issue