From 51d07783b7cfd71dceef1627e83b4f7ae4898c80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Wed, 6 Aug 2025 20:57:43 -0300 Subject: [PATCH] Add unit tests for DatabaseInterface::isSuperUser() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- tests/unit/Dbal/DatabaseInterfaceTest.php | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/unit/Dbal/DatabaseInterfaceTest.php b/tests/unit/Dbal/DatabaseInterfaceTest.php index 3c07095c70..42bfd3e4d4 100644 --- a/tests/unit/Dbal/DatabaseInterfaceTest.php +++ b/tests/unit/Dbal/DatabaseInterfaceTest.php @@ -20,6 +20,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Utils\SessionCache; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\TestWith; use ReflectionProperty; use function array_keys; @@ -959,4 +960,47 @@ class DatabaseInterfaceTest extends AbstractTestCase self::assertSame([], $dbi->getTables('')); $dbiDummy->assertAllQueriesConsumed(); } + + /** @param list>|false $result */ + #[TestWith([true, [['1']]])] + #[TestWith([false, []])] + #[TestWith([false, false])] + public function testIsSuperUser(bool $expected, array|false $result): void + { + SessionCache::remove('is_superuser'); + $dbiDummy = $this->createDbiDummy(); + $dbiDummy->removeDefaultResults(); + $dbiDummy->addResult('SELECT 1 FROM mysql.user LIMIT 1', $result); + $dbi = $this->createDatabaseInterface($dbiDummy); + + self::assertSame($expected, $dbi->isSuperUser()); + $dbiDummy->assertAllQueriesConsumed(); + self::assertSame($expected, SessionCache::get('is_superuser')); + } + + #[TestWith([true])] + #[TestWith([false])] + public function testIsSuperUserFromCache(bool $expected): void + { + SessionCache::set('is_superuser', $expected); + $dbiDummy = $this->createDbiDummy(); + $dbiDummy->removeDefaultResults(); + $dbi = $this->createDatabaseInterface($dbiDummy); + + self::assertSame($expected, $dbi->isSuperUser()); + $dbiDummy->assertAllQueriesConsumed(); + } + + public function testIsSuperUserWhenNotConnected(): void + { + SessionCache::remove('is_superuser'); + $dbiDummy = $this->createDbiDummy(); + $dbiDummy->removeDefaultResults(); + $dbi = $this->createDatabaseInterface($dbiDummy); + (new ReflectionProperty(DatabaseInterface::class, 'connections'))->setValue($dbi, []); + + self::assertFalse($dbi->isSuperUser()); + $dbiDummy->assertAllQueriesConsumed(); + self::assertFalse(SessionCache::has('is_superuser')); + } }