6 * @copyright (c) 2008 phpBB Group
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
11 define('IN_PHPBB', true);
13 require_once 'test_framework/framework.php';
15 require_once '../phpBB/includes/functions.php';
17 class phpbb_request_request_var_test
extends phpbb_test_case
20 * @dataProvider request_variables
22 public function test_post($variable_value, $default, $multibyte, $expected)
24 $variable_name = 'name';
26 $_POST[$variable_name] = $variable_value;
27 $_REQUEST[$variable_name] = $variable_value;
29 // reread data from super globals
32 $result = request_var($variable_name, $default, $multibyte);
34 $label = 'Requesting POST variable, converting from ' . gettype($variable_value) . ' to ' . gettype($default) . (($multibyte) ?
' multibyte' : '');
35 $this->assertEquals($expected, $result, $label);
39 * @dataProvider request_variables
41 public function test_get($variable_value, $default, $multibyte, $expected)
43 $variable_name = 'name';
45 $_GET[$variable_name] = $variable_value;
46 $_REQUEST[$variable_name] = $variable_value;
48 // reread data from super globals
51 $result = request_var($variable_name, $default, $multibyte);
53 $label = 'Requesting GET variable, converting from ' . gettype($variable_value) . ' to ' . gettype($default) . (($multibyte) ?
' multibyte' : '');
54 $this->assertEquals($expected, $result, $label);
58 * @dataProvider deep_access
60 public function test_deep_multi_dim_array_access($path, $default, $expected)
62 $_REQUEST['var'] = array(
78 // reread data from super globals
81 $result = request_var($path, $default);
82 $this->assertEquals($expected, $result, 'Testing deep access to multidimensional input arrays: ' . $path);
85 public static function deep_access()
88 // array(path, default, expected result)
89 array(array('var', 0, 'b', true, 5), '', 'c'),
90 array(array('var', 0, 'b', true, 6), '', 'd'),
91 array(array('var', 2, 3, false), 0, 5),
92 array(array('var', 0, 'b', true), array(0 => ''), array(5 => 'c', 6 => 'd')),
96 public static function request_variables()
100 array('abc', '', false, 'abc'),
101 array(' some spaces ', '', true, 'some spaces'),
102 array("\r\rsome\rcarriage\r\rreturns\r", '', true, "some\ncarriage\n\nreturns"),
103 array("\n\nsome\ncarriage\n\nreturns\n", '', true, "some\ncarriage\n\nreturns"),
104 array("\r\n\r\nsome\r\ncarriage\r\n\r\nreturns\r\n", '', true, "some\ncarriage\n\nreturns"),
105 array("we\xC2\xA1rd\xE1\x9A\x80ch\xCE\xB1r\xC2\xADacters", '', true, "we\xC2\xA1rd\xE1\x9A\x80ch\xCE\xB1r\xC2\xADacters"),
106 array("we\xC2\xA1rd\xE1\x9A\x80ch\xCE\xB1r\xC2\xADacters", '', false, "we??rd???ch??r??acters"),
107 array("Some <html> \"entities\" like &", '', true, "Some <html> "entities" like &"),
110 array('1234', 0, false, 1234),
111 array('abc', 12, false, 0),
112 array('324abc', 0, false, 324),
115 array('123', array(0), false, array()),
116 array('123', array(''), false, array()),
118 // 1 dimensional arrays
139 array('xyz' => '123', 'abc' => 'abc'),
144 array('xyz' => '123', 'abc' => 'abc')
148 array('xyz' => '123', 'abc' => 'abc'),
153 array('xyz' => 123, 'abc' => 0)
156 // 2 dimensional arrays
169 'xyz' => array('123', 'def'),
173 array('' => array('')),
177 'xyz' => array('123', 'def'),
184 'xyz' => array('123', 'def'),
188 array('' => array(0)),
192 'xyz' => array(123, 0),
199 0 => array(0 => array(3, '4', 'ab'), 1 => array()),
200 1 => array(array(3, 4)),
203 array(0 => array(0 => array(0))),
207 0 => array(0 => array(3, 4, 0), 1 => array()),
208 1 => array(array(3, 4))
214 'ü' => array(array('c' => 'd')),
215 'ä' => array(4 => array('a' => 2, 'ö' => 3)),
218 array('' => array(0 => array('' => 0))),
222 '??' => array(4 => array('a' => 2, '??' => 3)),
228 'ü' => array(array('c' => 'd')),
229 'ä' => array(4 => array('a' => 2, 'ö' => 3)),
232 array('' => array(0 => array('' => 0))),
236 'ü' => array(array('c' => 0)),
237 'ä' => array(4 => array('a' => 2, 'ö' => 3)),