5
5
QueueSpecification ,
6
6
QueueType ,
7
7
)
8
+ from rabbitmq_amqp_python_client .exceptions import (
9
+ ValidationCodeException ,
10
+ )
8
11
9
12
10
13
def test_declare_delete_exchange () -> None :
@@ -33,7 +36,7 @@ def test_declare_purge_delete_queue() -> None:
33
36
management = connection .management ()
34
37
35
38
queue_info = management .declare_queue (
36
- QueueSpecification (name = queue_name , queue_type = QueueType .quorum , arguments = {} )
39
+ QueueSpecification (name = queue_name , queue_type = QueueType .quorum )
37
40
)
38
41
39
42
assert queue_info .name == queue_name
@@ -57,7 +60,7 @@ def test_bind_exchange_to_queue() -> None:
57
60
management .declare_exchange (ExchangeSpecification (name = exchange_name , arguments = {}))
58
61
59
62
management .declare_queue (
60
- QueueSpecification (name = queue_name , queue_type = QueueType .quorum , arguments = {} )
63
+ QueueSpecification (name = queue_name , queue_type = QueueType .quorum )
61
64
)
62
65
63
66
binding_exchange_queue_path = management .bind (
@@ -88,20 +91,113 @@ def test_bind_exchange_to_queue() -> None:
88
91
management .unbind (binding_exchange_queue_path )
89
92
90
93
91
- def test_queue_info () -> None :
94
+ def test_queue_info_with_validations () -> None :
92
95
connection = Connection ("amqp://guest:guest@localhost:5672/" )
93
96
connection .dial ()
94
97
95
- queue_name = "test-bind-exchange-to-queue-queue "
98
+ queue_name = "test_queue_info_with_validation "
96
99
management = connection .management ()
97
100
98
101
queue_specification = QueueSpecification (
99
- name = queue_name , queue_type = QueueType .quorum , arguments = {}
102
+ name = queue_name ,
103
+ queue_type = QueueType .quorum ,
100
104
)
101
105
management .declare_queue (queue_specification )
102
106
103
107
queue_info = management .queue_info (queue_name = queue_name )
104
108
109
+ management .delete_queue (queue_name )
110
+
105
111
assert queue_info .name == queue_name
106
112
assert queue_info .queue_type == queue_specification .queue_type
107
113
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