@@ -19,7 +19,8 @@ all() ->
1919all_tests () ->
2020 [
2121 normal_queue_delete_with ,
22- internal_queue_delete_with
22+ internal_owner_queue_delete_with ,
23+ internal_no_owner_queue_delete_with
2324 ].
2425
2526groups () ->
@@ -44,7 +45,9 @@ end_per_group(_Group, Config) ->
4445
4546init_per_testcase (Testcase , Config ) ->
4647 Config1 = rabbit_ct_helpers :testcase_started (Config , Testcase ),
47- rabbit_ct_helpers :run_steps (Config1 ,
48+ QName = rabbit_misc :r (<<" /" >>, queue , rabbit_data_coercion :to_binary (Testcase )),
49+ Config2 = rabbit_ct_helpers :set_config (Config1 , [{queue_name , QName }]),
50+ rabbit_ct_helpers :run_steps (Config2 ,
4851 rabbit_ct_client_helpers :setup_steps ()).
4952
5053end_per_testcase (Testcase , Config ) ->
@@ -58,7 +61,7 @@ end_per_testcase(Testcase, Config) ->
5861% %%===================================================================
5962
6063normal_queue_delete_with (Config ) ->
61- QName = queue_name ( Config , << " normal " >> ),
64+ QName = ? config ( queue_name , Config ),
6265 Node = rabbit_ct_broker_helpers :get_node_config (Config , 0 , nodename ),
6366 Queue = amqqueue :new (QName ,
6467 none , % % pid
@@ -78,8 +81,8 @@ normal_queue_delete_with(Config) ->
7881
7982 ok .
8083
81- internal_queue_delete_with (Config ) ->
82- QName = queue_name ( Config , << " internal_protected " >> ),
84+ internal_owner_queue_delete_with (Config ) ->
85+ QName = ? config ( queue_name , Config ),
8386 Node = rabbit_ct_broker_helpers :get_node_config (Config , 0 , nodename ),
8487 Queue = amqqueue :new (QName ,
8588 none , % % pid
@@ -96,7 +99,7 @@ internal_queue_delete_with(Config) ->
9699
97100 ? assertException (exit , {exception ,
98101 {amqp_error , resource_locked ,
99- " Cannot delete protected queue 'rabbit_amqqueue_tests/internal_protected ' in vhost '/'." ,
102+ " Cannot delete protected queue 'internal_owner_queue_delete_with ' in vhost '/'." ,
100103 none }}, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_amqqueue , delete_with , [QName , false , false , <<" dummy" >>])),
101104
102105 ? assertMatch ({ok , _ }, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_amqqueue , lookup , [QName ])),
@@ -107,11 +110,31 @@ internal_queue_delete_with(Config) ->
107110
108111 ok .
109112
110- % % Utility
113+ internal_no_owner_queue_delete_with (Config ) ->
114+ QName = ? config (queue_name , Config ),
115+ Node = rabbit_ct_broker_helpers :get_node_config (Config , 0 , nodename ),
116+ Queue = amqqueue :new (QName ,
117+ none , % % pid
118+ true , % % durable
119+ false , % % auto delete
120+ none , % % owner,
121+ [],
122+ <<" /" >>,
123+ #{},
124+ rabbit_classic_queue ),
125+ IQueue = amqqueue :make_internal (Queue ),
126+
127+ ? assertMatch ({new , _Q }, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_queue_type , declare , [IQueue , Node ])),
128+
129+ ? assertException (exit , {exception ,
130+ {amqp_error , resource_locked ,
131+ " Cannot delete protected queue 'internal_no_owner_queue_delete_with' in vhost '/'." ,
132+ none }}, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_amqqueue , delete_with , [QName , false , false , <<" dummy" >>])),
111133
112- queue_name (Config , Name ) ->
113- Name1 = iolist_to_binary (rabbit_ct_helpers :config_to_testcase_name (Config , Name )),
114- queue_name (Name1 ).
134+ ? assertMatch ({ok , _ }, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_amqqueue , lookup , [QName ])),
115135
116- queue_name (Name ) ->
117- rabbit_misc :r (<<" /" >>, queue , Name ).
136+ ? assertMatch ({ok , _ }, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_amqqueue , delete_with , [QName , false , false , ? INTERNAL_USER ])),
137+
138+ ? assertMatch ({error , not_found }, rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_amqqueue , lookup , [QName ])),
139+
140+ ok .
0 commit comments