diff --git a/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php b/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php index 3233159a28a0a..db8eff9e70f50 100644 --- a/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Bluesky/BlueskyTransport.php @@ -105,7 +105,7 @@ protected function doSend(MessageInterface $message): SentMessage if (200 === $statusCode) { $content = $response->toArray(); $sentMessage = new SentMessage($message, (string) $this); - $sentMessage->setMessageId($content['cid']); + $sentMessage->setMessageId($content['uri']); return $sentMessage; } diff --git a/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md b/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md index d337db00df015..b4b57416c470c 100644 --- a/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md +++ b/src/Symfony/Component/Notifier/Bridge/Bluesky/CHANGELOG.md @@ -5,6 +5,7 @@ CHANGELOG --- * Add option to attach a media + * [BC Break] Change the returned message ID from record's 'cid' to 'uri' 7.1 --- diff --git a/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php index 1cfa099e04537..09323174d8ce3 100644 --- a/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Bluesky/Tests/BlueskyTransportTest.php @@ -276,7 +276,11 @@ public function testParseFacetsUrlWithTrickyRegex() public function testWithMedia() { - $transport = $this->createTransport(new MockHttpClient((function () { + // realistic sample values taken from https://docs.bsky.app/docs/advanced-guides/posts#post-record-structure + $recordUri = 'at://did:plc:u5cwb2mwiv2bfq53cjufe6yn/app.bsky.feed.post/3k4duaz5vfs2b'; + $recordCid = 'bafyreibjifzpqj6o6wcq3hejh7y4z4z2vmiklkvykc57tw3pcbx3kxifpm'; + + $transport = $this->createTransport(new MockHttpClient((function () use ($recordUri, $recordCid) { yield function (string $method, string $url, array $options) { $this->assertSame('POST', $method); $this->assertSame('https://bsky.social/xrpc/com.atproto.server.createSession', $url); @@ -299,13 +303,13 @@ public function testWithMedia() ]]); }; - yield function (string $method, string $url, array $options) { + yield function (string $method, string $url, array $options) use ($recordUri, $recordCid) { $this->assertSame('POST', $method); $this->assertSame('https://bsky.social/xrpc/com.atproto.repo.createRecord', $url); $this->assertArrayHasKey('authorization', $options['normalized_headers']); $this->assertSame('{"repo":null,"collection":"app.bsky.feed.post","record":{"$type":"app.bsky.feed.post","text":"Hello World!","createdAt":"2024-04-28T08:40:17.000000Z","embed":{"$type":"app.bsky.embed.images","images":[{"alt":"A fixture","image":{"$type":"blob","ref":{"$link":"bafkreibabalobzn6cd366ukcsjycp4yymjymgfxcv6xczmlgpemzkz3cfa"},"mimeType":"image\/png","size":760898}}]}}}', $options['body']); - return new JsonMockResponse(['cid' => '103254962155278888']); + return new JsonMockResponse(['uri' => $recordUri, 'cid' => $recordCid]); }; })())); @@ -313,7 +317,26 @@ public function testWithMedia() ->attachMedia(new File(__DIR__.'/fixtures.gif'), 'A fixture'); $result = $transport->send(new ChatMessage('Hello World!', $options)); - $this->assertSame('103254962155278888', $result->getMessageId()); + $this->assertSame($recordUri, $result->getMessageId()); + } + + public function testReturnedMessageId() + { + // realistic sample values taken from https://docs.bsky.app/docs/advanced-guides/posts#post-record-structure + $recordUri = 'at://did:plc:u5cwb2mwiv2bfq53cjufe6yn/app.bsky.feed.post/3k4duaz5vfs2b'; + $recordCid = 'bafyreibjifzpqj6o6wcq3hejh7y4z4z2vmiklkvykc57tw3pcbx3kxifpm'; + + $client = new MockHttpClient(function () use ($recordUri, $recordCid) { + return new JsonMockResponse([ + 'uri' => $recordUri, + 'cid' => $recordCid, + ]); + }); + + $transport = self::createTransport($client); + $message = $transport->send(new ChatMessage('Hello!')); + + $this->assertSame($recordUri, $message->getMessageId()); } /**