|
18 | 18 | use AsyncAws\Sqs\SqsClient;
|
19 | 19 | use AsyncAws\Sqs\ValueObject\Message;
|
20 | 20 | use PHPUnit\Framework\TestCase;
|
| 21 | +use Psr\Log\NullLogger; |
| 22 | +use Symfony\Component\HttpClient\MockHttpClient; |
| 23 | +use Symfony\Component\HttpClient\Response\MockResponse; |
21 | 24 | use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\Connection;
|
22 | 25 | use Symfony\Contracts\HttpClient\HttpClientInterface;
|
23 | 26 |
|
@@ -179,23 +182,23 @@ public function testFromDsnWithAccountAndEndpointOption()
|
179 | 182 | public function testFromDsnWithInvalidQueryString()
|
180 | 183 | {
|
181 | 184 | $this->expectException(\InvalidArgumentException::class);
|
182 |
| - $this->expectExceptionMessage('Unknown option found in DSN: [foo]. Allowed options are [buffer_size, wait_time, poll_timeout, visibility_timeout, auto_setup, access_key, secret_key, endpoint, region, queue_name, account, sslmode].'); |
| 185 | + $this->expectExceptionMessageMatches('|Unknown option found in DSN: \[foo\]\. Allowed options are \[buffer_size, |'); |
183 | 186 |
|
184 | 187 | Connection::fromDsn('sqs://default?foo=foo');
|
185 | 188 | }
|
186 | 189 |
|
187 | 190 | public function testFromDsnWithInvalidOption()
|
188 | 191 | {
|
189 | 192 | $this->expectException(\InvalidArgumentException::class);
|
190 |
| - $this->expectExceptionMessage('Unknown option found: [bar]. Allowed options are [buffer_size, wait_time, poll_timeout, visibility_timeout, auto_setup, access_key, secret_key, endpoint, region, queue_name, account, sslmode].'); |
| 193 | + $this->expectExceptionMessageMatches('|Unknown option found: \[bar\]\. Allowed options are \[buffer_size, |'); |
191 | 194 |
|
192 | 195 | Connection::fromDsn('sqs://default', ['bar' => 'bar']);
|
193 | 196 | }
|
194 | 197 |
|
195 | 198 | public function testFromDsnWithInvalidQueryStringAndOption()
|
196 | 199 | {
|
197 | 200 | $this->expectException(\InvalidArgumentException::class);
|
198 |
| - $this->expectExceptionMessage('Unknown option found: [bar]. Allowed options are [buffer_size, wait_time, poll_timeout, visibility_timeout, auto_setup, access_key, secret_key, endpoint, region, queue_name, account, sslmode].'); |
| 201 | + $this->expectExceptionMessageMatches('|Unknown option found: \[bar\]\. Allowed options are \[buffer_size, |'); |
199 | 202 |
|
200 | 203 | Connection::fromDsn('sqs://default?foo=foo', ['bar' => 'bar']);
|
201 | 204 | }
|
@@ -312,4 +315,83 @@ public function testGetQueueUrlNotCalled()
|
312 | 315 |
|
313 | 316 | $connection->delete('id');
|
314 | 317 | }
|
| 318 | + |
| 319 | + public function testLoggerWithoutDebugOption() |
| 320 | + { |
| 321 | + $client = new MockHttpClient([$this->getMockedQueueUrlResponse(), $this->getMockedReceiveMessageResponse()]); |
| 322 | + $logger = $this->getMockBuilder(NullLogger::class) |
| 323 | + ->disableOriginalConstructor() |
| 324 | + ->onlyMethods(['debug']) |
| 325 | + ->getMock(); |
| 326 | + $logger->expects($this->never())->method('debug'); |
| 327 | + $connection = Connection::fromDsn('sqs://default', ['access_key' => 'foo', 'secret_key' => 'bar', 'auto_setup' => false], $client, $logger); |
| 328 | + $connection->get(); |
| 329 | + } |
| 330 | + |
| 331 | + public function testLoggerWithDebugOption() |
| 332 | + { |
| 333 | + $client = new MockHttpClient([$this->getMockedQueueUrlResponse(), $this->getMockedReceiveMessageResponse()]); |
| 334 | + $logger = $this->getMockBuilder(NullLogger::class) |
| 335 | + ->disableOriginalConstructor() |
| 336 | + ->onlyMethods(['debug']) |
| 337 | + ->getMock(); |
| 338 | + $logger->expects($this->exactly(4))->method('debug'); |
| 339 | + $connection = Connection::fromDsn('sqs://default?debug=true', ['access_key' => 'foo', 'secret_key' => 'bar', 'auto_setup' => false], $client, $logger); |
| 340 | + $connection->get(); |
| 341 | + } |
| 342 | + |
| 343 | + private function getMockedQueueUrlResponse(): MockResponse |
| 344 | + { |
| 345 | + return new MockResponse(<<<XML |
| 346 | +<GetQueueUrlResponse> |
| 347 | + <GetQueueUrlResult> |
| 348 | + <QueueUrl>https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue</QueueUrl> |
| 349 | + </GetQueueUrlResult> |
| 350 | + <ResponseMetadata> |
| 351 | + <RequestId>470a6f13-2ed9-4181-ad8a-2fdea142988e</RequestId> |
| 352 | + </ResponseMetadata> |
| 353 | +</GetQueueUrlResponse> |
| 354 | +XML |
| 355 | + ); |
| 356 | + } |
| 357 | + |
| 358 | + private function getMockedReceiveMessageResponse(): MockResponse |
| 359 | + { |
| 360 | + return new MockResponse(<<<XML |
| 361 | +<ReceiveMessageResponse> |
| 362 | + <ReceiveMessageResult> |
| 363 | + <Message> |
| 364 | + <MessageId>5fea7756-0ea4-451a-a703-a558b933e274</MessageId> |
| 365 | + <ReceiptHandle> |
| 366 | + MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw |
| 367 | + Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE |
| 368 | + auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0= |
| 369 | + </ReceiptHandle> |
| 370 | + <MD5OfBody>fafb00f5732ab283681e124bf8747ed1</MD5OfBody> |
| 371 | + <Body>This is a test message</Body> |
| 372 | + <Attribute> |
| 373 | + <Name>SenderId</Name> |
| 374 | + <Value>195004372649</Value> |
| 375 | + </Attribute> |
| 376 | + <Attribute> |
| 377 | + <Name>SentTimestamp</Name> |
| 378 | + <Value>1238099229000</Value> |
| 379 | + </Attribute> |
| 380 | + <Attribute> |
| 381 | + <Name>ApproximateReceiveCount</Name> |
| 382 | + <Value>5</Value> |
| 383 | + </Attribute> |
| 384 | + <Attribute> |
| 385 | + <Name>ApproximateFirstReceiveTimestamp</Name> |
| 386 | + <Value>1250700979248</Value> |
| 387 | + </Attribute> |
| 388 | + </Message> |
| 389 | + </ReceiveMessageResult> |
| 390 | + <ResponseMetadata> |
| 391 | + <RequestId>b6633655-283d-45b4-aee4-4e84e0ae6afa</RequestId> |
| 392 | + </ResponseMetadata> |
| 393 | +</ReceiveMessageResponse> |
| 394 | +XML |
| 395 | + ); |
| 396 | + } |
315 | 397 | }
|
0 commit comments