phpmyadmin/test/classes/FooterTest.php
Maurício Meneghini Fauth af6f448842
Remove JS media type from HTML script tags
The type attribute is unnecessary for JavaScript resources.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2023-06-16 20:39:27 -03:00

183 lines
5.0 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use ArrayIterator;
use PhpMyAdmin\ErrorHandler;
use PhpMyAdmin\Footer;
use PhpMyAdmin\Template;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use ReflectionProperty;
use function json_encode;
#[CoversClass(Footer::class)]
class FooterTest extends AbstractTestCase
{
/** @var mixed[] store private attributes of PhpMyAdmin\Footer */
public array $privates = [];
protected Footer $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp(): void
{
parent::setUp();
parent::setLanguage();
parent::setGlobalConfig();
parent::setTheme();
$GLOBALS['dbi'] = $this->createDatabaseInterface();
$_SERVER['SCRIPT_NAME'] = 'index.php';
$GLOBALS['db'] = '';
$GLOBALS['table'] = '';
$GLOBALS['text_dir'] = 'ltr';
$GLOBALS['cfg']['Server']['DisableIS'] = false;
$GLOBALS['cfg']['Server']['verbose'] = 'verbose host';
$GLOBALS['server'] = '1';
$_GET['reload_left_frame'] = '1';
$GLOBALS['focus_querywindow'] = 'main_pane_left';
$this->object = new Footer();
unset($GLOBALS['error_message']);
unset($GLOBALS['sql_query']);
$GLOBALS['errorHandler'] = new ErrorHandler();
$_POST = [];
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown(): void
{
parent::tearDown();
unset($this->object);
}
/**
* Test for getDebugMessage
*/
#[Group('medium')]
public function testGetDebugMessage(): void
{
$GLOBALS['cfg']['DBG']['sql'] = true;
$_SESSION['debug']['queries'] = [
['count' => 1, 'time' => 0.2, 'query' => 'SELECT * FROM `pma_bookmark` WHERE 1'],
['count' => 1, 'time' => 2.5, 'query' => 'SELECT * FROM `db` WHERE 1'],
];
$this->assertEquals(
'{"queries":[{"count":1,"time":0.2,"query":"SELECT * FROM `pma_bookmark` WHERE 1"},'
. '{"count":1,"time":2.5,"query":"SELECT * FROM `db` WHERE 1"}]}',
$this->object->getDebugMessage(),
);
}
/**
* Test for removeRecursion
*/
public function testRemoveRecursion(): void
{
$object = (object) [];
$object->child = (object) [];
$object->childIterator = new ArrayIterator();
$object->child->parent = $object;
$this->callFunction($this->object, Footer::class, 'removeRecursion', [&$object]);
$this->assertEquals(
'{"child":{"parent":"***RECURSION***"},"childIterator":"***ITERATOR***"}',
json_encode($object),
);
}
/**
* Test for disable
*/
public function testDisable(): void
{
$footer = new Footer();
$footer->disable();
$this->assertEquals(
'',
$footer->getDisplay(),
);
}
public function testGetDisplayWhenAjaxIsEnabled(): void
{
$footer = new Footer();
$footer->setAjax(true);
$template = new Template();
$this->assertEquals(
$template->render('modals/function_confirm') . "\n"
. $template->render('modals/add_index') . "\n"
. $template->render('modals/page_settings') . "\n",
$footer->getDisplay(),
);
}
/**
* Test for footer get Scripts
*/
public function testGetScripts(): void
{
$footer = new Footer();
$this->assertStringContainsString(
'<script data-cfasync="false">',
$footer->getScripts()->getDisplay(),
);
}
/**
* Test for displaying footer
*/
#[Group('medium')]
public function testDisplay(): void
{
$footer = new Footer();
$this->assertStringContainsString(
'Open new phpMyAdmin window',
$footer->getDisplay(),
);
}
/**
* Test for minimal footer
*/
public function testMinimal(): void
{
$footer = new Footer();
$footer->setMinimal();
$template = new Template();
$this->assertEquals(
$template->render('modals/function_confirm') . "\n"
. $template->render('modals/add_index') . "\n"
. $template->render('modals/page_settings')
. "\n </div>\n </body>\n</html>\n",
$footer->getDisplay(),
);
}
public function testSetAjax(): void
{
$isAjax = new ReflectionProperty(Footer::class, 'isAjax');
$footer = new Footer();
$this->assertFalse($isAjax->getValue($footer));
$footer->setAjax(true);
$this->assertTrue($isAjax->getValue($footer));
$footer->setAjax(false);
$this->assertFalse($isAjax->getValue($footer));
}
}