createDbiDummy(); // phpcs:disable Generic.Files.LineLength.TooLong $dbiDummy->addResult('SHOW SESSION VARIABLES LIKE \'collation_connection\';', [['collation_connection', 'utf8mb4_uca1400_ai_ci']]); $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('SHOW SESSION VARIABLES LIKE \'collation_connection\';', [['collation_connection', 'utf8mb4_uca1400_ai_ci']]); $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']]); // phpcs:enable $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]); $dbiDummy->assertAllQueriesConsumed(); 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); } }