/**
  * @runInSeparateProcess
  * @outputBuffering disabled
  */
 public function testProtectedController()
 {
     if (!function_exists('xdebug_get_headers')) {
         $this->markTestSkipped('Xdebug not installed');
     }
     $autoloader = new Autoloader();
     $autoloader->register();
     $autoloader->addNamespaces([['Linna\\FOO', dirname(__DIR__) . '/FOO']]);
     //config options
     $session = new Session();
     $session->start();
     $password = new Password();
     $storedPassword = $password->hash('password');
     //attemp first login
     $login = new Login($session, $password);
     $login->login('root', 'password', $storedUser = '******', $storedPassword, 1);
     $loginLogged = $login->logged;
     $model = new FOOModel();
     $controller1 = new FOOProtectedController($model, $login);
     $controllerTest1 = $controller1->test;
     $login->logout();
     $loginNoLogged = $login->logged;
     ob_start();
     $controller2 = new FOOProtectedController($model, $login);
     $headers_list = xdebug_get_headers();
     ob_end_clean();
     $this->assertEquals(true, $loginLogged);
     $this->assertEquals(false, $loginNoLogged);
     $this->assertEquals(true, $controllerTest1);
     $this->assertEquals(true, in_array('Location: http://localhost', $headers_list));
     $session->destroy();
 }
Exemple #2
0
 /**
  * For do logout, delete login information from session
  *
  * @return bool
  */
 public function logout() : bool
 {
     unset($this->sessionInstance->login, $this->sessionInstance->loginTime);
     $this->sessionInstance->regenerate();
     $this->logged = false;
     return true;
 }
 /**
  * @runInSeparateProcess
  */
 public function testExpiredSession()
 {
     $MysqlAdapter = new MysqlPDOAdapter($GLOBALS['db_type'] . ':host=' . $GLOBALS['db_host'] . ';dbname=' . $GLOBALS['db_name'] . ';charset=utf8mb4', $GLOBALS['db_username'], $GLOBALS['db_password'], array(\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_WARNING));
     $dbase = new Database($MysqlAdapter);
     $sessionHandler = new DatabaseSessionHandler($dbase);
     $session = new Session(['expire' => 8]);
     $session->setSessionHandler($sessionHandler);
     $session->start();
     $session_id = $session->id;
     $session->time = $session->time - 1800;
     $session->commit();
     $session->setSessionHandler($sessionHandler);
     $session->start();
     $session_id2 = $session->id;
     $test = $session_id === $session_id2 ? 1 : 0;
     $this->assertEquals(0, $test);
     $session->destroy();
 }
 /**
  * @runInSeparateProcess
  */
 public function testExpiredSession()
 {
     if (!class_exists('Memcached')) {
         $this->markTestSkipped('Memcached module not installed');
     }
     //create memcached instance
     $memcached = new Memcached();
     //connect to memcached server
     $memcached->addServer($GLOBALS['mem_host'], $GLOBALS['mem_port']);
     $sessionHandler = new MemcachedSessionHandler($memcached, 8);
     $session = new Session(['expire' => 8]);
     $session->setSessionHandler($sessionHandler);
     $session->start();
     $session_id = $session->id;
     $session->time = $session->time - 1800;
     $session->commit();
     $session->setSessionHandler($sessionHandler);
     $session->start();
     $session_id2 = $session->id;
     $test = $session_id === $session_id2 ? 1 : 0;
     $this->assertEquals(0, $test);
     $session->destroy();
 }
Exemple #5
0
 */
//create dipendency injection resolver
$DIResolver = new DIResolver();
//add unresolvable class to DIResolver
$DIResolver->cacheUnResolvable('\\Linna\\Database\\Database', $dataBase);
//$DIResolver->cacheUnResolvable('\Memcached', $memcached);
//$DIResolver->cacheUnResolvable('\Linna\Session\MemcachedSessionHandler', new MemcachedSessionHandler($memcached, $options['session']['expire']));
/**
 * Session section
 *
 */
//resolve Session Handler
$sessionHandler = $DIResolver->resolve('\\Linna\\Session\\DatabaseSessionHandler');
//$sessionHandler = $DIResolver->resolve('\Linna\Session\MemcachedSessionHandler');
//create session object
$session = new Session($options['session']);
//set session handler
//optional if not set, app will use php session standard storage
$session->setSessionHandler($sessionHandler);
//start session
$session->start();
//store session instance
$DIResolver->cacheUnResolvable('\\Linna\\Session\\Session', $session);
/**
 * Router Section
 *
 */
//start router
$router = new Router($appRoutes, $options['router']);
//evaluate request uri and method
$router->validate($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);