diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/dbal/migrator_test.php | 8 | ||||
-rw-r--r-- | tests/event/exception_listener_test.php | 100 | ||||
-rw-r--r-- | tests/extension/manager_test.php | 4 | ||||
-rw-r--r-- | tests/extension/metadata_manager_test.php | 3 | ||||
-rw-r--r-- | tests/functional/fileupload_form_test.php | 23 | ||||
-rw-r--r-- | tests/functional/prune_shadow_topic_test.php | 2 | ||||
-rw-r--r-- | tests/functions/get_remote_file_test.php | 2 | ||||
-rw-r--r-- | tests/notification/base.php | 3 | ||||
-rw-r--r-- | tests/notification/submit_post_base.php | 2 | ||||
-rw-r--r-- | tests/path_helper/path_helper_test.php | 25 | ||||
-rw-r--r-- | tests/test_framework/phpbb_functional_test_case.php | 4 |
11 files changed, 161 insertions, 15 deletions
diff --git a/tests/dbal/migrator_test.php b/tests/dbal/migrator_test.php index e4fb442818..9b8383fc88 100644 --- a/tests/dbal/migrator_test.php +++ b/tests/dbal/migrator_test.php @@ -46,7 +46,10 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case new \phpbb\db\migration\tool\config($this->config), ); + $container = new phpbb_mock_container_builder(); + $this->migrator = new \phpbb\db\migrator( + $container, $this->config, $this->db, $this->db_tools, @@ -57,9 +60,8 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case $tools, new \phpbb\db\migration\helper() ); - - $container = new phpbb_mock_container_builder(); - $container->set('migrator', $migrator); + $container->set('migrator', $this->migrator); + $container->set('dispatcher', new phpbb_mock_event_dispatcher()); $user = new \phpbb\user('\phpbb\datetime'); $this->extension_manager = new \phpbb\extension\manager( diff --git a/tests/event/exception_listener_test.php b/tests/event/exception_listener_test.php new file mode 100644 index 0000000000..4d3453cd83 --- /dev/null +++ b/tests/event/exception_listener_test.php @@ -0,0 +1,100 @@ +<?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'; + +class exception_listener extends phpbb_test_case +{ + public function phpbb_exception_data() + { + return array( + array( + true, + new \Exception(), + array( + 'status_code' => 500, + ), + ), + array( + true, + new \Exception('AJAX_ERROR_TEXT'), + array( + 'status_code' => 500, + 'content' => 'AJAX_ERROR_TEXT', + ), + ), + array( + true, + new \phpbb\exception\runtime_exception('AJAX_ERROR_TEXT'), + array( + 'status_code' => 500, + 'content' => 'Something went wrong when processing your request.', + ), + ), + array( + true, + new \Symfony\Component\HttpKernel\Exception\HttpException(404, 'AJAX_ERROR_TEXT'), + array( + 'status_code' => 404, + 'content' => 'AJAX_ERROR_TEXT', + ), + ), + array( + true, + new \phpbb\exception\http_exception(404, 'AJAX_ERROR_TEXT'), + array( + 'status_code' => 404, + 'content' => 'Something went wrong when processing your request.', + ), + ), + array( + true, + new \phpbb\exception\http_exception(404, 'CURRENT_TIME', array('today')), + array( + 'status_code' => 404, + 'content' => 'It is currently today', + ), + ), + ); + } + + /** + * @dataProvider phpbb_exception_data + */ + public function test_phpbb_exception($is_ajax, $exception, $expected) + { + $request = \Symfony\Component\HttpFoundation\Request::create('test.php', 'GET', array(), array(), array(), $is_ajax ? array('HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest') : array()); + + $template = $this->getMockBuilder('\phpbb\template\twig\twig') + ->disableOriginalConstructor() + ->getMock(); + + $user = new \phpbb\user('\phpbb\datetime'); + $user->add_lang('common'); + + $exception_listener = new \phpbb\event\kernel_exception_subscriber($template, $user); + + $event = new \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, \Symfony\Component\HttpKernel\HttpKernelInterface::MASTER_REQUEST, $exception); + $exception_listener->on_kernel_exception($event); + + $response = $event->getResponse(); + + $this->assertEquals($expected['status_code'], $response->getStatusCode()); + $this->assertEquals($is_ajax, $response instanceof \Symfony\Component\HttpFoundation\JsonResponse); + + if (isset($expected['content'])) + { + $this->assertContains($expected['content'], $response->getContent()); + } + } +} diff --git a/tests/extension/manager_test.php b/tests/extension/manager_test.php index ab93edd939..c737d33f95 100644 --- a/tests/extension/manager_test.php +++ b/tests/extension/manager_test.php @@ -156,7 +156,10 @@ class phpbb_extension_manager_test extends phpbb_database_test_case $table_prefix = 'phpbb_'; $user = new \phpbb\user('\phpbb\user'); + $container = new phpbb_mock_container_builder(); + $migrator = new \phpbb\db\migrator( + $container, $config, $db, $db_tools, @@ -167,7 +170,6 @@ class phpbb_extension_manager_test extends phpbb_database_test_case array(), new \phpbb\db\migration\helper() ); - $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); return new \phpbb\extension\manager( diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php index 2d6df3a3f3..bd7acf12f9 100644 --- a/tests/extension/metadata_manager_test.php +++ b/tests/extension/metadata_manager_test.php @@ -77,7 +77,10 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case $this->template = new phpbb\template\twig\twig($phpbb_path_helper, $this->config, $this->user, $context, $twig, $cache_path, array(new \phpbb\template\twig\extension($context, $this->user))); $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig)); + $container = new phpbb_mock_container_builder(); + $this->migrator = new \phpbb\db\migrator( + $container, $this->config, $this->db, $this->db_tools, diff --git a/tests/functional/fileupload_form_test.php b/tests/functional/fileupload_form_test.php index b8c48389e0..d381fa1ae2 100644 --- a/tests/functional/fileupload_form_test.php +++ b/tests/functional/fileupload_form_test.php @@ -93,23 +93,32 @@ class phpbb_functional_fileupload_form_test extends phpbb_functional_test_case $this->login(); $this->admin_login(); $this->add_lang('ucp'); - $crawler = self::request('GET', 'adm/index.php?sid=' . $this->sid . '&i=acp_attachments&mode=attach'); - $form = $crawler->selectButton('Submit')->form(); - $values = $form->getValues(); + // Make sure check_attachment_content is set to false + $crawler = self::request('GET', 'adm/index.php?sid=' . $this->sid . '&i=acp_attachments&mode=attach'); - $values["config[check_attachment_content]"] = 0; - $form->setValues($values); - $crawler = self::submit($form); + $form = $crawler->selectButton('Submit')->form(array( + 'config[check_attachment_content]' => 0, + 'config[img_imagick]' => '', + )); + self::submit($form); // Request index for correct URL - $crawler = self::request('GET', 'index.php?sid=' . $this->sid); + self::request('GET', 'index.php?sid=' . $this->sid); $crawler = $this->upload_file('disallowed.jpg', 'image/jpeg'); // Hitting the UNABLE_GET_IMAGE_SIZE error means we passed the // DISALLOWED_CONTENT check $this->assertContainsLang('UNABLE_GET_IMAGE_SIZE', $crawler->text()); + + // Reset check_attachment_content to default (enabled) + $crawler = self::request('GET', 'adm/index.php?sid=' . $this->sid . '&i=acp_attachments&mode=attach'); + + $form = $crawler->selectButton('Submit')->form(array( + 'config[check_attachment_content]' => 1, + )); + self::submit($form); } public function test_too_large() diff --git a/tests/functional/prune_shadow_topic_test.php b/tests/functional/prune_shadow_topic_test.php index f00303060d..c014119b98 100644 --- a/tests/functional/prune_shadow_topic_test.php +++ b/tests/functional/prune_shadow_topic_test.php @@ -62,7 +62,7 @@ class phpbb_functional_prune_shadow_topic_test extends phpbb_functional_test_cas $crawler = self::request('GET', "viewtopic.php?t={$this->post['topic_id']}&sid={$this->sid}"); $this->assertContains('Prune Shadow #1', $crawler->filter('html')->text()); - $this->data['topics']['Prune Shadow #1'] = (int) $post['topic_id']; + $this->data['topics']['Prune Shadow #1'] = (int) $this->post['topic_id']; $this->data['posts']['Prune Shadow #1'] = (int) $this->get_parameter_from_link($crawler->filter('.post')->selectLink($this->lang('POST', '', ''))->link()->getUri(), 'p'); $this->assert_forum_details($this->data['forums']['Prune Shadow'], array( diff --git a/tests/functions/get_remote_file_test.php b/tests/functions/get_remote_file_test.php index d412dce164..8e9ad1105a 100644 --- a/tests/functions/get_remote_file_test.php +++ b/tests/functions/get_remote_file_test.php @@ -12,7 +12,7 @@ */ require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; -require_once dirname(__FILE__) . '/../../phpBB/includes/functions_admin.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/functions_compatibility.php'; /** * @group slow diff --git a/tests/notification/base.php b/tests/notification/base.php index c97b7c24e2..162feae557 100644 --- a/tests/notification/base.php +++ b/tests/notification/base.php @@ -66,6 +66,8 @@ abstract class phpbb_tests_notification_base extends phpbb_database_test_case $phpbb_root_path, $phpEx ); + + $this->phpbb_dispatcher = new phpbb_mock_event_dispatcher(); $phpbb_container = $this->container = new phpbb_mock_container_builder(); @@ -75,6 +77,7 @@ abstract class phpbb_tests_notification_base extends phpbb_database_test_case $this->container, $this->user_loader, $this->config, + $this->phpbb_dispatcher, $this->db, $this->cache, $this->user, diff --git a/tests/notification/submit_post_base.php b/tests/notification/submit_post_base.php index 6ab4492de0..5e770f71c9 100644 --- a/tests/notification/submit_post_base.php +++ b/tests/notification/submit_post_base.php @@ -123,7 +123,7 @@ abstract class phpbb_notification_submit_post_base extends phpbb_database_test_c // Notification Manager $phpbb_notifications = new \phpbb\notification\manager($notification_types_array, array(), - $phpbb_container, $user_loader, $config, $db, $cache, $user, + $phpbb_container, $user_loader, $config, $phpbb_dispatcher, $db, $cache, $user, $phpbb_root_path, $phpEx, NOTIFICATION_TYPES_TABLE, NOTIFICATIONS_TABLE, USER_NOTIFICATIONS_TABLE); $phpbb_container->set('notification_manager', $phpbb_notifications); diff --git a/tests/path_helper/path_helper_test.php b/tests/path_helper/path_helper_test.php index bb68f8b3bc..73f0e6bafc 100644 --- a/tests/path_helper/path_helper_test.php +++ b/tests/path_helper/path_helper_test.php @@ -436,4 +436,29 @@ class phpbb_path_helper_test extends phpbb_test_case { $this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_web_root_path_from_ajax_referer($referer_url, $board_url)); } + + public function data_get_valid_page() + { + return array( + // array( current page , mod_rewrite setting , expected output ) + array('index', true, 'index'), + array('index', false, 'index'), + array('foo/index', true, 'foo/index'), + array('foo/index', false, 'foo/index'), + array('app.php/foo', true, 'foo'), + array('app.php/foo', false, 'app.php/foo'), + array('/../app.php/foo', true, '../foo'), + array('/../app.php/foo', false, '../app.php/foo'), + array('/../example/app.php/foo/bar', true, '../example/foo/bar'), + array('/../example/app.php/foo/bar', false, '../example/app.php/foo/bar'), + ); + } + + /** + * @dataProvider data_get_valid_page + */ + public function test_get_valid_page($page, $mod_rewrite, $expected) + { + $this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_valid_page($page, $mod_rewrite)); + } } diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 0ea6c5b7cb..5960956444 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -232,7 +232,9 @@ class phpbb_functional_test_case extends phpbb_test_case $db = $this->get_db(); $db_tools = new \phpbb\db\tools\tools($db); + $container = new phpbb_mock_container_builder(); $migrator = new \phpbb\db\migrator( + $container, $config, $db, $db_tools, @@ -243,8 +245,8 @@ class phpbb_functional_test_case extends phpbb_test_case array(), new \phpbb\db\migration\helper() ); - $container = new phpbb_mock_container_builder(); $container->set('migrator', $migrator); + $container->set('dispatcher', new phpbb_mock_event_dispatcher()); $user = new \phpbb\user('\phpbb\datetime'); $extension_manager = new \phpbb\extension\manager( |