From 7bfe2fd66fe6ea5adde78ff1653b9f959c589346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnaud=20Cogolu=C3=A8gnes?= Date: Fri, 24 Jan 2025 14:57:44 +0100 Subject: [PATCH] Return 404 in AMQP management queue purge for non-existing queue --- deps/rabbit/src/rabbit_amqp_management.erl | 4 +++- deps/rabbitmq_amqp_client/test/management_SUITE.erl | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/deps/rabbit/src/rabbit_amqp_management.erl b/deps/rabbit/src/rabbit_amqp_management.erl index 9cd2669f57b1..092d59314298 100644 --- a/deps/rabbit/src/rabbit_amqp_management.erl +++ b/deps/rabbit/src/rabbit_amqp_management.erl @@ -256,7 +256,9 @@ handle_http_req(<<"DELETE">>, [rabbit_misc:rs(QName)]) end end) - catch exit:#amqp_error{explanation = Explanation} -> + catch exit:#amqp_error{name = not_found, explanation = Explanation} -> + throw(<<"404">>, Explanation, []); + exit:#amqp_error{explanation = Explanation} -> throw(<<"400">>, Explanation, []) end; diff --git a/deps/rabbitmq_amqp_client/test/management_SUITE.erl b/deps/rabbitmq_amqp_client/test/management_SUITE.erl index 1cee89c0b8b4..8e025951a2b5 100644 --- a/deps/rabbitmq_amqp_client/test/management_SUITE.erl +++ b/deps/rabbitmq_amqp_client/test/management_SUITE.erl @@ -75,6 +75,7 @@ groups() -> unbind_bad_binding_path_segment, exclusive_queue, purge_stream, + purge_non_existing_queue_should_return_not_found, pipeline, multiple_link_pairs, link_attach_order, @@ -773,6 +774,18 @@ purge_stream(Config) -> {ok, #{}} = rabbitmq_amqp_client:delete_queue(LinkPair, QName), ok = cleanup(Init). +purge_non_existing_queue_should_return_not_found(Config) -> + Init = {_, LinkPair} = init(Config), + QName = atom_to_binary(?FUNCTION_NAME), + + {error, Resp} = rabbitmq_amqp_client:purge_queue(LinkPair, QName), + ?assertMatch(#{subject := <<"404">>}, amqp10_msg:properties(Resp)), + #'v1_0.amqp_value'{content = {utf8, Reason}} = amqp10_msg:body(Resp), + ?assertEqual(<<"no queue '", QName/binary, "' in vhost '/'">>, + Reason), + + ok = cleanup(Init). + queue_topology(Config) -> NodeNames = rabbit_ct_broker_helpers:get_node_configs(Config, nodename), Nodes = [N0, N1, N2] = lists:map(fun erlang:atom_to_binary/1, NodeNames),