From fb71f41e059e429f82fcd25c7f08a199e7a95544 Mon Sep 17 00:00:00 2001 From: Marcel Pociot Date: Mon, 26 Nov 2018 00:14:50 +0100 Subject: [PATCH] wip --- src/LaravelEcho/Pusher/PusherMessage.php | 2 +- tests/ConnectionTest.php | 23 +++++++++++++++++++++-- tests/Mocks/Message.php | 19 +++++++++++++++++++ tests/TestCase.php | 2 +- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 tests/Mocks/Message.php diff --git a/src/LaravelEcho/Pusher/PusherMessage.php b/src/LaravelEcho/Pusher/PusherMessage.php index 2ec4855..bd707b2 100644 --- a/src/LaravelEcho/Pusher/PusherMessage.php +++ b/src/LaravelEcho/Pusher/PusherMessage.php @@ -32,7 +32,7 @@ class PusherMessage implements RespondableMessage $eventName = camel_case(str_after($this->payload->event, ':')); if (method_exists($this, $eventName)) { - call_user_func([$this, $eventName], $this->connection, $this->payload->data); + call_user_func([$this, $eventName], $this->connection, $this->payload->data ?? new stdClass()); } } diff --git a/tests/ConnectionTest.php b/tests/ConnectionTest.php index 4e5496e..2325e80 100644 --- a/tests/ConnectionTest.php +++ b/tests/ConnectionTest.php @@ -5,6 +5,8 @@ namespace BeyondCode\LaravelWebSockets\Tests; use BeyondCode\LaravelWebSockets\ClientProviders\Client; use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\UnknownAppKeyException; use BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket\PusherServer; +use BeyondCode\LaravelWebSockets\Tests\Mocks\Message; +use Ratchet\RFC6455\Messaging\MessageInterface; class ConnectionTest extends TestCase { @@ -25,7 +27,7 @@ class ConnectionTest extends TestCase /** @var PusherServer $server */ $server = app(PusherServer::class); - $connection = $this->getWebSocketConnection('/?appKey=TestKey'); + $connection = $this->getWebSocketConnection(); $server->onOpen($connection); @@ -38,7 +40,7 @@ class ConnectionTest extends TestCase /** @var PusherServer $server */ $server = app(PusherServer::class); - $connection = $this->getWebSocketConnection('/?appKey=TestKey'); + $connection = $this->getWebSocketConnection(); $server->onOpen($connection); @@ -48,4 +50,21 @@ class ConnectionTest extends TestCase $this->assertSame('TestSecret', $connection->client->appSecret); $this->assertSame('Test Client', $connection->client->name); } + + /** @test */ + public function ping_returns_pong() + { + /** @var PusherServer $server */ + $server = app(PusherServer::class); + + $connection = $this->getWebSocketConnection(); + + $message = new Message('{"event": "pusher:ping"}'); + + $server->onOpen($connection); + + $server->onMessage($connection, $message); + + $connection->assertSentEvent('pusher:pong'); + } } \ No newline at end of file diff --git a/tests/Mocks/Message.php b/tests/Mocks/Message.php new file mode 100644 index 0000000..8b68e6a --- /dev/null +++ b/tests/Mocks/Message.php @@ -0,0 +1,19 @@ +payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } +} \ No newline at end of file diff --git a/tests/TestCase.php b/tests/TestCase.php index ccfa15e..3e49d1e 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -25,7 +25,7 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase ]); } - protected function getWebSocketConnection(string $url): Connection + protected function getWebSocketConnection(string $url = '/?appKey=TestKey'): Connection { $connection = new Connection();