Moved frame logic to WebSocketCodec
This commit is contained in:
100
tests/WebSocketCodecTest.php
Normal file
100
tests/WebSocketCodecTest.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\React\WebSocket;
|
||||
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
|
||||
#[CoversClass(WebSocketCodec::class)]
|
||||
class WebSocketCodecTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
public function testEncodingFrames()
|
||||
{
|
||||
$codec = new WebSocketCodec();
|
||||
|
||||
$msg = $codec->encode([
|
||||
'opcode'=>WebSocketCodec::OP_PING,
|
||||
'payload'=>"ping"
|
||||
]);
|
||||
$this->assertEquals("\x89\x04ping", $msg);
|
||||
|
||||
$msg = $codec->encode([
|
||||
'opcode'=>WebSocketCodec::OP_FRAME_TEXT,
|
||||
'payload'=>"abcdefgh"]);
|
||||
$this->assertEquals("\x81\x08abcdefgh", $msg);
|
||||
|
||||
$msg = $codec->encode([
|
||||
'opcode'=>WebSocketCodec::OP_FRAME_TEXT,
|
||||
'payload'=>"abcdefgh",
|
||||
'masked'=>true,
|
||||
'mask'=>"\x00\x00\x00\x00"
|
||||
]);
|
||||
$this->assertEquals("\x81\x88\x00\x00\x00\x00abcdefgh", $msg);
|
||||
|
||||
$msg = $codec->encode([
|
||||
'opcode'=>WebSocketCodec::OP_FRAME_TEXT,
|
||||
'payload'=>"abcdefgh",
|
||||
'masked'=>true,
|
||||
'mask'=>"\x00\xFF\x00\xFF"
|
||||
]);
|
||||
$this->assertEquals("\x81\x88\x00\xFF\x00\xFFa\x9dc\x9be\x99g\x97", $msg);
|
||||
|
||||
}
|
||||
|
||||
public function testDecodingFrames()
|
||||
{
|
||||
$codec = new WebSocketCodec();
|
||||
|
||||
$msg = $codec->decode("\x89\x04ping");
|
||||
$this->assertEquals([
|
||||
'opcode'=>WebSocketCodec::OP_PING,
|
||||
'payload'=>"ping",
|
||||
'final'=>true,
|
||||
'rsv1'=>false,
|
||||
'rsv2'=>false,
|
||||
'rsv3'=>false,
|
||||
'length'=>4,
|
||||
'masked'=>false
|
||||
], $msg);
|
||||
|
||||
$msg = $codec->decode("\x81\x08abcdefgh");
|
||||
$this->assertEquals([
|
||||
'opcode'=>WebSocketCodec::OP_FRAME_TEXT,
|
||||
'payload'=>"abcdefgh",
|
||||
'final'=>true,
|
||||
'rsv1'=>false,
|
||||
'rsv2'=>false,
|
||||
'rsv3'=>false,
|
||||
'length'=>8,
|
||||
'masked'=>false
|
||||
], $msg);
|
||||
|
||||
$msg = $codec->decode("\x81\x88\x00\x00\x00\x00abcdefgh");
|
||||
$this->assertEquals([
|
||||
'opcode'=>WebSocketCodec::OP_FRAME_TEXT,
|
||||
'payload'=>"abcdefgh",
|
||||
'final'=>true,
|
||||
'rsv1'=>false,
|
||||
'rsv2'=>false,
|
||||
'rsv3'=>false,
|
||||
'length'=>8,
|
||||
'masked'=>true,
|
||||
'mask'=>"\x00\x00\x00\x00"
|
||||
], $msg);
|
||||
|
||||
$msg = $codec->decode("\x81\x88\x00\xFF\x00\xFFa\x9dc\x9be\x99g\x97");
|
||||
$this->assertEquals([
|
||||
'opcode'=>WebSocketCodec::OP_FRAME_TEXT,
|
||||
'payload'=>"abcdefgh",
|
||||
'final'=>true,
|
||||
'rsv1'=>false,
|
||||
'rsv2'=>false,
|
||||
'rsv3'=>false,
|
||||
'length'=>8,
|
||||
'masked'=>true,
|
||||
'mask'=>"\x00\xFF\x00\xFF"
|
||||
], $msg);
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user