diff --git a/test/classes/dbi/DBIMysql_test.php b/test/classes/dbi/DBIMysql_test.php index d5f0253da9..a9b82b04fb 100644 --- a/test/classes/dbi/DBIMysql_test.php +++ b/test/classes/dbi/DBIMysql_test.php @@ -37,7 +37,10 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase * @return void */ protected function setUp() - { + { + $GLOBALS['cfg']['Server']['ssl'] = true; + $GLOBALS['cfg']['PersistentConnections'] = false; + $GLOBALS['cfg']['Server']['compress'] = true; $this->object = new PMA_DBI_Mysql(); } @@ -66,7 +69,124 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase $this->assertEquals( false, $this->object->realMultiQuery(null, "select * from PMA") - ); + ); + } + + /** + * Test for mysql related functions, using runkit_function_redefine + * + * @return void + * + * @group medium + */ + public function testMysqlDBI() + { + if (! PMA_HAS_RUNKIT) { + $this->markTestSkipped("Cannot redefine function"); + } + //FOR UT, we just test the right mysql client API is called + runkit_function_redefine('mysql_pconnect','','return "mysql_pconnect";'); + runkit_function_redefine('mysql_connect','','return "mysql_connect";'); + runkit_function_redefine('mysql_query','','return "mysql_query";'); + runkit_function_redefine('mysql_fetch_array','','return "mysql_fetch_array";'); + runkit_function_redefine('mysql_data_seek','','return "mysql_data_seek";'); + runkit_function_redefine('mysql_get_host_info','','return "mysql_get_host_info";'); + runkit_function_redefine('mysql_get_proto_info','','return "mysql_get_proto_info";'); + runkit_function_redefine('mysql_field_flags','','return "mysql_field_flags";'); + runkit_function_redefine('mysql_field_name','','return "mysql_field_name";'); + runkit_function_redefine('mysql_field_len','','return "mysql_field_len";'); + + $user = 'PMA_user'; + $password = 'PMA_password'; + $is_controluser = false; + $server = array( + 'port' => 8080, + 'socket' => 123, + 'host' => 'locahost', + ); + $auxiliary_connection = true; + + //test for connect + $ret = $this->object->connect( + $user, $password, $is_controluser, + $server, $auxiliary_connection + ); + $this->assertEquals( + 'mysql_connect', + $ret + ); + + $GLOBALS['cfg']['PersistentConnections'] = true; + $ret = $this->object->connect( + $user, $password, $is_controluser, + $server, $auxiliary_connection + ); + $this->assertEquals( + 'mysql_pconnect', + $ret + ); + + //test for realQuery + $query = 'select * from DBI'; + $link = $ret; + $options = 0; + $ret = $this->object->realQuery($query, $link, $options); + $this->assertEquals( + 'mysql_query', + $ret + ); + + //test for fetchArray + $result = $ret; + $ret = $this->object->fetchArray($result); + $this->assertEquals( + 'mysql_fetch_array', + $ret + ); + + //test for dataSeek + $result = $ret; + $offset = 12; + $ret = $this->object->dataSeek($result, $offset); + $this->assertEquals( + 'mysql_data_seek', + $ret + ); + + //test for getHostInfo + $ret = $this->object->getHostInfo($ret); + $this->assertEquals( + 'mysql_get_host_info', + $ret + ); + + //test for getProtoInfo + $ret = $this->object->getProtoInfo($ret); + $this->assertEquals( + 'mysql_get_proto_info', + $ret + ); + + //test for fieldLen + $ret = $this->object->fieldLen($ret, $offset); + $this->assertEquals( + 'mysql_field_len', + $ret + ); + + //test for fieldName + $ret = $this->object->fieldName($ret, $offset); + $this->assertEquals( + 'mysql_field_name', + $ret + ); + + //test for fieldFlags + $ret = $this->object->fieldFlags($ret, $offset); + $this->assertEquals( + 'mysql_field_flags', + $ret + ); } /** @@ -83,7 +203,7 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase $this->assertEquals( false, $this->object->selectDb("PMA") - ); + ); } /** @@ -99,12 +219,12 @@ class PMA_DBI_Mysql_Test extends PHPUnit_Framework_TestCase $this->assertEquals( false, $this->object->moreResults() - ); + ); //PHP's 'mysql' extension does not support multi_queries $this->assertEquals( false, $this->object->nextResult() - ); + ); } /**