From 18c14984962449addd7d3ae7f27a6374d89d532a Mon Sep 17 00:00:00 2001 From: Tomas Date: Tue, 13 Jul 2021 18:02:46 +0300 Subject: [PATCH] Include additional errors to slack notifier error message --- .../Notifier/Bridge/Slack/SlackTransport.php | 4 ++- .../Bridge/Slack/Tests/SlackTransportTest.php | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php index ba98e8847d1b..44fc52772261 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php @@ -95,7 +95,9 @@ protected function doSend(MessageInterface $message): SentMessage $result = $response->toArray(false); if (!$result['ok']) { - throw new TransportException(sprintf('Unable to post the Slack message: "%s".', $result['error']), $response); + $errors = isset($result['errors']) ? ' ('.implode('|', $result['errors']).')' : ''; + + throw new TransportException(sprintf('Unable to post the Slack message: "%s"%s.', $result['error'], $errors), $response); } $sentMessage = new SentMessage($message, (string) $this); diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php index c0ebbb6777ec..2b3e96e6b441 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php @@ -239,4 +239,32 @@ public function testSendIncludesContentTypeWithCharset() $transport->send(new ChatMessage('testMessage')); } + + public function testSendWithErrorsIncluded() + { + $response = $this->createMock(ResponseInterface::class); + + $response->expects($this->exactly(2)) + ->method('getStatusCode') + ->willReturn(200); + + $response->expects($this->once()) + ->method('getContent') + ->willReturn(json_encode([ + 'ok' => false, + 'error' => 'invalid_blocks', + 'errors' => ['no more than 50 items allowed [json-pointer:/blocks]'], + ])); + + $client = new MockHttpClient(function () use ($response): ResponseInterface { + return $response; + }); + + $transport = $this->createTransport($client, 'testChannel'); + + $this->expectException(TransportException::class); + $this->expectExceptionMessage('Unable to post the Slack message: "invalid_blocks" (no more than 50 items allowed [json-pointer:/blocks]).'); + + $transport->send(new ChatMessage('testMessage')); + } }