diff options
Diffstat (limited to 'tests/controller/helper_url_test.php')
| -rw-r--r-- | tests/controller/helper_url_test.php | 106 | 
1 files changed, 81 insertions, 25 deletions
| diff --git a/tests/controller/helper_url_test.php b/tests/controller/helper_url_test.php index 6686b77e8f..4ea177074f 100644 --- a/tests/controller/helper_url_test.php +++ b/tests/controller/helper_url_test.php @@ -12,50 +12,106 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';  class phpbb_controller_helper_url_test extends phpbb_test_case  { -	public function helper_url_data() +	public function helper_url_data_no_rewrite()  	{  		return array( -			array('foo/bar?t=1&f=2', false, true, false, 'app.php?t=1&f=2&controller=foo/bar', 'parameters in url-argument'), -			array('foo/bar', 't=1&f=2', true, false, 'app.php?controller=foo/bar&t=1&f=2', 'parameters in params-argument using amp'), -			array('foo/bar', 't=1&f=2', false, false, 'app.php?controller=foo/bar&t=1&f=2', 'parameters in params-argument using &'), -			array('foo/bar', array('t' => 1, 'f' => 2), true, false, 'app.php?controller=foo/bar&t=1&f=2', 'parameters in params-argument as array'), +			array('foo/bar?t=1&f=2', false, true, false, 'app.php/foo/bar?t=1&f=2', 'parameters in url-argument'), +			array('foo/bar', 't=1&f=2', true, false, 'app.php/foo/bar?t=1&f=2', 'parameters in params-argument using amp'), +			array('foo/bar', 't=1&f=2', false, false, 'app.php/foo/bar?t=1&f=2', 'parameters in params-argument using &'), +			array('foo/bar', array('t' => 1, 'f' => 2), true, false, 'app.php/foo/bar?t=1&f=2', 'parameters in params-argument as array'),  			// Custom sid parameter -			array('foo/bar', 't=1&f=2', true, 'custom-sid', 'app.php?controller=foo/bar&t=1&f=2&sid=custom-sid', 'using session_id'), +			array('foo/bar', 't=1&f=2', true, 'custom-sid', 'app.php/foo/bar?t=1&f=2&sid=custom-sid', 'using session_id'),  			// Testing anchors -			array('foo/bar?t=1&f=2#anchor', false, true, false, 'app.php?t=1&f=2&controller=foo/bar#anchor', 'anchor in url-argument'), -			array('foo/bar', 't=1&f=2#anchor', true, false, 'app.php?controller=foo/bar&t=1&f=2#anchor', 'anchor in params-argument'), -			array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, false, 'app.php?controller=foo/bar&t=1&f=2#anchor', 'anchor in params-argument (array)'), +			array('foo/bar?t=1&f=2#anchor', false, true, false, 'app.php/foo/bar?t=1&f=2#anchor', 'anchor in url-argument'), +			array('foo/bar', 't=1&f=2#anchor', true, false, 'app.php/foo/bar?t=1&f=2#anchor', 'anchor in params-argument'), +			array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, false, 'app.php/foo/bar?t=1&f=2#anchor', 'anchor in params-argument (array)'),  			// Anchors and custom sid -			array('foo/bar?t=1&f=2#anchor', false, true, 'custom-sid', 'app.php?t=1&f=2&controller=foo/bar&sid=custom-sid#anchor', 'anchor in url-argument using session_id'), -			array('foo/bar', 't=1&f=2#anchor', true, 'custom-sid', 'app.php?controller=foo/bar&t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument using session_id'), -			array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, 'custom-sid', 'app.php?controller=foo/bar&t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument (array) using session_id'), +			array('foo/bar?t=1&f=2#anchor', false, true, 'custom-sid', 'app.php/foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in url-argument using session_id'), +			array('foo/bar', 't=1&f=2#anchor', true, 'custom-sid', 'app.php/foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument using session_id'), +			array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, 'custom-sid', 'app.php/foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument (array) using session_id'),  			// Empty parameters should not append the & -			array('foo/bar', false, true, false, 'app.php?controller=foo/bar', 'no params using bool false'), -			array('foo/bar', '', true, false, 'app.php?controller=foo/bar', 'no params using empty string'), -			array('foo/bar', array(), true, false, 'app.php?controller=foo/bar', 'no params using empty array'), +			array('foo/bar', false, true, false, 'app.php/foo/bar', 'no params using bool false'), +			array('foo/bar', '', true, false, 'app.php/foo/bar', 'no params using empty string'), +			array('foo/bar', array(), true, false, 'app.php/foo/bar', 'no params using empty array'),  		);  	}  	/** -	* @dataProvider helper_url_data +	* @dataProvider helper_url_data_no_rewrite()  	*/ -	public function test_helper_url($route, $params, $is_amp, $session_id, $expected, $description) +	public function test_helper_url_no_rewrite($route, $params, $is_amp, $session_id, $expected, $description)  	{  		global $phpbb_dispatcher, $phpbb_root_path, $phpEx;  		$phpbb_dispatcher = new phpbb_mock_event_dispatcher; -		$this->style_resource_locator = new phpbb_style_resource_locator(); -		$this->user = $this->getMock('phpbb_user'); -		$this->template = new phpbb_template_twig($phpbb_root_path, $phpEx, $config, $this->user, new phpbb_template_context()); -		$this->style_resource_locator = new phpbb_style_resource_locator(); -		$this->style_provider = new phpbb_style_path_provider(); -		$this->style = new phpbb_style($phpbb_root_path, $phpEx, new phpbb_config(array()), $this->user, $this->style_resource_locator, $this->style_provider, $this->template); - -		$helper = new phpbb_controller_helper($this->template, $this->user, '', 'php'); +		$this->user = $this->getMock('\phpbb\user'); +		$phpbb_filesystem = new \phpbb\filesystem( +			new \phpbb\symfony_request( +				new phpbb_mock_request() +			), +			$phpbb_root_path, +			$phpEx +		); +		$this->template = new phpbb\template\twig\twig($phpbb_filesystem, $config, $this->user, new \phpbb\template\context()); + +		// We don't use mod_rewrite in these tests +		$config = new \phpbb\config\config(array('enable_mod_rewrite' => '0')); +		$helper = new \phpbb\controller\helper($this->template, $this->user, $config, '', 'php'); +		$this->assertEquals($helper->url($route, $params, $is_amp, $session_id), $expected); +	} + +	public function helper_url_data_with_rewrite() +	{ +		return array( +			array('foo/bar?t=1&f=2', false, true, false, 'foo/bar?t=1&f=2', 'parameters in url-argument'), +			array('foo/bar', 't=1&f=2', true, false, 'foo/bar?t=1&f=2', 'parameters in params-argument using amp'), +			array('foo/bar', 't=1&f=2', false, false, 'foo/bar?t=1&f=2', 'parameters in params-argument using &'), +			array('foo/bar', array('t' => 1, 'f' => 2), true, false, 'foo/bar?t=1&f=2', 'parameters in params-argument as array'), + +			// Custom sid parameter +			array('foo/bar', 't=1&f=2', true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid', 'using session_id'), + +			// Testing anchors +			array('foo/bar?t=1&f=2#anchor', false, true, false, 'foo/bar?t=1&f=2#anchor', 'anchor in url-argument'), +			array('foo/bar', 't=1&f=2#anchor', true, false, 'foo/bar?t=1&f=2#anchor', 'anchor in params-argument'), +			array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, false, 'foo/bar?t=1&f=2#anchor', 'anchor in params-argument (array)'), + +			// Anchors and custom sid +			array('foo/bar?t=1&f=2#anchor', false, true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in url-argument using session_id'), +			array('foo/bar', 't=1&f=2#anchor', true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument using session_id'), +			array('foo/bar', array('t' => 1, 'f' => 2, '#' => 'anchor'), true, 'custom-sid', 'foo/bar?t=1&f=2&sid=custom-sid#anchor', 'anchor in params-argument (array) using session_id'), + +			// Empty parameters should not append the & +			array('foo/bar', false, true, false, 'foo/bar', 'no params using bool false'), +			array('foo/bar', '', true, false, 'foo/bar', 'no params using empty string'), +			array('foo/bar', array(), true, false, 'foo/bar', 'no params using empty array'), +		); +	} + +	/** +	* @dataProvider helper_url_data_with_rewrite() +	*/ +	public function test_helper_url_with_rewrite($route, $params, $is_amp, $session_id, $expected, $description) +	{ +		global $phpbb_dispatcher, $phpbb_root_path, $phpEx; + +		$phpbb_dispatcher = new phpbb_mock_event_dispatcher; +		$this->user = $this->getMock('\phpbb\user'); +		$phpbb_filesystem = new \phpbb\filesystem( +			new \phpbb\symfony_request( +				new phpbb_mock_request() +			), +			$phpbb_root_path, +			$phpEx +		); +		$this->template = new \phpbb\template\twig\twig($phpbb_filesystem, $config, $this->user, new \phpbb\template\context()); + +		$config = new \phpbb\config\config(array('enable_mod_rewrite' => '1')); +		$helper = new \phpbb\controller\helper($this->template, $this->user, $config, '', 'php');  		$this->assertEquals($helper->url($route, $params, $is_amp, $session_id), $expected);  	}  } | 
