diff options
author | Nils Adermann <naderman@naderman.de> | 2010-03-06 05:40:38 +0100 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2010-09-17 13:50:09 +0200 |
commit | d7e52ee0f8fb876161ac9705f4347d6431657358 (patch) | |
tree | 3afa5910e0d30003b99a1d77418d4c2e00fded40 /tests/request/request.php | |
parent | cdadda35540d4909a00de01c1671251684e2801f (diff) | |
download | forums-d7e52ee0f8fb876161ac9705f4347d6431657358.tar forums-d7e52ee0f8fb876161ac9705f4347d6431657358.tar.gz forums-d7e52ee0f8fb876161ac9705f4347d6431657358.tar.bz2 forums-d7e52ee0f8fb876161ac9705f4347d6431657358.tar.xz forums-d7e52ee0f8fb876161ac9705f4347d6431657358.zip |
[feature/request-class] Adding a request class based on ascraeus-experiment.
The well known request_var function is now a wrapper that calls a method
on a phpbb_request object. The class provides additional functionality.
It can replace all super globals with special objects that throw errors
when being accessed. They still allow isset operations to keep backward
compatibility with isset($_POST['var']) checks. The phpbb_request class
implements the phpbb_request_interface which is available for easy mocking
of input in tests.
PHPBB3-9716
Diffstat (limited to 'tests/request/request.php')
-rw-r--r-- | tests/request/request.php | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/request/request.php b/tests/request/request.php new file mode 100644 index 0000000000..1376d0665a --- /dev/null +++ b/tests/request/request.php @@ -0,0 +1,89 @@ +<?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/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 $request; + + protected function setUp() + { + // populate super globals + $_POST['test'] = 1; + $_GET['test'] = 2; + $_COOKIE['test'] = 3; + $_REQUEST['test'] = 3; + $_GET['unset'] = ''; + + $this->request = new phpbb_request(); + } + + 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_addslashes_recursively() + { + $data = array('some"string' => array('that"' => 'really"', 'needs"' => '"escaping')); + $expected = array('some\\"string' => array('that\\"' => 'really\\"', 'needs\\"' => '\\"escaping')); + + phpbb_request::addslashes_recursively($data); + + $this->assertEquals($expected, $data); + } + + 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(); + } +} |