From b46cfadaa218a99bb7fe28da77c9bdce85581eb8 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Sun, 23 Aug 2020 18:34:29 +0300 Subject: [PATCH] wip --- .github/workflows/run-tests.yml | 2 +- composer.json | 2 +- .../Broadcasters/RedisPusherBroadcaster.php | 15 ++++++----- src/WebSocketsServiceProvider.php | 18 +++++++------ tests/Dashboard/DashboardTest.php | 25 +++++++++++++++++++ tests/TestCase.php | 5 +++- 6 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 tests/Dashboard/DashboardTest.php diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index aaed621..c3e4762 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -45,7 +45,7 @@ jobs: - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update + composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench-browser-kit:${{ matrix.testbench }}" --no-interaction --no-update composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest - name: Execute tests with Local driver diff --git a/composer.json b/composer.json index 276de5f..f34b96d 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ }, "require-dev": { "mockery/mockery": "^1.3", - "orchestra/testbench": "3.8.*|^4.0|^5.0", + "orchestra/testbench-browser-kit": "^4.0|^5.0", "phpunit/phpunit": "^8.0|^9.0" }, "autoload": { diff --git a/src/PubSub/Broadcasters/RedisPusherBroadcaster.php b/src/PubSub/Broadcasters/RedisPusherBroadcaster.php index c59f065..1c79661 100644 --- a/src/PubSub/Broadcasters/RedisPusherBroadcaster.php +++ b/src/PubSub/Broadcasters/RedisPusherBroadcaster.php @@ -45,10 +45,10 @@ class RedisPusherBroadcaster extends Broadcaster /** * Create a new broadcaster instance. * - * @param Pusher $pusher - * @param $appId - * @param \Illuminate\Contracts\Redis\Factory $redis - * @param string|null $connection + * @param Pusher $pusher + * @param mixed $appId + * @param \Illuminate\Contracts\Redis\Factory $redis + * @param string|null $connection */ public function __construct(Pusher $pusher, $appId, Redis $redis, $connection = null) { @@ -63,7 +63,6 @@ class RedisPusherBroadcaster extends Broadcaster * * @param \Illuminate\Http\Request $request * @return mixed - * * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException */ public function auth($request) @@ -83,8 +82,8 @@ class RedisPusherBroadcaster extends Broadcaster /** * Return the valid authentication response. * - * @param \Illuminate\Http\Request $request - * @param mixed $result + * @param \Illuminate\Http\Request $request + * @param mixed $result * @return mixed * @throws \Pusher\PusherException */ @@ -144,7 +143,7 @@ class RedisPusherBroadcaster extends Broadcaster ]); foreach ($this->formatChannels($channels) as $channel) { - $connection->publish("{$this->appId}:$channel", $payload); + $connection->publish("{$this->appId}:{$channel}", $payload); } } } diff --git a/src/WebSocketsServiceProvider.php b/src/WebSocketsServiceProvider.php index 09db778..f03a504 100644 --- a/src/WebSocketsServiceProvider.php +++ b/src/WebSocketsServiceProvider.php @@ -118,13 +118,15 @@ class WebSocketsServiceProvider extends ServiceProvider */ protected function registerDashboardRoutes() { - Route::prefix(config('websockets.dashboard.path'))->group(function () { - Route::middleware(config('websockets.dashboard.middleware', [AuthorizeDashboard::class]))->group(function () { - Route::get('/', ShowDashboard::class); - Route::get('/api/{appId}/statistics', [DashboardApiController::class, 'getStatistics']); - Route::post('auth', AuthenticateDashboard::class); - Route::post('event', SendMessage::class); - }); + Route::group([ + 'prefix' => config('websockets.dashboard.path'), + 'as' => 'laravel-websockets.', + 'middleware' => config('websockets.dashboard.middleware', [AuthorizeDashboard::class]), + ], function () { + Route::get('/', ShowDashboard::class)->name('dashboard'); + Route::get('/api/{appId}/statistics', [DashboardApiController::class, 'getStatistics'])->name('statistics'); + Route::post('auth', AuthenticateDashboard::class)->name('auth'); + Route::post('event', SendMessage::class)->name('send'); }); return $this; @@ -138,7 +140,7 @@ class WebSocketsServiceProvider extends ServiceProvider protected function registerDashboardGate() { Gate::define('viewWebSocketsDashboard', function ($user = null) { - return $this->app->environment('local'); + return $this->app->environment(['local', 'testing']); }); return $this; diff --git a/tests/Dashboard/DashboardTest.php b/tests/Dashboard/DashboardTest.php new file mode 100644 index 0000000..ce098ca --- /dev/null +++ b/tests/Dashboard/DashboardTest.php @@ -0,0 +1,25 @@ + 'production']); + + $this->get(route('laravel-websockets.dashboard')) + ->assertResponseStatus(403); + } + + /** @test */ + public function can_see_dashboard() + { + $this->get(route('laravel-websockets.dashboard')) + ->assertResponseOk() + ->see('WebSockets Dashboard'); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php index 2062a83..c1c7f0c 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -12,10 +12,11 @@ use BeyondCode\LaravelWebSockets\Tests\Mocks\Message; use BeyondCode\LaravelWebSockets\Tests\Statistics\Logger\FakeStatisticsLogger; use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager; use GuzzleHttp\Psr7\Request; +use Orchestra\Testbench\BrowserKit\TestCase as BaseTestCase; use Ratchet\ConnectionInterface; use React\EventLoop\Factory as LoopFactory; -abstract class TestCase extends \Orchestra\Testbench\TestCase +abstract class TestCase extends BaseTestCase { /** * A test Pusher server. @@ -76,6 +77,8 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase */ protected function getEnvironmentSetUp($app) { + $app['config']->set('app.key', 'wslxrEFGWY6GfGhvN9L3wH3KSRJQQpBD'); + $app['config']->set('websockets.apps', [ [ 'name' => 'Test App',