public get_session ( phpbb\db\driver\driver_interface $dbal ) : phpbb_mock_session_testable | ||
$dbal | phpbb\db\driver\driver_interface | The database connection to use for session data |
return | phpbb_mock_session_testable | A session instance |
public function get_session(\phpbb\db\driver\driver_interface $dbal)
{
// set up all the global variables used by session
global $SID, $_SID, $db, $config, $cache, $request, $phpbb_container, $phpbb_root_path;
$request = $this->request = new phpbb_mock_request(array(), array(), $this->cookies, $this->server_data);
$config = $this->config = new \phpbb\config\config($this->get_config_data());
$db = $dbal;
$cache = $this->cache = new phpbb_mock_cache($this->get_cache_data());
$SID = $_SID = null;
$phpbb_container = $this->container = new phpbb_mock_container_builder();
$phpbb_container->set('auth.provider.db', new phpbb_mock_auth_provider());
$phpbb_container->setParameter('core.environment', PHPBB_ENVIRONMENT);
$phpbb_container->setParameter('core.cache_dir', $phpbb_root_path . 'cache/' . PHPBB_ENVIRONMENT . '/');
$provider_collection = new \phpbb\auth\provider_collection($phpbb_container, $config);
$provider_collection->add('auth.provider.db');
$phpbb_container->set('auth.provider_collection', $provider_collection);
$session = new phpbb_mock_session_testable();
return $session;
}
public function test_login_session_create() { $db = $this->new_dbal(); $session_factory = new phpbb_session_testable_factory; $session = $session_factory->get_session($db); $session->page = array('page' => 'page', 'forum' => 0); $session->session_create(3); $sql = 'SELECT session_user_id FROM phpbb_sessions'; $this->assertSqlResultEquals( array(array('session_user_id' => 3)), $sql, 'Check if exacly one session for user id 3 was created' ); $cookie_expire = $session->time_now + 31536000; // default is one year $session->check_cookies($this, array( 'u' => array(null, $cookie_expire), 'k' => array(null, $cookie_expire), 'sid' => array($session->session_id, $cookie_expire), )); global $SID, $_SID; $this->assertEquals($session->session_id, $_SID); $this->assertEquals('?sid=' . $session->session_id, $SID); $session_factory->check($this); }