Просмотр исходного кода

fix(mgmt): add subscribe options into the result of the client subscriptions API

firest 3 лет назад
Родитель
Сommit
8d01e8a697

+ 8 - 6
apps/emqx_management/src/emqx_mgmt_api_clients.erl

@@ -564,12 +564,14 @@ subscriptions(get, #{bindings := #{clientid := ClientID}}) ->
         {Node, Subs} ->
             Formatter =
                 fun({Topic, SubOpts}) ->
-                    #{
-                        node => Node,
-                        clientid => ClientID,
-                        topic => Topic,
-                        qos => maps:get(qos, SubOpts)
-                    }
+                    maps:merge(
+                        #{
+                            node => Node,
+                            clientid => ClientID,
+                            topic => Topic
+                        },
+                        maps:with([qos, nl, rap, rh], SubOpts)
+                    )
                 end,
             {200, lists:map(Formatter, Subs)}
     end.

+ 26 - 0
apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl

@@ -105,6 +105,32 @@ t_clients(_) ->
     ?assertEqual(AfterSubTopic, Topic),
     ?assertEqual(AfterSubQos, Qos),
 
+    %% get /clients/:clientid/subscriptions
+    SubscriptionsPath = emqx_mgmt_api_test_util:api_path([
+        "clients",
+        binary_to_list(ClientId1),
+        "subscriptions"
+    ]),
+    {ok, SubscriptionsRes} = emqx_mgmt_api_test_util:request_api(
+        get,
+        SubscriptionsPath,
+        "",
+        AuthHeader
+    ),
+    [SubscriptionsData] = emqx_json:decode(SubscriptionsRes, [return_maps]),
+    ?assertMatch(
+        #{
+            <<"clientid">> := ClientId1,
+            <<"nl">> := _,
+            <<"rap">> := _,
+            <<"rh">> := _,
+            <<"node">> := _,
+            <<"qos">> := Qos,
+            <<"topic">> := Topic
+        },
+        SubscriptionsData
+    ),
+
     %% post /clients/:clientid/unsubscribe
     UnSubscribePath = emqx_mgmt_api_test_util:api_path([
         "clients",