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

Merge pull request #12141 from JimMoen/fix-shared-sub-api-internal-error

Fix shared sub api internal error
JimMoen 2 лет назад
Родитель
Сommit
6552e0523a

+ 2 - 0
apps/emqx/.gitignore

@@ -0,0 +1,2 @@
+# See: emqx_common_test_helpers:copy_acl_conf/0
+etc/acl.conf

+ 3 - 1
apps/emqx_management/src/emqx_mgmt_api_topics.erl

@@ -115,7 +115,9 @@ do_list(Params) ->
         {200, format_list_response(Pager, QResult)}
     catch
         throw:{error, page_limit_invalid} ->
-            {400, #{code => <<"INVALID_PARAMETER">>, message => <<"page_limit_invalid">>}}
+            {400, #{code => <<"INVALID_PARAMETER">>, message => <<"page_limit_invalid">>}};
+        error:{invalid_topic_filter, _} ->
+            {400, #{code => <<"INVALID_PARAMTER">>, message => <<"topic_filter_invalid">>}}
     end.
 
 lookup(#{topic := Topic}) ->

+ 17 - 0
apps/emqx_management/test/emqx_mgmt_api_topics_SUITE.erl

@@ -155,3 +155,20 @@ t_shared_topics(_Configs) ->
     ),
 
     ok = emqtt:stop(Client).
+
+t_shared_topics_invalid(_Config) ->
+    %% no real topic
+    InvalidShareTopicFilter = <<"$share/group">>,
+    Path = emqx_mgmt_api_test_util:api_path(["topics"]),
+    QS = uri_string:compose_query([
+        {"topic", InvalidShareTopicFilter},
+        {"node", atom_to_list(node())}
+    ]),
+    Headers = emqx_mgmt_api_test_util:auth_header_(),
+    {error, {{_, 400, _}, _RespHeaders, Body}} = emqx_mgmt_api_test_util:request_api(
+        get, Path, QS, Headers, [], #{return_all => true}
+    ),
+    ?assertMatch(
+        #{<<"code">> := <<"INVALID_PARAMTER">>, <<"message">> := <<"topic_filter_invalid">>},
+        emqx_utils_json:decode(Body, [return_maps])
+    ).

+ 1 - 0
changes/fix-12141.en.md

@@ -0,0 +1 @@
+Fixed API endpoint `/v5/topics` to return `InternalError` with HTTP status 500 by invalid topic filter.