From 7a0bfcbf050363df903665efabcdc34cf8c2a1b2 Mon Sep 17 00:00:00 2001 From: Kieran Hutchinson Date: Tue, 22 Nov 2022 20:38:49 +0800 Subject: [PATCH 1/4] Pull socket key from payload array so it is not included in the message data --- src/AblyBroadcaster.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/AblyBroadcaster.php b/src/AblyBroadcaster.php index a5594d1..8fbf8d5 100644 --- a/src/AblyBroadcaster.php +++ b/src/AblyBroadcaster.php @@ -9,6 +9,7 @@ use Illuminate\Broadcasting\BroadcastException; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Str; +use Illuminate\Support\Arr; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class AblyBroadcaster extends Broadcaster @@ -317,10 +318,12 @@ public function formatChannels($channels) */ protected function buildAblyMessage($event, $payload = []) { - return tap(new AblyMessage, function ($message) use ($event, $payload) { + $socket = Arr::pull($payload, 'socket'); + + return tap(new AblyMessage, function ($message) use ($event, $payload, $socket) { $message->name = $event; $message->data = $payload; - $message->connectionKey = data_get($payload, 'socket'); + $message->connectionKey = $socket; }); } From a0f5d38a6e6a154b67b2933fd48669d5dc1f6e2f Mon Sep 17 00:00:00 2001 From: QSD_stefan Date: Fri, 25 Nov 2022 07:48:07 +0100 Subject: [PATCH 2/4] Add test for socket key exclusion from message payload --- tests/AblyBroadcasterTest.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/AblyBroadcasterTest.php b/tests/AblyBroadcasterTest.php index 03e5d46..c37719b 100644 --- a/tests/AblyBroadcasterTest.php +++ b/tests/AblyBroadcasterTest.php @@ -337,6 +337,27 @@ public function testLaravelAblyAgentHeader() $expectedLaravelHeader = 'ably-php/'.\Ably\Defaults::LIB_VERSION.' '.'php/'.Miscellaneous::getNumeric(phpversion()).' laravel-broadcaster/'. AblyBroadcaster::LIB_VERSION; $this->assertcontains( 'Ably-Agent: '.$expectedLaravelHeader, $ably->http->lastHeaders, 'Expected Laravel broadcaster header in HTTP request' ); } + + public function testPayloadShouldNotIncludeSocketKey() + { + $broadcaster = m::mock(AblyBroadcasterExposed::class, [$this->ably, []])->makePartial(); + + $payload = [ + "foo" => "bar", + "socket" => null + ]; + + $message = $broadcaster->buildAblyMessage("testEvent", $payload); + self::assertArrayNotHasKey('socket', $message->data); + } +} + +class AblyBroadcasterExposed extends AblyBroadcaster +{ + public function buildAblyMessage($event, $payload = []) + { + return parent::buildAblyMessage($event, $payload); + } } From df5ad00509271c630aae29fd620ca47ce043febb Mon Sep 17 00:00:00 2001 From: QSD_stefan Date: Fri, 25 Nov 2022 07:50:49 +0100 Subject: [PATCH 3/4] Use single quotes --- tests/AblyBroadcasterTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/AblyBroadcasterTest.php b/tests/AblyBroadcasterTest.php index c37719b..7c3da11 100644 --- a/tests/AblyBroadcasterTest.php +++ b/tests/AblyBroadcasterTest.php @@ -343,11 +343,11 @@ public function testPayloadShouldNotIncludeSocketKey() $broadcaster = m::mock(AblyBroadcasterExposed::class, [$this->ably, []])->makePartial(); $payload = [ - "foo" => "bar", - "socket" => null + 'foo' => 'bar', + 'socket' => null ]; - $message = $broadcaster->buildAblyMessage("testEvent", $payload); + $message = $broadcaster->buildAblyMessage('testEvent', $payload); self::assertArrayNotHasKey('socket', $message->data); } } From 4db83a1c86c10c401cdeb0bc5fb62d2827fa0878 Mon Sep 17 00:00:00 2001 From: QSD_stefan Date: Fri, 25 Nov 2022 08:03:11 +0100 Subject: [PATCH 4/4] Remove double newline --- tests/AblyBroadcasterTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/AblyBroadcasterTest.php b/tests/AblyBroadcasterTest.php index 7c3da11..51190db 100644 --- a/tests/AblyBroadcasterTest.php +++ b/tests/AblyBroadcasterTest.php @@ -360,7 +360,6 @@ public function buildAblyMessage($event, $payload = []) } } - class HttpMock extends Http { public $lastUrl;