mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-07 20:08:53 +00:00
205 lines
6.1 KiB
PHP
205 lines
6.1 KiB
PHP
<?php
|
|
/**
|
|
*
|
|
* This file is part of the phpBB Forum Software package.
|
|
*
|
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
|
* @license GNU General Public License, version 2 (GPL-2.0)
|
|
*
|
|
* For full copyright and license information, please see
|
|
* the docs/CREDITS.txt file.
|
|
*
|
|
*/
|
|
|
|
class phpbb_text_processing_generate_text_for_display_test extends phpbb_test_case
|
|
{
|
|
protected function setUp(): void
|
|
{
|
|
global $cache, $user, $phpbb_dispatcher;
|
|
|
|
parent::setUp();
|
|
|
|
$phpbb_dispatcher = new phpbb_mock_event_dispatcher;
|
|
$config = new \phpbb\config\config(array());
|
|
set_config(null, null, null, $config);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider get_legacy_tests
|
|
*/
|
|
public function test_legacy($original, $expected, $uid = '', $bitfield = '', $flags = 0, $censor_text = true)
|
|
{
|
|
global $auth, $cache, $config, $user;
|
|
|
|
global $phpbb_root_path, $phpEx;
|
|
|
|
$cache = new phpbb_mock_cache;
|
|
$lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx);
|
|
$lang = new \phpbb\language\language($lang_loader);
|
|
$user = new \phpbb\user($lang, '\phpbb\datetime');
|
|
$user->data['user_options'] = 230271;
|
|
$user->optionset('viewcensors', true);
|
|
$user->optionset('viewimg', true);
|
|
$user->optionset('viewsmilies', true);
|
|
|
|
$actual = generate_text_for_display($original, $uid, $bitfield, $flags, $censor_text);
|
|
|
|
$this->assertSame($expected, $actual);
|
|
}
|
|
|
|
public function get_legacy_tests()
|
|
{
|
|
return array(
|
|
array(
|
|
'',
|
|
''
|
|
),
|
|
array(
|
|
'0',
|
|
'0'
|
|
),
|
|
);
|
|
}
|
|
|
|
public function test_censor_is_restored()
|
|
{
|
|
global $auth, $user, $config, $phpbb_container;
|
|
|
|
$phpbb_container = new phpbb_mock_container_builder;
|
|
|
|
global $phpbb_root_path, $phpEx;
|
|
|
|
$lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx);
|
|
$lang = new \phpbb\language\language($lang_loader);
|
|
$user = new \phpbb\user($lang, '\phpbb\datetime');
|
|
$user->data['user_options'] = 230271;
|
|
// Do not ignore word censoring by user (switch censoring on in UCP)
|
|
$user->optionset('viewcensors', true);
|
|
|
|
$config = new \phpbb\config\config(array('allow_nocensors' => true));
|
|
|
|
$auth = $this->createMock('phpbb\\auth\\auth');
|
|
$auth->expects($this->any())
|
|
->method('acl_get')
|
|
->with('u_chgcensors')
|
|
->will($this->returnValue(true));
|
|
|
|
$phpbb_container->set('user', $user);
|
|
$phpbb_container->set('config', $config);
|
|
$phpbb_container->set('auth', $auth);
|
|
|
|
$this->get_test_case_helpers()->set_s9e_services($phpbb_container);
|
|
$renderer = $phpbb_container->get('text_formatter.renderer');
|
|
|
|
$original = '<r><CENSOR with="banana">apple</CENSOR></r>';
|
|
|
|
$renderer->set_viewcensors(false);
|
|
$this->assertSame('apple', $renderer->render($original));
|
|
$renderer->set_viewcensors(true);
|
|
$this->assertSame('banana', $renderer->render($original));
|
|
$this->assertSame('apple', generate_text_for_display($original, '', '', 0, false));
|
|
$this->assertSame('banana', $renderer->render($original), 'The original setting was not restored');
|
|
|
|
$renderer->set_viewcensors(false);
|
|
$this->assertSame('apple', $renderer->render($original));
|
|
$this->assertSame('banana', generate_text_for_display($original, '', '', 0, true));
|
|
$this->assertSame('apple', $renderer->render($original), 'The original setting was not restored');
|
|
|
|
// Test user option switch to ignore censoring
|
|
$renderer->set_viewcensors(true);
|
|
// 1st: censoring is still on in UCP
|
|
$this->assertSame('banana', generate_text_for_display($original, '', '', 0, true));
|
|
// 2nd: switch censoring off in UCP
|
|
$user->optionset('viewcensors', false);
|
|
$this->assertSame('apple', generate_text_for_display($original, '', '', 0, true));
|
|
}
|
|
|
|
/**
|
|
* @dataProvider get_text_formatter_tests
|
|
*/
|
|
public function test_text_formatter($original, $expected, $censor_text = true, $setup = null)
|
|
{
|
|
global $auth, $user, $config, $phpbb_container;
|
|
|
|
$phpbb_container = new phpbb_mock_container_builder;
|
|
|
|
if (isset($setup))
|
|
{
|
|
$setup($phpbb_container, $this);
|
|
}
|
|
|
|
$this->get_test_case_helpers()->set_s9e_services($phpbb_container);
|
|
|
|
$this->assertSame($expected, generate_text_for_display($original, '', '', 0, $censor_text));
|
|
}
|
|
|
|
public function get_text_formatter_tests()
|
|
{
|
|
return array(
|
|
array(
|
|
'<t>Plain text</t>',
|
|
'Plain text'
|
|
),
|
|
array(
|
|
'<r>Hello <URL url="http://example.org"><s>[url=http://example.org]</s>world<e>[/url]</e></URL></r>',
|
|
'Hello <a href="http://example.org" class="postlink">world</a>'
|
|
),
|
|
array(
|
|
'<t>&<>"\'</t>',
|
|
'&<>"\''
|
|
),
|
|
array(
|
|
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
|
'banana',
|
|
true
|
|
),
|
|
array(
|
|
'<r><CENSOR with="banana">apple</CENSOR></r>',
|
|
'apple',
|
|
false
|
|
),
|
|
array(
|
|
'<r><IMG src="http://localhost/mrgreen.gif"><s>[img]</s><URL url="http://localhost/mrgreen.gif">http://localhost/mrgreen.gif</URL><e>[/img]</e></IMG></r>',
|
|
'<img src="http://localhost/mrgreen.gif" class="postimage" alt="Image">'
|
|
),
|
|
array(
|
|
'<r><IMG src="http://localhost/mrgreen.gif"><s>[img]</s><URL url="http://localhost/mrgreen.gif">http://localhost/mrgreen.gif</URL><e>[/img]</e></IMG></r>',
|
|
'<a href="http://localhost/mrgreen.gif" class="postlink">http://localhost/mrgreen.gif</a>',
|
|
true,
|
|
function ($phpbb_container)
|
|
{
|
|
global $phpbb_root_path, $phpEx;
|
|
|
|
$lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx);
|
|
$lang = new \phpbb\language\language($lang_loader);
|
|
$user = new \phpbb\user($lang, '\phpbb\datetime');
|
|
$user->data['user_options'] = 230271;
|
|
$user->optionset('viewimg', false);
|
|
|
|
$phpbb_container->set('user', $user);
|
|
}
|
|
),
|
|
array(
|
|
'<r><E>:)</E></r>',
|
|
'<img class="smilies" src="phpBB/images/smilies/icon_e_smile.gif" width="15" height="17" alt=":)" title="Smile">'
|
|
),
|
|
array(
|
|
'<r><E>:)</E></r>',
|
|
':)',
|
|
true,
|
|
function ($phpbb_container)
|
|
{
|
|
global $phpbb_root_path, $phpEx;
|
|
|
|
$lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx);
|
|
$lang = new \phpbb\language\language($lang_loader);
|
|
$user = new \phpbb\user($lang, '\phpbb\datetime');
|
|
$user->data['user_options'] = 230271;
|
|
$user->optionset('viewsmilies', false);
|
|
|
|
$phpbb_container->set('user', $user);
|
|
}
|
|
),
|
|
);
|
|
}
|
|
}
|