91 lines
2.8 KiB
PHP
91 lines
2.8 KiB
PHP
<?php
|
|
namespace Ratchet\Tests\Component\Server;
|
|
use Ratchet\Component\Server\IpBlackListComponent;
|
|
use Ratchet\Tests\Mock\Connection;
|
|
use Ratchet\Tests\Mock\Component as MockComponent;
|
|
|
|
/**
|
|
* @covers Ratchet\Component\Server\IpBlackListComponent
|
|
*/
|
|
class IpBlackListComponentTest extends \PHPUnit_Framework_TestCase {
|
|
protected $_comp;
|
|
protected $_mock;
|
|
|
|
public function setUp() {
|
|
$this->_mock = new MockComponent;
|
|
$this->_comp = new IpBlackListComponent($this->_mock);
|
|
}
|
|
|
|
public function testBlockAndCloseOnOpen() {
|
|
$conn = new Connection;
|
|
|
|
$this->_comp->blockAddress($conn->remoteAddress);
|
|
|
|
$ret = $this->_comp->onOpen($conn);
|
|
|
|
$this->assertInstanceOf('\\Ratchet\\Resource\\Command\\Action\\CloseConnection', $ret);
|
|
}
|
|
|
|
public function testAddAndRemoveWithFluentInterfaces() {
|
|
$blockOne = '127.0.0.1';
|
|
$blockTwo = '192.168.1.1';
|
|
$unblock = '75.119.207.140';
|
|
|
|
$this->_comp
|
|
->blockAddress($unblock)
|
|
->blockAddress($blockOne)
|
|
->unblockAddress($unblock)
|
|
->blockAddress($blockTwo)
|
|
;
|
|
|
|
$this->assertEquals(array($blockOne, $blockTwo), $this->_comp->getBlockedAddresses());
|
|
}
|
|
|
|
public function testDecoratingMethods() {
|
|
$conn1 = new Connection;
|
|
$conn2 = new Connection;
|
|
$conn3 = new Connection;
|
|
|
|
$this->_comp->onOpen($conn1);
|
|
$this->_comp->onOpen($conn3);
|
|
$this->_comp->onOpen($conn2);
|
|
$this->assertSame($conn2, $this->_mock->last['onOpen'][0]);
|
|
|
|
$msg = 'Hello World!';
|
|
$this->_comp->onMessage($conn1, $msg);
|
|
$this->assertSame($conn1, $this->_mock->last['onMessage'][0]);
|
|
$this->assertEquals($msg, $this->_mock->last['onMessage'][1]);
|
|
|
|
$this->_comp->onClose($conn3);
|
|
$this->assertSame($conn3, $this->_mock->last['onClose'][0]);
|
|
|
|
try {
|
|
throw new \Exception('I threw an error');
|
|
} catch (\Exception $e) {
|
|
}
|
|
|
|
$this->_comp->onError($conn2, $e);
|
|
$this->assertEquals($conn2, $this->_mock->last['onError'][0]);
|
|
$this->assertEquals($e, $this->_mock->last['onError'][1]);
|
|
}
|
|
|
|
public function addressProvider() {
|
|
return array(
|
|
array('127.0.0.1', '127.0.0.1')
|
|
, array('localhost', 'localhost')
|
|
, array('fe80::1%lo0', 'fe80::1%lo0')
|
|
, array('127.0.0.1', '127.0.0.1:6392')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider addressProvider
|
|
*/
|
|
public function testFilterAddress($expected, $input) {
|
|
$this->assertEquals($expected, $this->_comp->filterAddress($input));
|
|
}
|
|
|
|
public function testUnblockingSilentlyFails() {
|
|
$this->assertInstanceOf('\\Ratchet\\Component\\Server\\IpBlackListComponent', $this->_comp->unblockAddress('localhost'));
|
|
}
|
|
} |