From 98a9e79d4399796c401f23c1cb0c1ad1e0b4c9fc Mon Sep 17 00:00:00 2001 From: erikn69 Date: Tue, 30 Nov 2021 15:17:48 +0000 Subject: [PATCH] Fix on tests --- tests/FetchChannelTest.php | 9 ++++--- tests/FetchChannelsTest.php | 13 +++++------ tests/FetchUsersTest.php | 11 ++++----- tests/PresenceChannelTest.php | 7 +++--- tests/PrivateChannelTest.php | 7 +++--- tests/PublicChannelTest.php | 7 +++--- tests/TestCase.php | 44 +++++++++++++++++++++++++++++++++++ tests/TriggerEventTest.php | 3 +-- 8 files changed, 69 insertions(+), 32 deletions(-) diff --git a/tests/FetchChannelTest.php b/tests/FetchChannelTest.php index 9e4dd64191..2b73fb095a 100644 --- a/tests/FetchChannelTest.php +++ b/tests/FetchChannelTest.php @@ -5,7 +5,6 @@ use BeyondCode\LaravelWebSockets\API\FetchChannel; use GuzzleHttp\Psr7\Request; use Illuminate\Http\JsonResponse; -use Pusher\Pusher; use Symfony\Component\HttpKernel\Exception\HttpException; class FetchChannelTest extends TestCase @@ -24,7 +23,7 @@ public function test_invalid_signatures_can_not_access_the_api() 'channelName' => 'my-channel', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'InvalidSecret', 'GET', $requestPath ); @@ -48,7 +47,7 @@ public function test_it_returns_the_channel_information() 'channelName' => 'my-channel', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); $request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams)); @@ -79,7 +78,7 @@ public function test_it_returns_presence_channel_information() 'channelName' => 'presence-channel', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); $request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams)); @@ -113,7 +112,7 @@ public function test_it_returns_404_for_invalid_channels() 'channelName' => 'invalid-channel', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); $request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams)); diff --git a/tests/FetchChannelsTest.php b/tests/FetchChannelsTest.php index b0b08c4cee..ff5e3f9d5e 100644 --- a/tests/FetchChannelsTest.php +++ b/tests/FetchChannelsTest.php @@ -5,7 +5,6 @@ use BeyondCode\LaravelWebSockets\API\FetchChannels; use GuzzleHttp\Psr7\Request; use Illuminate\Http\JsonResponse; -use Pusher\Pusher; use Symfony\Component\HttpKernel\Exception\HttpException; class FetchChannelsTest extends TestCase @@ -23,7 +22,7 @@ public function test_invalid_signatures_can_not_access_the_api() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'InvalidSecret', 'GET', $requestPath ); @@ -46,7 +45,7 @@ public function test_it_returns_the_channel_information() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'GET', $requestPath ); @@ -81,7 +80,7 @@ public function test_it_returns_the_channel_information_for_prefix() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [ + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [ 'filter_by_prefix' => 'presence-global', ]); @@ -117,7 +116,7 @@ public function test_it_returns_the_channel_information_for_prefix_with_user_cou 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [ + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [ 'filter_by_prefix' => 'presence-global', 'info' => 'user_count', ]); @@ -156,7 +155,7 @@ public function test_can_not_get_non_presence_channel_user_count() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [ + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [ 'info' => 'user_count', ]); @@ -180,7 +179,7 @@ public function test_it_returns_empty_object_for_no_channels_found() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); $request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams)); diff --git a/tests/FetchUsersTest.php b/tests/FetchUsersTest.php index 0a5fc09a15..a0b664f0bb 100644 --- a/tests/FetchUsersTest.php +++ b/tests/FetchUsersTest.php @@ -4,7 +4,6 @@ use BeyondCode\LaravelWebSockets\API\FetchUsers; use GuzzleHttp\Psr7\Request; -use Pusher\Pusher; use Symfony\Component\HttpKernel\Exception\HttpException; class FetchUsersTest extends TestCase @@ -23,7 +22,7 @@ public function test_invalid_signatures_can_not_access_the_api() 'channelName' => 'my-channel', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'InvalidSecret', 'GET', $requestPath ); @@ -50,7 +49,7 @@ public function test_it_only_returns_data_for_presence_channels() 'channelName' => 'my-channel', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'GET', $requestPath ); @@ -77,7 +76,7 @@ public function test_it_returns_404_for_invalid_channels() 'channelName' => 'invalid-channel', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'GET', $requestPath ); @@ -101,7 +100,7 @@ public function test_it_returns_connected_user_information() 'channelName' => 'presence-channel', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); $request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams)); @@ -131,7 +130,7 @@ public function test_multiple_clients_with_same_id_gets_counted_once() 'channelName' => 'presence-channel', ]; - $queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); + $queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath); $request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams)); diff --git a/tests/PresenceChannelTest.php b/tests/PresenceChannelTest.php index d983c7802d..499d319d40 100644 --- a/tests/PresenceChannelTest.php +++ b/tests/PresenceChannelTest.php @@ -6,7 +6,6 @@ use BeyondCode\LaravelWebSockets\Server\Exceptions\InvalidSignature; use GuzzleHttp\Psr7\Request; use Illuminate\Http\JsonResponse; -use Pusher\Pusher; use Ratchet\ConnectionInterface; class PresenceChannelTest extends TestCase @@ -419,7 +418,7 @@ public function test_it_fires_the_event_to_presence_channel() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['presence-channel'], @@ -460,7 +459,7 @@ public function test_it_fires_event_across_servers_when_there_are_not_users_loca 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['presence-channel'], @@ -508,7 +507,7 @@ public function test_it_fires_event_across_servers_when_there_are_users_locally_ 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['presence-channel'], diff --git a/tests/PrivateChannelTest.php b/tests/PrivateChannelTest.php index 90efa6d13d..e2fa3f8c4e 100644 --- a/tests/PrivateChannelTest.php +++ b/tests/PrivateChannelTest.php @@ -6,7 +6,6 @@ use BeyondCode\LaravelWebSockets\Server\Exceptions\InvalidSignature; use GuzzleHttp\Psr7\Request; use Illuminate\Http\JsonResponse; -use Pusher\Pusher; use Ratchet\ConnectionInterface; class PrivateChannelTest extends TestCase @@ -239,7 +238,7 @@ public function test_it_fires_the_event_to_private_channel() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['private-channel'], @@ -280,7 +279,7 @@ public function test_it_fires_event_across_servers_when_there_are_not_users_loca 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['private-channel'], @@ -328,7 +327,7 @@ public function test_it_fires_event_across_servers_when_there_are_users_locally_ 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['private-channel'], diff --git a/tests/PublicChannelTest.php b/tests/PublicChannelTest.php index b16498dee7..c444d244d7 100644 --- a/tests/PublicChannelTest.php +++ b/tests/PublicChannelTest.php @@ -5,7 +5,6 @@ use BeyondCode\LaravelWebSockets\API\TriggerEvent; use GuzzleHttp\Psr7\Request; use Illuminate\Http\JsonResponse; -use Pusher\Pusher; use Ratchet\ConnectionInterface; class PublicChannelTest extends TestCase @@ -220,7 +219,7 @@ public function test_it_fires_the_event_to_public_channel() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['public-channel'], @@ -261,7 +260,7 @@ public function test_it_fires_event_across_servers_when_there_are_not_users_loca 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['public-channel'], @@ -309,7 +308,7 @@ public function test_it_fires_event_across_servers_when_there_are_users_locally_ 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'TestSecret', 'POST', $requestPath, [ 'name' => 'some-event', 'channels' => ['public-channel'], diff --git a/tests/TestCase.php b/tests/TestCase.php index da66201873..1a049f5f87 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -10,6 +10,7 @@ use GuzzleHttp\Psr7\Request; use Illuminate\Support\Facades\Redis; use Orchestra\Testbench\BrowserKit\TestCase as Orchestra; +use Pusher\Pusher; use React\EventLoop\Factory as LoopFactory; abstract class TestCase extends Orchestra @@ -482,4 +483,47 @@ protected function skipOnLocalReplication() $this->markTestSkipped('Skipped test because the replication mode is Local.'); } } + + public static function array_implode($glue, $separator, $array) + { + if (! is_array($array)) { + return $array; + } + + $string = []; + foreach ($array as $key => $val) { + if (is_array($val)) { + $val = implode(',', $val); + } + $string[] = "{$key}{$glue}{$val}"; + } + + return implode($separator, $string); + } + + protected static function build_auth_query_string( + $auth_key, + $auth_secret, + $request_method, + $request_path, + $query_params = [], + $auth_version = '1.0', + $auth_timestamp = null + ) { + $method = method_exists(Pusher::class, 'build_auth_query_params') ? 'build_auth_query_params' : 'build_auth_query_string'; + + $params = Pusher::$method( + $auth_key, $auth_secret, $request_method, $request_path, $query_params, $auth_version, $auth_timestamp + ); + + if ($method == 'build_auth_query_string') { + return $params; + } + + ksort($params); + + $auth_query_string = self::array_implode('=', '&', $params); + + return $auth_query_string; + } } diff --git a/tests/TriggerEventTest.php b/tests/TriggerEventTest.php index 5132a91b21..18a487416d 100644 --- a/tests/TriggerEventTest.php +++ b/tests/TriggerEventTest.php @@ -4,7 +4,6 @@ use BeyondCode\LaravelWebSockets\API\TriggerEvent; use GuzzleHttp\Psr7\Request; -use Pusher\Pusher; use Symfony\Component\HttpKernel\Exception\HttpException; class TriggerEventTest extends TestCase @@ -22,7 +21,7 @@ public function test_invalid_signatures_can_not_fire_the_event() 'appId' => '1234', ]; - $queryString = Pusher::build_auth_query_string( + $queryString = self::build_auth_query_string( 'TestKey', 'InvalidSecret', 'GET', $requestPath );