PMA_VERSION, 'db' => 'pmadb', 'users' => 'users', 'usergroups' => 'usergroups', 'menuswork' => true ); $pmaconfig = $this->getMockBuilder('PMA\libraries\Config') ->disableOriginalConstructor() ->getMock(); $GLOBALS['PMA_Config'] = $pmaconfig; //Mock DBI $dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->any()) ->method('fetchResult') ->will( $this->returnValue( array( 'grant user1 select', 'grant user2 delete' ) ) ); $fetchSingleRow = array( 'password' => 'pma_password', 'Table_priv' => 'pri1, pri2', 'Type' => 'Type', '@@old_passwords' => 0, ); $dbi->expects($this->any())->method('fetchSingleRow') ->will($this->returnValue($fetchSingleRow)); $fetchValue = array('key1' => 'value1'); $dbi->expects($this->any())->method('fetchValue') ->will($this->returnValue($fetchValue)); $dbi->expects($this->any())->method('tryQuery') ->will($this->returnValue(true)); $dbi->expects($this->any())->method('escapeString') ->will($this->returnArgument(0)); $GLOBALS['dbi'] = $dbi; $GLOBALS['is_superuser'] = true; $GLOBALS['is_grantuser'] = true; $GLOBALS['is_createuser'] = true; $GLOBALS['is_reload_priv'] = true; } /** * Test for PMA_getDataForDBInfo * * @return void */ public function testPMAGetDataForDBInfo() { $_REQUEST['username'] = "PMA_username"; $_REQUEST['hostname'] = "PMA_hostname"; $_REQUEST['tablename'] = "PMA_tablename"; $_REQUEST['dbname'] = "PMA_dbname"; list( $username, $hostname, $dbname, $tablename, $routinename, $db_and_table, $dbname_is_wildcard ) = PMA_getDataForDBInfo(); $this->assertEquals( "PMA_username", $username ); $this->assertEquals( "PMA_hostname", $hostname ); $this->assertEquals( "PMA_dbname", $dbname ); $this->assertEquals( "PMA_tablename", $tablename ); $this->assertEquals( "`PMA_dbname`.`PMA_tablename`", $db_and_table ); $this->assertEquals( true, $dbname_is_wildcard ); //pre variable have been defined $_REQUEST['pred_tablename'] = "PMA_pred__tablename"; $_REQUEST['pred_dbname'] = array("PMA_pred_dbname"); list( ,, $dbname, $tablename, $routinename, $db_and_table, $dbname_is_wildcard ) = PMA_getDataForDBInfo(); $this->assertEquals( "PMA_pred_dbname", $dbname ); $this->assertEquals( "PMA_pred__tablename", $tablename ); $this->assertEquals( "`PMA_pred_dbname`.`PMA_pred__tablename`", $db_and_table ); $this->assertEquals( true, $dbname_is_wildcard ); } /** * Test for PMA_wildcardEscapeForGrant * * @return void */ public function testPMAWildcardEscapeForGrant() { $dbname = ''; $tablename = ''; $db_and_table = PMA_wildcardEscapeForGrant($dbname, $tablename); $this->assertEquals( '*.*', $db_and_table ); $dbname = 'dbname'; $tablename = ''; $db_and_table = PMA_wildcardEscapeForGrant($dbname, $tablename); $this->assertEquals( '`dbname`.*', $db_and_table ); $dbname = 'dbname'; $tablename = 'tablename'; $db_and_table = PMA_wildcardEscapeForGrant($dbname, $tablename); $this->assertEquals( '`dbname`.`tablename`', $db_and_table ); } /** * Test for PMA_rangeOfUsers * * @return void */ public function testPMARangeOfUsers() { $ret = PMA_rangeOfUsers("INIT"); $this->assertEquals( " WHERE `User` LIKE 'INIT%' OR `User` LIKE 'init%'", $ret ); $ret = PMA_rangeOfUsers(); $this->assertEquals( '', $ret ); } /** * Test for PMA_getTableGrantsArray * * @return void */ public function testPMAGetTableGrantsArray() { $GLOBALS['strPrivDescDelete'] = "strPrivDescDelete"; $GLOBALS['strPrivDescCreateTbl'] = "strPrivDescCreateTbl"; $GLOBALS['strPrivDescDropTbl'] = "strPrivDescDropTbl"; $GLOBALS['strPrivDescIndex'] = "strPrivDescIndex"; $GLOBALS['strPrivDescAlter'] = "strPrivDescAlter"; $GLOBALS['strPrivDescCreateView'] = "strPrivDescCreateView"; $GLOBALS['strPrivDescShowView'] = "strPrivDescShowView"; $GLOBALS['strPrivDescTrigger'] = "strPrivDescTrigger"; $ret = PMA_getTableGrantsArray(); $this->assertEquals( array( 'Delete', 'DELETE', $GLOBALS['strPrivDescDelete'] ), $ret[0] ); $this->assertEquals( array( 'Create', 'CREATE', $GLOBALS['strPrivDescCreateTbl'] ), $ret[1] ); } /** * Test for PMA_getGrantsArray * * @return void */ public function testPMAGetGrantsArray() { $ret = PMA_getGrantsArray(); $this->assertEquals( array( 'Select_priv', 'SELECT', __('Allows reading data.') ), $ret[0] ); $this->assertEquals( array( 'Insert_priv', 'INSERT', __('Allows inserting and replacing data.') ), $ret[1] ); } /** * Test for PMA_getHtmlForColumnPrivileges * * @return void */ public function testPMAGetHtmlForColumnPrivileges() { $columns = array( 'row1' => 'name1' ); $row = array( 'name_for_select' => 'Y' ); $name_for_select = 'name_for_select'; $priv_for_header = 'priv_for_header'; $name = 'name'; $name_for_dfn = 'name_for_dfn'; $name_for_current = 'name_for_current'; $html = PMA_getHtmlForColumnPrivileges( $columns, $row, $name_for_select, $priv_for_header, $name, $name_for_dfn, $name_for_current ); //$name $this->assertContains( $name, $html ); //$name_for_dfn $this->assertContains( $name_for_dfn, $html ); //$priv_for_header $this->assertContains( $priv_for_header, $html ); //$name_for_select $this->assertContains( $name_for_select, $html ); //$columns and $row $this->assertContains( htmlspecialchars('row1'), $html ); //$columns and $row $this->assertContains( _pgettext('None privileges', 'None'), $html ); } /** * 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( '