diff options
| author | Igor Wiedler <igor@wiedler.ch> | 2010-10-10 18:39:44 +0200 |
|---|---|---|
| committer | Igor Wiedler <igor@wiedler.ch> | 2010-10-10 18:39:44 +0200 |
| commit | a885095897054c91ab68b753ce2a86ae74f2f666 (patch) | |
| tree | 9adb9074112239838a1a69078702f08e0bcda9be /tests/request | |
| parent | 9a39f55c24fee8fe817823097e8f596b92ab7049 (diff) | |
| parent | c2ffa78521a656b1a183d75c8de2f88624011967 (diff) | |
| download | forums-a885095897054c91ab68b753ce2a86ae74f2f666.tar forums-a885095897054c91ab68b753ce2a86ae74f2f666.tar.gz forums-a885095897054c91ab68b753ce2a86ae74f2f666.tar.bz2 forums-a885095897054c91ab68b753ce2a86ae74f2f666.tar.xz forums-a885095897054c91ab68b753ce2a86ae74f2f666.zip | |
Merge branch 'feature/igorw/request-class' into develop
* feature/igorw/request-class: (21 commits)
[feature/request-class] Fix mcp.php mode parameter
[feature/request-class] Fix remember and session hide on login
[feature/request-class] Fix missing include in database_update
[feature/request-class] Make additional request test cases run
[feature/request-class] Adjust some trailing newlines
[feature/request-class] Remove tricky $_* is_array from acp_profile
[feature/request-class] Convert any direct access to $_* to use $request
[feature/request-class] Add $request to style.php, minor change
[feature/request-class] Prevent recursive_set_var from applying htmlspecialchars twice
[feature/request-class] Removal of direct access to some superglobals
[feature/request-class] Refactor request classes to use autoloading
[feature/request-class] Automatically normalize multibyte data in request_var
[feature/request-class] Request class test now uses a type cast helper mock.
[feature/request-class] Refactored request class and wrapper functions.
[feature/request-class] Extracted type casting helpers from the request class.
[feature/request-class] Replace direct use of GET/REQUEST with request_var.
[feature/request-class] Use the request class in the installer & updater.
[feature/request-class] request_var should return after setting the request object.
[feature/request-class] Instantiate a global request class instance.
[feature/request-class] New request class supports recursive arrays.
...
Diffstat (limited to 'tests/request')
| -rw-r--r-- | tests/request/all_tests.php | 8 | ||||
| -rw-r--r-- | tests/request/deactivated_super_global.php | 26 | ||||
| -rw-r--r-- | tests/request/request.php | 83 | ||||
| -rw-r--r-- | tests/request/request_class.php | 74 | ||||
| -rw-r--r-- | tests/request/request_var.php | 15 | ||||
| -rw-r--r-- | tests/request/type_cast_helper.php | 54 |
6 files changed, 180 insertions, 80 deletions
diff --git a/tests/request/all_tests.php b/tests/request/all_tests.php index 1ee3029b36..f1633309fd 100644 --- a/tests/request/all_tests.php +++ b/tests/request/all_tests.php @@ -15,6 +15,9 @@ if (!defined('PHPUnit_MAIN_METHOD')) require_once 'test_framework/framework.php'; require_once 'PHPUnit/TextUI/TestRunner.php'; +require_once 'request/type_cast_helper.php'; +require_once 'request/deactivated_super_global.php'; +require_once 'request/request.php'; require_once 'request/request_var.php'; class phpbb_request_all_tests @@ -28,7 +31,10 @@ class phpbb_request_all_tests { $suite = new PHPUnit_Framework_TestSuite('phpBB Request Parameter Handling'); - $suite->addTestSuite('phpbb_request_request_var_test'); + $suite->addTestSuite('phpbb_type_cast_helper_test'); + $suite->addTestSuite('phpbb_deactivated_super_global_test'); + $suite->addTestSuite('phpbb_request_test'); + $suite->addTestSuite('phpbb_request_var_test'); return $suite; } diff --git a/tests/request/deactivated_super_global.php b/tests/request/deactivated_super_global.php new file mode 100644 index 0000000000..3c7a638e38 --- /dev/null +++ b/tests/request/deactivated_super_global.php @@ -0,0 +1,26 @@ +<?php +/** +* +* @package testing +* @version $Id$ +* @copyright (c) 2009 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once 'test_framework/framework.php'; +require_once '../phpBB/includes/request/interface.php'; +require_once '../phpBB/includes/request/deactivated_super_global.php'; + +class phpbb_deactivated_super_global_test extends phpbb_test_case +{ + /** + * Checks that on write access the correct error is thrown + */ + public function test_write_triggers_error() + { + $this->setExpectedTriggerError(E_USER_ERROR); + $obj = new phpbb_request_deactivated_super_global($this->getMock('phpbb_request_interface'), 'obj', phpbb_request_interface::POST); + $obj->offsetSet(0, 0); + } +} diff --git a/tests/request/request.php b/tests/request/request.php new file mode 100644 index 0000000000..cf275e763c --- /dev/null +++ b/tests/request/request.php @@ -0,0 +1,83 @@ +<?php +/** +* +* @package testing +* @version $Id$ +* @copyright (c) 2009 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once 'test_framework/framework.php'; +require_once '../phpBB/includes/request/type_cast_helper_interface.php'; +require_once '../phpBB/includes/request/interface.php'; +require_once '../phpBB/includes/request/deactivated_super_global.php'; +require_once '../phpBB/includes/request/request.php'; + +class phpbb_request_test extends phpbb_test_case +{ + private $type_cast_helper; + private $request; + + protected function setUp() + { + // populate super globals + $_POST['test'] = 1; + $_GET['test'] = 2; + $_COOKIE['test'] = 3; + $_REQUEST['test'] = 3; + $_GET['unset'] = ''; + + $this->type_cast_helper = $this->getMock('phpbb_request_type_cast_helper_interface'); + + $this->request = new phpbb_request($this->type_cast_helper); + } + + public function test_toggle_super_globals() + { + $this->assertTrue($this->request->super_globals_disabled(), 'Superglobals were not disabled'); + + $this->request->enable_super_globals(); + + $this->assertFalse($this->request->super_globals_disabled(), 'Superglobals were not enabled'); + + $this->assertEquals(1, $_POST['test'], 'Checking $_POST after enable_super_globals'); + $this->assertEquals(2, $_GET['test'], 'Checking $_GET after enable_super_globals'); + $this->assertEquals(3, $_COOKIE['test'], 'Checking $_COOKIE after enable_super_globals'); + $this->assertEquals(3, $_REQUEST['test'], 'Checking $_REQUEST after enable_super_globals'); + + $_POST['x'] = 2; + $this->assertEquals($_POST, $GLOBALS['_POST'], 'Checking whether $_POST can still be accessed via $GLOBALS[\'_POST\']'); + } + + /** + * Checks that directly accessing $_POST will trigger + * an error. + */ + public function test_disable_post_super_global() + { + $this->setExpectedTriggerError(E_USER_ERROR); + $_POST['test'] = 3; + } + + public function test_is_set_post() + { + $this->assertTrue($this->request->is_set_post('test')); + $this->assertFalse($this->request->is_set_post('unset')); + } + + public function test_variable_names() + { + $expected = array('test', 'unset'); + $result = $this->request->variable_names(); + $this->assertEquals($expected, $result); + } + + /** + * Makes sure super globals work properly after these tests + */ + protected function tearDown() + { + $this->request->enable_super_globals(); + } +} diff --git a/tests/request/request_class.php b/tests/request/request_class.php deleted file mode 100644 index e8c2154bab..0000000000 --- a/tests/request/request_class.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php -/** -* -* @package testing -* @version $Id$ -* @copyright (c) 2008 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License -* -*/ - -define('IN_PHPBB', true); - -require_once 'test_framework/framework.php'; - -require_once '../phpBB/includes/functions.php'; - -class phpbb_request_request_class_test extends phpbb_test_case -{ - protected function setUp() - { - $_POST['test'] = 1; - $_GET['test'] = 2; - $_COOKIE['test'] = 3; - $_REQUEST['test'] = 3; - - // reread data from super globals - request::reset(); - } - - public function test_toggle_super_globals() - { - // toggle super globals - request::disable_super_globals(); - request::enable_super_globals(); - - $this->assertEquals(1, $_POST['test'], 'Checking $_POST toggling via request::dis/enable_super_globals'); - $this->assertEquals(2, $_GET['test'], 'Checking $_GET toggling via request::dis/enable_super_globals'); - $this->assertEquals(3, $_COOKIE['test'], 'Checking $_COOKIE toggling via request::dis/enable_super_globals'); - $this->assertEquals(3, $_REQUEST['test'], 'Checking $_REQUEST toggling via request::dis/enable_super_globals'); - - $_POST['x'] = 2; - $this->assertEquals($_POST, $GLOBALS['_POST'], 'Checking whether $_POST can still be accessed via $GLOBALS[\'_POST\']'); - } - - /** - * Checks that directly accessing $_POST will trigger - * an error. - */ - public function test_disable_post_super_global() - { - request::disable_super_globals(); - - $this->setExpectedTriggerError(E_USER_ERROR); - $_POST['test'] = 3; - } - - public function test_is_set_post() - { - $_GET['unset'] = ''; - request::reset(); - - $this->assertTrue(request::is_set_post('test')); - $this->assertFalse(request::is_set_post('unset')); - } - - /** - * Makes sure super globals work properly after these tests - */ - protected function tearDown() - { - request::enable_super_globals(); - request::reset(); - } -}
\ No newline at end of file diff --git a/tests/request/request_var.php b/tests/request/request_var.php index 0f24d77034..1c360d45d0 100644 --- a/tests/request/request_var.php +++ b/tests/request/request_var.php @@ -8,9 +8,14 @@ */ require_once 'test_framework/framework.php'; +require_once '../phpBB/includes/request/type_cast_helper_interface.php'; +require_once '../phpBB/includes/request/type_cast_helper.php'; +require_once '../phpBB/includes/request/deactivated_super_global.php'; +require_once '../phpBB/includes/request/interface.php'; +require_once '../phpBB/includes/request/request.php'; require_once '../phpBB/includes/functions.php'; -class phpbb_request_request_var_test extends phpbb_test_case +class phpbb_request_var_test extends phpbb_test_case { /** * @dataProvider request_variables @@ -76,11 +81,14 @@ class phpbb_request_request_var_test extends phpbb_test_case /** * @dataProvider deep_access * Only possible with 3.1.x (later) + */ public function test_deep_multi_dim_array_access($path, $default, $expected) { $this->unset_variables('var'); - $_REQUEST['var'] = array( + // cannot set $_REQUEST directly because in phpbb_request implementation + // $_REQUEST = $_GET + $_POST + $_POST['var'] = array( 0 => array( 'b' => array( true => array( @@ -110,7 +118,6 @@ class phpbb_request_request_var_test extends phpbb_test_case array(array('var', 0, 'b', true), array(0 => ''), array(5 => 'c', 6 => 'd')), ); } -*/ public static function request_variables() { @@ -212,7 +219,6 @@ class phpbb_request_request_var_test extends phpbb_test_case 'abc' => array() ) ), - /* 3-dimensional (not supported atm! array( // input: array( @@ -257,7 +263,6 @@ class phpbb_request_request_var_test extends phpbb_test_case 'ä' => array(4 => array('a' => 2, 'ö' => 3)), ) ), - */ ); } diff --git a/tests/request/type_cast_helper.php b/tests/request/type_cast_helper.php new file mode 100644 index 0000000000..291b414fd3 --- /dev/null +++ b/tests/request/type_cast_helper.php @@ -0,0 +1,54 @@ +<?php +/** +* +* @package testing +* @version $Id$ +* @copyright (c) 2009 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once 'test_framework/framework.php'; +require_once '../phpBB/includes/utf/utf_tools.php'; +require_once '../phpBB/includes/request/type_cast_helper_interface.php'; +require_once '../phpBB/includes/request/type_cast_helper.php'; + +class phpbb_type_cast_helper_test extends phpbb_test_case +{ + private $type_cast_helper; + + protected function setUp() + { + $this->type_cast_helper = new phpbb_request_type_cast_helper(); + } + + public function test_addslashes_recursively() + { + $data = array('some"string' => array('that"' => 'really"', 'needs"' => '"escaping')); + $expected = array('some\\"string' => array('that\\"' => 'really\\"', 'needs\\"' => '\\"escaping')); + + $this->type_cast_helper->addslashes_recursively($data); + + $this->assertEquals($expected, $data); + } + + public function test_simple_recursive_set_var() + { + $data = 'eviL<3'; + $expected = 'eviL<3'; + + $this->type_cast_helper->recursive_set_var($data, '', true); + + $this->assertEquals($expected, $data); + } + + public function test_nested_recursive_set_var() + { + $data = array('eviL<3'); + $expected = array('eviL<3'); + + $this->type_cast_helper->recursive_set_var($data, array(0 => ''), true); + + $this->assertEquals($expected, $data); + } +} |
