Added subprotocol check for client, test fixes
This commit is contained in:
parent
0f4df7fed5
commit
9f405beccb
@ -14,8 +14,12 @@ class ResponseVerifier {
|
||||
$response->getHeader('Sec-WebSocket-Accept')
|
||||
, $request->getHeader('Sec-WebSocket-Key')
|
||||
);
|
||||
$passes += (int)$this->verifySubProtocol(
|
||||
$request->getHeader('Sec-WebSocket-Protocol')
|
||||
, $response->getHeader('Sec-WebSocket-Protocol')
|
||||
);
|
||||
|
||||
return (4 === $passes);
|
||||
return (5 === $passes);
|
||||
}
|
||||
|
||||
public function verifyStatus($status) {
|
||||
@ -41,4 +45,8 @@ class ResponseVerifier {
|
||||
public function sign($key) {
|
||||
return base64_encode(sha1($key . NegotiatorInterface::GUID, true));
|
||||
}
|
||||
|
||||
public function verifySubProtocol(array $requestHeader, array $responseHeader) {
|
||||
return 0 === count($responseHeader) || count(array_intersect($responseHeader, $requestHeader)) > 0;
|
||||
}
|
||||
}
|
@ -1,11 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace Ratchet\RFC6455\Test\Unit\Handshake;
|
||||
|
||||
use Ratchet\RFC6455\Handshake\RequestVerifier;
|
||||
|
||||
/**
|
||||
* covers Ratchet\WebSocket\Version\RFC6455\HandshakeVerifier
|
||||
* @covers Ratchet\RFC6455\Handshake\RequestVerifier
|
||||
*/
|
||||
class RequestVerifierTest extends \PHPUnit_Framework_TestCase {
|
||||
/**
|
||||
|
34
tests/unit/Handshake/ResponseVerifierTest.php
Normal file
34
tests/unit/Handshake/ResponseVerifierTest.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
namespace Ratchet\RFC6455\Test\Unit\Handshake;
|
||||
use Ratchet\RFC6455\Handshake\ResponseVerifier;
|
||||
|
||||
/**
|
||||
* @covers Ratchet\WebSocket\Version\RFC6455\ResponseVerifier
|
||||
*/
|
||||
class ResponseVerifierTest extends \PHPUnit_Framework_TestCase {
|
||||
/**
|
||||
* @var ResponseVerifier
|
||||
*/
|
||||
protected $_v;
|
||||
|
||||
public function setUp() {
|
||||
$this->_v = new ResponseVerifier;
|
||||
}
|
||||
|
||||
public static function subProtocolsProvider() {
|
||||
return [
|
||||
[true, ['a'], ['a']]
|
||||
, [true, ['b', 'a'], ['c', 'd', 'a']]
|
||||
, [false, ['a', 'b', 'c'], ['d']]
|
||||
, [true, [], []]
|
||||
, [true, ['a', 'b'], []]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider subProtocolsProvider
|
||||
*/
|
||||
public function testVerifySubProtocol($expected, $response, $request) {
|
||||
$this->assertEquals($expected, $this->_v->verifySubProtocol($response, $request));
|
||||
}
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace Ratchet\RFC6455\Test\Unit\Messaging\Protocol;
|
||||
|
||||
use Ratchet\RFC6455\Messaging\Protocol\Frame;
|
||||
|
||||
/**
|
||||
* @covers Ratchet\RFC6455\Messaging\Protocol\Frame
|
||||
* @todo getMaskingKey, getPayloadStartingByte don't have tests yet
|
||||
* @todo Could use some clean up in general, I had to rush to fix a bug for a deadline, sorry.
|
||||
*/
|
||||
|
@ -1,12 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Ratchet\RFC6455\Test\Unit\Messaging\Protocol;
|
||||
|
||||
use Ratchet\RFC6455\Messaging\Protocol\Frame;
|
||||
use Ratchet\RFC6455\Messaging\Protocol\Message;
|
||||
|
||||
/**
|
||||
* covers Ratchet\WebSocket\Version\RFC6455\Message
|
||||
* @covers Ratchet\RFC6455\Messaging\Protocol\Message
|
||||
*/
|
||||
class MessageTest extends \PHPUnit_Framework_TestCase {
|
||||
/** @var Message */
|
||||
|
Loading…
Reference in New Issue
Block a user