[ticket/11832] More extensive testing

PHPBB3-11832
This commit is contained in:
Nathan Guse 2013-09-10 11:15:24 -05:00
parent c46637990e
commit 3a4efa7959
2 changed files with 49 additions and 12 deletions

View file

@ -26,6 +26,9 @@ class phpbb_filesystem
/** @var string */ /** @var string */
protected $phpbb_root_path; protected $phpbb_root_path;
/** @var string */
protected $web_root_path;
/** /**
* Constructor * Constructor
* *
@ -82,16 +85,15 @@ class phpbb_filesystem
return $this->phpbb_root_path; return $this->phpbb_root_path;
} }
static $path; if (null !== $this->web_root_path)
if (null !== $path)
{ {
return $path; return $this->web_root_path;
} }
$path_info = $symfony_request->getPathInfo(); $path_info = $symfony_request->getPathInfo();
if ($path_info === '/') if ($path_info === '/')
{ {
return $path = $this->phpbb_root_path; return $this->web_root_path = $this->phpbb_root_path;
} }
$path_info = $this->clean_path($path_info); $path_info = $this->clean_path($path_info);
@ -106,7 +108,7 @@ class phpbb_filesystem
$corrections -= 1; $corrections -= 1;
} }
return $path = $this->phpbb_root_path . str_repeat('../', $corrections); return $this->web_root_path = $this->phpbb_root_path . str_repeat('../', $corrections);
} }
/** /**

View file

@ -18,9 +18,7 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
$this->set_phpbb_root_path(); $this->set_phpbb_root_path();
global $phpbb_filesystem; $this->filesystem = new phpbb_filesystem($this->phpbb_root_path);
$phpbb_filesystem = $this->filesystem = new phpbb_filesystem($this->phpbb_root_path);
} }
/** /**
@ -49,7 +47,6 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
return array( return array(
array( array(
$this->phpbb_root_path . 'test.php', $this->phpbb_root_path . 'test.php',
$this->phpbb_root_path . 'test.php',
), ),
array( array(
'test.php', 'test.php',
@ -57,7 +54,28 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
), ),
array( array(
$this->phpbb_root_path . $this->phpbb_root_path . 'test.php', $this->phpbb_root_path . $this->phpbb_root_path . 'test.php',
$this->phpbb_root_path . $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',
'//',
),
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',
'////',
), ),
); );
} }
@ -65,8 +83,25 @@ class phpbb_filesystem_web_root_path_test extends phpbb_test_case
/** /**
* @dataProvider update_web_root_path_data * @dataProvider update_web_root_path_data
*/ */
public function test_update_web_root_path($input, $expected) public function test_update_web_root_path($input, $expected = null, $getPathInfo = null, $getRequestUri = null, $getScriptName = null)
{ {
$this->assertEquals($expected, $this->filesystem->update_web_root_path($input)); $expected = ($expected === null) ? $input : $expected;
$symfony_request = null;
if ($getPathInfo !== null)
{
$symfony_request = $this->getMock("Symfony\Component\HttpFoundation\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));
}
$this->assertEquals($expected, $this->filesystem->update_web_root_path($input, $symfony_request));
} }
} }