diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php index 740a4937ebd6b..cae1d38c87bcb 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php @@ -80,6 +80,9 @@ protected function doSend(MessageInterface $message): SentMessage $response = $this->client->request('POST', 'https://'.$this->getEndpoint().'/api/chat.postMessage', [ 'json' => array_filter($options), 'auth_bearer' => $this->accessToken, + 'headers' => [ + 'Content-Type' => 'application/json; charset=utf-8', + ], ]); if (200 !== $response->getStatusCode()) { diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php index b1de9736db1ae..82da5cd61df81 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php @@ -207,4 +207,27 @@ public function testSendWith200ResponseButNotOk() $transport->send(new ChatMessage('testMessage')); } + + public function testSendIncludesContentTypeWithCharset() + { + $response = $this->createMock(ResponseInterface::class); + + $response->expects($this->exactly(2)) + ->method('getStatusCode') + ->willReturn(200); + + $response->expects($this->once()) + ->method('getContent') + ->willReturn(json_encode(['ok' => true, 'ts' => '1503435956.000247'])); + + $client = new MockHttpClient(function (string $method, string $url, array $options = []) use ($response): ResponseInterface { + $this->assertContains('Content-Type: application/json; charset=utf-8', $options['headers']); + + return $response; + }); + + $transport = $this->createTransport($client); + + $transport->send(new ChatMessage('testMessage')); + } }