fix(emqx_gateway): return 404 for unknown listener id

This commit is contained in:
Stefan Strigler 2023-07-06 15:25:50 +02:00
parent d2bea433f5
commit 3bc419ee64
3 changed files with 19 additions and 3 deletions

View File

@ -112,8 +112,13 @@ listeners(post, #{bindings := #{name := Name0}, body := LConf}) ->
listeners_insta(delete, #{bindings := #{name := Name0, id := ListenerId}}) ->
with_gateway(Name0, fun(_GwName, _) ->
ok = emqx_gateway_http:remove_listener(ListenerId),
{204}
case emqx_gateway_conf:listener(ListenerId) of
{ok, _Listener} ->
ok = emqx_gateway_http:remove_listener(ListenerId),
{204};
{error, not_found} ->
return_http_error(404, "Listener not found")
end
end);
listeners_insta(get, #{bindings := #{name := Name0, id := ListenerId}}) ->
with_gateway(Name0, fun(_GwName, _) ->

View File

@ -550,7 +550,7 @@ with_gateway(GwName0, Fun) ->
return_http_error(400, [K, " is required"]);
%% Exceptions from emqx_gateway_utils:parse_listener_id/1
error:{invalid_listener_id, Id} ->
return_http_error(400, ["Invalid listener id: ", Id]);
return_http_error(404, ["Listener not found: ", Id]);
%% Exceptions from emqx:get_config/1
error:{config_not_found, Path0} ->
Path = lists:concat(

View File

@ -409,6 +409,7 @@ t_listeners_tcp(_) ->
{204, _} = request(delete, "/gateways/stomp/listeners/stomp:tcp:def"),
{404, _} = request(get, "/gateways/stomp/listeners/stomp:tcp:def"),
{404, _} = request(delete, "/gateways/stomp/listeners/stomp:tcp:def"),
ok.
t_listeners_max_conns(_) ->
@ -480,9 +481,19 @@ t_listeners_authn(_) ->
{200, ConfResp3} = request(get, Path),
assert_confs(AuthConf2, ConfResp3),
{404, _} = request(get, Path ++ "/users/not_exists"),
{404, _} = request(delete, Path ++ "/users/not_exists"),
{204, _} = request(delete, Path),
%% FIXME: 204?
{204, _} = request(get, Path),
BadPath = "/gateways/stomp/listeners/stomp:tcp:not_exists/authentication/users/foo",
{404, _} = request(get, BadPath),
{404, _} = request(delete, BadPath),
{404, _} = request(get, "/gateways/stomp/listeners/not_exists"),
{404, _} = request(delete, "/gateways/stomp/listeners/not_exists"),
ok.
t_listeners_authn_data_mgmt(_) ->