-
Notifications
You must be signed in to change notification settings - Fork 11.3k
/
Copy pathUsePusherChannelsNamesTest.php
124 lines (104 loc) · 3.35 KB
/
UsePusherChannelsNamesTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace Illuminate\Tests\Broadcasting;
use Illuminate\Broadcasting\Broadcasters\Broadcaster;
use Illuminate\Broadcasting\Broadcasters\UsePusherChannelConventions;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
class UsePusherChannelsNamesTest extends TestCase
{
#[DataProvider('channelsProvider')]
public function testChannelNameNormalization($requestChannelName, $normalizedName)
{
$broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
$this->assertSame(
$normalizedName,
$broadcaster->normalizeChannelName($requestChannelName)
);
}
public function testChannelNameNormalizationSpecialCase()
{
$broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
$this->assertSame(
'private-123',
$broadcaster->normalizeChannelName('private-encrypted-private-123')
);
}
public function testChannelNamePatternMatching()
{
$broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
$this->assertEquals(
0,
$broadcaster->testChannelNameMatchesPattern(
'TestChannel',
'Test.{id}'
)
);
}
#[DataProvider('channelsProvider')]
public function testIsGuardedChannel($requestChannelName, $_, $guarded)
{
$broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
$this->assertSame(
$guarded,
$broadcaster->isGuardedChannel($requestChannelName)
);
}
public static function channelsProvider()
{
$prefixesInfos = [
['prefix' => 'private-', 'guarded' => true],
['prefix' => 'private-encrypted-', 'guarded' => true],
['prefix' => 'presence-', 'guarded' => true],
['prefix' => '', 'guarded' => false],
];
$channels = [
'test',
'test-channel',
'test-private-channel',
'test-presence-channel',
'abcd.efgh',
'abcd.efgh.ijkl',
'test.{param}',
'test-{param}',
'{a}.{b}',
'{a}-{b}',
'{a}-{b}.{c}',
];
$tests = [];
foreach ($prefixesInfos as $prefixInfos) {
foreach ($channels as $channel) {
$tests[] = [
$prefixInfos['prefix'].$channel,
$channel,
$prefixInfos['guarded'],
];
}
}
$tests[] = ['private-private-test', 'private-test', true];
$tests[] = ['private-presence-test', 'presence-test', true];
$tests[] = ['presence-private-test', 'private-test', true];
$tests[] = ['presence-presence-test', 'presence-test', true];
$tests[] = ['public-test', 'public-test', false];
return $tests;
}
}
class FakeBroadcasterUsingPusherChannelsNames extends Broadcaster
{
use UsePusherChannelConventions;
public function auth($request)
{
//
}
public function validAuthenticationResponse($request, $result)
{
//
}
public function broadcast(array $channels, $event, array $payload = [])
{
//
}
public function testChannelNameMatchesPattern($channel, $pattern)
{
return $this->channelNameMatchesPattern($channel, $pattern);
}
}