aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2010-03-06 05:40:38 +0100
committerNils Adermann <naderman@naderman.de>2010-09-17 13:50:09 +0200
commitd7e52ee0f8fb876161ac9705f4347d6431657358 (patch)
tree3afa5910e0d30003b99a1d77418d4c2e00fded40 /tests
parentcdadda35540d4909a00de01c1671251684e2801f (diff)
downloadforums-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')
-rw-r--r--tests/request/all_tests.php4
-rw-r--r--tests/request/deactivated_super_global.php25
-rw-r--r--tests/request/request.php89
-rw-r--r--tests/request/request_class.php74
-rw-r--r--tests/request/request_var.php3
5 files changed, 121 insertions, 74 deletions
diff --git a/tests/request/all_tests.php b/tests/request/all_tests.php
index 1ee3029b36..6757d463c5 100644
--- a/tests/request/all_tests.php
+++ b/tests/request/all_tests.php
@@ -15,6 +15,8 @@ if (!defined('PHPUnit_MAIN_METHOD'))
require_once 'test_framework/framework.php';
require_once 'PHPUnit/TextUI/TestRunner.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,6 +30,8 @@ class phpbb_request_all_tests
{
$suite = new PHPUnit_Framework_TestSuite('phpBB Request Parameter Handling');
+ $suite->addTestSuite('phpbb_request_deactivated_super_global_test');
+ $suite->addTestSuite('phpbb_request_test');
$suite->addTestSuite('phpbb_request_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..dcf17b0a0e
--- /dev/null
+++ b/tests/request/deactivated_super_global.php
@@ -0,0 +1,25 @@
+<?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/deactivated_super_global.php';
+
+class phpbb_request_deactivated_super_global_test extends phpbb_test_case
+{
+ /**
+ * Checks that on write access the correct error is thrown
+ */
+ public function test_write_results_in_error()
+ {
+ $this->setExpectedTriggerError(E_USER_ERROR);
+ $obj = new phpbb_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..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();
+ }
+}
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..50c6ffd44b 100644
--- a/tests/request/request_var.php
+++ b/tests/request/request_var.php
@@ -8,6 +8,9 @@
*/
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';
require_once '../phpBB/includes/functions.php';
class phpbb_request_request_var_test extends phpbb_test_case