From 11262afa93fc7e1eea31873e3d1a7139230c427e Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Wed, 23 Feb 2011 17:21:51 +0100 Subject: [ticket/10052] Correct session tests, and separate session factory from tests PHPBB3-10052 --- tests/session/testable_factory.php | 118 +++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 tests/session/testable_factory.php (limited to 'tests/session/testable_factory.php') diff --git a/tests/session/testable_factory.php b/tests/session/testable_factory.php new file mode 100644 index 0000000000..6c42120c62 --- /dev/null +++ b/tests/session/testable_factory.php @@ -0,0 +1,118 @@ +config_data = 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, + ); + + $this->cache_data = array( + '_bots' => array(), + ); + + $this->cookies = array(); + + $this->server_data = $_SERVER; + } + + public function get_session(dbal $dbal) + { + // set up all the global variables used by session + global $SID, $_SID, $db, $config, $cache; + + $config = $this->config = $this->get_config_data(); + $db = $dbal; + + $cache = $this->cache = new phpbb_mock_cache($this->get_cache_data()); + $SID = $_SID = null; + + $_COOKIE = $this->cookies; + $_SERVER = $this->server_data; + + $session = new phpbb_mock_session_testable; + return $session; + } + + public function set_cookies($cookies) + { + $this->cookies = $cookies; + } + + public function check(PHPUnit_Framework_Assert $test) + { + $this->cache->check($test, $this->get_cache_data()); + } + + public function merge_config_data($config_data) + { + $this->config_data = array_merge($this->config_data, $config_data); + } + + public function get_config_data() + { + return $this->config_data; + } + + public function merge_cache_data($cache_data) + { + $this->cache_data = array_merge($this->cache_data, $cache_data); + } + + public function get_cache_data() + { + return $this->cache_data; + } + + public function merge_server_data($server_data) + { + return $this->server_data = array_merge($this->server_data, $server_data); + } + + public function get_server_data() + { + return $this->server_data; + } +} + -- cgit v1.2.1 From cb56ab2dbda6c2c33f6437069de35bd09aeadb82 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Wed, 23 Feb 2011 19:41:11 +0100 Subject: [ticket/10052] Add comments to the session testable factory. PHPBB3-10052 --- tests/session/testable_factory.php | 65 ++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 6 deletions(-) (limited to 'tests/session/testable_factory.php') diff --git a/tests/session/testable_factory.php b/tests/session/testable_factory.php index 6c42120c62..f3ef19a257 100644 --- a/tests/session/testable_factory.php +++ b/tests/session/testable_factory.php @@ -12,9 +12,9 @@ require_once dirname(__FILE__) . '/../mock/session_testable.php'; /** * This class exists to setup an instance of phpbb's session class for testing. * -* The class has rather complex dependencies, so in order to make its tests more -* understandable and to make its dependencies more visible this class sets up -* all the necessary global state & variable contents. +* 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. */ class phpbb_session_testable_factory { @@ -57,6 +57,12 @@ class phpbb_session_testable_factory $this->server_data = $_SERVER; } + /** + * Retrieve the configured session class instance + * + * @param dbal $dbal The database connection to use for session data + * @return phpbb_mock_session_testable A session instance + */ public function get_session(dbal $dbal) { // set up all the global variables used by session @@ -75,41 +81,88 @@ class phpbb_session_testable_factory return $session; } - public function set_cookies($cookies) + /** + * Set the cookies which should be present in the request data. + * + * @param array $cookies The cookie data, structured like $_COOKIE contents. + */ + public function set_cookies(array $cookies) { $this->cookies = $cookies; } + /** + * Check if the cache used for the generated session contains correct data. + * + * @param PHPUnit_Framework_Assert $test The test case to call assert methods + * on + */ public function check(PHPUnit_Framework_Assert $test) { $this->cache->check($test, $this->get_cache_data()); } - public function merge_config_data($config_data) + /** + * Merge config data with the current config data to be supplied to session. + * + * New values overwrite new ones. + * + * @param array $config_data The config data to merge with previous data + */ + public function merge_config_data(array $config_data) { $this->config_data = array_merge($this->config_data, $config_data); } + /** + * Retrieve the entire config data to be passed to the session. + * + * @return array Configuration + */ public function get_config_data() { return $this->config_data; } - public function merge_cache_data($cache_data) + /** + * Merge the cache contents with more data. + * + * New values overwrite old ones. + * + * @param array $cache_data The additional cache data + */ + public function merge_cache_data(array $cache_data) { $this->cache_data = array_merge($this->cache_data, $cache_data); } + /** + * Retrieve the entire cache data to be passed to the session. + * + * @return array Cache contents + */ public function get_cache_data() { return $this->cache_data; } + /** + * Merge the current server info ($_SERVER) with more data. + * + * New values overwrite old ones. + * + * @param array $server_data The additional server variables + */ public function merge_server_data($server_data) { return $this->server_data = array_merge($this->server_data, $server_data); } + /** + * Retrieve all server variables to be passed to the session. + * + * @return array Server variables + */ public function get_server_data() { return $this->server_data; -- cgit v1.2.1