public function testGetViewer() { $user = CMTest_TH::createUser(); $uri = '/'; $headers = array('Host' => 'example.ch', 'Connection' => 'keep-alive'); $mock = $this->getMockForAbstractClass('CM_Http_Request_Abstract', array($uri, $headers)); /** @var CM_Http_Request_Abstract $mock */ $this->assertNull($mock->getViewer()); $headers = array('Host' => 'example.ch', 'Connection' => 'keep-alive', 'Cookie' => 'sessionId=a1d2726e5b3801226aafd12fd62496c8'); $mock = $this->getMockForAbstractClass('CM_Http_Request_Abstract', array($uri, $headers)); try { $mock->getViewer(true); $this->fail(); } catch (CM_Exception_AuthRequired $ex) { $this->assertTrue(true); } $session = new CM_Session(); $session->setUser($user); $headers = array('Host' => 'example.ch', 'Connection' => 'keep-alive', 'Cookie' => 'sessionId=' . $session->getId()); unset($session); $mock = $this->getMockForAbstractClass('CM_Http_Request_Abstract', array($uri, $headers)); $this->assertEquals($user, $mock->getViewer(true)); $user2 = CMTest_TH::createUser(); $mock = $this->getMockForAbstractClass('CM_Http_Request_Abstract', array($uri, $headers, null, $user2)); $this->assertEquals($user2, $mock->getViewer(true)); }
public function testOnRedisMessageSubscribeUser() { $adapter = new CM_MessageStream_Adapter_SocketRedis([]); $user = CMTest_TH::createUser(); $session = new CM_Session(); $session->setUser($user); $session->write(); $message = array('type' => 'subscribe', 'data' => array('channel' => 'foo:' . CM_Model_StreamChannel_Message::getTypeStatic(), 'clientKey' => 'bar', 'data' => array('sessionId' => $session->getId()))); $adapter->onRedisMessage(json_encode($message)); $streamChannel = CM_Model_StreamChannel_Message::findByKeyAndAdapter('foo', $adapter->getType()); $streamSubscribe = CM_Model_Stream_Subscribe::findByKeyAndChannel('bar', $streamChannel); $this->assertEquals($user, $streamSubscribe->getUser()); }
/** * @param CM_Model_User|null $user * @return CM_Session */ public static function createSession(CM_Model_User $user = null) { if (is_null($user)) { $user = self::createUser(); } $session = new CM_Session(); $session->setUser($user); $session->write(); return $session; }
public function testStart() { /** @var CM_Model_User $user */ $user = CM_Model_User::createStatic(); $activityStamp1 = time(); $session = new CM_Session(); $session->setUser($user); $sessionId = $session->getId(); unset($session); $session = new CM_Session($sessionId); $this->assertEquals($activityStamp1, $session->getUser(true)->getLatestActivity(), null, 1); CMTest_TH::timeForward(CM_Model_User::ACTIVITY_EXPIRATION / 2); $session = new CM_Session($sessionId); $session->start(); $this->assertEquals($activityStamp1, $session->getUser(true)->getLatestActivity(), null, 1); CM_Db_Db::update('cm_session', array('data' => serialize(array('userId' => $user->getId(), 'foo' => 'bar')))); unset($session); CMTest_TH::clearCache(); CMTest_TH::timeForward(CM_Model_User::ACTIVITY_EXPIRATION / 2 + 1); $activityStamp2 = time(); $session = new CM_Session($sessionId); $session->start(); $this->assertEquals($activityStamp2, $session->getUser(true)->getLatestActivity(), null, 1); CMTest_TH::timeForward($session->getLifetime() / 2); $session->start(); $this->assertEquals('bar', $session->get('foo')); CM_Db_Db::update('cm_session', array('data' => serialize(array('userId' => $user->getId(), 'foo' => 'foo')))); unset($session); CMTest_TH::clearCache(); $session = new CM_Session($sessionId); $this->assertEquals('bar', $session->get('foo')); }
public function testSetSession() { $user = CMTest_TH::createUser(); $session = new CM_Session(); $request = new CM_Http_Request_Get('/'); $session->setUser($user); $request->setSession($session); $this->assertEquals($session, $request->getSession()); $this->assertEquals($user, $request->getViewer()); $session->deleteUser(); $request->setSession($session); $this->assertEquals($session, $request->getSession()); $this->assertSame(null, $request->getViewer()); }