Skip to content
This repository was archived by the owner on Mar 24, 2025. It is now read-only.

Commit 7b0ca35

Browse files
committed
add onHandShake test
1 parent 8b71ff0 commit 7b0ca35

File tree

1 file changed

+63
-1
lines changed

1 file changed

+63
-1
lines changed

tests/Server/ManagerTest.php

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
use SwooleTW\Http\Server\Sandbox;
1111
use SwooleTW\Http\Tests\TestCase;
1212
use Illuminate\Container\Container;
13+
use SwooleTW\Http\Websocket\HandShakeHandler;
1314
use SwooleTW\Http\Websocket\Parser;
1415
use SwooleTW\Http\Server\PidManager;
1516
use SwooleTW\Http\Table\SwooleTable;
1617
use Laravel\Lumen\Exceptions\Handler;
1718
use Illuminate\Support\Facades\Config;
1819
use SwooleTW\Http\Websocket\Websocket;
1920
use SwooleTW\Http\Server\Facades\Server;
20-
use SwooleTW\Http\Websocket\Facades\Pusher;
2121
use SwooleTW\Http\Websocket\HandlerContract;
2222
use SwooleTW\Http\Websocket\Rooms\TableRoom;
2323
use SwooleTW\Http\Websocket\Rooms\RoomContract;
@@ -48,6 +48,8 @@ class ManagerTest extends TestCase
4848
'swoole_http.websocket.enabled' => true,
4949
'swoole_websocket.parser' => SocketIOParser::class,
5050
'swoole_websocket.handler' => WebsocketHandler::class,
51+
'swoole_websocket.handshake.enabled' => true,
52+
'swoole_websocket.handshake.handler' => HandShakeHandler::class,
5153
'swoole_websocket.default' => 'table',
5254
'swoole_websocket.settings.table' => [
5355
'room_rows' => 10,
@@ -414,6 +416,66 @@ public function testOnOpen()
414416
$manager->onOpen(m::mock('server'), $request);
415417
}
416418

419+
public function testOnHandShake()
420+
{
421+
$request = m::mock(Request::class);
422+
$request->shouldReceive('rawcontent')
423+
->once()
424+
->andReturn([]);
425+
$request->fd = 1;
426+
$request->header['sec-websocket-key'] = 'Bet8DkPFq9ZxvIBvPcNy1A==';
427+
428+
$response = m::mock(Response::class);
429+
$response->shouldReceive('header')->withAnyArgs()->times(4)->andReturnSelf();
430+
$response->shouldReceive('status')->with(101)->once()->andReturnSelf();
431+
$response->shouldReceive('end')->withAnyArgs()->once()->andReturnSelf();
432+
433+
$container = $this->getContainer($this->getServer(), $this->getConfig(true));
434+
$container->singleton(Websocket::class, function () {
435+
$websocket = m::mock(Websocket::class);
436+
$websocket->shouldReceive('reset')
437+
->with(true)
438+
->once()
439+
->andReturnSelf();
440+
$websocket->shouldReceive('setSender')
441+
->with(1)
442+
->once();
443+
$websocket->shouldReceive('eventExists')
444+
->with('connect')
445+
->once()
446+
->andReturn(true);
447+
$websocket->shouldReceive('setContainer')
448+
->with(m::type(Container::class))
449+
->once();
450+
$websocket->shouldReceive('call')
451+
->with('connect', m::type('Illuminate\Http\Request'))
452+
->once();
453+
454+
return $websocket;
455+
});
456+
$container->singleton(Sandbox::class, function () {
457+
$sandbox = m::mock(Sandbox::class);
458+
$sandbox->shouldReceive('setRequest')
459+
->with(m::type('Illuminate\Http\Request'))
460+
->once();
461+
$sandbox->shouldReceive('enable')
462+
->once();
463+
$sandbox->shouldReceive('disable')
464+
->once();
465+
$sandbox->shouldReceive('getApplication')
466+
->once()
467+
->andReturn(m::mock(Container::class));
468+
469+
return $sandbox;
470+
});
471+
472+
$container->alias(Sandbox::class, 'swoole.sandbox');
473+
474+
$manager = $this->getWebsocketManager();
475+
$manager->setApplication($container);
476+
$manager->onHandShake($request, $response);
477+
}
478+
417479
public function testOnMessage()
418480
{
419481
$frame = m::mock('frame');

0 commit comments

Comments
 (0)