assertEmpty(Generator::getDbLink()); } /** * Test for getDbLink * * @group medium */ public function testGetDbLinkNull(): void { global $cfg; $GLOBALS['db'] = 'test_db'; $GLOBALS['server'] = 99; $database = $GLOBALS['db']; $this->assertEquals( '' . htmlspecialchars($database) . '', Generator::getDbLink() ); } /** * Test for getDbLink */ public function testGetDbLink(): void { global $cfg; $GLOBALS['server'] = 99; $database = 'test_database'; $this->assertEquals( '' . htmlspecialchars($database) . '', Generator::getDbLink($database) ); } /** * Test for getDbLink */ public function testGetDbLinkWithSpecialChars(): void { global $cfg; $GLOBALS['server'] = 99; $database = 'test&data\'base'; $this->assertEquals( '' . htmlspecialchars($database) . '', Generator::getDbLink($database) ); } /** * Test for getDivForSliderEffect * * @throws Throwable * @throws Twig_Error_Loader * @throws Twig_Error_Runtime * @throws Twig_Error_Syntax */ public function testGetDivForSliderEffectTest(): void { global $cfg; $cfg['InitialSlidersState'] = 'undefined'; $id = 'test_id'; $message = 'test_message'; $this->assertXmlStringEqualsXmlString( '' . Generator::getDivForSliderEffect($id, $message) . '', '
\n
" ); } /** * Test for getDivForSliderEffect * * @throws Throwable * @throws Twig_Error_Loader * @throws Twig_Error_Runtime * @throws Twig_Error_Syntax */ public function testGetDivForSliderEffectTestClosed(): void { global $cfg; $cfg['InitialSlidersState'] = 'closed'; $id = 'test_id'; $message = 'test_message'; $this->assertXmlStringEqualsXmlString( '' . Generator::getDivForSliderEffect($id, $message) . '', '
\n
" ); } /** * Test for getDivForSliderEffect * * @throws Throwable * @throws Twig_Error_Loader * @throws Twig_Error_Runtime * @throws Twig_Error_Syntax */ public function testGetDivForSliderEffectTestDisabled(): void { global $cfg; $cfg['InitialSlidersState'] = 'disabled'; $id = 'test_id'; $message = 'test_message'; $this->assertXmlStringEqualsXmlString( '' . Generator::getDivForSliderEffect($id, $message) . '', '
\n
" ); } /** * Test for Util::getIcon */ public function testGetIconWithoutActionLinksMode(): void { $GLOBALS['cfg']['ActionLinksMode'] = 'text'; $this->assertEquals( '', Generator::getIcon('b_comment') ); } /** * Test for Util::getIcon */ public function testGetIconWithActionLinksMode(): void { $GLOBALS['cfg']['ActionLinksMode'] = 'icons'; $this->assertEquals( '', Generator::getIcon('b_comment') ); } /** * Test for Util::getIcon */ public function testGetIconAlternate(): void { $GLOBALS['cfg']['ActionLinksMode'] = 'icons'; $alternate_text = 'alt_str'; $this->assertEquals( '' . $alternate_text
            . '', Generator::getIcon('b_comment', $alternate_text) ); } /** * Test for Util::getIcon */ public function testGetIconWithForceText(): void { $GLOBALS['cfg']['ActionLinksMode'] = 'icons'; $alternate_text = 'alt_str'; // Here we are checking for an icon embedded inside a span (i.e not a menu // bar icon $this->assertEquals( '' . $alternate_text
            . ' ' . $alternate_text . '', Generator::getIcon('b_comment', $alternate_text, true, false) ); } /** * Test for showPHPDocumentation */ public function testShowPHPDocumentation(): void { $GLOBALS['server'] = 99; $GLOBALS['cfg']['ServerDefault'] = 0; $target = 'docu'; $lang = _pgettext('PHP documentation language', 'en'); $expected = '' . ''
            . __('Documentation') . ''; $this->assertEquals( $expected, Generator::showPHPDocumentation($target) ); } /** * Test for Generator::linkOrButton * * @param array $params params * @param int $limit limit * @param string $match match * * @dataProvider linksOrButtons */ public function testLinkOrButton(array $params, $limit, $match): void { $restore = $GLOBALS['cfg']['LinkLengthLimit'] ?? 1000; $GLOBALS['cfg']['LinkLengthLimit'] = $limit; try { $result = call_user_func_array( [ Generator::class, 'linkOrButton', ], $params ); $this->assertEquals($match, $result); } finally { $GLOBALS['cfg']['LinkLengthLimit'] = $restore; } } /** * Data provider for Generator::linkOrButton test * * @return array */ public function linksOrButtons(): array { return [ [ [ 'index.php', 'text', ], 1000, 'text', ], [ [ 'index.php?some=parameter', 'text', ], 20, 'text', ], [ [ 'index.php', 'text', [], 'target', ], 1000, 'text', ], [ [ 'url.php?url=http://phpmyadmin.net/', 'text', [], '_blank', ], 1000, 'text', ], ]; } /** * Test for formatSql * * @covers \PhpMyAdmin\Html\Generator::formatSql */ public function testFormatSql(): void { $this->assertEquals( '
' . "\n"
            . 'SELECT 1 < 2' . "\n"
            . '
', Generator::formatSql('SELECT 1 < 2') ); $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 6; $this->assertEquals( '
' . "\n"
            . 'SELECT[...]' . "\n"
            . '
', Generator::formatSql('SELECT 1 < 2', true) ); } }