diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php index 128ff60a0d..447988ec8b 100644 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php @@ -139,6 +139,16 @@ class ConnectionTest extends TestCase ); } + public function testFromDsnWithAccountAndEndpointOption() + { + $httpClient = $this->getMockBuilder(HttpClientInterface::class)->getMock(); + + $this->assertEquals( + new Connection(['account' => 12345], new SqsClient(['endpoint' => 'https://custom-endpoint.tld', 'region' => 'eu-west-1', 'accessKeyId' => null, 'accessKeySecret' => null], null, $httpClient)), + Connection::fromDsn('sqs://default', ['endpoint' => 'https://custom-endpoint.tld', 'account' => 12345], $httpClient) + ); + } + public function testKeepGettingPendingMessages() { $client = $this->createMock(SqsClient::class); diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php index ba7d2f98b9..29bb1006fe 100644 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php @@ -117,13 +117,15 @@ class Connection $clientConfiguration['region'] = $matches[1]; } unset($query['sslmode']); + } elseif (self::DEFAULT_OPTIONS['endpoint'] !== $options['endpoint'] ?? self::DEFAULT_OPTIONS['endpoint']) { + $clientConfiguration['endpoint'] = $options['endpoint']; } $parsedPath = explode('/', ltrim($parsedUrl['path'] ?? '/', '/')); if (\count($parsedPath) > 0 && !empty($queueName = end($parsedPath))) { $configuration['queue_name'] = $queueName; } - $configuration['account'] = 2 === \count($parsedPath) ? $parsedPath[0] : null; + $configuration['account'] = 2 === \count($parsedPath) ? $parsedPath[0] : $options['account'] ?? self::DEFAULT_OPTIONS['account']; // check for extra keys in options $optionsExtraKeys = array_diff(array_keys($options), array_keys(self::DEFAULT_OPTIONS));