Correct ResponseVerifier logic replaces #39
This commit is contained in:
parent
d8075617ac
commit
d9df3419ba
@ -51,7 +51,13 @@ class ResponseVerifier {
|
||||
}
|
||||
|
||||
public function verifySubProtocol(array $requestHeader, array $responseHeader) {
|
||||
return 0 === count($responseHeader) || count(array_intersect($responseHeader, $requestHeader)) > 0;
|
||||
if (0 === count($responseHeader)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$requestedProtocols = array_map('trim', explode(',', implode(',', $requestHeader)));
|
||||
|
||||
return count($responseHeader) === 1 && count(array_intersect($responseHeader, $requestedProtocols)) === 1;
|
||||
}
|
||||
|
||||
public function verifyExtensions(array $requestHeader, array $responseHeader) {
|
||||
|
@ -21,17 +21,19 @@ class ResponseVerifierTest extends TestCase {
|
||||
public static function subProtocolsProvider() {
|
||||
return [
|
||||
[true, ['a'], ['a']]
|
||||
, [true, ['b', 'a'], ['c', 'd', 'a']]
|
||||
, [false, ['a', 'b', 'c'], ['d']]
|
||||
, [true, ['c', 'd', 'a'], ['a']]
|
||||
, [true, ['c, a', 'd'], ['a']]
|
||||
, [true, [], []]
|
||||
, [true, ['a', 'b'], []]
|
||||
, [false, ['c', 'd', 'a'], ['b', 'a']]
|
||||
, [false, ['a', 'b', 'c'], ['d']]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider subProtocolsProvider
|
||||
*/
|
||||
public function testVerifySubProtocol($expected, $response, $request) {
|
||||
$this->assertEquals($expected, $this->_v->verifySubProtocol($response, $request));
|
||||
public function testVerifySubProtocol($expected, $request, $response) {
|
||||
$this->assertEquals($expected, $this->_v->verifySubProtocol($request, $response));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user