diff --git a/psalm-baseline.xml b/psalm-baseline.xml index d498627d1a20..98f508930b03 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -13188,6 +13188,11 @@ + + + + + @@ -13895,6 +13900,8 @@ + + diff --git a/tests/unit/Config/ConfigFileTest.php b/tests/unit/Config/ConfigFileTest.php index d3565bc37f7b..fe67ea7ce6c7 100644 --- a/tests/unit/Config/ConfigFileTest.php +++ b/tests/unit/Config/ConfigFileTest.php @@ -8,13 +8,14 @@ use PhpMyAdmin\Config\Settings; use PhpMyAdmin\Tests\AbstractTestCase; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use stdClass; use function array_keys; use function count; #[CoversClass(ConfigFile::class)] +#[Medium] class ConfigFileTest extends AbstractTestCase { /** @@ -275,7 +276,6 @@ public function testConfigFileSetInUserPreferences(): void /** * Test for ConfigFile::getFlatDefaultConfig */ - #[Group('medium')] public function testGetFlatDefaultConfig(): void { $flatDefaultConfig = $this->object->getFlatDefaultConfig(); diff --git a/tests/unit/Config/FormDisplayTest.php b/tests/unit/Config/FormDisplayTest.php index 49feb9ef5d80..b78bcd373ed5 100644 --- a/tests/unit/Config/FormDisplayTest.php +++ b/tests/unit/Config/FormDisplayTest.php @@ -11,7 +11,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\Tests\AbstractTestCase; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use ReflectionClass; use ReflectionMethod; use ReflectionProperty; @@ -19,6 +19,7 @@ use function function_exists; #[CoversClass(FormDisplay::class)] +#[Medium] class FormDisplayTest extends AbstractTestCase { protected FormDisplay $object; @@ -50,7 +51,6 @@ protected function tearDown(): void /** * Test for FormDisplay::registerForm */ - #[Group('medium')] public function testRegisterForm(): void { $reflection = new ReflectionClass(FormDisplay::class); @@ -81,7 +81,6 @@ public function testRegisterForm(): void /** * Test for FormDisplay::process */ - #[Group('medium')] public function testProcess(): void { self::assertFalse( diff --git a/tests/unit/Config/FormTest.php b/tests/unit/Config/FormTest.php index a30dee7ffe14..593ea98bbcfb 100644 --- a/tests/unit/Config/FormTest.php +++ b/tests/unit/Config/FormTest.php @@ -8,7 +8,7 @@ use PhpMyAdmin\Config\Form; use PhpMyAdmin\Tests\AbstractTestCase; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use ReflectionClass; use ReflectionProperty; @@ -16,6 +16,7 @@ use function preg_match; #[CoversClass(Form::class)] +#[Medium] class FormTest extends AbstractTestCase { protected Form $object; @@ -50,7 +51,6 @@ protected function tearDown(): void /** * Test for Form::__constructor */ - #[Group('medium')] public function testContructor(): void { self::assertSame(1, $this->object->index); diff --git a/tests/unit/ConfigStorage/UserGroupsTest.php b/tests/unit/ConfigStorage/UserGroupsTest.php index b1716a234d04..d833cb77aaad 100644 --- a/tests/unit/ConfigStorage/UserGroupsTest.php +++ b/tests/unit/ConfigStorage/UserGroupsTest.php @@ -16,9 +16,10 @@ use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Url; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; #[CoversClass(UserGroups::class)] +#[Medium] class UserGroupsTest extends AbstractTestCase { private ConfigurableMenusFeature $configurableMenusFeature; @@ -44,7 +45,6 @@ protected function setUp(): void /** * Tests UserGroups::getHtmlForUserGroupsTable() function when there are no user groups */ - #[Group('medium')] public function testGetHtmlForUserGroupsTableWithNoUserGroups(): void { $expectedQuery = 'SELECT * FROM `pmadb`.`usergroups` ORDER BY `usergroup` ASC'; diff --git a/tests/unit/ConfigTest.php b/tests/unit/ConfigTest.php index 0e5d6bc50d36..4615045203ea 100644 --- a/tests/unit/ConfigTest.php +++ b/tests/unit/ConfigTest.php @@ -13,6 +13,7 @@ use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Depends; use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use ReflectionProperty; use function define; @@ -41,6 +42,7 @@ use const PHP_OS; #[CoversClass(Config::class)] +#[Medium] class ConfigTest extends AbstractTestCase { protected Config $object; @@ -126,7 +128,6 @@ public function testLoadConfigs(): void /** * Test for CheckSystem */ - #[Group('medium')] public function testCheckSystem(): void { $this->object->checkSystem(); diff --git a/tests/unit/Controllers/Table/Structure/MoveColumnsControllerTest.php b/tests/unit/Controllers/Table/Structure/MoveColumnsControllerTest.php index 9681ff4b6189..49f895cba99f 100644 --- a/tests/unit/Controllers/Table/Structure/MoveColumnsControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/MoveColumnsControllerTest.php @@ -9,19 +9,20 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer as ResponseStub; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use ReflectionClass; use function preg_replace; -/** @covers \PhpMyAdmin\Controllers\Table\Structure\MoveColumnsController */ +#[CoversClass(MoveColumnsController::class)] class MoveColumnsControllerTest extends AbstractTestCase { /** * @param array $columnNames * @psalm-param list $columnNames - * - * @dataProvider providerForTestGenerateAlterTableSql */ + #[DataProvider('providerForTestGenerateAlterTableSql')] public function testGenerateAlterTableSql(string $createStatement, array $columnNames, string|null $expected): void { $class = new ReflectionClass(MoveColumnsController::class); diff --git a/tests/unit/EncodingTest.php b/tests/unit/EncodingTest.php index 4bcc8acaaaac..7e9ab14739c1 100644 --- a/tests/unit/EncodingTest.php +++ b/tests/unit/EncodingTest.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Encoding; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use function _setlocale; @@ -23,6 +24,7 @@ use const PHP_INT_SIZE; #[CoversClass(Encoding::class)] +#[Medium] class EncodingTest extends AbstractTestCase { protected function setUp(): void @@ -42,7 +44,6 @@ protected function tearDown(): void /** * Test for Encoding::convertString */ - #[Group('medium')] public function testNoConversion(): void { self::assertSame( diff --git a/tests/unit/Error/ErrorHandlerTest.php b/tests/unit/Error/ErrorHandlerTest.php index 412a50818792..ece16f497a50 100644 --- a/tests/unit/Error/ErrorHandlerTest.php +++ b/tests/unit/Error/ErrorHandlerTest.php @@ -13,7 +13,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use Throwable; use function array_keys; @@ -26,6 +26,7 @@ use const E_WARNING; #[CoversClass(ErrorHandler::class)] +#[Medium] class ErrorHandlerTest extends AbstractTestCase { protected ErrorHandler $object; @@ -121,7 +122,6 @@ public function testCheckSavedErrors(): void /** * Test for countErrors */ - #[Group('medium')] public function testCountErrors(): void { $this->object->addError('Compile Error', E_WARNING, 'error.txt', 15); @@ -134,7 +134,6 @@ public function testCountErrors(): void /** * Test for sliceErrors */ - #[Group('medium')] public function testSliceErrors(): void { $this->object->addError('Compile Error', E_WARNING, 'error.txt', 15); @@ -164,7 +163,6 @@ public function testSliceErrors(): void /** * Test for sliceErrors with 10 elements as an example */ - #[Group('medium')] public function testSliceErrorsOtherExample(): void { for ($i = 0; $i < 10; $i++) { diff --git a/tests/unit/FooterTest.php b/tests/unit/FooterTest.php index 9030edb40447..966aa3d83690 100644 --- a/tests/unit/FooterTest.php +++ b/tests/unit/FooterTest.php @@ -11,11 +11,12 @@ use PhpMyAdmin\Footer; use PhpMyAdmin\Template; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use function json_encode; #[CoversClass(Footer::class)] +#[Medium] class FooterTest extends AbstractTestCase { /** @var mixed[] store private attributes of PhpMyAdmin\Footer */ @@ -64,7 +65,6 @@ protected function tearDown(): void /** * Test for getDebugMessage */ - #[Group('medium')] public function testGetDebugMessage(): void { $config = Config::getInstance(); @@ -114,7 +114,6 @@ public function testGetScripts(): void /** * Test for displaying footer */ - #[Group('medium')] public function testDisplay(): void { $footer = new Footer(new Template(), Config::getInstance()); diff --git a/tests/unit/Html/GeneratorTest.php b/tests/unit/Html/GeneratorTest.php index 390deba9b4c1..62eeb317763b 100644 --- a/tests/unit/Html/GeneratorTest.php +++ b/tests/unit/Html/GeneratorTest.php @@ -15,7 +15,7 @@ use PhpMyAdmin\Utils\SessionCache; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use function __; use function _pgettext; @@ -23,6 +23,7 @@ use function urlencode; #[CoversClass(Generator::class)] +#[Medium] class GeneratorTest extends AbstractTestCase { /** @@ -38,7 +39,6 @@ protected function setUp(): void /** * Test for getDbLink */ - #[Group('medium')] public function testGetDbLinkNull(): void { Current::$database = 'test_db'; diff --git a/tests/unit/Import/ImportTest.php b/tests/unit/Import/ImportTest.php index edfa0cffa131..efee49ab14dc 100644 --- a/tests/unit/Import/ImportTest.php +++ b/tests/unit/Import/ImportTest.php @@ -222,9 +222,8 @@ public static function provDetectType(): array * Test for checkIfRollbackPossible * * @param string $sqlQuery SQL Query for which rollback is possible - * - * @dataProvider provPMACheckIfRollbackPossiblePositive */ + #[DataProvider('provPMACheckIfRollbackPossiblePositive')] public function testCheckIfRollbackPossiblePositive(string $sqlQuery): void { Current::$database = 'PMA'; @@ -258,9 +257,8 @@ public static function provPMACheckIfRollbackPossiblePositive(): array * Negative test for checkIfRollbackPossible * * @param string $sqlQuery SQL Query for which rollback is possible - * - * @dataProvider provPMACheckIfRollbackPossibleNegative */ + #[DataProvider('provPMACheckIfRollbackPossibleNegative')] public function testCheckIfRollbackPossibleNegative(string $sqlQuery): void { Current::$database = 'PMA'; diff --git a/tests/unit/LanguageTest.php b/tests/unit/LanguageTest.php index 3622f07b0d53..58e9c1fde7ec 100644 --- a/tests/unit/LanguageTest.php +++ b/tests/unit/LanguageTest.php @@ -9,7 +9,7 @@ use PhpMyAdmin\LanguageManager; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Large; use function _ngettext; use function count; @@ -19,6 +19,7 @@ #[CoversClass(Language::class)] #[CoversClass(LanguageManager::class)] +#[Large] class LanguageTest extends AbstractTestCase { private LanguageManager $manager; @@ -237,7 +238,6 @@ public static function selectDataProvider(): array * @param string $locale locale name */ #[DataProvider('listLocales')] - #[Group('large')] public function testGettext(string $locale): void { Config::getInstance()->set('FilterLanguages', ''); diff --git a/tests/unit/Replication/ReplicationGuiTest.php b/tests/unit/Replication/ReplicationGuiTest.php index 8105bde27689..936e75277a66 100644 --- a/tests/unit/Replication/ReplicationGuiTest.php +++ b/tests/unit/Replication/ReplicationGuiTest.php @@ -13,9 +13,10 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; #[CoversClass(ReplicationGui::class)] +#[Medium] class ReplicationGuiTest extends AbstractTestCase { /** @@ -52,7 +53,6 @@ protected function setUp(): void $this->replicationGui = new ReplicationGui(new Replication(DatabaseInterface::getInstance()), new Template()); } - #[Group('medium')] public function testGetHtmlForPrimaryReplication(): void { $html = $this->replicationGui->getHtmlForPrimaryReplication(null, false, 'primary_add_user', null, null); diff --git a/tests/unit/Server/PrivilegesTest.php b/tests/unit/Server/PrivilegesTest.php index 3f6e4daf6e83..04664decbe6b 100644 --- a/tests/unit/Server/PrivilegesTest.php +++ b/tests/unit/Server/PrivilegesTest.php @@ -25,7 +25,7 @@ use PhpMyAdmin\Util; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use ReflectionMethod; use ReflectionProperty; @@ -36,6 +36,7 @@ use function preg_quote; #[CoversClass(Privileges::class)] +#[Medium] class PrivilegesTest extends AbstractTestCase { protected DatabaseInterface $dbi; @@ -567,7 +568,6 @@ public function testUpdatePrivilegesAfterMySql8Dot11(): void ); } - #[Group('medium')] public function testGetHtmlToDisplayPrivilegesTable(): void { $GLOBALS['hostname'] = 'hostname'; @@ -950,7 +950,6 @@ public function testGetWithClauseForAddUserAndUpdatePrivs(): void self::assertStringContainsString($expect, $sqlQuery); } - #[Group('medium')] public function testGetHtmlForAddUser(): void { $dbi = $this->createDatabaseInterface(); diff --git a/tests/unit/Setup/ConfigGeneratorTest.php b/tests/unit/Setup/ConfigGeneratorTest.php index 92aada617d12..27d499f64d33 100644 --- a/tests/unit/Setup/ConfigGeneratorTest.php +++ b/tests/unit/Setup/ConfigGeneratorTest.php @@ -10,7 +10,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Version; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use ReflectionClass; use function explode; @@ -21,12 +21,12 @@ use const SODIUM_CRYPTO_SECRETBOX_KEYBYTES; #[CoversClass(ConfigGenerator::class)] +#[Medium] class ConfigGeneratorTest extends AbstractTestCase { /** * Test for ConfigGenerator::getConfigFile */ - #[Group('medium')] public function testGetConfigFile(): void { unset($_SESSION['eol']); diff --git a/tests/unit/Theme/ThemeTest.php b/tests/unit/Theme/ThemeTest.php index 99d686413e17..7415cff0b6fc 100644 --- a/tests/unit/Theme/ThemeTest.php +++ b/tests/unit/Theme/ThemeTest.php @@ -10,7 +10,7 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Depends; -use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Medium; use function filemtime; @@ -18,6 +18,7 @@ use const ROOT_PATH; #[CoversClass(Theme::class)] +#[Medium] class ThemeTest extends AbstractTestCase { protected Theme $object; @@ -38,7 +39,6 @@ protected function setUp(): void /** * Test for Theme::loadInfo */ - #[Group('medium')] public function testCheckImgPathNotExisted(): void { $this->object->setPath('path/to/nowhere'); diff --git a/tests/unit/VersionInformationTest.php b/tests/unit/VersionInformationTest.php index d187073acebd..a78348c3cc0b 100644 --- a/tests/unit/VersionInformationTest.php +++ b/tests/unit/VersionInformationTest.php @@ -10,9 +10,11 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Large; #[CoversClass(VersionInformation::class)] #[CoversClass(Release::class)] +#[Large] class VersionInformationTest extends AbstractTestCase { /** @var Release[] */ @@ -43,7 +45,6 @@ protected function setUp(): void /** * Test version checking */ - #[Group('large')] #[Group('network')] public function testGetLatestVersion(): void { diff --git a/tests/unit/WebAuthn/CustomServerTest.php b/tests/unit/WebAuthn/CustomServerTest.php index b2ed6d60f383..39aedc485144 100644 --- a/tests/unit/WebAuthn/CustomServerTest.php +++ b/tests/unit/WebAuthn/CustomServerTest.php @@ -5,18 +5,19 @@ namespace PhpMyAdmin\Tests\WebAuthn; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\WebAuthn\CBORDecoder; use PhpMyAdmin\WebAuthn\CustomServer; +use PhpMyAdmin\WebAuthn\DataStream; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use Psr\Http\Message\UriInterface; use Throwable; use function hex2bin; -/** - * @covers \PhpMyAdmin\WebAuthn\CustomServer - * @covers \PhpMyAdmin\WebAuthn\CBORDecoder - * @covers \PhpMyAdmin\WebAuthn\DataStream - */ +#[CoversClass(CustomServer::class)] +#[CoversClass(CBORDecoder::class)] +#[CoversClass(DataStream::class)] final class CustomServerTest extends TestCase { public function testGetCredentialCreationOptions(): void diff --git a/tests/unit/WebAuthn/WebauthnLibServerTest.php b/tests/unit/WebAuthn/WebauthnLibServerTest.php index 51b80b4a88e0..e5447a42a5a0 100644 --- a/tests/unit/WebAuthn/WebauthnLibServerTest.php +++ b/tests/unit/WebAuthn/WebauthnLibServerTest.php @@ -8,6 +8,7 @@ use PhpMyAdmin\TwoFactor; use PhpMyAdmin\WebAuthn\WebauthnLibServer; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\TestCase; use Psr\Http\Message\UriInterface; use Webauthn\Server as WebauthnServer; @@ -89,11 +90,8 @@ public function testGetCredentialRequestOptions(): void ); } - /** - * @see https://github.com/web-auth/webauthn-framework/blob/v3.3.12/tests/library/Functional/AssertionTest.php#L46 - * - * @requires extension bcmath - */ + /** @see https://github.com/web-auth/webauthn-framework/blob/v3.3.12/tests/library/Functional/AssertionTest.php#L46 */ + #[RequiresPhpExtension('bcmath')] public function testParseAndValidateAssertionResponse(): void { $twoFactor = self::createStub(TwoFactor::class);