|
13 | 13 |
|
14 | 14 | use AsyncAws\Core\Exception\Http\HttpException;
|
15 | 15 | use AsyncAws\Core\Test\ResultMockFactory;
|
| 16 | +use AsyncAws\Sqs\Enum\QueueAttributeName; |
16 | 17 | use AsyncAws\Sqs\Result\GetQueueUrlResult;
|
| 18 | +use AsyncAws\Sqs\Result\QueueExistsWaiter; |
17 | 19 | use AsyncAws\Sqs\Result\ReceiveMessageResult;
|
18 | 20 | use AsyncAws\Sqs\SqsClient;
|
19 | 21 | use AsyncAws\Sqs\ValueObject\Message;
|
@@ -385,6 +387,43 @@ public function testKeepaliveWithTooSmallTtl()
|
385 | 387 | $connection->keepalive('123', 2);
|
386 | 388 | }
|
387 | 389 |
|
| 390 | + public function testQueueAttributesAndTags() |
| 391 | + { |
| 392 | + $queueName = 'queueName.fifo'; |
| 393 | + $queueAttributes = [ |
| 394 | + QueueAttributeName::MESSAGE_RETENTION_PERIOD => '900', |
| 395 | + QueueAttributeName::MAXIMUM_MESSAGE_SIZE => '1024', |
| 396 | + ]; |
| 397 | + $queueTags = ['tag1' => 'value1', 'tag2' => 'value2']; |
| 398 | + |
| 399 | + $queueExistsWaiter = ResultMockFactory::waiter(QueueExistsWaiter::class, QueueExistsWaiter::STATE_FAILURE); |
| 400 | + $client = $this->createMock(SqsClient::class); |
| 401 | + $client->method('queueExists')->willReturn($queueExistsWaiter); |
| 402 | + $client->expects($this->once())->method('createQueue')->with(['QueueName' => $queueName, 'Attributes' => array_merge($queueAttributes, [QueueAttributeName::FIFO_QUEUE => 'true']), 'tags' => $queueTags]); |
| 403 | + |
| 404 | + $connection = new Connection(['queue_name' => $queueName, 'queue_attributes' => $queueAttributes, 'queue_tags' => $queueTags], $client); |
| 405 | + |
| 406 | + $this
10000
->expectException(TransportException::class); |
| 407 | + $connection->setup(); |
| 408 | + } |
| 409 | + |
| 410 | + public function testQueueAttributesAndTagsFromDsn() |
| 411 | + { |
| 412 | + $httpClient = $this->createMock(HttpClientInterface::class); |
| 413 | + |
| 414 | + $queueName = 'queueName'; |
| 415 | + $queueAttributes = [ |
| 416 | + QueueAttributeName::MESSAGE_RETENTION_PERIOD => '900', |
| 417 | + QueueAttributeName::MAXIMUM_MESSAGE_SIZE => '1024', |
| 418 | + ]; |
| 419 | + $queueTags = ['tag1' => 'value1', 'tag2' => 'value2']; |
| 420 | + |
| 421 | + $this->assertEquals( |
| 422 | + new Connection(['queue_name' => $queueName, 'queue_attributes' => $queueAttributes, 'queue_tags' => $queueTags], new SqsClient(['region' => 'eu-west-1', 'accessKeyId' => null, 'accessKeySecret' => null], null, $httpClient)), |
| 423 | + Connection::fromDsn('sqs://default/'.$queueName, ['queue_attributes' => $queueAttributes, 'queue_tags' => $queueTags], $httpClient) |
| 424 | + ); |
| 425 | + } |
| 426 | + |
388 | 427 | private function getMockedQueueUrlResponse(): MockResponse
|
389 | 428 | {
|
390 | 429 | if ($this->isAsyncAwsSqsVersion2Installed()) {
|
|
0 commit comments