| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace Ratchet\Server;
- use Ratchet\Server\IpBlackList;
- /**
- * @covers Ratchet\Server\IpBlackList
- */
- class IpBlackListTest extends \PHPUnit_Framework_TestCase {
- protected $blocker;
- protected $mock;
- public function setUp() {
- $this->mock = $this->getMock('\\Ratchet\\MessageComponentInterface');
- $this->blocker = new IpBlackList($this->mock);
- }
- public function testOnOpen() {
- $this->mock->expects($this->exactly(3))->method('onOpen');
- $conn1 = $this->newConn();
- $conn2 = $this->newConn();
- $conn3 = $this->newConn();
- $this->blocker->onOpen($conn1);
- $this->blocker->onOpen($conn3);
- $this->blocker->onOpen($conn2);
- }
- public function testBlockDoesNotTriggerOnOpen() {
- $conn = $this->newConn();
- $this->blocker->blockAddress($conn->remoteAddress);
- $this->mock->expects($this->never())->method('onOpen');
- $ret = $this->blocker->onOpen($conn);
- }
- public function testBlockDoesNotTriggerOnClose() {
- $conn = $this->newConn();
- $this->blocker->blockAddress($conn->remoteAddress);
- $this->mock->expects($this->never())->method('onClose');
- $ret = $this->blocker->onOpen($conn);
- }
- public function testOnMessageDecoration() {
- $conn = $this->newConn();
- $msg = 'Hello not being blocked';
- $this->mock->expects($this->once())->method('onMessage')->with($conn, $msg);
- $this->blocker->onMessage($conn, $msg);
- }
- public function testOnCloseDecoration() {
- $conn = $this->newConn();
- $this->mock->expects($this->once())->method('onClose')->with($conn);
- $this->blocker->onClose($conn);
- }
- public function testBlockClosesConnection() {
- $conn = $this->newConn();
- $this->blocker->blockAddress($conn->remoteAddress);
- $conn->expects($this->once())->method('close');
- $this->blocker->onOpen($conn);
- }
- public function testAddAndRemoveWithFluentInterfaces() {
- $blockOne = '127.0.0.1';
- $blockTwo = '192.168.1.1';
- $unblock = '75.119.207.140';
- $this->blocker
- ->blockAddress($unblock)
- ->blockAddress($blockOne)
- ->unblockAddress($unblock)
- ->blockAddress($blockTwo)
- ;
- $this->assertEquals(array($blockOne, $blockTwo), $this->blocker->getBlockedAddresses());
- }
- public function testDecoratorPassesErrors() {
- $conn = $this->newConn();
- $e = new \Exception('I threw an error');
- $this->mock->expects($this->once())->method('onError')->with($conn, $e);
- $this->blocker->onError($conn, $e);
- }
- 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->blocker->filterAddress($input));
- }
- public function testUnblockingSilentlyFails() {
- $this->assertInstanceOf('\\Ratchet\\Server\\IpBlackList', $this->blocker->unblockAddress('localhost'));
- }
- protected function newConn() {
- $conn = $this->getMock('\\Ratchet\\ConnectionInterface');
- $conn->remoteAddress = '127.0.0.1';
- return $conn;
- }
- }
|