diff options
Diffstat (limited to 'tests/installer/database_helper_test.php')
| -rw-r--r-- | tests/installer/database_helper_test.php | 157 | 
1 files changed, 157 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', +			), +		); +	} +} | 
