diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php index d1c43898a627..93444dec1bf3 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php @@ -748,6 +748,27 @@ public function testItCanPublishAndWaitForConfirmation() $connection = Connection::fromDsn('amqp://localhost?confirm_timeout=0.5', [], $factory); $connection->publish('body'); } + + public function testItCanBeConstructedWithTLSOptionsAndNonTLSDsn() + { + $this->assertEquals( + new Connection([ + 'host' => 'localhost', + 'port' => 5672, + 'vhost' => '/', + ], [ + 'name' => self::DEFAULT_EXCHANGE_NAME, + ], [ + self::DEFAULT_EXCHANGE_NAME => [], + ]), + Connection::fromDsn('amqp://', [ + 'cacert' => 'foobar', + 'cert' => 'foobar', + 'key' => 'foobar', + 'verify' => false, + ]) + ); + } } class TestAmqpFactory extends AmqpFactory diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php index 4aed8831b57b..94a573c0ccc9 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php @@ -219,6 +219,10 @@ public static function fromDsn(string $dsn, array $options = [], AmqpFactory $am return $queueOptions; }, $queuesOptions); + if (!$useAmqps) { + unset($amqpOptions['cacert'], $amqpOptions['cert'], $amqpOptions['key'], $amqpOptions['verify']); + } + if ($useAmqps && !self::hasCaCertConfigured($amqpOptions)) { throw new InvalidArgumentException('No CA certificate has been provided. Set "amqp.cacert" in your php.ini or pass the "cacert" parameter in the DSN to use SSL. Alternatively, you can use amqp:// to use without SSL.'); }