Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.

Commit 793dc24

Browse files
authored
Merge pull request #482 from beyondcode/code-coverage
[2.x] Code coverage fixes
2 parents b5f081c + f3b706d commit 793dc24

39 files changed

+708
-206
lines changed

.codecov.yml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
codecov:
2+
notify:
3+
require_ci_to_pass: yes
4+
5+
coverage:
6+
precision: 2
7+
round: down
8+
range: "70...100"
9+
10+
status:
11+
project: yes
12+
patch: yes
13+
changes: no
14+
15+
comment:
16+
layout: "reach, diff, flags, files, footer"
17+
behavior: default
18+
require_changes: no

.github/workflows/run-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545

4646
- name: Install dependencies
4747
run: |
48-
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
48+
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench-browser-kit:${{ matrix.testbench }}" --no-interaction --no-update
4949
composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest
5050
5151
- name: Execute tests with Local driver

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ vendor
44
coverage
55
.phpunit.result.cache
66
.idea/
7+
database.sqlite

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
},
4343
"require-dev": {
4444
"mockery/mockery": "^1.3",
45-
"orchestra/testbench": "3.8.*|^4.0|^5.0",
45+
"orchestra/testbench-browser-kit": "^4.0|^5.0",
4646
"phpunit/phpunit": "^8.0|^9.0"
4747
},
4848
"autoload": {

src/Contracts/PushesToPusher.php

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace BeyondCode\LaravelWebSockets\Contracts;
4+
5+
use BeyondCode\LaravelWebSockets\PubSub\Broadcasters\RedisPusherBroadcaster;
6+
use Illuminate\Broadcasting\Broadcasters\PusherBroadcaster;
7+
use Pusher\Pusher;
8+
9+
trait PushesToPusher
10+
{
11+
/**
12+
* Get the right Pusher broadcaster for the used driver.
13+
*
14+
* @param array $app
15+
* @return \Illuminate\Broadcasting\Broadcasters\Broadcaster
16+
*/
17+
public function getPusherBroadcaster(array $app)
18+
{
19+
if (config('websockets.replication.driver') === 'redis') {
20+
return new RedisPusherBroadcaster(
21+
new Pusher($app['key'], $app['secret'], $app['id'], config('broadcasting.connections.websockets.options', [])),
22+
$app['id'],
23+
app('redis'),
24+
config('broadcasting.connections.websockets.connection', null)
25+
);
26+
}
27+
28+
return new PusherBroadcaster(
29+
new Pusher($app['key'], $app['secret'], $app['id'], config('broadcasting.connections.pusher.options', []))
30+
);
31+
}
32+
}

src/Dashboard/Http/Controllers/AuthenticateDashboard.php

+8-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
namespace BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers;
44

55
use BeyondCode\LaravelWebSockets\Apps\App;
6+
use BeyondCode\LaravelWebSockets\Contracts\PushesToPusher;
67
use Illuminate\Broadcasting\Broadcasters\PusherBroadcaster;
78
use Illuminate\Http\Request;
8-
use Pusher\Pusher;
99

1010
class AuthenticateDashboard
1111
{
12+
use PushesToPusher;
13+
1214
/**
1315
* Find the app by using the header
1416
* and then reconstruct the PusherBroadcaster
@@ -21,12 +23,11 @@ public function __invoke(Request $request)
2123
{
2224
$app = App::findById($request->header('x-app-id'));
2325

24-
$broadcaster = new PusherBroadcaster(new Pusher(
25-
$app->key,
26-
$app->secret,
27-
$app->id,
28-
[]
29-
));
26+
$broadcaster = $this->getPusherBroadcaster([
27+
'key' => $app->key,
28+
'secret' => $app->secret,
29+
'id' =>$app->id,
30+
]);
3031

3132
/*
3233
* Since the dashboard itself is already secured by the

src/Dashboard/Http/Controllers/SendMessage.php

+25-26
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
namespace BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers;
44

5+
use BeyondCode\LaravelWebSockets\Contracts\PushesToPusher;
56
use BeyondCode\LaravelWebSockets\Statistics\Rules\AppId;
6-
use Illuminate\Broadcasting\Broadcasters\PusherBroadcaster;
7+
use Exception;
78
use Illuminate\Http\Request;
8-
use Pusher\Pusher;
99

1010
class SendMessage
1111
{
12+
use PushesToPusher;
13+
1214
/**
1315
* Send the message to the requested channel.
1416
*
@@ -17,7 +19,7 @@ class SendMessage
1719
*/
1820
public function __invoke(Request $request)
1921
{
20-
$validated = $request->validate([
22+
$request->validate([
2123
'appId' => ['required', new AppId],
2224
'key' => 'required|string',
2325
'secret' => 'required|string',
@@ -26,30 +28,27 @@ public function __invoke(Request $request)
2628
'data' => 'required|json',
2729
]);
2830

29-
$this->getPusherBroadcaster($validated)->broadcast(
30-
[$validated['channel']],
31-
$validated['event'],
32-
json_decode($validated['data'], true)
33-
);
31+
$broadcaster = $this->getPusherBroadcaster([
32+
'key' => $request->key,
33+
'secret' => $request->secret,
34+
'id' => $request->appId,
35+
]);
3436

35-
return 'ok';
36-
}
37+
try {
38+
$broadcaster->broadcast(
39+
[$request->channel],
40+
$request->event,
41+
json_decode($request->data, true)
42+
);
43+
} catch (Exception $e) {
44+
return response()->json([
45+
'ok' => false,
46+
'exception' => $e->getMessage(),
47+
]);
48+
}
3749

38-
/**
39-
* Get the pusher broadcaster for the current request.
40-
*
41-
* @param array $validated
42-
* @return \Illuminate\Broadcasting\Broadcasters\PusherBroadcaster
43-
*/
44-
protected function getPusherBroadcaster(array $validated): PusherBroadcaster
45-
{
46-
$pusher = new Pusher(
47-
$validated['key'],
48-
$validated['secret'],
49-
$validated['appId'],
50-
config('broadcasting.connections.pusher.options', [])
51-
);
52-
53-
return new PusherBroadcaster($pusher);
50+
return response()->json([
51+
'ok' => true,
52+
]);
5453
}
5554
}

src/Dashboard/Http/Controllers/DashboardApiController.php renamed to src/Dashboard/Http/Controllers/ShowStatistics.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use BeyondCode\LaravelWebSockets\Statistics\Drivers\StatisticsDriver;
66
use Illuminate\Http\Request;
77

8-
class DashboardApiController
8+
class ShowStatistics
99
{
1010
/**
1111
* Get statistics for an app ID.
@@ -15,7 +15,7 @@ class DashboardApiController
1515
* @param mixed $appId
1616
* @return \Illuminate\Http\Response
1717
*/
18-
public function getStatistics(Request $request, StatisticsDriver $driver, $appId)
18+
public function __invoke(Request $request, StatisticsDriver $driver, $appId)
1919
{
2020
return $driver::get($appId, $request);
2121
}

src/PubSub/Broadcasters/RedisPusherBroadcaster.php

+7-8
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ class RedisPusherBroadcaster extends Broadcaster
4545
/**
4646
* Create a new broadcaster instance.
4747
*
48-
* @param Pusher $pusher
49-
* @param $appId
50-
* @param \Illuminate\Contracts\Redis\Factory $redis
51-
* @param string|null $connection
48+
* @param Pusher $pusher
49+
* @param mixed $appId
50+
* @param \Illuminate\Contracts\Redis\Factory $redis
51+
* @param string|null $connection
5252
*/
5353
public function __construct(Pusher $pusher, $appId, Redis $redis, $connection = null)
5454
{
@@ -63,7 +63,6 @@ public function __construct(Pusher $pusher, $appId, Redis $redis, $connection =
6363
*
6464
* @param \Illuminate\Http\Request $request
6565
* @return mixed
66-
*
6766
* @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
6867
*/
6968
public function auth($request)
@@ -83,8 +82,8 @@ public function auth($request)
8382
/**
8483
* Return the valid authentication response.
8584
*
86-
* @param \Illuminate\Http\Request $request
87-
* @param mixed $result
85+
* @param \Illuminate\Http\Request $request
86+
* @param mixed $result
8887
* @return mixed
8988
* @throws \Pusher\PusherException
9089
*/
@@ -144,7 +143,7 @@ public function broadcast(array $channels, $event, array $payload = [])
144143
]);
145144

146145
foreach ($this->formatChannels($channels) as $channel) {
147-
$connection->publish("{$this->appId}:$channel", $payload);
146+
$connection->publish("{$this->appId}:{$channel}", $payload);
148147
}
149148
}
150149
}

src/PubSub/Drivers/RedisClient.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ public function channelMemberCounts($appId, array $channelNames): PromiseInterfa
265265
* @param string $payload
266266
* @return void
267267
*/
268-
protected function onMessage(string $redisChannel, string $payload)
268+
public function onMessage(string $redisChannel, string $payload)
269269
{
270270
$payload = json_decode($payload);
271271

src/Statistics/DnsResolver.php

-59
This file was deleted.

src/Statistics/Drivers/DatabaseDriver.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,10 @@ public static function create(array $data): StatisticsDriver
9292
* Get the records to show to the dashboard.
9393
*
9494
* @param mixed $appId
95-
* @param \Illuminate\Http\Request $request
95+
* @param \Illuminate\Http\Request|null $request
9696
* @return array
9797
*/
98-
public static function get($appId, Request $request): array
98+
public static function get($appId, ?Request $request): array
9999
{
100100
$class = config('websockets.statistics.database.model');
101101

src/Statistics/Drivers/StatisticsDriver.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ public static function create(array $data): StatisticsDriver;
6161
* Get the records to show to the dashboard.
6262
*
6363
* @param mixed $appId
64-
* @param \Illuminate\Http\Request $request
64+
* @param \Illuminate\Http\Request|null $request
6565
* @return void
6666
*/
67-
public static function get($appId, Request $request);
67+
public static function get($appId, ?Request $request);
6868

6969
/**
7070
* Delete statistics from the store,

0 commit comments

Comments
 (0)