phpbb_session_testable_factory::get_session PHP Method

get_session() public method

Retrieve the configured session class instance
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;
    }

Usage Example

コード例 #1
0
	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);
	}
All Usage Examples Of phpbb_session_testable_factory::get_session