1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-25 20:44:01 +01:00
php-phpbb/tests/installer/database_helper_test.php
2015-09-19 20:28:39 +02:00

158 lines
3.5 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_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',
),
);
}
}