aboutsummaryrefslogtreecommitdiffstats
path: root/tests/installer
diff options
context:
space:
mode:
authorMaat <maat-pub@mageia.biz>2020-05-08 21:52:11 +0200
committerMaat <maat-pub@mageia.biz>2020-05-08 21:52:11 +0200
commit8ea437e30605e0f66b5220bf904a61d7c1d11ddd (patch)
treee0db2bb4a012d5b06a633160b19f62f4868ecd28 /tests/installer
parent36bc1870f21fac04736a1049c1d5b8e127d729f4 (diff)
parent2fdd46b36431ae0f58bb2e78e42553168db9a0ff (diff)
downloadforums-8ea437e30605e0f66b5220bf904a61d7c1d11ddd.tar
forums-8ea437e30605e0f66b5220bf904a61d7c1d11ddd.tar.gz
forums-8ea437e30605e0f66b5220bf904a61d7c1d11ddd.tar.bz2
forums-8ea437e30605e0f66b5220bf904a61d7c1d11ddd.tar.xz
forums-8ea437e30605e0f66b5220bf904a61d7c1d11ddd.zip
Merge remote-tracking branch 'upstream/prep-release-3.2.9'
Diffstat (limited to 'tests/installer')
-rw-r--r--tests/installer/database_helper_test.php157
-rw-r--r--tests/installer/installer_config_test.php80
-rw-r--r--tests/installer/mocks/test_installer_module.php20
-rw-r--r--tests/installer/mocks/test_installer_task_mock.php44
-rw-r--r--tests/installer/module_base_test.php65
-rw-r--r--tests/installer/navigation_provider_test.php34
6 files changed, 400 insertions, 0 deletions
diff --git a/tests/installer/database_helper_test.php b/tests/installer/database_helper_test.php
new file mode 100644
index 0000000000..ed355884f6
--- /dev/null
+++ b/tests/installer/database_helper_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.
+ *
+ */
+
+class phpbb_installer_database_helper_test extends phpbb_test_case
+{
+ /**
+ * @var phpbb\install\helper\database
+ */
+ private $database_helper;
+
+ public function setUp()
+ {
+ $filesystem = new \phpbb\filesystem\filesystem();
+ $phpbb_root_path = '';
+ $this->database_helper = new \phpbb\install\helper\database($filesystem, $phpbb_root_path);
+ }
+
+ /**
+ * @param string $input
+ * @param string $expected
+ *
+ * @dataProvider comment_string_provider
+ */
+ public function test_remove_comments($input, $expected)
+ {
+ $this->assertEquals($expected, $this->database_helper->remove_comments($input));
+ }
+
+ /**
+ * @param array $expected
+ * @param string $sql
+ * @param string $delimiter
+ *
+ * @dataProvider sql_file_string_provider
+ */
+ public function test_split_sql($expected, $sql, $delimiter)
+ {
+ $this->assertEquals($expected, $this->database_helper->split_sql_file($sql, $delimiter));
+ }
+
+ /**
+ * @param bool|array $expected
+ * @param string $test_string
+ *
+ * @dataProvider prefix_test_case_provider
+ */
+ public function test_validate_table_prefix($expected, $test_string)
+ {
+ $db_helper_mock = $this->getMockBuilder('\phpbb\install\helper\database')
+ ->setMethods(array('get_available_dbms'))
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $db_helper_mock->method('get_available_dbms')
+ ->willReturn(array('sqlite3' => array(
+ 'LABEL' => 'SQLite3',
+ 'SCHEMA' => 'sqlite',
+ 'MODULE' => 'sqlite3',
+ 'DELIM' => ';',
+ 'DRIVER' => 'phpbb\db\driver\sqlite3',
+ 'AVAILABLE' => true,
+ '2.0.x' => false,
+ )));
+
+ $this->assertEquals($expected, $db_helper_mock->validate_table_prefix('sqlite3', $test_string));
+ }
+
+ // Data provider for the remove comments function
+ public function comment_string_provider()
+ {
+ return array(
+ array(
+ 'abc',
+ 'abc',
+ ),
+ array(
+ 'abc /* asdf */',
+ "abc \n",
+ ),
+ array(
+ 'abc /* asdf */ f',
+ "abc \n f",
+ ),
+ array(
+ '# abc',
+ "\n",
+ ),
+ );
+ }
+
+ // Data provider for the sql file splitter function
+ public function sql_file_string_provider()
+ {
+ return array(
+ array(
+ array(
+ 'abcd "efgh"' . "\n" . 'qwerty',
+ 'SELECT * FROM table',
+ ),
+ 'abcd "efgh"' . "\n" .
+ 'qwerty;' . "\n" .
+ 'SELECT * FROM table',
+ ';',
+ ),
+ );
+ }
+
+ // Test data for prefix test
+ public function prefix_test_case_provider()
+ {
+ return array(
+ array(
+ true,
+ 'phpbb_',
+ ),
+ array(
+ true,
+ 'phpbb',
+ ),
+ array(
+ array(
+ array('title' => 'INST_ERR_DB_INVALID_PREFIX'),
+ ),
+ '1hpbb_',
+ ),
+ array(
+ array(
+ array('title' => 'INST_ERR_DB_INVALID_PREFIX'),
+ ),
+ '?hpbb_',
+ ),
+ array(
+ array(
+ array('title' => array('INST_ERR_PREFIX_TOO_LONG', 200)),
+ ),
+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
+ ),
+ array(
+ array(
+ array('title' => 'INST_ERR_DB_INVALID_PREFIX'),
+ array('title' => array('INST_ERR_PREFIX_TOO_LONG', 200)),
+ ),
+ '_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
+ ),
+ );
+ }
+}
diff --git a/tests/installer/installer_config_test.php b/tests/installer/installer_config_test.php
new file mode 100644
index 0000000000..13ac325a79
--- /dev/null
+++ b/tests/installer/installer_config_test.php
@@ -0,0 +1,80 @@
+<?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 phpbb\install\helper\config;
+
+class phpbb_installer_config_test extends phpbb_test_case
+{
+ /**
+ * @var \phpbb\install\helper\config
+ */
+ private $config;
+
+ public function setUp()
+ {
+ $phpbb_root_path = __DIR__ . './../../phpBB/';
+ $filesystem = $this->getMock('\phpbb\filesystem\filesystem');
+ $php_ini = $this->getMockBuilder('\bantu\IniGetWrapper\IniGetWrapper')
+ ->getMock();
+ $php_ini->method('getInt')
+ ->willReturn(-1);
+ $php_ini->method('getBytes')
+ ->willReturn(-1);
+
+ $this->config = new config($filesystem, $php_ini, $phpbb_root_path);
+ }
+
+ public function test_set_get_var()
+ {
+ $this->config->set('foo', 'bar');
+ $this->assertEquals('bar', $this->config->get('foo'));
+ }
+
+ public function test_get_time_remaining()
+ {
+ $this->assertGreaterThan(0, $this->config->get_time_remaining());
+ }
+
+ public function test_get_memory_remaining()
+ {
+ $this->assertGreaterThan(0, $this->config->get_memory_remaining());
+ }
+
+ public function test_progress_tracking()
+ {
+ $this->config->set_finished_task(0);
+ $this->config->set_active_module('bar', 5);
+ $this->config->set_task_progress_count(10);
+ $this->config->increment_current_task_progress();
+
+ $progress_data = $this->config->get_progress_data();
+ $this->assertEquals(1, $progress_data['current_task_progress']);
+
+ $this->config->increment_current_task_progress(2);
+
+ // We only want to check these values
+ $result = $this->config->get_progress_data();
+ $expected_result = array(
+ 'last_task_module_name' => 'bar',
+ 'last_task_module_index' => 5,
+ 'last_task_index' => 0,
+ 'max_task_progress' => 10,
+ 'current_task_progress' => 3,
+ );
+
+ foreach ($expected_result as $key => $value)
+ {
+ $this->assertEquals($value, $result[$key]);
+ }
+ }
+}
diff --git a/tests/installer/mocks/test_installer_module.php b/tests/installer/mocks/test_installer_module.php
new file mode 100644
index 0000000000..e6ebbba263
--- /dev/null
+++ b/tests/installer/mocks/test_installer_module.php
@@ -0,0 +1,20 @@
+<?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 test_installer_module extends \phpbb\install\module_base
+{
+ public function get_navigation_stage_path()
+ {
+ return array();
+ }
+}
diff --git a/tests/installer/mocks/test_installer_task_mock.php b/tests/installer/mocks/test_installer_task_mock.php
new file mode 100644
index 0000000000..ccd62b3bf4
--- /dev/null
+++ b/tests/installer/mocks/test_installer_task_mock.php
@@ -0,0 +1,44 @@
+<?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 test_installer_task_mock extends \phpbb\install\task_base
+{
+ private $task_was_runned;
+
+ public function __construct()
+ {
+ $this->task_was_runned = false;
+
+ parent::__construct();
+ }
+
+ public function run()
+ {
+ $this->task_was_runned = true;
+ }
+
+ public function was_task_runned()
+ {
+ return $this->task_was_runned;
+ }
+
+ public function get_task_lang_name()
+ {
+ return '';
+ }
+
+ public static function get_step_count()
+ {
+ return 2;
+ }
+}
diff --git a/tests/installer/module_base_test.php b/tests/installer/module_base_test.php
new file mode 100644
index 0000000000..9578010047
--- /dev/null
+++ b/tests/installer/module_base_test.php
@@ -0,0 +1,65 @@
+<?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 __DIR__ . '/mocks/test_installer_task_mock.php';
+require_once __DIR__ . '/mocks/test_installer_module.php';
+
+class module_base_test extends phpbb_test_case
+{
+ /**
+ * @var \phpbb\install\module_interface
+ */
+ protected $module;
+
+ /**
+ * @var phpbb_mock_container_builder
+ */
+ protected $container;
+
+ public function setUp()
+ {
+ // DI container mock
+ $this->container = new phpbb_mock_container_builder();
+ $this->container->set('task_one', new test_installer_task_mock());
+ $this->container->set('task_two', new test_installer_task_mock());
+
+ // the collection
+ $module_collection = new \phpbb\di\ordered_service_collection($this->container);
+ $module_collection->add('task_one');
+ $module_collection->add('task_two');
+ $module_collection->add_service_class('task_one', 'test_installer_task_mock');
+ $module_collection->add_service_class('task_two', 'test_installer_task_mock');
+
+ $this->module = new test_installer_module($module_collection, true, false);
+
+ $iohandler = $this->getMock('\phpbb\install\helper\iohandler\iohandler_interface');
+ $config = new \phpbb\install\helper\config(new \phpbb\filesystem\filesystem(), new \bantu\IniGetWrapper\IniGetWrapper(), '', 'php');
+ $this->module->setup($config, $iohandler);
+ }
+
+ public function test_run()
+ {
+ $this->module->run();
+
+ $task = $this->container->get('task_one');
+ $this->assertTrue($task->was_task_runned());
+
+ $task = $this->container->get('task_two');
+ $this->assertTrue($task->was_task_runned());
+ }
+
+ public function test_step_count()
+ {
+ $this->assertEquals(4, $this->module->get_step_count());
+ }
+}
diff --git a/tests/installer/navigation_provider_test.php b/tests/installer/navigation_provider_test.php
new file mode 100644
index 0000000000..ea39af66cd
--- /dev/null
+++ b/tests/installer/navigation_provider_test.php
@@ -0,0 +1,34 @@
+<?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_installer_navigation_provider_test extends phpbb_test_case
+{
+ public function test_navigation()
+ {
+ // Mock nav interface
+ $nav_stub = $this->getMockBuilder('\phpbb\install\helper\navigation\navigation_interface')
+ ->getMock();
+ $nav_stub->method('get')
+ ->willReturn(array('foo' => 'bar'));
+
+ // Set up dependencies
+ $container = new phpbb_mock_container_builder();
+ $container->set('foo', $nav_stub);
+ $nav_collection = new \phpbb\di\service_collection($container);
+ $nav_collection->add('foo');
+
+ // Let's test
+ $nav_provider = new \phpbb\install\helper\navigation\navigation_provider($nav_collection);
+ $this->assertEquals(array('foo' => 'bar'), $nav_provider->get());
+ }
+}