55 QueueSpecification ,
66 QueueType ,
77)
8+ from rabbitmq_amqp_python_client .exceptions import (
9+ ValidationCodeException ,
10+ )
811
912
1013def test_declare_delete_exchange () -> None :
@@ -33,7 +36,7 @@ def test_declare_purge_delete_queue() -> None:
3336 management = connection .management ()
3437
3538 queue_info = management .declare_queue (
36- QueueSpecification (name = queue_name , queue_type = QueueType .quorum , arguments = {} )
39+ QueueSpecification (name = queue_name , queue_type = QueueType .quorum )
3740 )
3841
3942 assert queue_info .name == queue_name
@@ -57,7 +60,7 @@ def test_bind_exchange_to_queue() -> None:
5760 management .declare_exchange (ExchangeSpecification (name = exchange_name , arguments = {}))
5861
5962 management .declare_queue (
60- QueueSpecification (name = queue_name , queue_type = QueueType .quorum , arguments = {} )
63+ QueueSpecification (name = queue_name , queue_type = QueueType .quorum )
6164 )
6265
6366 binding_exchange_queue_path = management .bind (
@@ -88,20 +91,113 @@ def test_bind_exchange_to_queue() -> None:
8891 management .unbind (binding_exchange_queue_path )
8992
9093
91- def test_queue_info () -> None :
94+ def test_queue_info_with_validations () -> None :
9295 connection = Connection ("amqp://guest:guest@localhost:5672/" )
9396 connection .dial ()
9497
95- queue_name = "test-bind-exchange-to-queue-queue "
98+ queue_name = "test_queue_info_with_validation "
9699 management = connection .management ()
97100
98101 queue_specification = QueueSpecification (
99- name = queue_name , queue_type = QueueType .quorum , arguments = {}
102+ name = queue_name ,
103+ queue_type = QueueType .quorum ,
100104 )
101105 management .declare_queue (queue_specification )
102106
103107 queue_info = management .queue_info (queue_name = queue_name )
104108
109+ management .delete_queue (queue_name )
110+
105111 assert queue_info .name == queue_name
106112 assert queue_info .queue_type == queue_specification .queue_type
107113 assert queue_info .is_durable == queue_specification .is_durable
114+ assert queue_info .message_count == 0
115+
116+
117+ def test_queue_precondition_fail () -> None :
118+ connection = Connection ("amqp://guest:guest@localhost:5672/" )
119+ connection .dial ()
120+ test_failure = True
121+
122+ queue_name = "test-queue_precondition_fail"
123+ management = connection .management ()
124+
125+ queue_specification = QueueSpecification (
126+ name = queue_name , queue_type = QueueType .quorum , is_auto_delete = False
127+ )
128+ management .declare_queue (queue_specification )
129+
130+ management .declare_queue (queue_specification )
131+
132+ queue_specification = QueueSpecification (
133+ name = queue_name ,
134+ queue_type = QueueType .quorum ,
135+ is_auto_delete = True ,
136+ )
137+
138+ management .delete_queue (queue_name )
139+
140+ try :
141+ management .declare_queue (queue_specification )
142+ except ValidationCodeException :
143+ test_failure = False
144+
145+ assert test_failure is False
146+
147+
148+ def test_declare_classic_queue () -> None :
149+ connection = Connection ("amqp://guest:guest@localhost:5672/" )
150+ connection .dial ()
151+
152+ queue_name = "test-declare_classic_queue"
153+ management = connection .management ()
154+
155+ queue_specification = QueueSpecification (
156+ name = queue_name ,
157+ queue_type = QueueType .classic ,
158+ is_auto_delete = False ,
159+ )
160+ queue_info = management .declare_queue (queue_specification )
161+
162+ assert queue_info .name == queue_specification .name
163+ assert queue_info .queue_type == queue_specification .queue_type
164+
165+ management .delete_queue (queue_name )
166+
167+
168+ def test_declare_queue_with_args () -> None :
169+ connection = Connection ("amqp://guest:guest@localhost:5672/" )
170+ connection .dial ()
171+
172+ queue_name = "test-queue_with_args"
173+ management = connection .management ()
174+
175+ queue_specification = QueueSpecification (
176+ name = queue_name ,
177+ queue_type = QueueType .classic ,
178+ is_auto_delete = False ,
179+ dead_letter_exchange = "my_exchange" ,
180+ dead_letter_routing_key = "my_key" ,
181+ max_len = 50000000 ,
182+ max_len_bytes = 1000000000 ,
183+ expires = 2000 ,
184+ single_active_consumer = True ,
185+ )
186+
187+ queue_info = management .declare_queue (queue_specification )
188+
189+ assert queue_specification .name == queue_info .name
190+ assert queue_specification .is_auto_delete == queue_info .is_auto_delete
191+ assert queue_specification .dead_letter_exchange == queue_info .dead_letter_exchange
192+ assert (
193+ queue_specification .dead_letter_routing_key
194+ == queue_info .dead_letter_routing_key
195+ )
196+ assert queue_specification .max_len == queue_info .max_len
197+ assert queue_specification .max_len_bytes == queue_info .max_len_bytes
198+ assert queue_specification .expires == queue_info .expires
199+ assert (
200+ queue_specification .single_active_consumer == queue_info .single_active_consumer
201+ )
202+
203+ management .delete_queue (queue_name )
0 commit comments