enableBc(); $GLOBALS['text_dir'] = 'ltr'; $GLOBALS['server'] = 1; $GLOBALS['db'] = 'db'; $GLOBALS['table'] = 'table'; $GLOBALS['PMA_PHP_SELF'] = 'index.php'; $GLOBALS['cfg']['Server']['DisableIS'] = false; $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() ->getMock(); //this data is needed when PhpMyAdmin\Server\Status\Data constructs $serverSessionVariables = [ 'auto_increment_increment' => '1', 'auto_increment_offset' => '13', 'automatic_sp_privileges' => 'ON', 'back_log' => '50', 'big_tables' => 'OFF', ]; $serverGlobalVariables = [ 'auto_increment_increment' => '0', 'auto_increment_offset' => '12', ]; $fetchResult = [ [ 'SHOW SESSION VARIABLES;', 0, 1, DatabaseInterface::CONNECT_USER, 0, $serverSessionVariables, ], [ 'SHOW GLOBAL VARIABLES;', 0, 1, DatabaseInterface::CONNECT_USER, 0, $serverGlobalVariables, ], ]; $dbi->expects($this->any())->method('fetchResult') ->will($this->returnValueMap($fetchResult)); $GLOBALS['dbi'] = $dbi; } public function testIndex(): void { $response = new ResponseStub(); $controller = new VariablesController($response, new Template(), $GLOBALS['dbi']); $controller->index(); $html = $response->getHTMLResult(); $this->assertStringContainsString( Generator::getIcon('b_save', __('Save')), $html ); $this->assertStringContainsString( Generator::getIcon('b_close', __('Cancel')), $html ); $this->assertStringContainsString( '' . __('Filters') . '', $html ); $this->assertStringContainsString( __('Containing the word:'), $html ); $this->assertStringContainsString( __('Variable'), $html ); $this->assertStringContainsString( __('Value'), $html ); $name = 'auto_increment_increment'; $value = htmlspecialchars(str_replace('_', ' ', $name)); $this->assertStringContainsString( $value, $html ); $name = 'auto_increment_offset'; $value = htmlspecialchars(str_replace('_', ' ', $name)); $this->assertStringContainsString( $value, $html ); } /** * Test for formatVariable() */ public function testFormatVariable(): void { $controller = new VariablesController(Response::getInstance(), new Template(), $GLOBALS['dbi']); $nameForValueByte = 'byte_variable'; $nameForValueNotByte = 'not_a_byte_variable'; $slimData = new KBSlimData(); $slimData->addVariable($nameForValueByte, 'byte', null); $slimData->addVariable($nameForValueNotByte, 'string', null); KBSearch::loadTestData($slimData); //name is_numeric and the value type is byte $args = [ $nameForValueByte, '3', ]; [$formattedValue, $isHtmlFormatted] = $this->callFunction( $controller, VariablesController::class, 'formatVariable', $args ); $this->assertEquals( '3 B', $formattedValue ); $this->assertTrue($isHtmlFormatted); //name is_numeric and the value type is not byte $args = [ $nameForValueNotByte, '3', ]; [$formattedValue, $isHtmlFormatted] = $this->callFunction( $controller, VariablesController::class, 'formatVariable', $args ); $this->assertEquals( '3', $formattedValue ); $this->assertFalse($isHtmlFormatted); //value is not a number $args = [ $nameForValueNotByte, 'value', ]; [$formattedValue, $isHtmlFormatted] = $this->callFunction( $controller, VariablesController::class, 'formatVariable', $args ); $this->assertEquals( 'value', $formattedValue ); $this->assertFalse($isHtmlFormatted); } }