From 561f9b734536f02f41d4cd6ffd14d32387d2455f Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 2 Sep 2019 17:31:45 +0200 Subject: [PATCH] [Mailer] Add a more precise exception --- .../Mailer/Tests/Transport/TransportsTest.php | 16 ++++++++++++++++ .../Component/Mailer/Transport/Transports.php | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mailer/Tests/Transport/TransportsTest.php b/src/Symfony/Component/Mailer/Tests/Transport/TransportsTest.php index 93f6dee9f5..10d46ca846 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/TransportsTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/TransportsTest.php @@ -12,6 +12,7 @@ namespace Symfony\Component\Mailer\Tests\Transport; use PHPUnit\Framework\TestCase; +use Symfony\Component\Mailer\Exception\InvalidArgumentException; use Symfony\Component\Mailer\Transport\TransportInterface; use Symfony\Component\Mailer\Transport\Transports; use Symfony\Component\Mime\Header\Headers; @@ -48,4 +49,19 @@ class TransportsTest extends TestCase $email = new Message($headers, new TextPart('...')); $transport->send($email); } + + public function testTransportDoesNotExist() + { + $transport = new Transports([ + 'foo' => $this->createMock(TransportInterface::class), + 'bar' => $this->createMock(TransportInterface::class), + ]); + + $headers = (new Headers())->addTextHeader('X-Transport', 'foobar'); + $email = new Message($headers, new TextPart('...')); + + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage('The "foobar" transport does not exist (available transports: "foo", "bar").'); + $transport->send($email); + } } diff --git a/src/Symfony/Component/Mailer/Transport/Transports.php b/src/Symfony/Component/Mailer/Transport/Transports.php index 0158d2a1f8..983ad15018 100644 --- a/src/Symfony/Component/Mailer/Transport/Transports.php +++ b/src/Symfony/Component/Mailer/Transport/Transports.php @@ -56,7 +56,7 @@ class Transports implements TransportInterface $headers->remove('X-Transport'); if (!isset($this->transports[$transport])) { - throw new InvalidArgumentException(sprintf('The "%s" transport does not exist.', $transport)); + throw new InvalidArgumentException(sprintf('The "%s" transport does not exist (available transports: "%s").', $transport, implode('", "', array_keys($this->transports)))); } return $this->transports[$transport]->send($message, $envelope);