The session class has rather complex dependencies, so in order to make its tests more * understandable and to make its dependencies more visible this factory class sets up all the necessary global state & variable contents.
Beispiel #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);
	}
	/**
	* @dataProvider session_begin_attempts
	*/
	public function test_session_begin_valid_session($session_id, $user_id, $user_agent, $ip, $expected_sessions, $expected_cookies, $message)
	{
		$db = $this->new_dbal();
		$session_factory = new phpbb_session_testable_factory;
		$session_factory->set_cookies(array(
			'_sid' => $session_id,
			'_u' => $user_id,
		));
		$session_factory->merge_config_data(array(
			'session_length' => time(), // need to do this to allow sessions started at time 0
		));
		$session_factory->merge_server_data(array(
			'HTTP_USER_AGENT' => $user_agent,
			'REMOTE_ADDR' => $ip,
		));

		$session = $session_factory->get_session($db);
		$session->page = array('page' => 'page', 'forum' => 0);

		$session->session_begin();

		$sql = 'SELECT session_id, session_user_id
			FROM phpbb_sessions
			ORDER BY session_user_id';

		$expected_sessions = $this->replace_session($expected_sessions, $session->session_id);
		$expected_cookies = $this->replace_session($expected_cookies, $session->session_id);

		$this->assertSqlResultEquals(
			$expected_sessions,
			$sql,
			$message
		);

		$session->check_cookies($this, $expected_cookies);

		$session_factory->check($this);
	}