From 47f8a6375f12d9ca18b88432a8d2e51d168909fe Mon Sep 17 00:00:00 2001 From: Cesar G Date: Thu, 27 Feb 2014 23:33:39 -0800 Subject: [ticket/11508] Add tests. PHPBB3-11508 --- tests/functions/build_url_test.php | 77 ++++++++ tests/path_helper/path_helper_test.php | 315 +++++++++++++++++++++++++++++++ tests/path_helper/web_root_path_test.php | 179 ------------------ 3 files changed, 392 insertions(+), 179 deletions(-) create mode 100644 tests/functions/build_url_test.php create mode 100644 tests/path_helper/path_helper_test.php delete mode 100644 tests/path_helper/web_root_path_test.php diff --git a/tests/functions/build_url_test.php b/tests/functions/build_url_test.php new file mode 100644 index 0000000000..8d0aa76317 --- /dev/null +++ b/tests/functions/build_url_test.php @@ -0,0 +1,77 @@ +path_helper = new \phpbb\path_helper( + new \phpbb\symfony_request( + new phpbb_mock_request() + ), + new \phpbb\filesystem(), + $phpbb_root_path, + 'php' + ); + $phpbb_container->set('path_helper', $path_helper); + } + public function build_url_test_data() + { + return array( + array( + 'index.php', + false, + 'phpBB/index.php?', + ), + array( + 'index.php', + 't', + 'phpBB/index.php?', + ), + array( + 'viewtopic.php?f=2&style=1&t=6', + 'f', + 'phpBB/viewtopic.php?style=1&t=6', + ), + array( + 'viewtopic.php?f=2&style=1&t=6', + array('f', 'style', 't'), + 'phpBB/viewtopic.php', + ), + array( + 'http://test.phpbb.com/viewtopic.php?f=2&style=1&t=6', + array('f', 'style', 't'), + 'http://test.phpbb.com/viewtopic.php', + ), + ); + } + + /** + * @dataProvider build_url_test_data + */ + public function test_build_url($page, $strip_vars, $expected) + { + global $user, $phpbb_root_path; + + $user->page['page'] = $page; + $output = build_url($strip_vars); + + $this->assertEquals($expected, $output); + } +} diff --git a/tests/path_helper/path_helper_test.php b/tests/path_helper/path_helper_test.php new file mode 100644 index 0000000000..e77ad6d343 --- /dev/null +++ b/tests/path_helper/path_helper_test.php @@ -0,0 +1,315 @@ +set_phpbb_root_path(); + + $this->path_helper = new \phpbb\path_helper( + new \phpbb\symfony_request( + new phpbb_mock_request() + ), + new \phpbb\filesystem(), + $this->phpbb_root_path, + 'php' + ); + } + + /** + * Set the phpbb_root_path + * + * This is necessary because dataProvider functions are called + * before setUp or setUpBeforeClass; so we must set the path + * any time we wish to use it in one of these functions (and + * also in general for everything else) + */ + public function set_phpbb_root_path() + { + $this->phpbb_root_path = dirname(__FILE__) . './../../phpBB/'; + } + + public function test_get_web_root_path() + { + // Symfony Request = null, so always should return phpbb_root_path + $this->assertEquals($this->phpbb_root_path, $this->path_helper->get_web_root_path()); + } + + public function basic_update_web_root_path_data() + { + $this->set_phpbb_root_path(); + + return array( + array( + 'http://www.test.com/test.php', + 'http://www.test.com/test.php', + '/', + ), + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . 'test.php', + ), + array( + 'test.php', + 'test.php', + ), + array( + $this->phpbb_root_path . $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . $this->phpbb_root_path . 'test.php', + ), + ); + } + + /** + * @dataProvider basic_update_web_root_path_data + */ + public function test_basic_update_web_root_path($input, $expected) + { + $this->assertEquals($expected, $this->path_helper->update_web_root_path($input, $symfony_request)); + } + + public function update_web_root_path_data() + { + $this->set_phpbb_root_path(); + + return array( + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . 'test.php', + '/', + ), + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . '../test.php', + '//', + ), + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . '../test.php', + '//', + 'foo/bar.php', + 'bar.php', + ), + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . '../../test.php', + '/foo/template', + '/phpbb3-fork/phpBB/app.php/foo/template', + '/phpbb3-fork/phpBB/app.php', + ), + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . '../test.php', + '/foo/template', + '/phpbb3-fork/phpBB/foo/template', + '/phpbb3-fork/phpBB/app.php', + ), + array( + $this->phpbb_root_path . 'test.php', + $this->phpbb_root_path . '../test.php', + '/', + '/phpbb3-fork/phpBB/app.php/', + '/phpbb3-fork/phpBB/app.php', + ), + ); + } + + /** + * @dataProvider update_web_root_path_data + */ + public function test_update_web_root_path($input, $expected, $getPathInfo, $getRequestUri = null, $getScriptName = null) + { + $symfony_request = $this->getMock("\phpbb\symfony_request", array(), array( + new phpbb_mock_request(), + )); + $symfony_request->expects($this->any()) + ->method('getPathInfo') + ->will($this->returnValue($getPathInfo)); + $symfony_request->expects($this->any()) + ->method('getRequestUri') + ->will($this->returnValue($getRequestUri)); + $symfony_request->expects($this->any()) + ->method('getScriptName') + ->will($this->returnValue($getScriptName)); + + $path_helper = new \phpbb\path_helper( + $symfony_request, + new \phpbb\filesystem(), + $this->phpbb_root_path, + 'php' + ); + + $this->assertEquals($expected, $path_helper->update_web_root_path($input, $symfony_request)); + } + + public function clean_url_data() + { + return array( + array('', ''), + array('://', '://'), + array('http://', 'http://'), + array('http://one/two/three', 'http://one/two/three'), + array('http://../one/two', 'http://../one/two'), + array('http://one/../two/three', 'http://two/three'), + array('http://one/two/../three', 'http://one/three'), + array('http://one/two/../../three', 'http://three'), + array('http://one/two/../../../three', 'http://../three'), + ); + } + + /** + * @dataProvider clean_url_data + */ + public function test_clean_url($input, $expected) + { + $this->assertEquals($expected, $this->path_helper->clean_url($input)); + } + + public function glue_url_params_data() + { + return array( + array( + array(), + '', + ), + array( + array('test' => 'xyz'), + 'test=xyz', + ), + array( + array('test' => 'xyz', 'var' => 'value'), + 'test=xyz&var=value', + ), + ); + } + + /** + * @dataProvider glue_url_params_data + */ + public function test_glue_url_params($params, $expected) + { + $this->assertEquals($expected, $this->path_helper->glue_url_params($params)); + } + + public function get_url_parts_data() + { + return array( + array( + 'viewtopic.php', + true, + array('base' => 'viewtopic.php', 'params' => array()), + ), + array( + './viewtopic.php?t=5&f=6', + true, + array('base' => './viewtopic.php', 'params' => array('t' => '5', 'f' => '6')), + ), + array( + 'viewtopic.php?t=5&f=6', + false, + array('base' => 'viewtopic.php', 'params' => array('t' => '5', 'f' => '6')), + ), + array( + 'https://phpbb.com/community/viewtopic.php?t=5&f=6', + true, + array('base' => 'https://phpbb.com/community/viewtopic.php', 'params' => array('t' => '5', 'f' => '6')), + ), + ); + } + + /** + * @dataProvider get_url_parts_data + */ + public function test_get_url_parts($url, $is_amp, $expected) + { + $this->assertEquals($expected, $this->path_helper->get_url_parts($url, $is_amp)); + } + + public function strip_url_params_data() + { + return array( + array( + 'viewtopic.php', + 'sid', + false, + 'viewtopic.php', + ), + array( + './viewtopic.php?t=5&f=6', + 'f', + true, + './viewtopic.php?t=5', + ), + array( + 'viewtopic.php?t=5&f=6&sid=19adc288814103cbb4625e74e77455aa', + array('t'), + false, + 'viewtopic.php?f=6&sid=19adc288814103cbb4625e74e77455aa', + ), + array( + 'https://phpbb.com/community/viewtopic.php?t=5&f=6', + array('t', 'f'), + true, + 'https://phpbb.com/community/viewtopic.php', + ), + ); + } + + /** + * @dataProvider strip_url_params_data + */ + public function test_strip_url_params($url, $strip, $is_amp, $expected) + { + $this->assertEquals($expected, $this->path_helper->strip_url_params($url, $strip, $is_amp)); + } + + public function append_url_params_data() + { + return array( + array( + 'viewtopic.php', + array(), + false, + 'viewtopic.php', + ), + array( + './viewtopic.php?t=5&f=6', + array('t' => '7'), + true, + './viewtopic.php?t=7&f=6', + ), + array( + 'viewtopic.php?t=5&f=6&sid=19adc288814103cbb4625e74e77455aa', + array('p' => '5'), + false, + 'viewtopic.php?t=5&f=6&p=5&sid=19adc288814103cbb4625e74e77455aa', + ), + array( + 'https://phpbb.com/community/viewtopic.php', + array('t' => '7', 'f' => '8'), + true, + 'https://phpbb.com/community/viewtopic.php?t=7&f=8', + ), + ); + } + + /** + * @dataProvider append_url_params_data + */ + public function test_append_url_params($url, $params, $is_amp, $expected) + { + $this->assertEquals($expected, $this->path_helper->append_url_params($url, $params, $is_amp)); + } +} diff --git a/tests/path_helper/web_root_path_test.php b/tests/path_helper/web_root_path_test.php deleted file mode 100644 index ec04135997..0000000000 --- a/tests/path_helper/web_root_path_test.php +++ /dev/null @@ -1,179 +0,0 @@ -set_phpbb_root_path(); - - $this->path_helper = new \phpbb\path_helper( - new \phpbb\symfony_request( - new phpbb_mock_request() - ), - new \phpbb\filesystem(), - $this->phpbb_root_path, - 'php' - ); - } - - /** - * Set the phpbb_root_path - * - * This is necessary because dataProvider functions are called - * before setUp or setUpBeforeClass; so we must set the path - * any time we wish to use it in one of these functions (and - * also in general for everything else) - */ - public function set_phpbb_root_path() - { - $this->phpbb_root_path = dirname(__FILE__) . './../../phpBB/'; - } - - public function test_get_web_root_path() - { - // Symfony Request = null, so always should return phpbb_root_path - $this->assertEquals($this->phpbb_root_path, $this->path_helper->get_web_root_path()); - } - - public function basic_update_web_root_path_data() - { - $this->set_phpbb_root_path(); - - return array( - array( - 'http://www.test.com/test.php', - 'http://www.test.com/test.php', - '/', - ), - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . 'test.php', - ), - array( - 'test.php', - 'test.php', - ), - array( - $this->phpbb_root_path . $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . $this->phpbb_root_path . 'test.php', - ), - ); - } - - /** - * @dataProvider basic_update_web_root_path_data - */ - public function test_basic_update_web_root_path($input, $expected) - { - $this->assertEquals($expected, $this->path_helper->update_web_root_path($input, $symfony_request)); - } - - public function update_web_root_path_data() - { - $this->set_phpbb_root_path(); - - return array( - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . 'test.php', - '/', - ), - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . '../test.php', - '//', - ), - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . '../test.php', - '//', - 'foo/bar.php', - 'bar.php', - ), - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . '../../test.php', - '/foo/template', - '/phpbb3-fork/phpBB/app.php/foo/template', - '/phpbb3-fork/phpBB/app.php', - ), - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . '../test.php', - '/foo/template', - '/phpbb3-fork/phpBB/foo/template', - '/phpbb3-fork/phpBB/app.php', - ), - array( - $this->phpbb_root_path . 'test.php', - $this->phpbb_root_path . '../test.php', - '/', - '/phpbb3-fork/phpBB/app.php/', - '/phpbb3-fork/phpBB/app.php', - ), - ); - } - - /** - * @dataProvider update_web_root_path_data - */ - public function test_update_web_root_path($input, $expected, $getPathInfo, $getRequestUri = null, $getScriptName = null) - { - $symfony_request = $this->getMock("\phpbb\symfony_request", array(), array( - new phpbb_mock_request(), - )); - $symfony_request->expects($this->any()) - ->method('getPathInfo') - ->will($this->returnValue($getPathInfo)); - $symfony_request->expects($this->any()) - ->method('getRequestUri') - ->will($this->returnValue($getRequestUri)); - $symfony_request->expects($this->any()) - ->method('getScriptName') - ->will($this->returnValue($getScriptName)); - - $path_helper = new \phpbb\path_helper( - $symfony_request, - new \phpbb\filesystem(), - $this->phpbb_root_path, - 'php' - ); - - $this->assertEquals($expected, $path_helper->update_web_root_path($input, $symfony_request)); - } - - public function clean_url_data() - { - return array( - array('', ''), - array('://', '://'), - array('http://', 'http://'), - array('http://one/two/three', 'http://one/two/three'), - array('http://../one/two', 'http://../one/two'), - array('http://one/../two/three', 'http://two/three'), - array('http://one/two/../three', 'http://one/three'), - array('http://one/two/../../three', 'http://three'), - array('http://one/two/../../../three', 'http://../three'), - ); - } - - /** - * @dataProvider clean_url_data - */ - public function test_clean_url($input, $expected) - { - $this->assertEquals($expected, $this->path_helper->clean_url($input)); - } -} -- cgit v1.2.1