UsePusherChannelsNamesTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace Illuminate\Tests\Broadcasting;
  3. use Illuminate\Broadcasting\Broadcasters\Broadcaster;
  4. use Illuminate\Broadcasting\Broadcasters\UsePusherChannelConventions;
  5. use PHPUnit\Framework\TestCase;
  6. class UsePusherChannelsNamesTest extends TestCase
  7. {
  8. /**
  9. * @dataProvider channelsProvider
  10. */
  11. public function testChannelNameNormalization($requestChannelName, $normalizedName)
  12. {
  13. $broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
  14. $this->assertSame(
  15. $normalizedName,
  16. $broadcaster->normalizeChannelName($requestChannelName)
  17. );
  18. }
  19. public function testChannelNameNormalizationSpecialCase()
  20. {
  21. $broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
  22. $this->assertSame(
  23. 'private-123',
  24. $broadcaster->normalizeChannelName('private-encrypted-private-123')
  25. );
  26. }
  27. /**
  28. * @dataProvider channelsProvider
  29. */
  30. public function testIsGuardedChannel($requestChannelName, $_, $guarded)
  31. {
  32. $broadcaster = new FakeBroadcasterUsingPusherChannelsNames;
  33. $this->assertSame(
  34. $guarded,
  35. $broadcaster->isGuardedChannel($requestChannelName)
  36. );
  37. }
  38. public function channelsProvider()
  39. {
  40. $prefixesInfos = [
  41. ['prefix' => 'private-', 'guarded' => true],
  42. ['prefix' => 'private-encrypted-', 'guarded' => true],
  43. ['prefix' => 'presence-', 'guarded' => true],
  44. ['prefix' => '', 'guarded' => false],
  45. ];
  46. $channels = [
  47. 'test',
  48. 'test-channel',
  49. 'test-private-channel',
  50. 'test-presence-channel',
  51. 'abcd.efgh',
  52. 'abcd.efgh.ijkl',
  53. 'test.{param}',
  54. 'test-{param}',
  55. '{a}.{b}',
  56. '{a}-{b}',
  57. '{a}-{b}.{c}',
  58. ];
  59. $tests = [];
  60. foreach ($prefixesInfos as $prefixInfos) {
  61. foreach ($channels as $channel) {
  62. $tests[] = [
  63. $prefixInfos['prefix'].$channel,
  64. $channel,
  65. $prefixInfos['guarded'],
  66. ];
  67. }
  68. }
  69. $tests[] = ['private-private-test', 'private-test', true];
  70. $tests[] = ['private-presence-test', 'presence-test', true];
  71. $tests[] = ['presence-private-test', 'private-test', true];
  72. $tests[] = ['presence-presence-test', 'presence-test', true];
  73. $tests[] = ['public-test', 'public-test', false];
  74. return $tests;
  75. }
  76. }
  77. class FakeBroadcasterUsingPusherChannelsNames extends Broadcaster
  78. {
  79. use UsePusherChannelConventions;
  80. public function auth($request)
  81. {
  82. //
  83. }
  84. public function validAuthenticationResponse($request, $result)
  85. {
  86. //
  87. }
  88. public function broadcast(array $channels, $event, array $payload = [])
  89. {
  90. //
  91. }
  92. }