From 1d65c1d2f2955a9ba8e95950dafedbe6381dc158 Mon Sep 17 00:00:00 2001 From: Chirayu Chiripal Date: Sat, 26 Jul 2014 02:05:09 +0530 Subject: [PATCH] improve test cases of server_privileges.lib.php Signed-off-by: Chirayu Chiripal --- libraries/server_privileges.lib.php | 3 +- test/libraries/PMA_server_privileges_test.php | 422 ++++++++++++++++++ 2 files changed, 424 insertions(+), 1 deletion(-) diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index e2cc2f8eec..ad15b44d3c 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -3262,10 +3262,11 @@ function PMA_getDbRightsForUserOverview() * * @param string $queries queries * - * @return PMA_message + * @return array PMA_message */ function PMA_deleteUser($queries) { + $sql_query = ''; if (empty($queries)) { $message = PMA_Message::error(__('No users selected for deleting!')); } else { diff --git a/test/libraries/PMA_server_privileges_test.php b/test/libraries/PMA_server_privileges_test.php index 67d5f87313..ead90de8be 100644 --- a/test/libraries/PMA_server_privileges_test.php +++ b/test/libraries/PMA_server_privileges_test.php @@ -49,6 +49,7 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase $_REQUEST['pos'] = 3; //$GLOBALS + $GLOBALS['lang'] = 'en'; $GLOBALS['cfg']['MaxRows'] = 10; $GLOBALS['cfg']['SendErrorReports'] = "never"; $GLOBALS['cfg']['ServerDefault'] = "server"; @@ -1997,4 +1998,425 @@ class PMA_ServerPrivileges_Test extends PHPUnit_Framework_TestCase $html ); } + + /** + * Tests for PMA_getHtmlForViewUsersError + * + * @return void + */ + function testPMAGetHtmlForViewUsersError() + { + $this->assertContains( + 'Not enough privilege to view users.', + PMA_getHtmlForViewUsersError() + ); + } + + /** + * Tests for PMA_getUserSpecificRights + * + * @return void + */ + function testPMAGetUserSpecificRights() + { + // Setup for the test + $GLOBALS['dbi']->expects($this->any())->method('fetchAssoc') + ->will( + $this->onConsecutiveCalls( + array('Db' => 'y'), false, array('Db' => 'y'), false, + false, array('Table_name' => 't') + ) + ); + + // Test case 1 + $tables = array('columns_priv'); + $user_host_condition = ''; + $dbname = ''; + $expected = array( + 'y' => array( + 'privs' => array('USAGE'), + 'Db' => 'y', + 'Grant_priv' => 'N', + 'Column_priv' => true, + 'can_delete' => true + ) + ); + $actual = PMA_getUserSpecificRights($tables, $user_host_condition, $dbname); + $this->assertEquals($expected, $actual); + + // Test case 2 + $dbname = 'db'; + $expected = array( + 't' => array( + 'Table_name' => 't' + ) + ); + $actual = PMA_getUserSpecificRights($tables, $user_host_condition, $dbname); + $this->assertEquals($expected, $actual); + } + + /** + * Tests for PMA_getHtmlForUserProperties + * + * @return void + */ + function testPMAGetHtmlForUserProperties() + { + $actual = PMA_getHtmlForUserProperties( + false, 'db', 'user', 'host', 'db', 'table' + ); + $this->assertContains('addUsersForm', $actual); + $this->assertContains('SELECT', $actual); + $this->assertContains('Allows reading data.', $actual); + $this->assertContains('INSERT', $actual); + $this->assertContains('Allows inserting and replacing data.', $actual); + $this->assertContains('UPDATE', $actual); + $this->assertContains('Allows changing data.', $actual); + $this->assertContains('DELETE', $actual); + $this->assertContains('Allows deleting data.', $actual); + $this->assertContains('CREATE', $actual); + $this->assertContains('Allows creating new tables.', $actual); + } + + /** + * Tests for PMA_getHtmlForUserOverview + * + * @return void + */ + function testPMAGetHtmlForUserOverview() + { + $actual = PMA_getHtmlForUserOverview('theme', ''); + $this->assertContains( + 'Note: MySQL privilege names are expressed in English.', $actual + ); + $this->assertContains( + 'Note: phpMyAdmin gets the users\' privileges directly ' + . 'from MySQL\'s privilege tables.', + $actual + ); + } + + /** + * Tests for PMA_getHtmlForUserRights + * + * @return void + */ + function testPMAGetHtmlForUserRights() + { + // Test case 1 + $db_rights = array( + 'y' => array( + 'privs' => array('USAGE'), + 'Db' => 'y', + 'Grant_priv' => 'N', + 'Column_priv' => true, + 'can_delete' => true + ) + ); + $exp_found_rows = array('y'); + $actual = PMA_getHtmlForUserRights($db_rights, '', 'host', 'user'); + $this->assertArrayHasKey(0, $actual); + $this->assertArrayHasKey(1, $actual); + $this->assertEquals($exp_found_rows, $actual[0]); + $this->assertContains('Edit Privileges', $actual[1]); + $this->assertContains('Revoke', $actual[1]); + $this->assertTag(PMA_getTagArray(''), $actual[1]); + $this->assertTag( + PMA_getTagArray('USAGE'), $actual[1] + ); + $this->assertTag( + PMA_getTagArray( + '' + ), $actual[1] + ); + $this->assertTag( + PMA_getTagArray( + 'Revoke' + ), $actual[1] + ); + + // Test case 2 + $actual = PMA_getHtmlForUserRights(array(), '', '', ''); + $this->assertArrayHasKey(0, $actual); + $this->assertArrayHasKey(1, $actual); + $this->assertEquals(array(), $actual[0]); + $this->assertEquals( + '' . "\n" + . '
None
' . "\n" + . '' . "\n", + $actual[1] + ); + } + + /** + * Tests for PMA_getHtmlForAllTableSpecificRights + * + * @return void + */ + function testPMAGetHtmlForAllTableSpecificRights() + { + // Test case 1 + $actual = PMA_getHtmlForAllTableSpecificRights('pma', 'host', 'pmadb'); + $this->assertArrayHasKey(0, $actual); + $this->assertArrayHasKey(1, $actual); + $this->assertTag( + PMA_getTagArray(''), + $actual[0] + ); + $this->assertTag( + PMA_getTagArray(''), + $actual[0] + ); + $this->assertTag( + PMA_getTagArray( + '', + array('content' => 'Table-specific privileges') + ), + $actual[0] + ); + $this->assertEquals(array(), $actual[1]); + + // Test case 2 + $actual = PMA_getHtmlForAllTableSpecificRights('pma2', 'host2', ''); + $this->assertArrayHasKey(0, $actual); + $this->assertArrayHasKey(1, $actual); + $this->assertTag( + PMA_getTagArray( + '', + array('content' => 'Database-specific privileges') + ), + $actual[0] + ); + } + + /** + * Tests for PMA_getHtmlForSelectDbInEditPrivs + * + * @return void + */ + function testPMAGetHtmlForSelectDbInEditPrivs() + { + $GLOBALS['pma'] = new StdClass(); + $GLOBALS['pma']->databases = array( + 'pmadb', + 'testdb', + 'mysql' + ); + $actual = PMA_getHtmlForSelectDbInEditPrivs(array('pmadb')); + $this->assertTag( + PMA_getTagArray( + '