diff options
Diffstat (limited to 'tests')
22 files changed, 791 insertions, 34 deletions
diff --git a/tests/console/cron/cron_list_test.php b/tests/console/cron/cron_list_test.php new file mode 100644 index 0000000000..46705a585f --- /dev/null +++ b/tests/console/cron/cron_list_test.php @@ -0,0 +1,103 @@ +<?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. +* +*/ + +require_once dirname(__FILE__) . '/tasks/simple_ready.php'; +require_once dirname(__FILE__) . '/tasks/simple_not_ready.php'; + +use Symfony\Component\Console\Application; +use Symfony\Component\Console\Tester\CommandTester; +use phpbb\console\command\cron\cron_list; + +class phpbb_console_command_cron_list_test extends phpbb_test_case +{ + /** @var \phpbb\cron\manager */ + protected $cron_manager; + + /** @var \phpbb\user */ + protected $user; + + protected $command_name; + + protected $command_tester; + + protected function setUp() + { + $this->user = $this->getMock('\phpbb\user'); + $this->user->method('lang')->will($this->returnArgument(0)); + } + + public function test_no_task() + { + $this->initiate_test(0, 0); + $this->assertContains('CRON_NO_TASKS', $this->command_tester->getDisplay()); + } + + public function test_only_ready() + { + $this->initiate_test(2, 0); + $this->assertContains('TASKS_READY command1 command2', preg_replace('/\s+/', ' ', trim($this->command_tester->getDisplay()))); + } + + public function test_only_not_ready() + { + $this->initiate_test(0, 2); + $this->assertContains('TASKS_NOT_READY command1 command2', preg_replace('/\s+/', ' ', trim($this->command_tester->getDisplay()))); + } + + public function test_both_ready() + { + $this->initiate_test(2, 2); + $this->assertSame('TASKS_READY command1 command2 TASKS_NOT_READY command3 command4', preg_replace('/\s+/', ' ', trim($this->command_tester->getDisplay()))); + } + + public function get_cron_manager(array $tasks) + { + global $pathEx, $phpbb_root_path; + $i = 1; + foreach ($tasks as $task) + { + $task->set_name('command' . $i); + $i++; + } + $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $pathEx); + } + + public function get_command_tester() + { + $application = new Application(); + $application->add(new cron_list($this->cron_manager, $this->user)); + + $command = $application->find('cron:list'); + $this->command_name = $command->getName(); + return new CommandTester($command); + } + + public function initiate_test($number_ready, $number_not_ready) + { + $tasks = array(); + + for ($i = 0; $i < $number_ready; $i++) + { + $tasks[] = new phpbb_cron_task_simple_ready(); + } + + for ($i = 0; $i < $number_not_ready; $i++) + { + $tasks[] = new phpbb_cron_task_simple_not_ready(); + } + + $this->get_cron_manager($tasks); + $this->command_tester = $this->get_command_tester(); + $this->command_tester->execute(array('command' => $this->command_name, '--no-ansi' => true)); + } +} diff --git a/tests/console/cron/fixtures/config.xml b/tests/console/cron/fixtures/config.xml new file mode 100644 index 0000000000..2cb683d409 --- /dev/null +++ b/tests/console/cron/fixtures/config.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<dataset> + <table name="phpbb_config"> + <column>config_name</column> + <column>config_value</column> + <column>is_dynamic</column> + </table> +</dataset> diff --git a/tests/console/cron/run_test.php b/tests/console/cron/run_test.php new file mode 100644 index 0000000000..ff251cff3c --- /dev/null +++ b/tests/console/cron/run_test.php @@ -0,0 +1,157 @@ +<?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. +* +*/ + +use Symfony\Component\Console\Application; +use Symfony\Component\Console\Tester\CommandTester; +use phpbb\console\command\cron\run; + +require_once dirname(__FILE__) . '/tasks/simple.php'; + +class phpbb_console_command_cron_run_test extends phpbb_database_test_case +{ + protected $db; + protected $config; + protected $lock; + protected $user; + protected $cron_manager; + protected $command_name; + protected $task; + + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml'); + } + + public function setUp() + { + global $db, $config, $phpbb_root_path, $phpEx; + + $db = $this->db = $this->new_dbal(); + $config = $this->config = new \phpbb\config\config(array('cron_lock' => '0')); + set_config(null, null, null, $this->config); + $this->lock = new \phpbb\lock\db('cron_lock', $this->config, $this->db); + + $this->user = $this->getMock('\phpbb\user'); + $this->user->method('lang')->will($this->returnArgument(0)); + + $this->task = new phpbb_cron_task_simple(); + $tasks = array( + $this->task, + ); + $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $phbEx); + + $this->assertSame('0', $config['cron_lock']); + } + + public function test_normal_use() + { + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name)); + + $this->assertSame('', $command_tester->getDisplay()); + $this->assertSame(true, $this->task->executed); + $this->assertSame(0, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function test_verbose_mode() + { + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name, '--verbose' => true)); + + $this->assertContains('RUNNING_TASK', $command_tester->getDisplay()); + $this->assertSame(true, $this->task->executed); + $this->assertSame(0, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function test_error_lock() + { + $this->lock->acquire(); + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name)); + + $this->assertContains('CRON_LOCK_ERROR', $command_tester->getDisplay()); + $this->assertSame(false, $this->task->executed); + $this->assertSame(1, $exit_status); + } + + public function test_no_task() + { + $tasks = array( + ); + $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $phpEx); + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name)); + + $this->assertSame('', $command_tester->getDisplay()); + $this->assertSame(0, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function test_no_task_verbose() + { + $tasks = array( + ); + $this->cron_manager = new \phpbb\cron\manager($tasks, $phpbb_root_path, $phpEx); + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name, '--verbose' => true)); + + $this->assertContains('CRON_NO_TASK', $command_tester->getDisplay()); + $this->assertSame(0, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function test_arg_valid() + { + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name, 'name' => 'phpbb_cron_task_simple')); + + $this->assertSame('', $command_tester->getDisplay()); + $this->assertSame(true, $this->task->executed); + $this->assertSame(0, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function test_arg_invalid() + { + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name, 'name' => 'foo')); + + $this->assertContains('CRON_NO_SUCH_TASK', $command_tester->getDisplay()); + $this->assertSame(false, $this->task->executed); + $this->assertSame(2, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function test_arg_valid_verbose() + { + $command_tester = $this->get_command_tester(); + $exit_status = $command_tester->execute(array('command' => $this->command_name, 'name' => 'phpbb_cron_task_simple', '--verbose' => true)); + + $this->assertContains('RUNNING_TASK', $command_tester->getDisplay()); + $this->assertSame(true, $this->task->executed); + $this->assertSame(0, $exit_status); + $this->assertSame(false, $this->lock->owns_lock()); + } + + public function get_command_tester() + { + $application = new Application(); + $application->add(new run($this->cron_manager, $this->lock, $this->user)); + + $command = $application->find('cron:run'); + $this->command_name = $command->getName(); + return new CommandTester($command); + } +} diff --git a/tests/console/cron/tasks/simple.php b/tests/console/cron/tasks/simple.php new file mode 100644 index 0000000000..194c52afe1 --- /dev/null +++ b/tests/console/cron/tasks/simple.php @@ -0,0 +1,27 @@ +<?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_cron_task_simple extends \phpbb\cron\task\base +{ + public $executed = false; + + public function get_name() + { + return get_class($this); + } + + public function run() + { + $this->executed = true; + } +} diff --git a/tests/console/cron/tasks/simple_not_ready.php b/tests/console/cron/tasks/simple_not_ready.php new file mode 100644 index 0000000000..887768e5fe --- /dev/null +++ b/tests/console/cron/tasks/simple_not_ready.php @@ -0,0 +1,13 @@ +<?php + +class phpbb_cron_task_simple_not_ready extends \phpbb\cron\task\base +{ + public function run() + { + } + + public function should_run() + { + return false; + } +} diff --git a/tests/console/cron/tasks/simple_ready.php b/tests/console/cron/tasks/simple_ready.php new file mode 100644 index 0000000000..47970e104f --- /dev/null +++ b/tests/console/cron/tasks/simple_ready.php @@ -0,0 +1,8 @@ +<?php + +class phpbb_cron_task_simple_ready extends \phpbb\cron\task\base +{ + public function run() + { + } +} diff --git a/tests/dbal/migration/dummy_order.php b/tests/dbal/migration/dummy_order.php index b8590f5074..5ab8f5d129 100644 --- a/tests/dbal/migration/dummy_order.php +++ b/tests/dbal/migration/dummy_order.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migration/dummy_order_0.php b/tests/dbal/migration/dummy_order_0.php index e45bb0ad44..4caea76704 100644 --- a/tests/dbal/migration/dummy_order_0.php +++ b/tests/dbal/migration/dummy_order_0.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migration/dummy_order_1.php b/tests/dbal/migration/dummy_order_1.php index 73f043af5d..ea512765fa 100644 --- a/tests/dbal/migration/dummy_order_1.php +++ b/tests/dbal/migration/dummy_order_1.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migration/dummy_order_2.php b/tests/dbal/migration/dummy_order_2.php index 1483b98050..a7669b1ac8 100644 --- a/tests/dbal/migration/dummy_order_2.php +++ b/tests/dbal/migration/dummy_order_2.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migration/dummy_order_3.php b/tests/dbal/migration/dummy_order_3.php index 79c542e088..501db09b7e 100644 --- a/tests/dbal/migration/dummy_order_3.php +++ b/tests/dbal/migration/dummy_order_3.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migration/dummy_order_4.php b/tests/dbal/migration/dummy_order_4.php index 229a120ecf..77bb5a24b3 100644 --- a/tests/dbal/migration/dummy_order_4.php +++ b/tests/dbal/migration/dummy_order_4.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migration/dummy_order_5.php b/tests/dbal/migration/dummy_order_5.php index 04d755009d..8f92392a8b 100644 --- a/tests/dbal/migration/dummy_order_5.php +++ b/tests/dbal/migration/dummy_order_5.php @@ -1,9 +1,13 @@ <?php /** * -* @package testing -* @copyright (c) 2014 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* 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. * */ diff --git a/tests/dbal/migrator_test.php b/tests/dbal/migrator_test.php index 381fe16115..4a1d15aea4 100644 --- a/tests/dbal/migrator_test.php +++ b/tests/dbal/migrator_test.php @@ -60,12 +60,14 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); + $user = new \phpbb\user(); $this->extension_manager = new \phpbb\extension\manager( $container, $this->db, $this->config, new phpbb\filesystem(), + $user, 'phpbb_ext', dirname(__FILE__) . '/../../phpBB/', 'php', diff --git a/tests/extension/finder_test.php b/tests/extension/finder_test.php index 4ef9411557..8cc5146b33 100644 --- a/tests/extension/finder_test.php +++ b/tests/extension/finder_test.php @@ -132,6 +132,22 @@ class phpbb_extension_finder_test extends phpbb_test_case ); } + public function test_non_absolute_directory_get_classes() + { + $classes = $this->finder + ->directory('type/') + ->get_classes(); + + sort($classes); + $this->assertEquals( + array( + '\vendor2\foo\sub\type\alternative', + '\vendor2\foo\type\alternative', + ), + $classes + ); + } + public function test_sub_directory_get_classes() { $classes = $this->finder diff --git a/tests/extension/manager_test.php b/tests/extension/manager_test.php index 6acade1e87..d9f8fbd1a4 100644 --- a/tests/extension/manager_test.php +++ b/tests/extension/manager_test.php @@ -101,6 +101,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case $phpbb_root_path = __DIR__ . './../../phpBB/'; $php_ext = 'php'; $table_prefix = 'phpbb_'; + $user = new \phpbb\user(); $migrator = new \phpbb\db\migrator( $config, @@ -121,6 +122,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case $db, $config, new \phpbb\filesystem(), + $user, 'phpbb_ext', dirname(__FILE__) . '/', $php_ext, diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 95544a6f7c..3678ac0a3f 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -77,6 +77,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $this->db, $this->config, new \phpbb\filesystem(), + $this->user, 'phpbb_ext', $this->phpbb_root_path, $this->phpEx, @@ -97,7 +98,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e){} - $this->assertEquals((string) $e, 'The required file does not exist: ' . $this->phpbb_root_path . $this->extension_manager->get_extension_path($ext_name) . 'composer.json'); + $this->assertEquals((string) $e, $this->user->lang('FILE_NOT_FOUND', $this->phpbb_root_path . $this->extension_manager->get_extension_path($ext_name) . 'composer.json')); } // Should be the same as a direct json_decode of the composer.json file @@ -136,7 +137,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Required meta field \'name\' has not been set.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'name')); } try @@ -147,7 +148,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Required meta field \'type\' has not been set.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'type')); } try @@ -158,7 +159,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Required meta field \'license\' has not been set.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'license')); } try @@ -169,7 +170,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Required meta field \'version\' has not been set.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'version')); } try @@ -180,7 +181,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Required meta field \'authors\' has not been set.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'authors')); } $manager->merge_metadata(array( @@ -197,7 +198,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Required meta field \'author name\' has not been set.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_NOT_SET', 'author name')); } } @@ -224,7 +225,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Meta field \'name\' is invalid.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'name')); } try @@ -235,7 +236,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Meta field \'type\' is invalid.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'type')); } try @@ -246,7 +247,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Meta field \'license\' is invalid.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'license')); } try @@ -257,7 +258,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case } catch(\phpbb\extension\exception $e) { - $this->assertEquals((string) $e, 'Meta field \'version\' is invalid.'); + $this->assertEquals((string) $e, $this->user->lang('META_FIELD_INVALID', 'version')); } } @@ -437,6 +438,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $this->config, $this->extension_manager, $this->template, + $this->user, $this->phpbb_root_path ); } diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php index 8f0f9c6700..b6dd5db708 100644 --- a/tests/functional/extension_acp_test.php +++ b/tests/functional/extension_acp_test.php @@ -180,7 +180,7 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case { // test2 is not available (error) $crawler = self::request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=delete_data_pre&ext_name=test2&sid=' . $this->sid); - $this->assertContains('The required file does not exist', $crawler->filter('.errorbox')->text()); + $this->assertContains($this->lang('FILE_NOT_FOUND', ''), $crawler->filter('.errorbox')->text()); // foo is not disabled (redirect to list) $crawler = self::request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=delete_data_pre&ext_name=vendor2%2Ffoo&sid=' . $this->sid); diff --git a/tests/functional/metadata_manager_test.php b/tests/functional/metadata_manager_test.php index 020e9cd142..080822d249 100644 --- a/tests/functional/metadata_manager_test.php +++ b/tests/functional/metadata_manager_test.php @@ -82,6 +82,6 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case $crawler = self::request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=details&ext_name=not%2Fexists&sid=' . $this->sid); // Error message because the files do not exist - $this->assertContains('The required file does not exist:', $crawler->filter('#main')->text()); + $this->assertContains($this->lang('FILE_NOT_FOUND', ''), $crawler->filter('#main')->text()); } } diff --git a/tests/log/delete_test.php b/tests/log/delete_test.php new file mode 100644 index 0000000000..b8be15efa5 --- /dev/null +++ b/tests/log/delete_test.php @@ -0,0 +1,157 @@ +<?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. +* +*/ + +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_log_delete_test extends phpbb_database_test_case +{ + protected $log; + + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/delete_log.xml'); + } + + protected function setUp() + { + global $phpbb_root_path, $phpEx, $db, $phpbb_dispatcher, $auth; + + $db = $this->new_dbal(); + $phpbb_dispatcher = new phpbb_mock_event_dispatcher(); + $user = $this->getMock('\phpbb\user'); + $user->data['user_id'] = 1; + $auth = $this->getMock('\phpbb\auth\auth'); + + $this->log = new \phpbb\log\log($db, $user, $auth, $phpbb_dispatcher, $phpbb_root_path, 'adm/', $phpEx, LOG_TABLE); + + parent::setUp(); + } + + public function log_delete_data() + { + return array( + array( + array(1, 2), + array(16), + array(), + 'admin', + false, + 0, + 0, + 0, + 0, + 0, + 0, + 'l.log_id ASC', + '', + ), + array( + array(11), + array(), + array('keywords' => 'guest'), + 'mod', + false, + 0, + 0, + 0, + 0, + 0, + 0, + 'l.log_id ASC', + 'guest', + ), + array( + array(4, 5, 7), + array(), + array('forum_id' => 12, 'user_id' => 1), + 'mod', + false, + 0, + 0, + 12, + 0, + 1, + 0, + 'l.log_id ASC', + '', + ), + array( + array(12, 13), + array(), + array('forum_id' => array('IN' => array(14, 13))), + 'mod', + false, + 0, + 0, + array(13, 14), + 0, + 0, + 0, + 'l.log_id ASC', + '', + ), + array( + array(3, 14, 15), + array(3), + array('user_id' => array('>', 1)), + 'critical', + false, + 0, + 0, + 0, + 0, + 0, + 0, + 'l.log_id ASC', + '', + ), + array( + array(3, 14, 15), + array(), + array('keywords' => ''), + 'critical', + false, + 0, + 0, + 0, + 0, + 0, + 0, + 'l.log_id ASC', + '', + ), + ); + } + + /** + * @dataProvider log_delete_data + */ + public function test_log_delete($expected_before, $expected_after, $delete_conditions, $mode, $count_logs, $limit, $offset, $forum_id, $topic_id, $user_id, $log_time, $sort_by, $keywords) + { + $this->assertSame($expected_before, $this->get_ids($this->log->get_logs($mode, $count_logs, $limit, $offset, $forum_id, $topic_id, $user_id, $log_time, $sort_by, $keywords)), 'before'); + $this->log->delete($mode, $delete_conditions); + $this->assertSame($expected_after, $this->get_ids($this->log->get_logs($mode, $count_logs, $limit, $offset, $forum_id, $topic_id, $user_id, $log_time, $sort_by, $keywords)), 'after'); + } + + public function get_ids($logs) + { + $ids = array(); + foreach ($logs as $log_entry) + { + $ids[] = (int) $log_entry['id']; + } + return $ids; + } +} diff --git a/tests/log/fixtures/delete_log.xml b/tests/log/fixtures/delete_log.xml new file mode 100644 index 0000000000..4b2402102e --- /dev/null +++ b/tests/log/fixtures/delete_log.xml @@ -0,0 +1,232 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<dataset> + <table name="phpbb_log"> + <column>log_id</column> + <column>log_type</column> + <column>user_id</column> + <column>forum_id</column> + <column>topic_id</column> + <column>reportee_id</column> + <column>log_ip</column> + <column>log_time</column> + <column>log_operation</column> + <column>log_data</column> + <row> + <value>1</value> + <value>0</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_INSTALL_INSTALLED</value> + <value>a:1:{i:0;s:9:"3.1.0-dev";}</value> + </row> + <row> + <value>2</value> + <value>0</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_KEY_NOT_EXISTS</value> + <value>a:1:{i:0;s:15:"additional_data";}</value> + </row> + <row> + <value>3</value> + <value>2</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_CRITICAL</value> + <value>a:1:{i:0;s:13:"critical data";}</value> + </row> + <row> + <value>4</value> + <value>1</value> + <value>1</value> + <value>12</value> + <value>34</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_MOD</value> + <value></value> + </row> + <row> + <value>5</value> + <value>1</value> + <value>1</value> + <value>12</value> + <value>45</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_MOD</value> + <value></value> + </row> + <row> + <value>6</value> + <value>1</value> + <value>1</value> + <value>23</value> + <value>56</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_MOD</value> + <value></value> + </row> + <row> + <value>7</value> + <value>1</value> + <value>1</value> + <value>12</value> + <value>45</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_MOD2</value> + <value></value> + </row> + <row> + <value>8</value> + <value>3</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>2</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_USER</value> + <value>a:1:{i:0;s:5:"admin";}</value> + </row> + <row> + <value>9</value> + <value>3</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>1</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_USER</value> + <value>a:1:{i:0;s:5:"guest";}</value> + </row> + <row> + <value>10</value> + <value>3</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_SINGULAR_PLURAL</value> + <value>a:1:{i:0;i:2;}</value> + </row> + <row> + <value>11</value> + <value>1</value> + <value>1</value> + <value>15</value> + <value>3</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value>LOG_MOD3</value> + <value>a:1:{i:0;s:5:"guest";}</value> + </row> + <row> + <value>12</value> + <value>1</value> + <value>1</value> + <value>13</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value></value> + <value></value> + </row> + <row> + <value>13</value> + <value>1</value> + <value>1</value> + <value>14</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value></value> + <value></value> + </row> + <row> + <value>14</value> + <value>2</value> + <value>2</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value></value> + <value></value> + </row> + <row> + <value>15</value> + <value>2</value> + <value>2</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>127.0.0.1</value> + <value>1</value> + <value></value> + <value></value> + </row> + </table> + <table name="phpbb_users"> + <column>user_id</column> + <column>username</column> + <column>username_clean</column> + <column>user_permissions</column> + <column>user_sig</column> + <row> + <value>1</value> + <value>Anonymous</value> + <value>Anonymous</value> + <value></value> + <value></value> + </row> + <row> + <value>2</value> + <value>admin</value> + <value>admin</value> + <value></value> + <value></value> + </row> + </table> + <table name="phpbb_topics"> + <column>topic_id</column> + <column>forum_id</column> + <row> + <value>34</value> + <value>12</value> + </row> + <row> + <value>45</value> + <value>12</value> + </row> + <row> + <value>56</value> + <value>23</value> + </row> + </table> +</dataset> diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 0bfdfa57ac..182ffaaaf7 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -203,12 +203,14 @@ class phpbb_functional_test_case extends phpbb_test_case ); $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); + $user = new \phpbb\user(); $extension_manager = new \phpbb\extension\manager( $container, $db, $config, new phpbb\filesystem(), + $user, self::$config['table_prefix'] . 'ext', dirname(__FILE__) . '/', $phpEx, |
