Forráskód Böngészése

Update tests to phpunit 10

Bubka 2 éve
szülő
commit
36188f2230
64 módosított fájl, 508 hozzáadás és 290 törlés
  1. 7 5
      phpunit-mysql.xml
  2. 7 5
      phpunit.xml
  3. 6 2
      tests/Api/v1/Controllers/Auth/UserControllerTest.php
  4. 10 7
      tests/Api/v1/Controllers/GroupControllerTest.php
  5. 4 1
      tests/Api/v1/Controllers/IconControllerTest.php
  6. 4 1
      tests/Api/v1/Controllers/QrCodeControllerTest.php
  7. 4 1
      tests/Api/v1/Controllers/SettingControllerTest.php
  8. 32 26
      tests/Api/v1/Controllers/TwoFAccountControllerTest.php
  9. 10 5
      tests/Api/v1/Requests/GroupAssignRequestTest.php
  10. 13 8
      tests/Api/v1/Requests/GroupStoreRequestTest.php
  11. 10 5
      tests/Api/v1/Requests/QrCodeDecodeRequestTest.php
  12. 13 8
      tests/Api/v1/Requests/SettingStoreRequestTest.php
  13. 11 5
      tests/Api/v1/Requests/SettingUpdateRequestTest.php
  14. 10 5
      tests/Api/v1/Requests/TwoFAccountBatchRequestTest.php
  15. 3 1
      tests/Api/v1/Requests/TwoFAccountDynamicRequestTest.php
  16. 10 5
      tests/Api/v1/Requests/TwoFAccountImportRequestTest.php
  17. 10 5
      tests/Api/v1/Requests/TwoFAccountReorderRequestTest.php
  18. 12 6
      tests/Api/v1/Requests/TwoFAccountStoreRequestTest.php
  19. 12 6
      tests/Api/v1/Requests/TwoFAccountUpdateRequestTest.php
  20. 10 5
      tests/Api/v1/Requests/TwoFAccountUriRequestTest.php
  21. 4 1
      tests/Api/v1/ThrottlingTest.php
  22. 4 1
      tests/Feature/Console/CheckDbConnectionTest.php
  23. 5 2
      tests/Feature/Extensions/RemoteUserProviderTest.php
  24. 9 4
      tests/Feature/Http/Auth/ForgotPasswordControllerTest.php
  25. 12 5
      tests/Feature/Http/Auth/LoginTest.php
  26. 4 1
      tests/Feature/Http/Auth/PasswordControllerTest.php
  27. 6 2
      tests/Feature/Http/Auth/RegisterControllerTest.php
  28. 5 2
      tests/Feature/Http/Auth/ResetPasswordControllerTest.php
  29. 8 3
      tests/Feature/Http/Auth/UserControllerTest.php
  30. 11 5
      tests/Feature/Http/Auth/WebAuthnDeviceLostControllerTest.php
  31. 7 3
      tests/Feature/Http/Auth/WebAuthnLoginControllerTest.php
  32. 8 3
      tests/Feature/Http/Auth/WebAuthnManageControllerTest.php
  33. 10 4
      tests/Feature/Http/Auth/WebAuthnRecoveryControllerTest.php
  34. 4 1
      tests/Feature/Http/Auth/WebAuthnRegisterControllerTest.php
  35. 10 5
      tests/Feature/Http/Requests/LoginRequestTest.php
  36. 10 5
      tests/Feature/Http/Requests/UserDeleteRequestTest.php
  37. 10 5
      tests/Feature/Http/Requests/UserPatchPwdRequestTest.php
  38. 10 5
      tests/Feature/Http/Requests/UserStoreRequestTest.php
  39. 10 5
      tests/Feature/Http/Requests/UserUpdateRequestTest.php
  40. 10 5
      tests/Feature/Http/Requests/WebauthnAssertedRequestTest.php
  41. 10 5
      tests/Feature/Http/Requests/WebauthnRenameRequestTest.php
  42. 4 1
      tests/Feature/Http/SystemControllerTest.php
  43. 8 7
      tests/Feature/Models/TwoFAccountModelTest.php
  44. 3 1
      tests/Feature/Models/UserModelTest.php
  45. 5 2
      tests/Feature/Services/GroupServiceTest.php
  46. 3 1
      tests/Feature/Services/LogoServiceTest.php
  47. 5 2
      tests/Feature/Services/QrCodeServiceTest.php
  48. 3 1
      tests/Feature/Services/ReleaseRadarServiceTest.php
  49. 7 5
      tests/Feature/Services/SettingServiceTest.php
  50. 5 2
      tests/Feature/Services/TwoFAccountServiceTest.php
  51. 3 1
      tests/Unit/Api/v1/Controllers/GroupControllerTest.php
  52. 3 1
      tests/Unit/Events/GroupDeletedTest.php
  53. 3 1
      tests/Unit/Events/GroupDeletingTest.php
  54. 3 1
      tests/Unit/Events/TwoFAccountDeletedTest.php
  55. 8 7
      tests/Unit/Exceptions/HandlerTest.php
  56. 3 1
      tests/Unit/GroupModelTest.php
  57. 14 16
      tests/Unit/HelpersTest.php
  58. 3 1
      tests/Unit/Listeners/CleanIconStorageTest.php
  59. 7 5
      tests/Unit/Listeners/DissociateTwofaccountFromGroupTest.php
  60. 3 1
      tests/Unit/Listeners/ReleaseRadarTest.php
  61. 3 1
      tests/Unit/Listeners/ResetUsersPreferenceTest.php
  62. 32 35
      tests/Unit/MigratorTest.php
  63. 12 12
      tests/Unit/TwoFAccountModelTest.php
  64. 3 1
      tests/Unit/UserModelTest.php

+ 7 - 5
phpunit-mysql.xml

@@ -1,24 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     backupGlobals="false"
-    backupStaticAttributes="false"
+    backupStaticProperties="false"
     bootstrap="vendor/autoload.php"
     colors="true"
-    convertErrorsToExceptions="true"
-    convertNoticesToExceptions="true"
-    convertWarningsToExceptions="true"
+    displayDetailsOnTestsThatTriggerErrors="true"
+    displayDetailsOnTestsThatTriggerNotices="true"
+    displayDetailsOnTestsThatTriggerWarnings="true"
     processIsolation="false"
     stopOnFailure="false"
     stopOnError="false"
     beStrictAboutTestsThatDoNotTestAnything="false"
     xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
-    <coverage processUncoveredFiles="true">
+    <source>
         <include>
             <directory suffix=".php">app</directory>
         </include>
         <exclude>
             <directory suffix=".php">app/Protobuf</directory>
         </exclude>
+    </source>
+    <coverage includeUncoveredFiles="true">
     </coverage>
     <testsuites>
         <testsuite name="Unit">

+ 7 - 5
phpunit.xml

@@ -1,24 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     backupGlobals="false"
-    backupStaticAttributes="false"
+    backupStaticProperties="false"
     bootstrap="vendor/autoload.php"
     colors="true"
-    convertErrorsToExceptions="true"
-    convertNoticesToExceptions="true"
-    convertWarningsToExceptions="true"
+    displayDetailsOnTestsThatTriggerErrors="true"
+    displayDetailsOnTestsThatTriggerNotices="true"
+    displayDetailsOnTestsThatTriggerWarnings="true"
     processIsolation="false"
     stopOnFailure="false"
     stopOnError="false"
     beStrictAboutTestsThatDoNotTestAnything="false"
     xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
-    <coverage processUncoveredFiles="true">
+    <source>
         <include>
             <directory suffix=".php">app</directory>
         </include>
         <exclude>
             <directory suffix=".php">app/Protobuf</directory>
         </exclude>
+    </source>
+    <coverage includeUncoveredFiles="true">
     </coverage>
     <testsuites>
         <testsuite name="Unit">

+ 6 - 2
tests/Api/v1/Controllers/Auth/UserControllerTest.php

@@ -2,13 +2,17 @@
 
 namespace Tests\Api\v1\Controllers\Auth;
 
+use App\Api\v1\Controllers\UserController;
+use App\Api\v1\Resources\UserResource;
 use App\Models\User;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Api\v1\Controllers\UserController
- * @covers \App\Api\v1\Resources\UserResource
+ * UserControllerTest test class
  */
+#[CoversClass(UserController::class)]
+#[CoversClass(UserResource::class)]
 class UserControllerTest extends FeatureTestCase
 {
     /**

+ 10 - 7
tests/Api/v1/Controllers/GroupControllerTest.php

@@ -2,18 +2,21 @@
 
 namespace Tests\Api\v1\Controllers;
 
+use App\Api\v1\Controllers\GroupController;
+use App\Api\v1\Resources\GroupResource;
+use App\Listeners\ResetUsersPreference;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use App\Models\User;
+use App\Policies\GroupPolicy;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
-/**
- * @covers \App\Api\v1\Controllers\GroupController
- * @covers \App\Api\v1\Resources\GroupResource
- * @covers \App\Listeners\ResetUsersPreference
- * @covers \App\Policies\GroupPolicy
- * @covers \App\Models\Group
- */
+#[CoversClass(GroupController::class)]
+#[CoversClass(GroupResource::class)]
+#[CoversClass(ResetUsersPreference::class)]
+#[CoversClass(GroupPolicy::class)]
+#[CoversClass(Group::class)]
 class GroupControllerTest extends FeatureTestCase
 {
     /**

+ 4 - 1
tests/Api/v1/Controllers/IconControllerTest.php

@@ -2,14 +2,17 @@
 
 namespace Tests\Api\v1\Controllers;
 
+use App\Api\v1\Controllers\IconController;
 use App\Models\TwoFAccount;
 use App\Models\User;
 use Illuminate\Http\UploadedFile;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Api\v1\Controllers\IconController
+ * IconController test class
  */
+#[CoversClass(IconController::class)]
 class IconControllerTest extends FeatureTestCase
 {
     /**

+ 4 - 1
tests/Api/v1/Controllers/QrCodeControllerTest.php

@@ -2,14 +2,17 @@
 
 namespace Tests\Api\v1\Controllers;
 
+use App\Api\v1\Controllers\QrCodeController;
 use App\Models\TwoFAccount;
 use App\Models\User;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\Classes\LocalFile;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Api\v1\Controllers\QrCodeController
+ * QrCodeController test class
  */
+#[CoversClass(QrCodeController::class)]
 class QrCodeControllerTest extends FeatureTestCase
 {
     /**

+ 4 - 1
tests/Api/v1/Controllers/SettingControllerTest.php

@@ -2,13 +2,16 @@
 
 namespace Tests\Api\v1\Controllers;
 
+use App\Api\v1\Controllers\SettingController;
 use App\Facades\Settings;
 use App\Models\User;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Api\v1\Controllers\SettingController
+ * SettingController test class
  */
+#[CoversClass(SettingController::class)]
 class SettingControllerTest extends FeatureTestCase
 {
     /**

+ 32 - 26
tests/Api/v1/Controllers/TwoFAccountControllerTest.php

@@ -2,28 +2,40 @@
 
 namespace Tests\Api\v1\Controllers;
 
+use App\Api\v1\Controllers\TwoFAccountController;
+use App\Api\v1\Resources\TwoFAccountCollection;
+use App\Api\v1\Resources\TwoFAccountExportCollection;
+use App\Api\v1\Resources\TwoFAccountExportResource;
+use App\Api\v1\Resources\TwoFAccountReadResource;
+use App\Api\v1\Resources\TwoFAccountStoreResource;
 use App\Facades\Settings;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use App\Models\User;
+use App\Policies\TwoFAccountPolicy;
+use App\Providers\MigrationServiceProvider;
+use App\Providers\TwoFAuthServiceProvider;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Storage;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\Classes\LocalFile;
 use Tests\Data\MigrationTestData;
 use Tests\Data\OtpTestData;
 use Tests\FeatureTestCase;
+use PHPUnit\Framework\Attributes\DataProvider;
 
 /**
- * @covers \App\Api\v1\Controllers\TwoFAccountController
- * @covers \App\Api\v1\Resources\TwoFAccountCollection
- * @covers \App\Api\v1\Resources\TwoFAccountReadResource
- * @covers \App\Api\v1\Resources\TwoFAccountStoreResource
- * @covers \App\Api\v1\Resources\TwoFAccountExportResource
- * @covers \App\Api\v1\Resources\TwoFAccountExportCollection
- * @covers \App\Providers\MigrationServiceProvider
- * @covers \App\Providers\TwoFAuthServiceProvider
- * @covers \App\Policies\TwoFAccountPolicy
+ * TwoFAccountControllerTest test class
  */
+#[CoversClass(TwoFAccountController::class)]
+#[CoversClass(TwoFAccountCollection::class)]
+#[CoversClass(TwoFAccountReadResource::class)]
+#[CoversClass(TwoFAccountStoreResource::class)]
+#[CoversClass(TwoFAccountExportResource::class)]
+#[CoversClass(TwoFAccountExportCollection::class)]
+#[CoversClass(MigrationServiceProvider::class)]
+#[CoversClass(TwoFAuthServiceProvider::class)]
+#[CoversClass(TwoFAccountPolicy::class)]
 class TwoFAccountControllerTest extends FeatureTestCase
 {
     /**
@@ -198,9 +210,8 @@ class TwoFAccountControllerTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider indexUrlParameterProvider
      */
+    #[DataProvider('indexUrlParameterProvider')]
     public function test_index_returns_user_twofaccounts_only($urlParameter, $expected)
     {
         $response = $this->actingAs($this->user, 'api-guard')
@@ -227,7 +238,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
     /**
      * Provide data for index tests
      */
-    public function indexUrlParameterProvider()
+    public static function indexUrlParameterProvider()
     {
         return [
             'VALID_RESOURCE_STRUCTURE_WITHOUT_SECRET' => [
@@ -315,10 +326,9 @@ class TwoFAccountControllerTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider accountCreationProvider
-     *
      * @test
      */
+    #[DataProvider('accountCreationProvider')]
     public function test_store_without_encryption_returns_success_with_consistent_resource_structure($payload, $expected)
     {
         Settings::set('useEncryption', false);
@@ -332,10 +342,9 @@ class TwoFAccountControllerTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider accountCreationProvider
-     *
      * @test
      */
+    #[DataProvider('accountCreationProvider')]
     public function test_store_with_encryption_returns_success_with_consistent_resource_structure($payload, $expected)
     {
         Settings::set('useEncryption', true);
@@ -351,7 +360,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function accountCreationProvider()
+    public static function accountCreationProvider()
     {
         return [
             'TOTP_FULL_CUSTOM_URI' => [
@@ -747,9 +756,8 @@ class TwoFAccountControllerTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider invalidAegisJsonFileProvider
      */
+    #[DataProvider('invalidAegisJsonFileProvider')]
     public function test_migrate_invalid_aegis_json_file_returns_bad_request($file)
     {
         $response = $this->withHeaders(['Content-Type' => 'multipart/form-data'])
@@ -763,7 +771,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
     /**
      * Provide invalid Aegis JSON files for import tests
      */
-    public function invalidAegisJsonFileProvider()
+    public static function invalidAegisJsonFileProvider()
     {
         return [
             'encryptedAegisJsonFile' => [
@@ -777,9 +785,8 @@ class TwoFAccountControllerTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider validPlainTextFileProvider
      */
+    #[DataProvider('validPlainTextFileProvider')]
     public function test_migrate_valid_plain_text_file_returns_success($file)
     {
         $response = $this->withHeaders(['Content-Type' => 'multipart/form-data'])
@@ -828,7 +835,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
     /**
      * Provide valid Plain Text files for import tests
      */
-    public function validPlainTextFileProvider()
+    public static function validPlainTextFileProvider()
     {
         return [
             'validPlainTextFile' => [
@@ -842,9 +849,8 @@ class TwoFAccountControllerTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider invalidPlainTextFileProvider
      */
+    #[DataProvider('invalidPlainTextFileProvider')]
     public function test_migrate_invalid_plain_text_file_returns_bad_request($file)
     {
         $response = $this->withHeaders(['Content-Type' => 'multipart/form-data'])
@@ -858,7 +864,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
     /**
      * Provide invalid Plain Text files for import tests
      */
-    public function invalidPlainTextFileProvider()
+    public static function invalidPlainTextFileProvider()
     {
         return [
             'invalidPlainTextFileEmpty' => [

+ 10 - 5
tests/Api/v1/Requests/GroupAssignRequestTest.php

@@ -6,11 +6,14 @@ use App\Api\v1\Requests\GroupAssignRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\GroupAssignRequest
+ * GroupAssignRequestTest test class
  */
+#[CoversClass(GroupAssignRequest::class)]
 class GroupAssignRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class GroupAssignRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new GroupAssignRequest();
@@ -43,7 +47,7 @@ class GroupAssignRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -55,8 +59,9 @@ class GroupAssignRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new GroupAssignRequest();
@@ -68,7 +73,7 @@ class GroupAssignRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 13 - 8
tests/Api/v1/Requests/GroupStoreRequestTest.php

@@ -9,11 +9,14 @@ use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
 use Mockery;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Api\v1\Requests\GroupStoreRequest
+ * GroupStoreRequestTest test class
  */
+#[CoversClass(GroupStoreRequest::class)]
 class GroupStoreRequestTest extends FeatureTestCase
 {
     use WithoutMiddleware;
@@ -23,7 +26,7 @@ class GroupStoreRequestTest extends FeatureTestCase
      */
     protected $user;
 
-    protected String $uniqueGroupName = 'MyGroup';
+    const UNIQUE_GROUP_NAME = 'MyGroup';
 
     /**
      * @test
@@ -50,8 +53,9 @@ class GroupStoreRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request = Mockery::mock(GroupStoreRequest::class)->makePartial();
@@ -66,7 +70,7 @@ class GroupStoreRequestTest extends FeatureTestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -76,12 +80,13 @@ class GroupStoreRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $group = Group::factory()->for($this->user)->create([
-            'name' => $this->uniqueGroupName,
+            'name' => self::UNIQUE_GROUP_NAME,
         ]);
 
         $request = Mockery::mock(GroupStoreRequest::class)->makePartial();
@@ -96,7 +101,7 @@ class GroupStoreRequestTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[
@@ -109,7 +114,7 @@ class GroupStoreRequestTest extends FeatureTestCase
                 'name' => 'mmmmmmoooooorrrrrreeeeeeettttttthhhhhhaaaaaaannnnnn32cccccchhhhhaaaaaarrrrrrsssssss', // max:32
             ]],
             [[
-                'name' => $this->uniqueGroupName, // unique
+                'name' => self::UNIQUE_GROUP_NAME, // unique
             ]],
         ];
     }

+ 10 - 5
tests/Api/v1/Requests/QrCodeDecodeRequestTest.php

@@ -6,12 +6,15 @@ use App\Api\v1\Requests\QrCodeDecodeRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\Classes\LocalFile;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\QrCodeDecodeRequest
+ * QrCodeDecodeRequestTest test class
  */
+#[CoversClass(QrCodeDecodeRequest::class)]
 class QrCodeDecodeRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -31,8 +34,9 @@ class QrCodeDecodeRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new QrCodeDecodeRequest();
@@ -44,7 +48,7 @@ class QrCodeDecodeRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         $file = LocalFile::fake()->validQrcode();
 
@@ -56,8 +60,9 @@ class QrCodeDecodeRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new QrCodeDecodeRequest();
@@ -69,7 +74,7 @@ class QrCodeDecodeRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 13 - 8
tests/Api/v1/Requests/SettingStoreRequestTest.php

@@ -7,16 +7,19 @@ use App\Facades\Settings;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Api\v1\Requests\SettingStoreRequest
+ * SettingStoreRequestTest test class
  */
+#[CoversClass(SettingStoreRequest::class)]
 class SettingStoreRequestTest extends FeatureTestCase
 {
     use WithoutMiddleware;
 
-    protected String $uniqueKey = 'UniqueKey';
+    const UNIQUE_KEY = 'UniqueKey';
 
     /**
      * @test
@@ -33,8 +36,9 @@ class SettingStoreRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new SettingStoreRequest();
@@ -46,7 +50,7 @@ class SettingStoreRequestTest extends FeatureTestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -65,11 +69,12 @@ class SettingStoreRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
-        Settings::set($this->uniqueKey, 'uniqueValue');
+        Settings::set(self::UNIQUE_KEY, 'uniqueValue');
 
         $request   = new SettingStoreRequest();
         $validator = Validator::make($data, $request->rules());
@@ -80,7 +85,7 @@ class SettingStoreRequestTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[
@@ -100,7 +105,7 @@ class SettingStoreRequestTest extends FeatureTestCase
                 'value' => 'MyValue',
             ]],
             [[
-                'key'   => $this->uniqueKey, // unique
+                'key'   => self::UNIQUE_KEY, // unique
                 'value' => 'MyValue',
             ]],
         ];

+ 11 - 5
tests/Api/v1/Requests/SettingUpdateRequestTest.php

@@ -2,15 +2,19 @@
 
 namespace Tests\Api\v1\Requests;
 
+use App\Api\v1\Requests\SettingStoreRequest;
 use App\Api\v1\Requests\SettingUpdateRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\SettingUpdateRequest
+ * SettingUpdateRequestTest test class
  */
+#[CoversClass(SettingStoreRequest::class)]
 class SettingUpdateRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +34,9 @@ class SettingUpdateRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new SettingUpdateRequest();
@@ -43,7 +48,7 @@ class SettingUpdateRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -59,8 +64,9 @@ class SettingUpdateRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new SettingUpdateRequest();
@@ -72,7 +78,7 @@ class SettingUpdateRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Api/v1/Requests/TwoFAccountBatchRequestTest.php

@@ -6,11 +6,14 @@ use App\Api\v1\Requests\TwoFAccountBatchRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountBatchRequest
+ * TwoFAccountBatchRequestTest test class
  */
+#[CoversClass(TwoFAccountBatchRequest::class)]
 class TwoFAccountBatchRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class TwoFAccountBatchRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new TwoFAccountBatchRequest();
@@ -43,7 +47,7 @@ class TwoFAccountBatchRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -56,8 +60,9 @@ class TwoFAccountBatchRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new TwoFAccountBatchRequest();
@@ -69,7 +74,7 @@ class TwoFAccountBatchRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 3 - 1
tests/Api/v1/Requests/TwoFAccountDynamicRequestTest.php

@@ -7,11 +7,13 @@ use App\Api\v1\Requests\TwoFAccountStoreRequest;
 use App\Api\v1\Requests\TwoFAccountUriRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountDynamicRequest
+ * TwoFAccountDynamicRequestTest test class
  */
+#[CoversClass(TwoFAccountDynamicRequest::class)]
 class TwoFAccountDynamicRequestTest extends TestCase
 {
     use WithoutMiddleware;

+ 10 - 5
tests/Api/v1/Requests/TwoFAccountImportRequestTest.php

@@ -6,11 +6,14 @@ use App\Api\v1\Requests\TwoFAccountImportRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountImportRequest
+ * TwoFAccountImportRequestTest test class
  */
+#[CoversClass(TwoFAccountImportRequest::class)]
 class TwoFAccountImportRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class TwoFAccountImportRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new TwoFAccountImportRequest();
@@ -43,7 +47,7 @@ class TwoFAccountImportRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -53,8 +57,9 @@ class TwoFAccountImportRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new TwoFAccountImportRequest();
@@ -66,7 +71,7 @@ class TwoFAccountImportRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Api/v1/Requests/TwoFAccountReorderRequestTest.php

@@ -6,11 +6,14 @@ use App\Api\v1\Requests\TwoFAccountReorderRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountReorderRequest
+ * TwoFAccountReorderRequestTest test class
  */
+#[CoversClass(TwoFAccountReorderRequest::class)]
 class TwoFAccountReorderRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class TwoFAccountReorderRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new TwoFAccountReorderRequest();
@@ -43,7 +47,7 @@ class TwoFAccountReorderRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -56,8 +60,9 @@ class TwoFAccountReorderRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new TwoFAccountReorderRequest();
@@ -69,7 +74,7 @@ class TwoFAccountReorderRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 12 - 6
tests/Api/v1/Requests/TwoFAccountStoreRequestTest.php

@@ -3,15 +3,19 @@
 namespace Tests\Api\v1\Requests;
 
 use App\Api\v1\Requests\TwoFAccountStoreRequest;
+use App\Rules\IsBase32Encoded;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountStoreRequest
- * @covers \App\Rules\IsBase32Encoded
+ * TwoFAccountStoreRequestTest test class
  */
+#[CoversClass(TwoFAccountStoreRequest::class)]
+#[CoversClass(IsBase32Encoded::class)]
 class TwoFAccountStoreRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -31,8 +35,9 @@ class TwoFAccountStoreRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new TwoFAccountStoreRequest();
@@ -44,7 +49,7 @@ class TwoFAccountStoreRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -106,8 +111,9 @@ class TwoFAccountStoreRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new TwoFAccountStoreRequest();
@@ -119,7 +125,7 @@ class TwoFAccountStoreRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 12 - 6
tests/Api/v1/Requests/TwoFAccountUpdateRequestTest.php

@@ -3,15 +3,19 @@
 namespace Tests\Api\v1\Requests;
 
 use App\Api\v1\Requests\TwoFAccountUpdateRequest;
+use App\Rules\IsBase32Encoded;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountUpdateRequest
- * @covers \App\Rules\IsBase32Encoded
+ * TwoFAccountUpdateRequestTest test class
  */
+#[CoversClass(TwoFAccountUpdateRequest::class)]
+#[CoversClass(IsBase32Encoded::class)]
 class TwoFAccountUpdateRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -31,8 +35,9 @@ class TwoFAccountUpdateRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new TwoFAccountUpdateRequest();
@@ -44,7 +49,7 @@ class TwoFAccountUpdateRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -82,8 +87,9 @@ class TwoFAccountUpdateRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new TwoFAccountUpdateRequest();
@@ -95,7 +101,7 @@ class TwoFAccountUpdateRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Api/v1/Requests/TwoFAccountUriRequestTest.php

@@ -6,11 +6,14 @@ use App\Api\v1\Requests\TwoFAccountUriRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Requests\TwoFAccountUriRequest
+ * TwoFAccountUriRequestTest test class
  */
+#[CoversClass(TwoFAccountUriRequest::class)]
 class TwoFAccountUriRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class TwoFAccountUriRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new TwoFAccountUriRequest();
@@ -43,7 +47,7 @@ class TwoFAccountUriRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -60,8 +64,9 @@ class TwoFAccountUriRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new TwoFAccountUriRequest();
@@ -73,7 +78,7 @@ class TwoFAccountUriRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 4 - 1
tests/Api/v1/ThrottlingTest.php

@@ -3,12 +3,15 @@
 namespace Tests\Api\v1;
 
 use App\Models\User;
+use App\Providers\RouteServiceProvider;
 use Illuminate\Support\Facades\Config;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Providers\RouteServiceProvider
+ * ThrottlingTest test class
  */
+#[CoversClass(RouteServiceProvider::class)]
 class ThrottlingTest extends FeatureTestCase
 {
     /**

+ 4 - 1
tests/Feature/Console/CheckDbConnectionTest.php

@@ -2,12 +2,15 @@
 
 namespace Tests\Feature\Console;
 
+use App\Console\Commands\CheckDbConnection;
 use Illuminate\Support\Facades\DB;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Console\Commands\CheckDbConnection
+ * CheckDbConnectionTest test class
  */
+#[CoversClass(CheckDbConnection::class)]
 class CheckDbConnectionTest extends FeatureTestCase
 {
     /**

+ 5 - 2
tests/Feature/Extensions/RemoteUserProviderTest.php

@@ -4,13 +4,16 @@ namespace Tests\Feature\Extensions;
 
 use App\Extensions\RemoteUserProvider;
 use App\Models\User;
+use App\Services\Auth\ReverseProxyGuard;
 use Illuminate\Support\Facades\Config;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Extensions\RemoteUserProvider
- * @covers \App\Services\Auth\ReverseProxyGuard
+ * RemoteUserProviderTest test class
  */
+#[CoversClass(RemoteUserProvider::class)]
+#[CoversClass(ReverseProxyGuard::class)]
 class RemoteUserProviderTest extends FeatureTestCase
 {
     private const USER_NAME = 'John';

+ 9 - 4
tests/Feature/Http/Auth/ForgotPasswordControllerTest.php

@@ -2,19 +2,24 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\ForgotPasswordController;
+use App\Http\Middleware\RejectIfAuthenticated;
+use App\Http\Middleware\RejectIfDemoMode;
 use App\Models\User;
 use Illuminate\Auth\Notifications\ResetPassword;
 use Illuminate\Support\Facades\Config;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Notification;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\ForgotPasswordController
- * @covers  \App\Models\User
- * @covers  \App\Http\Middleware\RejectIfDemoMode
- * @covers  \App\Http\Middleware\RejectIfAuthenticated
+ * ForgotPasswordControllerTest test class
  */
+#[CoversClass(ForgotPasswordController::class)]
+#[CoversClass(User::class)]
+#[CoversClass(RejectIfDemoMode::class)]
+#[CoversClass(RejectIfAuthenticated::class)]
 class ForgotPasswordControllerTest extends FeatureTestCase
 {
     /**

+ 12 - 5
tests/Feature/Http/Auth/LoginTest.php

@@ -2,18 +2,25 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\LoginController;
+use App\Http\Middleware\RejectIfAuthenticated;
+use App\Http\Middleware\RejectIfDemoMode;
+use App\Http\Middleware\RejectIfReverseProxy;
+use App\Http\Middleware\SkipIfAuthenticated;
 use App\Models\User;
 use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\Config;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\LoginController
- * @covers  \App\Http\Middleware\RejectIfAuthenticated
- * @covers  \App\Http\Middleware\RejectIfReverseProxy
- * @covers  \App\Http\Middleware\RejectIfDemoMode
- * @covers  \App\Http\Middleware\SkipIfAuthenticated
+ * LoginTest test class
  */
+#[CoversClass(LoginController::class)]
+#[CoversClass(RejectIfAuthenticated::class)]
+#[CoversClass(RejectIfReverseProxy::class)]
+#[CoversClass(RejectIfDemoMode::class)]
+#[CoversClass(SkipIfAuthenticated::class)]
 class LoginTest extends FeatureTestCase
 {
     /**

+ 4 - 1
tests/Feature/Http/Auth/PasswordControllerTest.php

@@ -2,12 +2,15 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\PasswordController;
 use App\Models\User;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\PasswordController
+ * PasswordControllerTest test class
  */
+#[CoversClass(PasswordController::class)]
 class PasswordControllerTest extends FeatureTestCase
 {
     /**

+ 6 - 2
tests/Feature/Http/Auth/RegisterControllerTest.php

@@ -3,14 +3,18 @@
 namespace Tests\Feature\Http\Auth;
 
 use App\Facades\Settings;
+use App\Http\Controllers\Auth\RegisterController;
+use App\Http\Requests\UserStoreRequest;
 use App\Models\User;
 use Illuminate\Support\Facades\DB;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\RegisterController
- * @covers  \App\Http\Requests\UserStoreRequest
+ * RegisterControllerTest test class
  */
+#[CoversClass(RegisterController::class)]
+#[CoversClass(UserStoreRequest::class)]
 class RegisterControllerTest extends FeatureTestCase
 {
     private const USERNAME = 'john doe';

+ 5 - 2
tests/Feature/Http/Auth/ResetPasswordControllerTest.php

@@ -2,16 +2,19 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\ResetPasswordController;
 use App\Models\User;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Notification;
 use Illuminate\Support\Facades\Password;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\ResetPasswordController
- * @covers  \App\Models\User
+ * ResetPasswordControllerTest test class
  */
+#[CoversClass(ResetPasswordController::class)]
+#[CoversClass(User::class)]
 class ResetPasswordControllerTest extends FeatureTestCase
 {
     /**

+ 8 - 3
tests/Feature/Http/Auth/UserControllerTest.php

@@ -2,17 +2,22 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\UserController;
+use App\Http\Middleware\RejectIfDemoMode;
+use App\Http\Requests\UserUpdateRequest;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use App\Models\User;
 use Illuminate\Support\Facades\Config;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\UserController
- * @covers  \App\Http\Middleware\RejectIfDemoMode
- * @covers  \App\Http\Requests\UserUpdateRequest
+ * UserControllerTest test class
  */
+#[CoversClass(UserController::class)]
+#[CoversClass(RejectIfDemoMode::class)]
+#[CoversClass(UserUpdateRequest::class)]
 class UserControllerTest extends FeatureTestCase
 {
     /**

+ 11 - 5
tests/Feature/Http/Auth/WebAuthnDeviceLostControllerTest.php

@@ -2,19 +2,25 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Extensions\WebauthnCredentialBroker;
+use App\Http\Controllers\Auth\WebAuthnDeviceLostController;
+use App\Http\Requests\WebauthnDeviceLostRequest;
 use App\Models\User;
 use App\Notifications\WebauthnRecoveryNotification;
+use App\Providers\AuthServiceProvider;
 use Illuminate\Support\Facades\Lang;
 use Illuminate\Support\Facades\Notification;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\WebAuthnDeviceLostController
- * @covers  \App\Notifications\WebauthnRecoveryNotification
- * @covers  \App\Extensions\WebauthnCredentialBroker
- * @covers  \App\Http\Requests\WebauthnDeviceLostRequest
- * @covers  \App\Providers\AuthServiceProvider
+ * WebAuthnDeviceLostControllerTest test class
  */
+#[CoversClass(WebAuthnDeviceLostController::class)]
+#[CoversClass(WebauthnRecoveryNotification::class)]
+#[CoversClass(WebauthnCredentialBroker::class)]
+#[CoversClass(WebauthnDeviceLostRequest::class)]
+#[CoversClass(AuthServiceProvider::class)]
 class WebAuthnDeviceLostControllerTest extends FeatureTestCase
 {
     /**

+ 7 - 3
tests/Feature/Http/Auth/WebAuthnLoginControllerTest.php

@@ -2,18 +2,22 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Extensions\WebauthnTwoFAuthUserProvider;
+use App\Http\Controllers\Auth\WebAuthnLoginController;
 use App\Models\User;
 use Illuminate\Support\Facades\Config;
 use Illuminate\Support\Facades\DB;
 use Laragear\WebAuthn\Assertion\Validator\AssertionValidator;
 use Laragear\WebAuthn\WebAuthn;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\WebAuthnLoginController
- * @covers  \App\Models\User
- * @covers  \App\Extensions\WebauthnTwoFAuthUserProvider
+ * WebAuthnLoginControllerTest test class
  */
+#[CoversClass(WebAuthnLoginController::class)]
+#[CoversClass(User::class)]
+#[CoversClass(WebauthnTwoFAuthUserProvider::class)]
 class WebAuthnLoginControllerTest extends FeatureTestCase
 {
     /**

+ 8 - 3
tests/Feature/Http/Auth/WebAuthnManageControllerTest.php

@@ -2,16 +2,21 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\WebAuthnManageController;
+use App\Http\Middleware\RejectIfReverseProxy;
+use App\Models\Traits\WebAuthnManageCredentials;
 use App\Models\User;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\DB;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\WebAuthnManageController
- * @covers  \App\Http\Middleware\RejectIfReverseProxy
- * @covers  \App\Models\Traits\WebAuthnManageCredentials
+ * WebAuthnManageControllerTest test class
  */
+#[CoversClass(WebAuthnManageController::class)]
+#[CoversClass(RejectIfReverseProxy::class)]
+#[CoversClass(WebAuthnManageCredentials::class)]
 class WebAuthnManageControllerTest extends FeatureTestCase
 {
     // use WithoutMiddleware;

+ 10 - 4
tests/Feature/Http/Auth/WebAuthnRecoveryControllerTest.php

@@ -2,18 +2,24 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Extensions\WebauthnCredentialBroker;
+use App\Http\Controllers\Auth\WebAuthnRecoveryController;
+use App\Http\Requests\WebauthnRecoveryRequest;
 use App\Models\User;
+use App\Providers\AuthServiceProvider;
 use Database\Factories\UserFactory;
 use Illuminate\Support\Facades\Date;
 use Illuminate\Support\Facades\DB;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\WebAuthnRecoveryController
- * @covers  \App\Extensions\WebauthnCredentialBroker
- * @covers  \App\Http\Requests\WebauthnRecoveryRequest
- * @covers  \App\Providers\AuthServiceProvider
+ * WebAuthnRecoveryControllerTest test class
  */
+#[CoversClass(WebAuthnRecoveryController::class)]
+#[CoversClass(WebauthnCredentialBroker::class)]
+#[CoversClass(WebauthnRecoveryRequest::class)]
+#[CoversClass(AuthServiceProvider::class)]
 class WebAuthnRecoveryControllerTest extends FeatureTestCase
 {
     /**

+ 4 - 1
tests/Feature/Http/Auth/WebAuthnRegisterControllerTest.php

@@ -2,17 +2,20 @@
 
 namespace Tests\Feature\Http\Auth;
 
+use App\Http\Controllers\Auth\WebAuthnRegisterController;
 use App\Models\User;
 use Illuminate\Support\Facades\Config;
 use Laragear\WebAuthn\Http\Requests\AttestationRequest;
 use Laragear\WebAuthn\Http\Requests\AttestedRequest;
 use Laragear\WebAuthn\JsonTransport;
 use Laragear\WebAuthn\WebAuthn;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers  \App\Http\Controllers\Auth\WebAuthnRegisterController
+ * WebAuthnRegisterControllerTest test class
  */
+#[CoversClass(WebAuthnRegisterController::class)]
 class WebAuthnRegisterControllerTest extends FeatureTestCase
 {
     /**

+ 10 - 5
tests/Feature/Http/Requests/LoginRequestTest.php

@@ -6,11 +6,14 @@ use App\Http\Requests\LoginRequest;
 use App\Models\User;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Http\Requests\LoginRequest
+ * LoginRequestTest test class
  */
+#[CoversClass(LoginRequest::class)]
 class LoginRequestTest extends FeatureTestCase
 {
     use WithoutMiddleware;
@@ -26,8 +29,9 @@ class LoginRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         User::factory()->create([
@@ -43,7 +47,7 @@ class LoginRequestTest extends FeatureTestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -58,8 +62,9 @@ class LoginRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         User::factory()->create([
@@ -75,7 +80,7 @@ class LoginRequestTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Feature/Http/Requests/UserDeleteRequestTest.php

@@ -6,11 +6,14 @@ use App\Http\Requests\UserDeleteRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Http\Requests\UserDeleteRequest
+ * UserDeleteRequestTest test class
  */
+#[CoversClass(UserDeleteRequest::class)]
 class UserDeleteRequestTest extends FeatureTestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class UserDeleteRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new UserDeleteRequest();
@@ -43,7 +47,7 @@ class UserDeleteRequestTest extends FeatureTestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -53,8 +57,9 @@ class UserDeleteRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new UserDeleteRequest();
@@ -66,7 +71,7 @@ class UserDeleteRequestTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Feature/Http/Requests/UserPatchPwdRequestTest.php

@@ -6,11 +6,14 @@ use App\Http\Requests\UserPatchPwdRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Http\Requests\UserPatchPwdRequest
+ * UserPatchPwdRequestTest test class
  */
+#[CoversClass(UserPatchPwdRequest::class)]
 class UserPatchPwdRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class UserPatchPwdRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new UserPatchPwdRequest();
@@ -43,7 +47,7 @@ class UserPatchPwdRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -55,8 +59,9 @@ class UserPatchPwdRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new UserPatchPwdRequest();
@@ -68,7 +73,7 @@ class UserPatchPwdRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Feature/Http/Requests/UserStoreRequestTest.php

@@ -6,11 +6,14 @@ use App\Http\Requests\UserStoreRequest;
 use App\Models\User;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Http\Requests\UserStoreRequest
+ * UserStoreRequestTest test class
  */
+#[CoversClass(UserStoreRequest::class)]
 class UserStoreRequestTest extends FeatureTestCase
 {
     use WithoutMiddleware;
@@ -26,8 +29,9 @@ class UserStoreRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         User::factory()->create([
@@ -44,7 +48,7 @@ class UserStoreRequestTest extends FeatureTestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -63,8 +67,9 @@ class UserStoreRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         User::factory()->create([
@@ -81,7 +86,7 @@ class UserStoreRequestTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Feature/Http/Requests/UserUpdateRequestTest.php

@@ -8,11 +8,14 @@ use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
 use Mockery;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Http\Requests\UserUpdateRequest
+ * UserUpdateRequestTest test class
  */
+#[CoversClass(UserUpdateRequest::class)]
 class UserUpdateRequestTest extends FeatureTestCase
 {
     use WithoutMiddleware;
@@ -32,8 +35,9 @@ class UserUpdateRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         /**
@@ -56,7 +60,7 @@ class UserUpdateRequestTest extends FeatureTestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -78,8 +82,9 @@ class UserUpdateRequestTest extends FeatureTestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         /**
@@ -107,7 +112,7 @@ class UserUpdateRequestTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Feature/Http/Requests/WebauthnAssertedRequestTest.php

@@ -5,18 +5,22 @@ namespace Tests\Feature\Http\Requests;
 use App\Http\Requests\WebauthnAssertedRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Http\Requests\WebauthnAssertedRequest
+ * WebauthnAssertedRequestTest test class
  */
+#[CoversClass(WebauthnAssertedRequest::class)]
 class WebauthnAssertedRequestTest extends TestCase
 {
     use WithoutMiddleware;
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new WebauthnAssertedRequest();
@@ -28,7 +32,7 @@ class WebauthnAssertedRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -47,8 +51,9 @@ class WebauthnAssertedRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new WebauthnAssertedRequest();
@@ -60,7 +65,7 @@ class WebauthnAssertedRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 10 - 5
tests/Feature/Http/Requests/WebauthnRenameRequestTest.php

@@ -6,11 +6,14 @@ use App\Http\Requests\WebauthnRenameRequest;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Http\Requests\WebauthnRenameRequest
+ * WebauthnRenameRequestTest test class
  */
+#[CoversClass(WebauthnRenameRequest::class)]
 class WebauthnRenameRequestTest extends TestCase
 {
     use WithoutMiddleware;
@@ -30,8 +33,9 @@ class WebauthnRenameRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideValidData
+     * @test
      */
+    #[DataProvider('provideValidData')]
     public function test_valid_data(array $data) : void
     {
         $request   = new WebauthnRenameRequest();
@@ -43,7 +47,7 @@ class WebauthnRenameRequestTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideValidData() : array
+    public static function provideValidData() : array
     {
         return [
             [[
@@ -53,8 +57,9 @@ class WebauthnRenameRequestTest extends TestCase
     }
 
     /**
-     * @dataProvider provideInvalidData
+     * @test
      */
+    #[DataProvider('provideInvalidData')]
     public function test_invalid_data(array $data) : void
     {
         $request   = new WebauthnRenameRequest();
@@ -66,7 +71,7 @@ class WebauthnRenameRequestTest extends TestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideInvalidData() : array
+    public static function provideInvalidData() : array
     {
         return [
             [[

+ 4 - 1
tests/Feature/Http/SystemControllerTest.php

@@ -2,14 +2,17 @@
 
 namespace Tests\Feature\Http;
 
+use App\Http\Controllers\SystemController;
 use App\Models\User;
 use App\Services\ReleaseRadarService;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Http\Controllers\SystemController
+ * SystemControllerTest test class
  */
+#[CoversClass(SystemController::class)]
 class SystemControllerTest extends FeatureTestCase
 {
     use WithoutMiddleware;

+ 8 - 7
tests/Feature/Models/TwoFAccountModelTest.php

@@ -9,13 +9,16 @@ use Illuminate\Http\Testing\FileFactory;
 use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Storage;
 use Mockery\MockInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\Data\HttpRequestTestData;
 use Tests\Data\OtpTestData;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Models\TwoFAccount
+ * TwoFAccountModelTest test class
  */
+#[CoversClass(TwoFAccount::class)]
 class TwoFAccountModelTest extends FeatureTestCase
 {
     /**
@@ -739,9 +742,8 @@ class TwoFAccountModelTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider iconResourceProvider
      */
+    #[DataProvider('iconResourceProvider')]
     public function test_set_icon_stores_and_set_the_icon($res, $ext)
     {
         Storage::fake('imagesLink');
@@ -759,7 +761,7 @@ class TwoFAccountModelTest extends FeatureTestCase
     /**
      * Provide data for Icon store tests
      */
-    public function iconResourceProvider()
+    public static function iconResourceProvider()
     {
         return [
             'PNG' => [
@@ -787,9 +789,8 @@ class TwoFAccountModelTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider invalidIconResourceProvider
      */
+    #[DataProvider('invalidIconResourceProvider')]
     public function test_set_invalid_icon_ends_without_error($res, $ext)
     {
         Storage::fake('imagesLink');
@@ -807,7 +808,7 @@ class TwoFAccountModelTest extends FeatureTestCase
     /**
      * Provide data for Icon store tests
      */
-    public function invalidIconResourceProvider()
+    public static function invalidIconResourceProvider()
     {
         return [
             'INVALID_PNG' => [

+ 3 - 1
tests/Feature/Models/UserModelTest.php

@@ -3,11 +3,13 @@
 namespace Tests\Feature\Models;
 
 use App\Models\User;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Models\User
+ * UserModelTest test class
  */
+#[CoversClass(User::class)]
 class UserModelTest extends FeatureTestCase
 {
     /**

+ 5 - 2
tests/Feature/Services/GroupServiceTest.php

@@ -6,13 +6,16 @@ use App\Facades\Groups;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use App\Models\User;
+use App\Services\GroupService;
 use Illuminate\Auth\Access\AuthorizationException;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Services\GroupService
- * @covers \App\Facades\Groups
+ * GroupServiceTest test class
  */
+#[CoversClass(GroupService::class)]
+#[CoversClass(Groups::class)]
 class GroupServiceTest extends FeatureTestCase
 {
     /**

+ 3 - 1
tests/Feature/Services/LogoServiceTest.php

@@ -6,12 +6,14 @@ use App\Services\LogoService;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Storage;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\Data\HttpRequestTestData;
 use Tests\TestCase;
 
 /**
- * @covers \App\Services\LogoService
+ * LogoServiceTest test class
  */
+#[CoversClass(LogoService::class)]
 class LogoServiceTest extends TestCase
 {
     use WithoutMiddleware;

+ 5 - 2
tests/Feature/Services/QrCodeServiceTest.php

@@ -3,13 +3,16 @@
 namespace Tests\Feature\Services;
 
 use App\Facades\QrCode;
+use App\Services\QrCodeService;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\Classes\LocalFile;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Services\QrCodeService
- * @covers \App\Facades\QrCode
+ * QrCodeServiceTest test class
  */
+#[CoversClass(QrCodeService::class)]
+#[CoversClass(QrCode::class)]
 class QrCodeServiceTest extends FeatureTestCase
 {
     private const STRING_TO_ENCODE = 'stringToEncode';

+ 3 - 1
tests/Feature/Services/ReleaseRadarServiceTest.php

@@ -7,12 +7,14 @@ use App\Facades\Settings;
 use Facades\App\Services\ReleaseRadarService;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Support\Facades\Http;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\Data\HttpRequestTestData;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Services\ReleaseRadarService
+ * ReleaseRadarServiceTest test class
  */
+#[CoversClass(App\Services\ReleaseRadarService::class)]
 class ReleaseRadarServiceTest extends FeatureTestCase
 {
     use WithoutMiddleware;

+ 7 - 5
tests/Feature/Services/SettingServiceTest.php

@@ -8,12 +8,15 @@ use App\Services\SettingService;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Crypt;
 use Illuminate\Support\Facades\DB;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Services\SettingService
- * @covers \App\Facades\Settings
+ * SettingServiceTest test class
  */
+#[CoversClass(SettingService::class)]
+#[CoversClass(Settings::class)]
 class SettingServiceTest extends FeatureTestCase
 {
     /**
@@ -237,9 +240,8 @@ class SettingServiceTest extends FeatureTestCase
 
     /**
      * @test
-     *
-     * @dataProvider provideUndecipherableData
      */
+    #[DataProvider('provideUndecipherableData')]
     public function test_set_useEncryption_off_returns_exception_when_data_are_undecipherable(array $data)
     {
         $this->expectException(\App\Exceptions\DbEncryptionException::class);
@@ -258,7 +260,7 @@ class SettingServiceTest extends FeatureTestCase
     /**
      * Provide invalid data for validation test
      */
-    public function provideUndecipherableData() : array
+    public static function provideUndecipherableData() : array
     {
         return [
             [[

+ 5 - 2
tests/Feature/Services/TwoFAccountServiceTest.php

@@ -6,14 +6,17 @@ use App\Facades\TwoFAccounts;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use App\Models\User;
+use App\Services\TwoFAccountService;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\Data\MigrationTestData;
 use Tests\Data\OtpTestData;
 use Tests\FeatureTestCase;
 
 /**
- * @covers \App\Services\TwoFAccountService
- * @covers \App\Facades\TwoFAccounts
+ * TwoFAccountServiceTest test class
  */
+#[CoversClass(TwoFAccountService::class)]
+#[CoversClass(TwoFAccounts::class)]
 class TwoFAccountServiceTest extends FeatureTestCase
 {
     /**

+ 3 - 1
tests/Unit/Api/v1/Controllers/GroupControllerTest.php

@@ -13,11 +13,13 @@ use App\Models\User;
 use Illuminate\Foundation\Testing\WithoutMiddleware;
 use Illuminate\Http\Request;
 use Mockery;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Api\v1\Controllers\GroupController
+ * GroupControllerTest test class
  */
+#[CoversClass(GroupController::class)]
 class GroupControllerTest extends TestCase
 {
     use WithoutMiddleware;

+ 3 - 1
tests/Unit/Events/GroupDeletedTest.php

@@ -4,11 +4,13 @@ namespace Tests\Unit\Events;
 
 use App\Events\GroupDeleted;
 use App\Models\Group;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Events\GroupDeleted
+ * GroupDeletedTest test class
  */
+#[CoversClass(GroupDeleted::class)]
 class GroupDeletedTest extends TestCase
 {
     /**

+ 3 - 1
tests/Unit/Events/GroupDeletingTest.php

@@ -4,11 +4,13 @@ namespace Tests\Unit\Events;
 
 use App\Events\GroupDeleting;
 use App\Models\Group;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Events\GroupDeleting
+ * GroupDeletingTest test class
  */
+#[CoversClass(GroupDeleting::class)]
 class GroupDeletingTest extends TestCase
 {
     /**

+ 3 - 1
tests/Unit/Events/TwoFAccountDeletedTest.php

@@ -6,11 +6,13 @@ use App\Events\TwoFAccountDeleted;
 use App\Models\TwoFAccount;
 use App\Services\SettingService;
 use Mockery\MockInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Events\TwoFAccountDeleted
+ * TwoFAccountDeletedTest test class
  */
+#[CoversClass(TwoFAccountDeleted::class)]
 class TwoFAccountDeletedTest extends TestCase
 {
     /**

+ 8 - 7
tests/Unit/Exceptions/HandlerTest.php

@@ -15,18 +15,20 @@ use App\Exceptions\UnsupportedOtpTypeException;
 use Illuminate\Contracts\Container\Container;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\Request;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Exceptions\Handler
+ * HandlerTest test class
  */
+#[CoversClass(Handler::class)]
 class HandlerTest extends TestCase
 {
     /**
      * @test
-     *
-     * @dataProvider provideExceptionsforBadRequest
      */
+    #[DataProvider('provideExceptionsforBadRequest')]
     public function test_exceptions_returns_badRequest_json_response($exception)
     {
         $request  = $this->createMock(Request::class);
@@ -50,7 +52,7 @@ class HandlerTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideExceptionsforBadRequest() : array
+    public static function provideExceptionsforBadRequest() : array
     {
         return [
             [
@@ -85,9 +87,8 @@ class HandlerTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider provideExceptionsforNotFound
      */
+    #[DataProvider('provideExceptionsforNotFound')]
     public function test_exceptions_returns_notFound_json_response($exception)
     {
         $request  = $this->createMock(Request::class);
@@ -111,7 +112,7 @@ class HandlerTest extends TestCase
     /**
      * Provide Valid data for validation test
      */
-    public function provideExceptionsforNotFound() : array
+    public static function provideExceptionsforNotFound() : array
     {
         return [
             [

+ 3 - 1
tests/Unit/GroupModelTest.php

@@ -7,11 +7,13 @@ use App\Events\GroupDeleting;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\ModelTestCase;
 
 /**
- * @covers \App\Models\Group
+ * GroupModelTest test class
  */
+#[CoversClass(Group::class)]
 class GroupModelTest extends ModelTestCase
 {
     /**

+ 14 - 16
tests/Unit/HelpersTest.php

@@ -3,18 +3,20 @@
 namespace Tests\Unit;
 
 use App\Helpers\Helpers;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\TestCase;
 
 /**
- * @covers \App\Helpers\Helpers
+ * HelpersTest test class
  */
+#[CoversClass(Helpers::class)]
 class HelpersTest extends TestCase
 {
     /**
      * @test
-     *
-     * @dataProvider  versionNumberProvider
      */
+    #[DataProvider('versionNumberProvider')]
     public function test_cleanVersionNumber_returns_cleaned_version($dirtyVersion, $expected)
     {
         $cleanedVersion = Helpers::cleanVersionNumber($dirtyVersion);
@@ -25,7 +27,7 @@ class HelpersTest extends TestCase
     /**
      * Provide data for cleanVersionNumber() tests
      */
-    public function versionNumberProvider()
+    public static function versionNumberProvider()
     {
         return [
             [
@@ -49,9 +51,8 @@ class HelpersTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider  invalidVersionNumberProvider
      */
+    #[DataProvider('invalidVersionNumberProvider')]
     public function test_cleanVersionNumber_returns_false_with_invalid_semver($dirtyVersion)
     {
         $cleanedVersion = Helpers::cleanVersionNumber($dirtyVersion);
@@ -62,7 +63,7 @@ class HelpersTest extends TestCase
     /**
      * Provide data for cleanVersionNumber() tests
      */
-    public function invalidVersionNumberProvider()
+    public static function invalidVersionNumberProvider()
     {
         return [
             [
@@ -85,9 +86,8 @@ class HelpersTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider  toBase32PaddedStringProvider
      */
+    #[DataProvider('toBase32PaddedStringProvider')]
     public function test_toBase32Format_returns_base32_formated_string($str, $expected)
     {
         $base32str = Helpers::PadToBase32Format($str);
@@ -98,7 +98,7 @@ class HelpersTest extends TestCase
     /**
      * Provide data for cleanVersionNumber() tests
      */
-    public function toBase32PaddedStringProvider()
+    public static function toBase32PaddedStringProvider()
     {
         return [
             'SHORT_STRING' => [
@@ -138,9 +138,8 @@ class HelpersTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider  commaSeparatedToArrayProvider
      */
+    #[DataProvider('commaSeparatedToArrayProvider')]
     public function test_commaSeparatedToArray_returns_ids_in_array($str, $expected)
     {
         $array = Helpers::commaSeparatedToArray($str);
@@ -151,7 +150,7 @@ class HelpersTest extends TestCase
     /**
      * Provide data for cleanVersionNumber() tests
      */
-    public function commaSeparatedToArrayProvider()
+    public static function commaSeparatedToArrayProvider()
     {
         return [
             'NOMINAL' => [
@@ -167,9 +166,8 @@ class HelpersTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider  invalidCommaSeparatedToArrayProvider
      */
+    #[DataProvider('invalidCommaSeparatedToArrayProvider')]
     public function test_commaSeparatedToArray_returns_unchanged_ids($str, $expected)
     {
         $array = Helpers::commaSeparatedToArray($str);
@@ -180,7 +178,7 @@ class HelpersTest extends TestCase
     /**
      * Provide data for cleanVersionNumber() tests
      */
-    public function invalidCommaSeparatedToArrayProvider()
+    public static function invalidCommaSeparatedToArrayProvider()
     {
         return [
             'INVALID_IDS_LEADING_SPACES' => [

+ 3 - 1
tests/Unit/Listeners/CleanIconStorageTest.php

@@ -9,11 +9,13 @@ use App\Services\SettingService;
 use Illuminate\Support\Facades\Event;
 use Illuminate\Support\Facades\Storage;
 use Mockery\MockInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Listeners\CleanIconStorage
+ * CleanIconStorageTest test class
  */
+#[CoversClass(CleanIconStorage::class)]
 class CleanIconStorageTest extends TestCase
 {
     /**

+ 7 - 5
tests/Unit/Listeners/DissociateTwofaccountFromGroupTest.php

@@ -8,20 +8,22 @@ use App\Models\Group;
 use App\Models\TwoFAccount;
 use Illuminate\Support\Facades\Event;
 use Mockery\MockInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\PreserveGlobalState;
+use PHPUnit\Framework\Attributes\RunInSeparateProcess;
 use Tests\TestCase;
 
 /**
- * @covers \App\Listeners\DissociateTwofaccountFromGroup
+ * DissociateTwofaccountFromGroupTest test class
  */
+#[CoversClass(DissociateTwofaccountFromGroup::class)]
 class DissociateTwofaccountFromGroupTest extends TestCase
 {
     /**
      * @test
-     *
-     * @runInSeparateProcess
-     *
-     * @preserveGlobalState disabled
      */
+    #[RunInSeparateProcess]
+    #[PreserveGlobalState(false)]
     public function test_twofaccount_is_released_on_group_deletion()
     {
         $this->mock('alias:' . TwoFAccount::class, function (MockInterface $twoFAccount) {

+ 3 - 1
tests/Unit/Listeners/ReleaseRadarTest.php

@@ -7,11 +7,13 @@ use App\Listeners\ReleaseRadar;
 use App\Services\ReleaseRadarService;
 use Illuminate\Support\Facades\Event;
 use Mockery\MockInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Listeners\ReleaseRadar
+ * ReleaseRadarTest test class
  */
+#[CoversClass(ReleaseRadar::class)]
 class ReleaseRadarTest extends TestCase
 {
     /**

+ 3 - 1
tests/Unit/Listeners/ResetUsersPreferenceTest.php

@@ -5,11 +5,13 @@ namespace Tests\Unit\Listeners;
 use App\Events\GroupDeleted;
 use App\Listeners\ResetUsersPreference;
 use Illuminate\Support\Facades\Event;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\TestCase;
 
 /**
- * @covers \App\Listeners\ResetUsersPreference
+ * ResetUsersPreferenceTest test class
  */
+#[CoversClass(ResetUsersPreference::class)]
 class ResetUsersPreferenceTest extends TestCase
 {
     /**

+ 32 - 35
tests/Unit/MigratorTest.php

@@ -7,6 +7,7 @@ use App\Exceptions\InvalidMigrationDataException;
 use App\Exceptions\UnsupportedMigrationException;
 use App\Factories\MigratorFactory;
 use App\Models\TwoFAccount;
+use App\Providers\MigrationServiceProvider;
 use App\Services\Migrators\AegisMigrator;
 use App\Services\Migrators\GoogleAuthMigrator;
 use App\Services\Migrators\Migrator;
@@ -18,22 +19,27 @@ use Illuminate\Support\Facades\Storage;
 use Mockery;
 use Mockery\MockInterface;
 use ParagonIE\ConstantTime\Base32;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\PreserveGlobalState;
+use PHPUnit\Framework\Attributes\RunInSeparateProcess;
+use PHPUnit\Framework\Attributes\UsesClass;
 use Tests\Data\MigrationTestData;
 use Tests\Data\OtpTestData;
 use Tests\TestCase;
 
 /**
- * @covers \App\Providers\MigrationServiceProvider
- * @covers \App\Factories\MigratorFactory
- * @covers \App\Services\Migrators\Migrator
- * @covers \App\Services\Migrators\AegisMigrator
- * @covers \App\Services\Migrators\TwoFASMigrator
- * @covers \App\Services\Migrators\PlainTextMigrator
- * @covers \App\Services\Migrators\GoogleAuthMigrator
- * @covers \App\Services\Migrators\TwoFAuthMigrator
- *
- * @uses \App\Models\TwoFAccount
+ * MigratorTest test class
  */
+#[CoversClass(MigrationServiceProvider::class)]
+#[CoversClass(MigratorFactory::class)]
+#[CoversClass(Migrator::class)]
+#[CoversClass(AegisMigrator::class)]
+#[CoversClass(TwoFASMigrator::class)]
+#[CoversClass(PlainTextMigrator::class)]
+#[CoversClass(GoogleAuthMigrator::class)]
+#[CoversClass(TwoFAuthMigrator::class)]
+#[UsesClass(TwoFAccount::class)]
 class MigratorTest extends TestCase
 {
     /**
@@ -137,9 +143,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider validMigrationsProvider
      */
+    #[DataProvider('validMigrationsProvider')]
     public function test_migrate_returns_consistent_accounts(Migrator $migrator, mixed $payload, string $expected, bool $hasSteam)
     {
         $accounts = $migrator->migrate($payload);
@@ -170,7 +175,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function validMigrationsProvider()
+    public static function validMigrationsProvider()
     {
         return [
             'PLAIN_TEXT_PAYLOAD' => [
@@ -214,9 +219,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider invalidMigrationsProvider
      */
+    #[DataProvider('invalidMigrationsProvider')]
     public function test_migrate_with_invalid_payload_returns_InvalidMigrationDataException(Migrator $migrator, mixed $payload)
     {
         $this->expectException(InvalidMigrationDataException::class);
@@ -227,7 +231,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function invalidMigrationsProvider()
+    public static function invalidMigrationsProvider()
     {
         return [
             'INVALID_PLAIN_TEXT_NO_URI' => [
@@ -284,9 +288,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider migrationWithInvalidAccountsProvider
      */
+    #[DataProvider('migrationWithInvalidAccountsProvider')]
     public function test_migrate_returns_fake_accounts(Migrator $migrator, mixed $payload)
     {
         $accounts = $migrator->migrate($payload);
@@ -303,7 +306,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function migrationWithInvalidAccountsProvider()
+    public static function migrationWithInvalidAccountsProvider()
     {
         return [
             'PLAIN_TEXT_PAYLOAD_WITH_INVALID_URI' => [
@@ -327,11 +330,9 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @runInSeparateProcess
-     *
-     * @preserveGlobalState disabled
      */
+    #[RunInSeparateProcess]
+    #[PreserveGlobalState(false)]
     public function test_migrate_gauth_returns_fake_accounts()
     {
         $this->mock('alias:' . Base32::class, function (MockInterface $baseEncoder) {
@@ -353,9 +354,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider AegisWithIconMigrationProvider
      */
+    #[DataProvider('AegisWithIconMigrationProvider')]
     public function test_migrate_aegis_payload_with_icon_sets_and_stores_the_icon($migration)
     {
         Storage::fake('icons');
@@ -372,7 +372,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function AegisWithIconMigrationProvider()
+    public static function AegisWithIconMigrationProvider()
     {
         return [
             'SVG' => [
@@ -406,9 +406,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider TwoFAuthWithIconMigrationProvider
      */
+    #[DataProvider('TwoFAuthWithIconMigrationProvider')]
     public function test_migrate_2fauth_payload_with_icon_sets_and_stores_the_icon($migration)
     {
         Storage::fake('icons');
@@ -425,7 +424,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function TwoFAuthWithIconMigrationProvider()
+    public static function TwoFAuthWithIconMigrationProvider()
     {
         return [
             'SVG' => [
@@ -465,9 +464,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider factoryProvider
      */
+    #[DataProvider('factoryProvider')]
     public function test_factory_returns_relevant_migrator($payload, $migratorClass)
     {
         $factory = new MigratorFactory();
@@ -480,7 +478,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function factoryProvider()
+    public static function factoryProvider()
     {
         return [
             'VALID_PLAIN_TEXT_PAYLOAD' => [
@@ -523,9 +521,8 @@ class MigratorTest extends TestCase
 
     /**
      * @test
-     *
-     * @dataProvider encryptedMigrationDataProvider
      */
+    #[DataProvider('encryptedMigrationDataProvider')]
     public function test_factory_throw_EncryptedMigrationException($payload)
     {
         $this->expectException(EncryptedMigrationException::class);
@@ -538,7 +535,7 @@ class MigratorTest extends TestCase
     /**
      * Provide data for TwoFAccount store tests
      */
-    public function encryptedMigrationDataProvider()
+    public static function encryptedMigrationDataProvider()
     {
         return [
             'ENCRYPTED_AEGIS_JSON_MIGRATION_PAYLOAD' => [

+ 12 - 12
tests/Unit/TwoFAccountModelTest.php

@@ -9,11 +9,16 @@ use App\Services\SettingService;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use Illuminate\Support\Facades\Crypt;
 use Mockery\MockInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\PreserveGlobalState;
+use PHPUnit\Framework\Attributes\RunInSeparateProcess;
 use Tests\ModelTestCase;
 
 /**
- * @covers \App\Models\TwoFAccount
+ * TwoFAccountModelTest test class
  */
+#[CoversClass(TwoFAccount::class)]
 class TwoFAccountModelTest extends ModelTestCase
 {
     /**
@@ -39,9 +44,8 @@ class TwoFAccountModelTest extends ModelTestCase
 
     /**
      * @test
-     *
-     * @dataProvider provideSensitiveAttributes
      */
+    #[DataProvider('provideSensitiveAttributes')]
     public function test_sensitive_attributes_are_stored_encrypted(string $attribute)
     {
         $settingService = $this->mock(SettingService::class, function (MockInterface $settingService) {
@@ -60,7 +64,7 @@ class TwoFAccountModelTest extends ModelTestCase
     /**
      * Provide attributes to test for encryption
      */
-    public function provideSensitiveAttributes() : array
+    public static function provideSensitiveAttributes() : array
     {
         return [
             [
@@ -77,9 +81,8 @@ class TwoFAccountModelTest extends ModelTestCase
 
     /**
      * @test
-     *
-     * @dataProvider provideSensitiveAttributes
      */
+    #[DataProvider('provideSensitiveAttributes')]
     public function test_sensitive_attributes_are_returned_clear(string $attribute)
     {
         $settingService = $this->mock(SettingService::class, function (MockInterface $settingService) {
@@ -95,9 +98,8 @@ class TwoFAccountModelTest extends ModelTestCase
 
     /**
      * @test
-     *
-     * @dataProvider provideSensitiveAttributes
      */
+    #[DataProvider('provideSensitiveAttributes')]
     public function test_indecipherable_attributes_returns_masked_value(string $attribute)
     {
         $settingService = $this->mock(SettingService::class, function (MockInterface $settingService) {
@@ -116,11 +118,9 @@ class TwoFAccountModelTest extends ModelTestCase
 
     /**
      * @test
-     *
-     * @runInSeparateProcess
-     *
-     * @preserveGlobalState disabled
      */
+    #[RunInSeparateProcess]
+    #[PreserveGlobalState(false)]
     public function test_secret_is_uppercased_and_padded_at_setup()
     {
         $settingService = $this->mock(SettingService::class, function (MockInterface $settingService) {

+ 3 - 1
tests/Unit/UserModelTest.php

@@ -5,11 +5,13 @@ namespace Tests\Unit;
 use App\Models\Group;
 use App\Models\TwoFAccount;
 use App\Models\User;
+use PHPUnit\Framework\Attributes\CoversClass;
 use Tests\ModelTestCase;
 
 /**
- * @covers \App\Models\User
+ * UserModelTest test class
  */
+#[CoversClass(User::class)]
 class UserModelTest extends ModelTestCase
 {
     /**