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

Commit f0649b6

Browse files
authored
[1.x] Update pusher/pusher-php-server versions (#955)
* Update pusher/pusher-php-server versions * Fix tests * Add guzzlehttp/psr7 2.0 support * Update run-tests.yml * Fix version of guzzlehttp/psr7 * Fix deprecated stream_for method
1 parent 345d57f commit f0649b6

File tree

8 files changed

+140
-73
lines changed

8 files changed

+140
-73
lines changed

.github/workflows/run-tests.yml

+95-51
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,99 @@
11
name: run-tests
22

3-
on: [push, pull_request]
3+
on:
4+
push:
5+
branches:
6+
- '*'
7+
tags:
8+
- '*'
9+
pull_request:
10+
branches:
11+
- '*'
412

513
jobs:
6-
test:
7-
runs-on: ${{ matrix.os }}
8-
strategy:
9-
fail-fast: false
10-
matrix:
11-
os: [ubuntu-latest, windows-latest]
12-
php: [8.0, 7.4, 7.3, 7.2]
13-
laravel: [6.*, 7.*, 8.*]
14-
dependency-version: [prefer-lowest, prefer-stable]
15-
include:
16-
- laravel: 8.*
17-
testbench: 6.*
18-
- laravel: 7.*
19-
testbench: 5.*
20-
- laravel: 6.*
21-
testbench: 4.*
22-
exclude:
23-
- php: 7.2
24-
laravel: 8.*
25-
26-
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - ${{ matrix.os }}
27-
28-
steps:
29-
- name: Checkout code
30-
uses: actions/checkout@v1
31-
32-
- name: Cache dependencies
33-
uses: actions/cache@v1
34-
with:
35-
path: ~/.composer/cache/files
36-
key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}
37-
38-
- name: Setup PHP
39-
uses: shivammathur/setup-php@v2
40-
with:
41-
php-version: ${{ matrix.php }}
42-
extensions: curl, dom, fileinfo, libxml, mbstring, pdo, sqlite, pdo_sqlite, zip
43-
coverage: pcov
44-
45-
- name: Install dependencies
46-
run: |
47-
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
48-
composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest
49-
50-
- name: Execute tests
51-
run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml
52-
53-
- uses: codecov/codecov-action@v1
54-
with:
55-
fail_ci_if_error: false
14+
build:
15+
if: "!contains(github.event.head_commit.message, 'skip ci')"
16+
17+
runs-on: ubuntu-latest
18+
19+
strategy:
20+
fail-fast: false
21+
matrix:
22+
php:
23+
- '7.3'
24+
- '7.4'
25+
- '8.0'
26+
- '8.1'
27+
laravel:
28+
- 6.*
29+
- 7.*
30+
- 8.*
31+
prefer:
32+
- 'prefer-lowest'
33+
- 'prefer-stable'
34+
include:
35+
- laravel: '6.*'
36+
testbench: '4.*'
37+
phpunit: '^8.5.8|^9.3.3'
38+
- laravel: '7.*'
39+
testbench: '5.*'
40+
phpunit: '^8.5.8|^9.3.3'
41+
- laravel: '8.*'
42+
testbench: '6.*'
43+
phpunit: '^9.3.3'
44+
exclude:
45+
- php: '8.0'
46+
laravel: 6.*
47+
prefer: 'prefer-lowest'
48+
- php: '8.0'
49+
laravel: 7.*
50+
prefer: 'prefer-lowest'
51+
- php: '8.1'
52+
laravel: 6.*
53+
- php: '8.1'
54+
laravel: 7.*
55+
- php: '8.1'
56+
laravel: 8.*
57+
prefer: 'prefer-lowest'
58+
59+
name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} --${{ matrix.prefer }}
60+
61+
steps:
62+
- uses: actions/checkout@v1
63+
64+
- name: Setup PHP
65+
uses: shivammathur/setup-php@v2
66+
with:
67+
php-version: ${{ matrix.php }}
68+
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv
69+
coverage: pcov
70+
71+
- name: Setup Redis
72+
uses: supercharge/redis-github-action@1.1.0
73+
with:
74+
redis-version: 6
75+
76+
- uses: actions/cache@v1
77+
name: Cache dependencies
78+
with:
79+
path: ~/.composer/cache/files
80+
key: composer-php-${{ matrix.php }}-${{ matrix.laravel }}-${{ matrix.prefer }}-${{ hashFiles('composer.json') }}
81+
82+
- name: Install dependencies
83+
run: |
84+
composer require "laravel/framework:${{ matrix.laravel }}" "phpunit/phpunit:${{ matrix.phpunit }}" "orchestra/testbench-browser-kit:${{ matrix.testbench }}" "orchestra/database:${{ matrix.testbench }}" --no-interaction --no-update
85+
composer update --${{ matrix.prefer }} --prefer-dist --no-interaction --no-suggest
86+
87+
- name: Run tests for Local
88+
run: |
89+
REPLICATION_MODE=local vendor/bin/phpunit --coverage-text --coverage-clover=coverage_local.xml
90+
91+
- name: Run tests for Redis
92+
run: |
93+
REPLICATION_MODE=redis vendor/bin/phpunit --coverage-text --coverage-clover=coverage_redis.xml
94+
95+
- uses: codecov/codecov-action@v1
96+
with:
97+
fail_ci_if_error: false
98+
file: '*.xml'
99+
token: ${{ secrets.CODECOV_TOKEN }}

composer.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
"ext-json": "*",
2727
"cboden/ratchet": "^0.4.1",
2828
"facade/ignition-contracts": "^1.0",
29-
"guzzlehttp/psr7": "^1.5",
29+
"guzzlehttp/psr7": "^1.7|^2.0",
3030
"illuminate/broadcasting": "^6.0|^7.0|^8.0|^9.0",
3131
"illuminate/console": "^6.0|^7.0|^8.0|^9.0",
3232
"illuminate/http": "^6.0|^7.0|^8.0|^9.0",
3333
"illuminate/routing": "^6.0|^7.0|^8.0|^9.0",
3434
"illuminate/support": "^6.0|^7.0|^8.0|^9.0",
35-
"pusher/pusher-php-server": "^3.0|^4.0|^5.0",
35+
"pusher/pusher-php-server": "^3.0|^4.0|^5.0|^6.0|^7.0",
3636
"react/dns": "^1.1",
3737
"react/http": "^1.1",
3838
"symfony/http-kernel": "^4.0|^5.0|^6.0",

src/HttpApi/Controllers/Controller.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use BeyondCode\LaravelWebSockets\QueryParameters;
77
use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager;
88
use Exception;
9+
use GuzzleHttp\Psr7\Message;
910
use GuzzleHttp\Psr7\Response;
1011
use GuzzleHttp\Psr7\ServerRequest;
1112
use Illuminate\Http\JsonResponse;
@@ -110,7 +111,7 @@ public function onError(ConnectionInterface $connection, Exception $exception)
110111
'Content-Length' => strlen($responseData),
111112
], $responseData);
112113

113-
$connection->send(\GuzzleHttp\Psr7\str($response));
114+
$connection->send(Message::toString($response));
114115

115116
$connection->close();
116117
}

src/Statistics/Logger/HttpStatisticsLogger.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController;
77
use BeyondCode\LaravelWebSockets\Statistics\Statistic;
88
use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager;
9-
use function GuzzleHttp\Psr7\stream_for;
9+
use GuzzleHttp\Psr7\Utils;
1010
use Ratchet\ConnectionInterface;
1111
use React\Http\Browser;
1212

@@ -81,7 +81,7 @@ public function save()
8181
->post(
8282
action([WebSocketStatisticsEntriesController::class, 'store']),
8383
['Content-Type' => 'application/json'],
84-
stream_for(json_encode($postData))
84+
Utils::streamFor(json_encode($postData))
8585
);
8686

8787
$currentConnectionCount = $this->channelManager->getConnectionCount($appId);

tests/HttpApi/FetchChannelTest.php

+4-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use BeyondCode\LaravelWebSockets\Tests\TestCase;
88
use GuzzleHttp\Psr7\Request;
99
use Illuminate\Http\JsonResponse;
10-
use Pusher\Pusher;
1110
use Symfony\Component\HttpKernel\Exception\HttpException;
1211

1312
class FetchChannelTest extends TestCase
@@ -26,7 +25,7 @@ public function invalid_signatures_can_not_access_the_api()
2625
'channelName' => 'my-channel',
2726
];
2827

29-
$queryString = Pusher::build_auth_query_string('TestKey', 'InvalidSecret', 'GET', $requestPath);
28+
$queryString = self::build_auth_query_string('TestKey', 'InvalidSecret', 'GET', $requestPath);
3029

3130
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
3231

@@ -49,7 +48,7 @@ public function it_returns_the_channel_information()
4948
'channelName' => 'my-channel',
5049
];
5150

52-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
51+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
5352

5453
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
5554

@@ -81,7 +80,7 @@ public function it_returns_the_channel_information_for_presence_channel()
8180
'channelName' => 'presence-global',
8281
];
8382

84-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
83+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
8584

8685
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
8786

@@ -115,7 +114,7 @@ public function it_returns_404_for_invalid_channels()
115114
'channelName' => 'invalid-channel',
116115
];
117116

118-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
117+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
119118

120119
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
121120

tests/HttpApi/FetchChannelsTest.php

+6-7
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use BeyondCode\LaravelWebSockets\Tests\TestCase;
88
use GuzzleHttp\Psr7\Request;
99
use Illuminate\Http\JsonResponse;
10-
use Pusher\Pusher;
1110
use Symfony\Component\HttpKernel\Exception\HttpException;
1211

1312
class FetchChannelsTest extends TestCase
@@ -25,7 +24,7 @@ public function invalid_signatures_can_not_access_the_api()
2524
'appId' => '1234',
2625
];
2726

28-
$queryString = Pusher::build_auth_query_string('TestKey', 'InvalidSecret', 'GET', $requestPath);
27+
$queryString = self::build_auth_query_string('TestKey', 'InvalidSecret', 'GET', $requestPath);
2928

3029
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
3130

@@ -46,7 +45,7 @@ public function it_returns_the_channel_information()
4645
'appId' => '1234',
4746
];
4847

49-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
48+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
5049

5150
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
5251

@@ -79,7 +78,7 @@ public function it_returns_the_channel_information_for_prefix()
7978
'appId' => '1234',
8079
];
8180

82-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [
81+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [
8382
'filter_by_prefix' => 'presence-global',
8483
]);
8584

@@ -115,7 +114,7 @@ public function it_returns_the_channel_information_for_prefix_with_user_count()
115114
'appId' => '1234',
116115
];
117116

118-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [
117+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [
119118
'filter_by_prefix' => 'presence-global',
120119
'info' => 'user_count',
121120
]);
@@ -154,7 +153,7 @@ public function can_not_get_non_presence_channel_user_count()
154153
'appId' => '1234',
155154
];
156155

157-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [
156+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath, [
158157
'info' => 'user_count',
159158
]);
160159

@@ -178,7 +177,7 @@ public function it_returns_empty_object_for_no_channels_found()
178177
'appId' => '1234',
179178
];
180179

181-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
180+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
182181

183182
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
184183

tests/HttpApi/FetchUsersTest.php

+4-5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use BeyondCode\LaravelWebSockets\Tests\Mocks\Connection;
77
use BeyondCode\LaravelWebSockets\Tests\TestCase;
88
use GuzzleHttp\Psr7\Request;
9-
use Pusher\Pusher;
109
use Symfony\Component\HttpKernel\Exception\HttpException;
1110

1211
class FetchUsersTest extends TestCase
@@ -25,7 +24,7 @@ public function invalid_signatures_can_not_access_the_api()
2524
'channelName' => 'my-channel',
2625
];
2726

28-
$queryString = Pusher::build_auth_query_string('TestKey', 'InvalidSecret', 'GET', $requestPath);
27+
$queryString = self::build_auth_query_string('TestKey', 'InvalidSecret', 'GET', $requestPath);
2928

3029
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
3130

@@ -50,7 +49,7 @@ public function it_only_returns_data_for_presence_channels()
5049
'channelName' => 'my-channel',
5150
];
5251

53-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
52+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
5453

5554
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
5655

@@ -75,7 +74,7 @@ public function it_returns_404_for_invalid_channels()
7574
'channelName' => 'invalid-channel',
7675
];
7776

78-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
77+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
7978

8079
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
8180

@@ -97,7 +96,7 @@ public function it_returns_connected_user_information()
9796
'channelName' => 'presence-channel',
9897
];
9998

100-
$queryString = Pusher::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
99+
$queryString = self::build_auth_query_string('TestKey', 'TestSecret', 'GET', $requestPath);
101100

102101
$request = new Request('GET', "{$requestPath}?{$queryString}&".http_build_query($routeParams));
103102

tests/TestCase.php

+25
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use BeyondCode\LaravelWebSockets\WebSocketsServiceProvider;
1212
use GuzzleHttp\Psr7\Request;
1313
use Mockery;
14+
use Pusher\Pusher;
1415
use Ratchet\ConnectionInterface;
1516
use React\Http\Browser;
1617

@@ -127,4 +128,28 @@ protected function markTestAsPassed()
127128
{
128129
$this->assertTrue(true);
129130
}
131+
132+
protected static function build_auth_query_string(
133+
$auth_key,
134+
$auth_secret,
135+
$request_method,
136+
$request_path,
137+
$query_params = [],
138+
$auth_version = '1.0',
139+
$auth_timestamp = null
140+
) {
141+
$method = method_exists(Pusher::class, 'build_auth_query_params') ? 'build_auth_query_params' : 'build_auth_query_string';
142+
143+
$params = Pusher::$method(
144+
$auth_key, $auth_secret, $request_method, $request_path, $query_params, $auth_version, $auth_timestamp
145+
);
146+
147+
if ($method == 'build_auth_query_string') {
148+
return $params;
149+
}
150+
151+
ksort($params);
152+
153+
return http_build_query($params);
154+
}
130155
}

0 commit comments

Comments
 (0)