Leitgedanken/#pma/test/classes/controllers/ServerPluginsControllerTest.php
2022-11-21 09:47:28 +01:00

140 lines
3.6 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Holds ServerPluginsControllerTest class
*
* @package PhpMyAdmin-test
*/
/*
* Include to test.
*/
use PMA\libraries\Theme;
use PMA\libraries\controllers\server\ServerPluginsController;
use PMA\libraries\di\Container;
require_once 'libraries/database_interface.inc.php';
require_once 'libraries/sanitizing.lib.php';
require_once 'libraries/js_escape.lib.php';
require_once 'test/PMATestCase.php';
/**
* Tests for ServerPluginsController class
*
* @package PhpMyAdmin-test
*/
class ServerPluginsControllerTest extends PMATestCase
{
/**
* Prepares environment for the test.
*
* @return void
*/
public function setUp()
{
//$_REQUEST
$_REQUEST['log'] = "index1";
$_REQUEST['pos'] = 3;
//$GLOBALS
$GLOBALS['table'] = "table";
$GLOBALS['pmaThemeImage'] = 'image';
//$_SESSION
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
$_SESSION['PMA_Theme'] = new Theme();
}
/**
* Test for _getPluginsHtml() method
*
* @return void
*/
public function testPMAGetPluginAndModuleInfo()
{
/**
* Prepare plugin list
*/
$row = array();
$row["plugin_name"] = "plugin_name1";
$row["plugin_type"] = "plugin_type1";
$row["plugin_type_version"] = "plugin_version1";
$row["plugin_author"] = "plugin_author1";
$row["plugin_license"] = "plugin_license1";
$row["plugin_description"] = "plugin_description1";
$row["is_active"] = true;
//Mock DBI
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
->disableOriginalConstructor()
->getMock();
$dbi->expects($this->once())
->method('query')
->will($this->returnValue(true));
$dbi->expects($this->at(1))
->method('fetchAssoc')
->will($this->returnValue($row));
$dbi->expects($this->at(2))
->method('fetchAssoc')
->will($this->returnValue(false));
$dbi->expects($this->once())
->method('freeResult')
->will($this->returnValue(true));
$container = Container::getDefaultContainer();
$container->set('dbi', $dbi);
$class = new ReflectionClass('\PMA\libraries\controllers\server\ServerPluginsController');
$method = $class->getMethod('_getPluginsHtml');
$method->setAccessible(true);
$ctrl = new ServerPluginsController();
$html = $method->invoke($ctrl);
//validate 1:Items
$this->assertContains(
'<th>Plugin</th>',
$html
);
$this->assertContains(
'<th>Description</th>',
$html
);
$this->assertContains(
'<th>Version</th>',
$html
);
$this->assertContains(
'<th>Author</th>',
$html
);
$this->assertContains(
'<th>License</th>',
$html
);
//validate 2: one Item HTML
$this->assertContains(
'plugin_name1',
$html
);
$this->assertContains(
'<td>plugin_description1</td>',
$html
);
$this->assertContains(
'<td>plugin_version1</td>',
$html
);
$this->assertContains(
'<td>plugin_author1</td>',
$html
);
$this->assertContains(
'<td>plugin_license1</td>',
$html
);
}
}