diff --git a/tests/Channels/ChannelTest.php b/tests/Channels/ChannelTest.php index f7e3ca5..82ff1fe 100644 --- a/tests/Channels/ChannelTest.php +++ b/tests/Channels/ChannelTest.php @@ -28,6 +28,27 @@ class ChannelTest extends TestCase ]); } + /** @test */ + public function clients_can_unsubscribe_from_channels() + { + $connection = $this->getConnectedWebSocketConnection(['test-channel']); + + $channel = $this->getChannel($connection, 'test-channel'); + + $this->assertTrue($channel->hasConnections()); + + $message = new Message(json_encode([ + 'event' => 'pusher:unsubscribe', + 'data' => [ + 'channel' => 'test-channel' + ], + ])); + + $this->pusherServer->onMessage($connection, $message); + + $this->assertFalse($channel->hasConnections()); + } + /** @test */ public function a_client_cannot_broadcast_to_other_clients_by_default() { diff --git a/tests/Messages/PusherClientMessageTest.php b/tests/Messages/PusherClientMessageTest.php new file mode 100644 index 0000000..16ecccc --- /dev/null +++ b/tests/Messages/PusherClientMessageTest.php @@ -0,0 +1,59 @@ +getConnectedWebSocketConnection(['test-channel']); + + $message = new Message(json_encode([ + 'event' => 'client-test', + 'channel' => 'test-channel', + 'data' => [ + 'client-event' => 'test' + ], + ])); + + $this->pusherServer->onMessage($connection, $message); + + $connection->assertNotSentEvent('client-test'); + } + + /** @test */ + public function client_messages_get_broadcasted_when_enabled() + { + $this->app['config']->set('websockets.apps', [ + [ + 'name' => 'Test App', + 'id' => 1234, + 'key' => 'TestKey', + 'secret' => 'TestSecret', + 'enable_client_messages' => true, + ], + ]); + + $connection = $this->getConnectedWebSocketConnection(['test-channel']); + + $message = new Message(json_encode([ + 'event' => 'client-test', + 'channel' => 'test-channel', + 'data' => [ + 'client-event' => 'test' + ], + ])); + + $this->pusherServer->onMessage($connection, $message); + + $connection->assertSentEvent('client-test', [ + 'data' => [ + 'client-event' => 'test' + ] + ]); + } +} \ No newline at end of file