[Notifier] Add exception for deprecated slack dsn
This commit is contained in:
parent
937c403f15
commit
6b56b4c6f9
@ -3,6 +3,18 @@ Slack Notifier
|
|||||||
|
|
||||||
Provides Slack integration for Symfony 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
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Notifier\Bridge\Slack;
|
namespace Symfony\Component\Notifier\Bridge\Slack;
|
||||||
|
|
||||||
|
use Symfony\Component\Notifier\Exception\IncompleteDsnException;
|
||||||
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
|
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
|
||||||
use Symfony\Component\Notifier\Transport\AbstractTransportFactory;
|
use Symfony\Component\Notifier\Transport\AbstractTransportFactory;
|
||||||
use Symfony\Component\Notifier\Transport\Dsn;
|
use Symfony\Component\Notifier\Transport\Dsn;
|
||||||
@ -28,17 +29,20 @@ final class SlackTransportFactory extends AbstractTransportFactory
|
|||||||
*/
|
*/
|
||||||
public function create(Dsn $dsn): TransportInterface
|
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);
|
$accessToken = $this->getUser($dsn);
|
||||||
$channel = $dsn->getOption('channel');
|
$channel = $dsn->getOption('channel');
|
||||||
$host = 'default' === $dsn->getHost() ? null : $dsn->getHost();
|
$host = 'default' === $dsn->getHost() ? null : $dsn->getHost();
|
||||||
$port = $dsn->getPort();
|
$port = $dsn->getPort();
|
||||||
|
|
||||||
if ('slack' === $scheme) {
|
return (new SlackTransport($accessToken, $channel, $this->client, $this->dispatcher))->setHost($host)->setPort($port);
|
||||||
return (new SlackTransport($accessToken, $channel, $this->client, $this->dispatcher))->setHost($host)->setPort($port);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new UnsupportedSchemeException($dsn, 'slack', $this->getSupportedSchemes());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getSupportedSchemes(): array
|
protected function getSupportedSchemes(): array
|
||||||
|
@ -14,6 +14,7 @@ namespace Symfony\Component\Notifier\Bridge\Slack\Tests;
|
|||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Symfony\Component\Notifier\Bridge\Slack\SlackTransportFactory;
|
use Symfony\Component\Notifier\Bridge\Slack\SlackTransportFactory;
|
||||||
use Symfony\Component\Notifier\Exception\IncompleteDsnException;
|
use Symfony\Component\Notifier\Exception\IncompleteDsnException;
|
||||||
|
use Symfony\Component\Notifier\Exception\InvalidArgumentException;
|
||||||
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
|
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
|
||||||
use Symfony\Component\Notifier\Transport\Dsn;
|
use Symfony\Component\Notifier\Transport\Dsn;
|
||||||
|
|
||||||
@ -30,6 +31,15 @@ final class SlackTransportFactoryTest extends TestCase
|
|||||||
$this->assertSame(sprintf('slack://%s?channel=%s', $host, $channel), (string) $transport);
|
$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
|
public function testCreateWithNoTokenThrowsMalformed(): void
|
||||||
{
|
{
|
||||||
$factory = new SlackTransportFactory();
|
$factory = new SlackTransportFactory();
|
||||||
|
Reference in New Issue
Block a user