public function testDecoratingMethods() { $conns = array(); for ($i = 1; $i <= 3; $i++) { $conns[$i] = new Connection(); $headers = $this->getMock('Guzzle\\Http\\Message\\Request', array('getCookie'), array('POST', '/', array())); $headers->expects($this->once())->method('getCookie', array(ini_get('session.name')))->will($this->returnValue(null)); $conns[$i]->WebSocket = new \StdClass(); $conns[$i]->WebSocket->request = $headers; } $mock = new MockComponent(); $comp = new SessionProvider($mock, new NullSessionHandler()); $comp->onOpen($conns[1]); $comp->onOpen($conns[3]); $comp->onOpen($conns[2]); $this->assertSame($conns[2], $mock->last['onOpen'][0]); $msg = 'Hello World!'; $comp->onMessage($conns[1], $msg); $this->assertSame($conns[1], $mock->last['onMessage'][0]); $this->assertEquals($msg, $mock->last['onMessage'][1]); $comp->onClose($conns[3]); $this->assertSame($conns[3], $mock->last['onClose'][0]); try { throw new \Exception('I threw an error'); } catch (\Exception $e) { } $comp->onError($conns[2], $e); $this->assertEquals($conns[2], $mock->last['onError'][0]); $this->assertEquals($e, $mock->last['onError'][1]); }