Esempio n. 1
0
 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));
 }
Esempio n. 2
0
 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());
 }
Esempio n. 3
0
File: TH.php Progetto: aladin1394/CM
 /**
  * @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;
 }
Esempio n. 4
0
 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'));
 }
Esempio n. 5
0
 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());
 }