Merge pull request #672 from xmujay/UT_database_and_privileges

Ut for server database, privileges and other server pages
This commit is contained in:
Marc Delisle 2013-09-06 04:49:35 -07:00
commit 1fbc4d0cb3
3 changed files with 260 additions and 0 deletions

View File

@ -19,6 +19,7 @@ require_once 'libraries/Message.class.php';
require_once 'libraries/sanitizing.lib.php';
require_once 'libraries/sqlparser.lib.php';
require_once 'libraries/js_escape.lib.php';
require_once 'libraries/database_interface.inc.php';
/**
* PMA_ServerBinlog_Test class
@ -202,4 +203,65 @@ class PMA_ServerBinlog_Test extends PHPUnit_Framework_TestCase
$html
);
}
/**
* Test for PMA_getAllLogItemInfo
*
* @return void
*/
public function testPMAGetAllLogItemInfo()
{
//Mock DBI
$dbi = $this->getMockBuilder('PMA_DatabaseInterface')
->disableOriginalConstructor()
->getMock();
$fetchAssoc = array(
'Info' => 'Info',
'Log_name' => 'Log_name',
'Pos' => 'Pos',
'Event_type' => 'Event_type',
'Server_id' => 'Server_id',
'Orig_log_pos' => 'Orig_log_pos',
'End_log_pos' => 'End_log_pos',
);
$dbi->expects($this->at(0))->method('fetchAssoc')
->will($this->returnValue($fetchAssoc));
$dbi->expects($this->at(1))->method('fetchAssoc')
->will($this->returnValue(false));
$GLOBALS['dbi'] = $dbi;
$GLOBALS['cfg']['LimitChars'] = 2;
$result = array();
$dontlimitchars = ";";
$html = PMA_getAllLogItemInfo($result, $dontlimitchars);
$value = $fetchAssoc;
$this->assertContains(
$value['Log_name'],
$html
);
$this->assertContains(
$value['Pos'],
$html
);
$this->assertContains(
$value['Event_type'],
$html
);
$this->assertContains(
$value['Server_id'],
$html
);
$this->assertContains(
$value['Orig_log_pos'],
$html
);
$this->assertContains(
htmlspecialchars($value['Info']),
$html
);
}
}

View File

@ -245,4 +245,42 @@ class PMA_ServerDatabases_Test extends PHPUnit_Framework_TestCase
$sort_order
);
}
/**
* Test for PMA_getHtmlForColumnOrder
*
* @return void
*/
public function testPMAGetHtmlForColumnOrder()
{
//Mock DBI
$dbi = $this->getMockBuilder('PMA_DatabaseInterface')
->disableOriginalConstructor()
->getMock();
$GLOBALS['dbi'] = $dbi;
$column_order = array(
"first_database" => array(
'format' => 'byte',
'footer' => '10333',
)
);
$first_database = array(
"first_database" => "db1"
);
$html = PMA_getHtmlForColumnOrder($column_order, $first_database);
$stat = $column_order["first_database" ];
list($value, $unit)
= PMA_Util::formatByteDown($stat['footer'], 3, 1);
$this->assertContains(
$value,
$html
);
$this->assertContains(
$unit,
$html
);
}
}

View File

@ -57,12 +57,22 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase
$GLOBALS['cfg']['Server']['pmadb'] = 'pmadb';
$GLOBALS['cfg']['Server']['usergroups'] = 'usergroups';
$GLOBALS['cfg']['Server']['users'] = 'users';
$GLOBALS['cfg']['ActionLinksMode'] = "both";
$GLOBALS['cfg']['DefaultTabDatabase'] = 'db_structure.php';
$GLOBALS['cfg']['QueryWindowHeight'] = 100;
$GLOBALS['cfg']['QueryWindowWidth'] = 100;
$GLOBALS['cfg']['PmaAbsoluteUri'] = "PmaAbsoluteUri";
$GLOBALS['cfg']['DefaultTabTable'] = "db_structure.php";
$GLOBALS['cfg']['NavigationTreeDefaultTabTable'] = "db_structure.php";
$GLOBALS['cfg']['Confirm'] = "Confirm";
$GLOBALS['table'] = "table";
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
$GLOBALS['pmaThemeImage'] = 'image';
$GLOBALS['server'] = 1;
$GLOBALS['username'] = "pma_username";
$GLOBALS['collation_connection'] = "collation_connection";
$GLOBALS['text_dir'] = "text_dir";
//$_POST
$_POST['pred_password'] = 'none';
@ -70,6 +80,12 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase
$_SESSION['PMA_Theme'] = PMA_Theme::load('./themes/pmahomme');
$_SESSION['PMA_Theme'] = new PMA_Theme();
$pmaconfig = $this->getMockBuilder('PMA_Config')
->disableOriginalConstructor()
->getMock();
$GLOBALS['PMA_Config'] = $pmaconfig;
//Mock DBI
$dbi = $this->getMockBuilder('PMA_DatabaseInterface')
->disableOriginalConstructor()
@ -294,6 +310,38 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase
}
/**
* Test for PMA_getHtmlForUserGroupDialog
*
* @return void
*/
public function testPMAGetHtmlForUserGroupDialog()
{
$username = "pma_username";
$is_menuswork = true;
$_REQUEST['edit_user_group_dialog'] = "edit_user_group_dialog";
$GLOBALS['is_ajax_request'] = false;
//PMA_getHtmlForUserGroupDialog
$html = PMA_getHtmlForUserGroupDialog($username, $is_menuswork);
$this->assertContains(
'<form class="ajax" id="changeUserGroupForm"',
$html
);
//PMA_URL_getHiddenInputs
$params = array('username' => $username);
$html_output = PMA_URL_getHiddenInputs($params);
$this->assertContains(
$html_output,
$html
);
//__('User group')
$this->assertContains(
__('User group'),
$html
);
}
/**
* Test for PMA_getHtmlToChooseUserGroup
*
@ -323,6 +371,118 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase
);
}
/**
* Test for PMA_getHtmlForDisplayResourceLimits
*
* @return void
*/
public function testPMAGetHtmlForDisplayResourceLimits()
{
$row = array(
'max_questions' => 'max_questions',
'max_updates' => 'max_updates',
'max_connections' => 'max_connections',
'max_user_connections' => 'max_user_connections',
);
//PMA_getHtmlForDisplayResourceLimits
$html = PMA_getHtmlForDisplayResourceLimits($row);
$this->assertContains(
'<legend>' . __('Resource limits') . '</legend>',
$html
);
$this->assertContains(
__('Note: Setting these options to 0 (zero) removes the limit.'),
$html
);
$this->assertContains(
'MAX QUERIES PER HOUR',
$html
);
$this->assertContains(
$row['max_connections'],
$html
);
$this->assertContains(
$row['max_updates'],
$html
);
$this->assertContains(
$row['max_connections'],
$html
);
$this->assertContains(
$row['max_user_connections'],
$html
);
$this->assertContains(
__('Limits the number of simultaneous connections the user may have.'),
$html
);
$this->assertContains(
__('Limits the number of simultaneous connections the user may have.'),
$html
);
}
/**
* Test for PMA_getSqlQueryForDisplayPrivTable
*
* @return void
*/
public function testPMAGetSqlQueryForDisplayPrivTable()
{
$username = "pma_username";
$db = '*';
$table = "pma_table";
$hostname = "pma_hostname";
//$db == '*'
$ret = PMA_getSqlQueryForDisplayPrivTable(
$db, $table, $username, $hostname
);
$sql = "SELECT * FROM `mysql`.`user`"
." WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
." AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';";
$this->assertEquals(
$sql,
$ret
);
//$table == '*'
$db = "pma_db";
$table = "*";
$ret = PMA_getSqlQueryForDisplayPrivTable(
$db, $table, $username, $hostname
);
$sql = "SELECT * FROM `mysql`.`db`"
." WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
." AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "'"
." AND '" . PMA_Util::unescapeMysqlWildcards($db) . "'"
." LIKE `Db`;";
$this->assertEquals(
$sql,
$ret
);
//$table == 'pma_table'
$db = "pma_db";
$table = "pma_table";
$ret = PMA_getSqlQueryForDisplayPrivTable(
$db, $table, $username, $hostname
);
$sql = "SELECT `Table_priv`"
." FROM `mysql`.`tables_priv`"
." WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
." AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "'"
." AND `Db` = '" . PMA_Util::unescapeMysqlWildcards($db) . "'"
." AND `Table_name` = '" . PMA_Util::sqlAddSlashes($table) . "';";
$this->assertEquals(
$sql,
$ret
);
}
/**
* Test for PMA_getDataForChangeOrCopyUser
*