1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Controllers\Database;
use PhpMyAdmin\Controllers\Database\PrivilegesController;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Server\Privileges;
use PhpMyAdmin\Template;
use PhpMyAdmin\Tests\AbstractTestCase;
use PhpMyAdmin\Url;
use function __;
use function _pgettext;
/**
* @covers \PhpMyAdmin\Controllers\Database\PrivilegesController
*/
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Controllers\Database\PrivilegesController::class)]
class PrivilegesControllerTest extends AbstractTestCase
{
/**
* Configures global environment.
*/
protected function setUp(): void
{
parent::setUp();
parent::setLanguage();
parent::setTheme();
}
public function testIndex(): void
{
global $db, $server, $cfg, $PMA_PHP_SELF;
$db = 'db';
$server = 0;
$cfg['Server']['DisableIS'] = false;
$PMA_PHP_SELF = 'index.php';
$dbiDummy = $this->createDbiDummy();
$dbiDummy->addResult('SELECT @@collation_server', [['utf8mb4_uca1400_ai_ci']]);
// phpcs:ignore Generic.Files.LineLength.TooLong
$dbiDummy->addResult("SELECT 1 FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE `PRIVILEGE_TYPE` = 'CREATE USER' AND '''pma_test''@''localhost''' LIKE `GRANTEE` UNION SELECT 1 FROM mysql.user WHERE `create_user_priv` = 'Y' COLLATE utf8mb4_uca1400_ai_ci AND 'pma_test' LIKE `User` AND '' LIKE `Host` LIMIT 1", [['1']]);
$dbiDummy->addResult('SELECT @@collation_server', [['utf8mb4_uca1400_ai_ci']]);
// phpcs:ignore Generic.Files.LineLength.TooLong
$dbiDummy->addResult("SELECT 1 FROM (SELECT `GRANTEE`, `IS_GRANTABLE` FROM `INFORMATION_SCHEMA`.`COLUMN_PRIVILEGES` UNION SELECT `GRANTEE`, `IS_GRANTABLE` FROM `INFORMATION_SCHEMA`.`TABLE_PRIVILEGES` UNION SELECT `GRANTEE`, `IS_GRANTABLE` FROM `INFORMATION_SCHEMA`.`SCHEMA_PRIVILEGES` UNION SELECT `GRANTEE`, `IS_GRANTABLE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES`) t WHERE `IS_GRANTABLE` = 'YES' AND '''pma_test''@''localhost''' LIKE `GRANTEE` UNION SELECT 1 FROM mysql.user WHERE `create_user_priv` = 'Y' COLLATE utf8mb4_uca1400_ai_ci AND 'pma_test' LIKE `User` AND '' LIKE `Host` LIMIT 1", [['1']]);
$dbi = $this->createDatabaseInterface($dbiDummy);
$GLOBALS['dbi'] = $dbi;
$privileges = [];
$serverPrivileges = $this->createMock(Privileges::class);
$serverPrivileges->method('getAllPrivileges')
->willReturn($privileges);
$actual = (new PrivilegesController(
ResponseRenderer::getInstance(),
new Template(),
$db,
$serverPrivileges,
$dbi
))(['checkprivsdb' => $db]);
self::assertStringContainsString(Url::getCommon(['db' => $db], ''), $actual);
self::assertStringContainsString($db, $actual);
self::assertStringContainsString(__('User'), $actual);
self::assertStringContainsString(__('Host'), $actual);
self::assertStringContainsString(__('Type'), $actual);
self::assertStringContainsString(__('Privileges'), $actual);
self::assertStringContainsString(__('Grant'), $actual);
self::assertStringContainsString(__('Action'), $actual);
//_pgettext('Create new user', 'New')
self::assertStringContainsString(_pgettext('Create new user', 'New'), $actual);
self::assertStringContainsString(Url::getCommon(['checkprivsdb' => $db]), $actual);
}
}
|