mxmbsocket/tests/Ratchet/Tests/Component/Server/IpBlackListComponentTest.php
Chris Boden 852e5777e3 Silently fail unblock
If the user unblocks and address that was not blocked, silently fail
2012-04-29 13:53:10 -04:00

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'));
}
}