@@ -101,6 +101,83 @@ public function testItRejectsTheMessageIfTheExceptionIsARejectMessageExceptionIn
101
101
throw new WillNeverWorkException ('Well... ' );
102
102
});
103
103
}
104
+
105
+ /**
106
+ * @expectedException \Symfony\Component\Messenger\Exception\TransportException
107
+ */
108
+ public function testItThrowsATransportExceptionIfItCannotAcknowledgeMessage ()
109
+ {
110
+ $ serializer = new Serializer (
111
+ new SerializerComponent \Serializer ([new ObjectNormalizer ()], ['json ' => new JsonEncoder ()])
112
+ );
113
+
114
+ $ envelope = $ this ->getMockBuilder (\AMQPEnvelope::class)->getMock ();
115
+ $ envelope ->method ('getBody ' )->willReturn ('{"message": "Hi"} ' );
116
+ $ envelope ->method ('getHeaders ' )->willReturn ([
117
+ 'type ' => DummyMessage::class,
118
+ ]);
119
+
120
+ $ connection = $ this ->getMockBuilder (Connection::class)->disableOriginalConstructor ()->getMock ();
121
+ $ connection ->method ('get ' )->willReturn ($ envelope );
122
+
123
+ $ connection ->method ('ack ' )->with ($ envelope )->willThrowException (new \AMQPException ());
124
+
125
+ $ receiver = new AmqpReceiver ($ connection , $ serializer );
126
+ $ receiver ->receive (function (?Envelope $ envelope ) use ($ receiver ) {
127
+ $ receiver ->stop ();
128
+ });
129
+ }
130
+
131
+ /**
132
+ * @expectedException \Symfony\Component\Messenger\Exception\TransportException
133
+ */
134
+ public function testItThrowsATransportExceptionIfItCannotRejectMessage ()
135
+ {
136
+ $ serializer = new Serializer (
137
+ new SerializerComponent \Serializer ([new ObjectNormalizer ()], ['json ' => new JsonEncoder ()])
138
+ );
139
+
140
+ $ envelope = $ this ->getMockBuilder (\AMQPEnvelope::class)->getMock ();
141
+ $ envelope ->method ('getBody ' )->willReturn ('{"message": "Hi"} ' );
142
+ $ envelope ->method ('getHeaders ' )->willReturn ([
143
+ 'type ' => DummyMessage::class,
144
+ ]);
145
+
146
+ $ connection = $ this ->getMockBuilder (Connection::class)->disableOriginalConstructor ()->getMock ();
147
+ $ connection ->method ('get ' )->willReturn ($ envelope );
148
+ $ connection ->method ('reject ' )->with ($ envelope )->willThrowException (new \AMQPException ());
149
+
150
+ $ receiver = new AmqpReceiver ($ connection , $ serializer );
151
+ $ receiver ->receive (function () {
152
+ throw new WillNeverWorkException ('Well... ' );
153
+ });
154
+ }
155
+
156
+ /**
157
+ * @expectedException \Symfony\Component\Messenger\Exception\TransportException
158
+ */
159
+ public function testItThrowsATransportExceptionIfItCannotNonAcknowledgeMessage ()
160
+ {
161
+ $ serializer = new Serializer (
162
+ new SerializerComponent \Serializer ([new ObjectNormalizer ()], ['json ' => new JsonEncoder ()])
163
+ );
164
+
165
+ $ envelope = $ this ->getMockBuilder (\AMQPEnvelope::class)->getMock ();
166
+ $ envelope ->method ('getBody ' )->willReturn ('{"message": "Hi"} ' );
167
+ $ envelope ->method ('getHeaders ' )->willReturn ([
168
+ 'type ' => DummyMessage::class,
169
+ ]);
170
+
171
+ $ connection = $ this ->getMockBuilder (Connection::class)->disableOriginalConstructor ()->getMock ();
172
+ $ connection ->method ('get ' )->willReturn ($ envelope );
173
+
174
+ $ connection ->method ('nack ' )->with ($ envelope )->willThrowException (new \AMQPException ());
175
+
176
+ $ receiver = new AmqpReceiver ($ connection , $ serializer );
177
+ $ receiver ->receive (function () {
178
+ throw new InterruptException ('Well... ' );
179
+ });
180
+ }
104
181
}
105
182
106
183
class InterruptException extends \Exception
0 commit comments