[ticket/security/211] Extend tests for profile field values

SECURITY-211
This commit is contained in:
Marc Alexander 2017-07-23 11:18:07 +02:00
parent 2749bfe26c
commit 91f9050a70
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
2 changed files with 66 additions and 0 deletions

View file

@ -270,6 +270,18 @@ class phpbb_profilefield_type_string_test extends phpbb_test_case
null, null,
'Field should simply output null for empty vlaue', 'Field should simply output null for empty vlaue',
), ),
array(
'http://foobar.com',
array('field_show_novalue' => false),
'http://foobar.com',
'Field should output the given value but not make it clickable',
),
array(
'javascript://foobar.com',
array('field_show_novalue' => true),
'javascript://foobar.com',
'Field should output the given value but not make it clickable',
),
); );
} }

View file

@ -12,6 +12,8 @@
*/ */
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
require_once dirname(__FILE__) . '/../../phpBB/includes/functions_content.php';
require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
class phpbb_profilefield_type_url_test extends phpbb_test_case class phpbb_profilefield_type_url_test extends phpbb_test_case
{ {
@ -26,6 +28,9 @@ class phpbb_profilefield_type_url_test extends phpbb_test_case
*/ */
public function setUp() public function setUp()
{ {
global $request, $user, $cache;
$cache = new phpbb_mock_cache;
$user = $this->getMock('\phpbb\user', array(), array('\phpbb\datetime')); $user = $this->getMock('\phpbb\user', array(), array('\phpbb\datetime'));
$user->expects($this->any()) $user->expects($this->any())
->method('lang') ->method('lang')
@ -175,6 +180,55 @@ class phpbb_profilefield_type_url_test extends phpbb_test_case
); );
} }
public function profile_value_data()
{
return array(
array(
'http://foobar.com',
array('field_show_novalue' => true),
'<!-- l --><a class="postlink-local" href="http://foobar.com">foobar.com</a><!-- l -->',
'Field should output the given value',
),
array(
'http://foobar.com',
array('field_show_novalue' => false),
'<!-- l --><a class="postlink-local" href="http://foobar.com">foobar.com</a><!-- l -->',
'Field should output the given value',
),
array(
'test',
array('field_show_novalue' => true),
null,
'Field should output nothing for empty value',
),
array(
'test',
array('field_show_novalue' => false),
null,
'Field should simply output null for empty value',
),
array(
'javascript://foobar.com',
array('field_show_novalue' => true),
null,
'Field should output nothing for empty value',
),
);
}
/**
* @dataProvider profile_value_data
*/
public function test_get_profile_value($value, $field_options, $expected, $description)
{
$field_options = array_merge($this->field_options, $field_options);
$result = $this->cp->get_profile_value($value, $field_options);
$this->assertSame($expected, $result, $description);
}
/** /**
* @dataProvider profile_value_raw_data * @dataProvider profile_value_raw_data
*/ */