From 80e4ffff752918fa4db08091a7eb8b2bdf27b576 Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Fri, 7 Jul 2023 13:17:52 +0200 Subject: [PATCH] fix(emqx_management): return 404 if plugin does not exist --- apps/emqx_management/src/emqx_mgmt_api_plugins.erl | 3 +++ apps/emqx_management/test/emqx_mgmt_api_plugins_SUITE.erl | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/apps/emqx_management/src/emqx_mgmt_api_plugins.erl b/apps/emqx_management/src/emqx_mgmt_api_plugins.erl index f50e44771..3db0c42fb 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_plugins.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_plugins.erl @@ -132,6 +132,7 @@ schema("/plugins/:name") -> parameters => [hoconsc:ref(name)], responses => #{ 204 => <<"Uninstall successfully">>, + 400 => emqx_dashboard_swagger:error_codes(['PARAM_ERROR'], <<"Bad parameter">>), 404 => emqx_dashboard_swagger:error_codes(['NOT_FOUND'], <<"Plugin Not Found">>) } } @@ -484,6 +485,8 @@ ensure_action(Name, restart) -> return(Code, ok) -> {Code}; +return(_, {error, #{error := "bad_info_file", return := {enoent, _} = Reason}}) -> + {404, #{code => 'NOT_FOUND', message => iolist_to_binary(io_lib:format("~p", [Reason]))}}; return(_, {error, Reason}) -> {400, #{code => 'PARAM_ERROR', message => iolist_to_binary(io_lib:format("~p", [Reason]))}}. diff --git a/apps/emqx_management/test/emqx_mgmt_api_plugins_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_plugins_SUITE.erl index 62fed8211..ba613abc4 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_plugins_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_plugins_SUITE.erl @@ -133,6 +133,14 @@ t_bad_plugin(Config) -> ) ). +t_delete_non_existing(_Config) -> + Path = emqx_mgmt_api_test_util:api_path(["plugins", "non_exists"]), + ?assertMatch( + {error, {_, 404, _}}, + emqx_mgmt_api_test_util:request_api(delete, Path) + ), + ok. + list_plugins() -> Path = emqx_mgmt_api_test_util:api_path(["plugins"]), case emqx_mgmt_api_test_util:request_api(get, Path) of