From 6b56b4c6f98133bd483ce54b0b9246f895dfce2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Schlu=CC=88ter?= Date: Fri, 4 Dec 2020 12:31:09 +0100 Subject: [PATCH] [Notifier] Add exception for deprecated slack dsn --- .../Component/Notifier/Bridge/Slack/README.md | 12 ++++++++++++ .../Bridge/Slack/SlackTransportFactory.php | 16 ++++++++++------ .../Slack/Tests/SlackTransportFactoryTest.php | 10 ++++++++++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/README.md b/src/Symfony/Component/Notifier/Bridge/Slack/README.md index 00c66a4c222fa..6b6c4e886316d 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/README.md +++ b/src/Symfony/Component/Notifier/Bridge/Slack/README.md @@ -3,6 +3,18 @@ Slack Notifier Provides Slack integration for Symfony Notifier. +DSN example +----------- + +``` +// .env file +SLACK_DSN=slack://TOKEN@default?channel=CHANNEL +``` + +where: +- `TOKEN` is your Bot User OAuth Access Token +- `CHANNEL` is a Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name + Resources --------- diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransportFactory.php index b2b6dda9eb9c0..6f1cf2dca79e3 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransportFactory.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransportFactory.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Notifier\Bridge\Slack; +use Symfony\Component\Notifier\Exception\IncompleteDsnException; use Symfony\Component\Notifier\Exception\UnsupportedSchemeException; use Symfony\Component\Notifier\Transport\AbstractTransportFactory; use Symfony\Component\Notifier\Transport\Dsn; @@ -28,17 +29,20 @@ final class SlackTransportFactory extends AbstractTransportFactory */ public function create(Dsn $dsn): TransportInterface { - $scheme = $dsn->getScheme(); + if ('slack' !== $dsn->getScheme()) { + throw new UnsupportedSchemeException($dsn, 'slack', $this->getSupportedSchemes()); + } + + if ('/' !== $dsn->getPath()) { + throw new IncompleteDsnException('Support for Slack webhook DSN has been dropped since 5.2 (maybe you haven\'t updated the DSN when upgrading from 5.1).'); + } + $accessToken = $this->getUser($dsn); $channel = $dsn->getOption('channel'); $host = 'default' === $dsn->getHost() ? null : $dsn->getHost(); $port = $dsn->getPort(); - if ('slack' === $scheme) { - return (new SlackTransport($accessToken, $channel, $this->client, $this->dispatcher))->setHost($host)->setPort($port); - } - - throw new UnsupportedSchemeException($dsn, 'slack', $this->getSupportedSchemes()); + return (new SlackTransport($accessToken, $channel, $this->client, $this->dispatcher))->setHost($host)->setPort($port); } protected function getSupportedSchemes(): array diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportFactoryTest.php index afd77200ba8e8..e2d07ec6af8a3 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportFactoryTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportFactoryTest.php @@ -14,6 +14,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\Notifier\Bridge\Slack\SlackTransportFactory; use Symfony\Component\Notifier\Exception\IncompleteDsnException; +use Symfony\Component\Notifier\Exception\InvalidArgumentException; use Symfony\Component\Notifier\Exception\UnsupportedSchemeException; use Symfony\Component\Notifier\Transport\Dsn; @@ -30,6 +31,15 @@ public function testCreateWithDsn(): void $this->assertSame(sprintf('slack://%s?channel=%s', $host, $channel), (string) $transport); } + public function testCreateWithDeprecatedDsn(): void + { + $this->expectException(InvalidArgumentException::class); + $this->expectExceptionMessage('Support for Slack webhook DSN has been dropped since 5.2 (maybe you haven\'t updated the DSN when upgrading from 5.1).'); + + $factory = new SlackTransportFactory(); + $factory->create(Dsn::fromString('slack://default/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX')); + } + public function testCreateWithNoTokenThrowsMalformed(): void { $factory = new SlackTransportFactory(); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy