diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php b/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php index a202f0b6b7797..012d5acde9a76 100644 --- a/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransport.php @@ -32,7 +32,7 @@ final class DiscordTransport extends AbstractTransport private $token; private $webhookId; - public function __construct(string $token, string $webhookId = null, HttpClientInterface $client = null, EventDispatcherInterface $dispatcher = null) + public function __construct(string $token, string $webhookId, HttpClientInterface $client = null, EventDispatcherInterface $dispatcher = null) { $this->token = $token; $this->webhookId = $webhookId; diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransportFactory.php index 23bf555b69655..3a8afa2551a6f 100644 --- a/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransportFactory.php +++ b/src/Symfony/Component/Notifier/Bridge/Discord/DiscordTransportFactory.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Notifier\Bridge\Discord; +use Symfony\Component\Notifier\Exception\IncompleteDsnException; use Symfony\Component\Notifier\Exception\UnsupportedSchemeException; use Symfony\Component\Notifier\Transport\AbstractTransportFactory; use Symfony\Component\Notifier\Transport\Dsn; @@ -31,6 +32,11 @@ public function create(Dsn $dsn): TransportInterface $scheme = $dsn->getScheme(); $token = $this->getUser($dsn); $webhookId = $dsn->getOption('webhook_id'); + + if (!$webhookId) { + throw new IncompleteDsnException('Missing webhook_id.', $dsn->getOriginalDsn()); + } + $host = 'default' === $dsn->getHost() ? null : $dsn->getHost(); $port = $dsn->getPort(); diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/DiscordTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/DiscordTransportFactoryTest.php index f981f7b38b1c4..d8b6227fd874d 100644 --- a/src/Symfony/Component/Notifier/Bridge/Discord/Tests/DiscordTransportFactoryTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Discord/Tests/DiscordTransportFactoryTest.php @@ -31,6 +31,15 @@ public function testCreateWithDsn() $this->assertSame(sprintf('discord://%s?webhook_id=%s', $host, $webhookId), (string) $transport); } + public function testCreateWithNoWebhookIdThrowsMalformed(): void + { + $factory = new DiscordTransportFactory(); + + $this->expectException(IncompleteDsnException::class); + + $factory->create(Dsn::fromString('discord://token@host')); + } + public function testCreateWithNoTokenThrowsMalformed() { $factory = new DiscordTransportFactory();