mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 05:18:52 +00:00
[ticket/13740] Fixes and Tests for database helper
PHPBB3-13740
This commit is contained in:
parent
8bfd29e86d
commit
5ad0af3d3d
2 changed files with 153 additions and 1 deletions
|
@ -43,7 +43,8 @@ class database
|
||||||
*/
|
*/
|
||||||
public function __construct(\phpbb\filesystem\filesystem_interface $filesystem, $phpbb_root_path)
|
public function __construct(\phpbb\filesystem\filesystem_interface $filesystem, $phpbb_root_path)
|
||||||
{
|
{
|
||||||
$this->filesystem = $filesystem;
|
$this->filesystem = $filesystem;
|
||||||
|
$this->phpbb_root_path = $phpbb_root_path;
|
||||||
|
|
||||||
// DBMS supported by phpBB
|
// DBMS supported by phpBB
|
||||||
$this->supported_dbms = array(
|
$this->supported_dbms = array(
|
||||||
|
|
151
tests/installer/database_helper_test.php
Normal file
151
tests/installer/database_helper_test.php
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
<?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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var phpbb\db\driver\driver_interface
|
||||||
|
*/
|
||||||
|
private $dbms_mock;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
$filesystem = new \phpbb\filesystem\filesystem();
|
||||||
|
$phpbb_root_path = '';
|
||||||
|
$this->database_helper = new \phpbb\install\helper\database($filesystem, $phpbb_root_path);
|
||||||
|
|
||||||
|
// I used oracle because it tolerates the shortest table prefixes
|
||||||
|
// so it's the simplest to write test cases for
|
||||||
|
$this->dbms_mock = $this->getMock('\phpbb\db\driver\oracle');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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)
|
||||||
|
{
|
||||||
|
$this->assertEquals($expected, $this->database_helper->validate_table_prefix($this->dbms_mock, $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"
|
||||||
|
qwerty;
|
||||||
|
SELECT * FROM table',
|
||||||
|
';',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'SELECT * FROM table1',
|
||||||
|
'SELECT * FROM table2 WHERE i_am="king"',
|
||||||
|
),
|
||||||
|
'SELECT * FROM table1; SELECT * FROM table2 WHERE i_am="king"',
|
||||||
|
';',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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' => 'INST_ERR_PREFIX_TOO_LONG'),
|
||||||
|
),
|
||||||
|
'php_bb_',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue