aboutsummaryrefslogtreecommitdiffstats
path: root/tests/session/continue_test.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/session/continue_test.php')
-rw-r--r--tests/session/continue_test.php119
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/session/continue_test.php b/tests/session/continue_test.php
new file mode 100644
index 0000000000..ac682e06ac
--- /dev/null
+++ b/tests/session/continue_test.php
@@ -0,0 +1,119 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2008 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+require_once dirname(__FILE__) . '/../mock/cache.php';
+require_once dirname(__FILE__) . '/../mock/session_testable.php';
+
+class phpbb_session_continue_test extends phpbb_database_test_case
+{
+ public function getDataSet()
+ {
+ return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/sessions_full.xml');
+ }
+
+ static public function session_begin_attempts()
+ {
+ global $_SID;
+ return array(
+ array(
+ 'bar_session', '4', 'user agent',
+ array(
+ array('session_id' => 'anon_session', 'session_user_id' => 1),
+ array('session_id' => 'bar_session', 'session_user_id' => 4)
+ ),
+ array(),
+ 'Check if no new session was created',
+ ),
+ array(
+ 'anon_session', '4', 'user agent',
+ array(
+ array('session_id' => 'bar_session', 'session_user_id' => 4),
+ array('session_id' => null, 'session_user_id' => 1) // use generated SID
+ ),
+ array(
+ 'u' => array('1', null),
+ 'k' => array(null, null),
+ 'sid' => array($_SID, null),
+ ),
+ 'Check if an anonymous new session was created',
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider session_begin_attempts
+ */
+ public function test_session_begin_valid_session($session_id, $user_id, $user_agent, $expected_sessions, $expected_cookies, $message)
+ {
+ $this->markTestIncomplete('Test needs to be fixed');
+
+ $session = new phpbb_mock_session_testable;
+ $session->page = array('page' => 'page', 'forum' => 0);
+
+ // set up all the global variables used in session_create
+ global $SID, $_SID, $db, $config, $cache;
+
+ $config = $this->get_config();
+ $db = $this->new_dbal();
+ $cache_data = array(
+ '_bots' => array(),
+ );
+ $cache = new phpbb_mock_cache;
+ $SID = $_SID = null;
+
+ $_COOKIE['_sid'] = $session_id;
+ $_COOKIE['_u'] = $user_id;
+ $_SERVER['HTTP_USER_AGENT'] = $user_agent;
+
+ $config['session_length'] = time(); // need to do this to allow sessions started at time 0
+ $session->session_begin();
+
+ $sql = 'SELECT session_id, session_user_id
+ FROM phpbb_sessions';
+
+ // little tickery to allow using a dataProvider with dynamic expected result
+ foreach ($expected_sessions as $i => $s)
+ {
+ if (is_null($s['session_id']))
+ {
+ $expected_sessions[$i]['session_id'] = $session->session_id;
+ }
+ }
+
+ $this->assertSqlResultEquals(
+ $expected_sessions,
+ $sql,
+ 'Check if no new session was created'
+ );
+
+ $session->check_cookies($this, $expected_cookies);
+
+ $cache->check($this, $cache_data);
+ }
+ static public function get_config()
+ {
+ return array(
+ 'allow_autologin' => false,
+ 'auth_method' => 'db',
+ 'forwarded_for_check' => true,
+ 'active_sessions' => 0, // disable
+ 'rand_seed' => 'foo',
+ 'rand_seed_last_update' => 0,
+ 'max_autologin_time' => 0,
+ 'session_length' => 100,
+ 'form_token_lifetime' => 100,
+ 'cookie_name' => '',
+ 'limit_load' => 0,
+ 'limit_search_load' => 0,
+ 'ip_check' => 3,
+ 'browser_check' => 1,
+ );
+ }
+}
+