* Remove redundant conditions They were always true. First, the variable is set to -1. If the variable is -1, then set it to Message. If the variable is Message then set the JSON array. All of this is redundant. Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * $sqlQuery is not used anywhere Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Enforce $selected to be an array I can't remove it as it is a global. Previously, it was set to a POST variable. Since we validate that the variable is set and is not null, we can use the value from $params. If we validate that it's also an array we can replace for loop with foreach. There is no passing by reference, so this change should be safe. Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Replace $rebuildDatabaseList with input validation The validation message says 'No databases selected.' so I assume that we should check that we actually got at least one entry in the list. If that is true, then the $rebuildDatabaseList is not needed and the condition redundant. Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * drop_selected_dbs is always set and is redundant I am not sure if this is necessary. The AJAX request sends a value of "1" but the code doesn't really do anything with it other than checking if it is actually set. Is there some other path possible? Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Flatten the array with a single element Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Remove redundant isset The variable is set, so !isset === is_null. Why check for null if we can check just for !is_array. Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Update psalm-baseline.xml Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Adhere to the coding standard Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpMyAdmin\Tests\Controllers\Server\Databases;
|
|
|
|
use PhpMyAdmin\Controllers\Server\Databases\DestroyController;
|
|
use PhpMyAdmin\DatabaseInterface;
|
|
use PhpMyAdmin\Relation;
|
|
use PhpMyAdmin\RelationCleanup;
|
|
use PhpMyAdmin\Template;
|
|
use PhpMyAdmin\Tests\AbstractTestCase;
|
|
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
|
|
use PhpMyAdmin\Transformations;
|
|
|
|
use function __;
|
|
|
|
/**
|
|
* @covers \PhpMyAdmin\Controllers\Server\Databases\DestroyController
|
|
*/
|
|
class DestroyControllerTest extends AbstractTestCase
|
|
{
|
|
public function testDropDatabases(): void
|
|
{
|
|
global $cfg;
|
|
|
|
$GLOBALS['server'] = 1;
|
|
$GLOBALS['text_dir'] = 'ltr';
|
|
$GLOBALS['PMA_PHP_SELF'] = 'index.php';
|
|
|
|
$dbi = $this->getMockBuilder(DatabaseInterface::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
$response = new ResponseRenderer();
|
|
$response->setAjax(true);
|
|
|
|
$cfg['AllowUserDropDatabase'] = true;
|
|
|
|
$template = new Template();
|
|
$controller = new DestroyController(
|
|
$response,
|
|
$template,
|
|
$dbi,
|
|
new Transformations(),
|
|
new RelationCleanup($dbi, new Relation($dbi, $template))
|
|
);
|
|
|
|
$controller();
|
|
$actual = $response->getJSONResult();
|
|
|
|
$this->assertArrayHasKey('message', $actual);
|
|
$this->assertStringContainsString('<div class="alert alert-danger" role="alert">', $actual['message']);
|
|
$this->assertStringContainsString(__('No databases selected.'), $actual['message']);
|
|
}
|
|
}
|