From 0501c0eac67fc1a7f76feda4f8c3559ab709185d Mon Sep 17 00:00:00 2001
From: Wouter Wolters <typo3@wouterwolters.nl>
Date: Thu, 12 Aug 2021 19:19:57 +0200
Subject: [PATCH] [TASK] Strictify UnitTests part 2

The following core extensions are handled:

EXT:reports
EXT:redirects
EXT:recycler
EXT:recordlist
EXT:opendocs
EXT:linkvalidator

Resolves: #94855
Releases: master
Change-Id: Ifb6b2ca2f6c25dae2c3dab3d2d4ca6571312c9f4
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/70512
Tested-by: core-ci <typo3@b13.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 .../Unit/Linktype/ExternalLinktypeTest.php    | 72 ++++++++-----------
 .../Unit/Service/OpenDocumentServiceTest.php  | 24 +++----
 .../Tests/Unit/Browser/FileBrowserTest.php    |  8 ++-
 .../RecordList/DatabaseRecordListTest.php     |  4 +-
 .../Unit/Task/CleanerFieldProviderTest.php    | 25 +++----
 .../Tests/Unit/Evaluation/SourceHostTest.php  |  2 +-
 .../ValuePickerItemDataProviderTest.php       | 12 ++--
 .../Tests/Unit/Repository/DemandTest.php      |  6 +-
 .../Unit/Service/RedirectServiceTest.php      | 57 ++++++++-------
 .../Unit/Report/ServicesListReportTest.php    | 19 ++---
 10 files changed, 106 insertions(+), 123 deletions(-)

diff --git a/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php b/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php
index 70dffc9dd29a..c73164e1d849 100644
--- a/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php
+++ b/typo3/sysext/linkvalidator/Tests/Unit/Linktype/ExternalLinktypeTest.php
@@ -21,6 +21,7 @@ use GuzzleHttp\Cookie\CookieJar;
 use GuzzleHttp\Exception\ClientException;
 use GuzzleHttp\Psr7\Response;
 use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Prophecy\Prophecy\ObjectProphecy;
 use TYPO3\CMS\Core\Http\RequestFactory;
 use TYPO3\CMS\Core\Localization\LanguageService;
@@ -31,7 +32,8 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class ExternalLinktypeTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
+    use ProphecyTrait;
+
     protected function setUp(): void
     {
         parent::setUp();
@@ -50,7 +52,7 @@ class ExternalLinktypeTest extends UnitTestCase
     /**
      * @test
      */
-    public function checkLinkWithExternalUrlNotFoundReturnsFalse()
+    public function checkLinkWithExternalUrlNotFoundReturnsFalse(): void
     {
         $responseProphecy = $this->prophesize(Response::class);
         $responseProphecy->getStatusCode()->willReturn(404);
@@ -80,7 +82,7 @@ class ExternalLinktypeTest extends UnitTestCase
     /**
      * @test
      */
-    public function checkLinkWithExternalUrlNotFoundResultsNotFoundErrorType()
+    public function checkLinkWithExternalUrlNotFoundResultsNotFoundErrorType(): void
     {
         $responseProphecy = $this->prophesize(Response::class);
         $responseProphecy->getStatusCode()->willReturn(404);
@@ -130,7 +132,7 @@ class ExternalLinktypeTest extends UnitTestCase
         ];
     }
 
-    public function preprocessUrlsDataProvider()
+    public function preprocessUrlsDataProvider(): \Generator
     {
         // regression test for issue #92230: handle incomplete or faulty URLs gracefully
         yield 'faulty URL with mailto' => [
@@ -195,7 +197,7 @@ class ExternalLinktypeTest extends UnitTestCase
      * @test
      * @dataProvider preprocessUrlsDataProvider
      */
-    public function preprocessUrlReturnsCorrectString(string $inputUrl, $expectedResult)
+    public function preprocessUrlReturnsCorrectString(string $inputUrl, $expectedResult): void
     {
         $subject = new ExternalLinktype();
         $method = new \ReflectionMethod($subject, 'preprocessUrl');
@@ -212,18 +214,15 @@ class ExternalLinktypeTest extends UnitTestCase
         $requestFactoryProphecy = $this->prophesize(RequestFactory::class);
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::any())->shouldBeCalled();
 
-        $externalLinktype = new ExternalLinktype($requestFactoryProphecy->reveal());
-        $externalLinktype->setAdditionalConfig(['headers.' => [
+        $externalLinkType = new ExternalLinktype($requestFactoryProphecy->reveal());
+        $externalLinkType->setAdditionalConfig(['headers.' => [
             'X-MAS' => 'Merry!'
         ]]);
 
-        $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
+        $externalLinkType->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
 
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::that(function ($result) {
-            if ($result['headers']['X-MAS'] === 'Merry!' && $result['headers']['User-Agent'] === 'TYPO3 linkvalidator') {
-                return true;
-            }
-            return false;
+            return $result['headers']['X-MAS'] === 'Merry!' && $result['headers']['User-Agent'] === 'TYPO3 linkvalidator';
         }))->shouldBeCalled();
     }
 
@@ -235,15 +234,15 @@ class ExternalLinktypeTest extends UnitTestCase
     public function requestWithNoTimeoutIsCalledIfTimeoutNotSetByTsConfig(): void
     {
         $requestFactoryProphecy = $this->prophesize(RequestFactory::class);
-        $externalLinktype = new ExternalLinktype($requestFactoryProphecy->reveal());
-        $externalLinktype->setAdditionalConfig([]);
+        $externalLinkType = new ExternalLinktype($requestFactoryProphecy->reveal());
+        $externalLinkType->setAdditionalConfig([]);
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::that(function ($result) {
             if (isset($result['timeout'])) {
                 return false;
             }
             return true;
         }))->shouldBeCalled();
-        $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
+        $externalLinkType->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
     }
 
     /**
@@ -262,10 +261,7 @@ class ExternalLinktypeTest extends UnitTestCase
         $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
 
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::that(function ($result) {
-            if ($result['headers']['User-Agent'] === 'TYPO3 Testing') {
-                return true;
-            }
-            return false;
+            return $result['headers']['User-Agent'] === 'TYPO3 Testing';
         }))->shouldBeCalled();
     }
 
@@ -277,18 +273,15 @@ class ExternalLinktypeTest extends UnitTestCase
         $requestFactoryProphecy = $this->prophesize(RequestFactory::class);
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::any())->shouldBeCalled();
 
-        $externalLinktype = new ExternalLinktype($requestFactoryProphecy->reveal());
-        $externalLinktype->setAdditionalConfig([
+        $externalLinkType = new ExternalLinktype($requestFactoryProphecy->reveal());
+        $externalLinkType->setAdditionalConfig([
             'httpAgentUrl' => 'http://example.com'
         ]);
 
-        $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
+        $externalLinkType->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
 
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::that(function ($result) {
-            if ($result['headers']['User-Agent'] === 'TYPO3 linkvalidator http://example.com') {
-                return true;
-            }
-            return false;
+            return $result['headers']['User-Agent'] === 'TYPO3 linkvalidator http://example.com';
         }))->shouldBeCalled();
     }
 
@@ -308,10 +301,7 @@ class ExternalLinktypeTest extends UnitTestCase
         $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
 
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::that(function ($result) {
-            if ($result['headers']['User-Agent'] === 'TYPO3 linkvalidator;mail@example.com') {
-                return true;
-            }
-            return false;
+            return $result['headers']['User-Agent'] === 'TYPO3 linkvalidator;mail@example.com';
         }))->shouldBeCalled();
     }
 
@@ -324,16 +314,13 @@ class ExternalLinktypeTest extends UnitTestCase
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::any())->shouldBeCalled();
         $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] = 'test@example.com';
 
-        $externalLinktype = new ExternalLinktype($requestFactoryProphecy->reveal());
-        $externalLinktype->setAdditionalConfig([]);
+        $externalLinkType = new ExternalLinktype($requestFactoryProphecy->reveal());
+        $externalLinkType->setAdditionalConfig([]);
 
-        $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
+        $externalLinkType->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
 
         $requestFactoryProphecy->request('http://example.com', 'HEAD', Argument::that(function ($result) {
-            if ($result['headers']['User-Agent'] === 'TYPO3 linkvalidator;test@example.com') {
-                return true;
-            }
-            return false;
+            return $result['headers']['User-Agent'] === 'TYPO3 linkvalidator;test@example.com';
         }))->shouldBeCalled();
     }
 
@@ -346,19 +333,16 @@ class ExternalLinktypeTest extends UnitTestCase
         $requestFactoryProphecy->request('http://example.com', 'GET', Argument::any())->shouldBeCalled();
         $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] = 'test@example.com';
 
-        $externalLinktype = new ExternalLinktype($requestFactoryProphecy->reveal());
-        $externalLinktype->setAdditionalConfig([
+        $externalLinkType = new ExternalLinktype($requestFactoryProphecy->reveal());
+        $externalLinkType->setAdditionalConfig([
             'method' => 'GET',
             'range' => '0-2048'
         ]);
 
-        $externalLinktype->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
+        $externalLinkType->checkLink('http://example.com', [], $this->prophesize(LinkAnalyzer::class)->reveal());
 
         $requestFactoryProphecy->request('http://example.com', 'GET', Argument::that(function ($result) {
-            if ($result['headers']['Range'] === 'bytes=0-2048') {
-                return true;
-            }
-            return false;
+            return $result['headers']['Range'] === 'bytes=0-2048';
         }))->shouldBeCalled();
     }
 }
diff --git a/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php b/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php
index 3b13d7668cbb..3cd63d6a0f13 100644
--- a/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php
+++ b/typo3/sysext/opendocs/Tests/Unit/Service/OpenDocumentServiceTest.php
@@ -17,6 +17,8 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Opendocs\Tests\Unit\Service;
 
+use Prophecy\PhpUnit\ProphecyTrait;
+use Prophecy\Prophecy\ObjectProphecy;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Opendocs\Service\OpenDocumentService;
 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
@@ -26,16 +28,14 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
  */
 class OpenDocumentServiceTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
-    /**
-     * @var OpenDocumentService
-     */
-    protected $subject;
+    use ProphecyTrait;
+
+    protected OpenDocumentService $subject;
 
     /**
-     * @var BackendUserAuthentication|\Prophecy\Prophecy\ObjectProphecy
+     * @var BackendUserAuthentication|ObjectProphecy
      */
-    protected $backendUser;
+    protected ObjectProphecy $backendUser;
 
     /**
      * Set up this test case
@@ -50,7 +50,7 @@ class OpenDocumentServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getsOpenDocumentsFromUserSession()
+    public function getsOpenDocumentsFromUserSession(): void
     {
         $this->backendUser->getModuleData('FormEngine', 'ses')->willReturn([
             [
@@ -72,7 +72,7 @@ class OpenDocumentServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function handlesUserSessionWithoutOpenDocuments()
+    public function handlesUserSessionWithoutOpenDocuments(): void
     {
         $this->backendUser->getModuleData('FormEngine', 'ses')->willReturn();
 
@@ -84,7 +84,7 @@ class OpenDocumentServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getsRecentDocumentsFromUserSession()
+    public function getsRecentDocumentsFromUserSession(): void
     {
         $this->backendUser->getModuleData('opendocs::recent')->willReturn([
             'identifier1' => [ 'data1' ],
@@ -101,7 +101,7 @@ class OpenDocumentServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function handlesUserSessionWithoutRecentDocuments()
+    public function handlesUserSessionWithoutRecentDocuments(): void
     {
         $this->backendUser->getModuleData('opendocs::recent')->willReturn();
 
@@ -113,7 +113,7 @@ class OpenDocumentServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function closesDocument()
+    public function closesDocument(): void
     {
         $this->backendUser->getModuleData('FormEngine', 'ses')->willReturn([
             [
diff --git a/typo3/sysext/recordlist/Tests/Unit/Browser/FileBrowserTest.php b/typo3/sysext/recordlist/Tests/Unit/Browser/FileBrowserTest.php
index 8ce7efd70487..91f19c78e7ae 100644
--- a/typo3/sysext/recordlist/Tests/Unit/Browser/FileBrowserTest.php
+++ b/typo3/sysext/recordlist/Tests/Unit/Browser/FileBrowserTest.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Recordlist\Tests\Unit\Browser;
 
 use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Psr\Http\Message\ServerRequestInterface;
 use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent;
 use TYPO3\CMS\Backend\Template\ModuleTemplate;
@@ -31,7 +32,8 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class FileBrowserTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
+    use ProphecyTrait;
+
     /**
      * @test
      */
@@ -39,9 +41,9 @@ class FileBrowserTest extends UnitTestCase
     {
         [$moduleTemplate, $beUser] = $this->setupProphecies();
 
-        $bparams = '|||gif,png,svg|data-4-pages-4-nav_icon-sys_file_reference';
+        $bParams = '|||gif,png,svg|data-4-pages-4-nav_icon-sys_file_reference';
         $fileBrowser = $this->getAccessibleMock(FileBrowser::class, ['dummy'], [], '', false);
-        $fileBrowser->_set('bparams', $bparams);
+        $fileBrowser->_set('bparams', $bParams);
         $fileBrowser->_set('moduleTemplate', $moduleTemplate);
         $fileBrowser->_set('request', $this->prophesize(ServerRequestInterface::class)->reveal());
         $fileBrowser->render();
diff --git a/typo3/sysext/recordlist/Tests/Unit/RecordList/DatabaseRecordListTest.php b/typo3/sysext/recordlist/Tests/Unit/RecordList/DatabaseRecordListTest.php
index 2859522ca36f..1282949fec5a 100644
--- a/typo3/sysext/recordlist/Tests/Unit/RecordList/DatabaseRecordListTest.php
+++ b/typo3/sysext/recordlist/Tests/Unit/RecordList/DatabaseRecordListTest.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Recordlist\Tests\Unit\RecordList;
 
 use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
 use TYPO3\CMS\Backend\Routing\Router;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
@@ -29,7 +30,8 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class DatabaseRecordListTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
+    use ProphecyTrait;
+
     protected $resetSingletonInstances = true;
 
     protected DatabaseRecordList $subject;
diff --git a/typo3/sysext/recycler/Tests/Unit/Task/CleanerFieldProviderTest.php b/typo3/sysext/recycler/Tests/Unit/Task/CleanerFieldProviderTest.php
index b2ac3ddc608b..a573d668d0e5 100644
--- a/typo3/sysext/recycler/Tests/Unit/Task/CleanerFieldProviderTest.php
+++ b/typo3/sysext/recycler/Tests/Unit/Task/CleanerFieldProviderTest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Recycler\Tests\Unit\Task;
 
+use PHPUnit\Framework\MockObject\MockObject;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Recycler\Task\CleanerFieldProvider;
@@ -44,31 +45,31 @@ class CleanerFieldProviderTest extends UnitTestCase
             ->onlyMethods(['sL'])
             ->disableOriginalConstructor()
             ->getMock();
-        $languageServiceMock->expects(self::any())->method('sL')->willReturn('titleTest');
+        $languageServiceMock->method('sL')->willReturn('titleTest');
         $this->subject = $this->getMockBuilder(CleanerFieldProvider::class)
             ->onlyMethods(['getLanguageService', 'addMessage'])
             ->getMock();
-        $this->subject->expects(self::any())->method('getLanguageService')->willReturn($languageServiceMock);
+        $this->subject->method('getLanguageService')->willReturn($languageServiceMock);
     }
 
     /**
      * @param array $mockedMethods
-     * @return \PHPUnit\Framework\MockObject\MockObject|SchedulerModuleController
+     * @return MockObject|SchedulerModuleController
      */
-    protected function getScheduleModuleControllerMock($mockedMethods = [])
+    protected function getScheduleModuleControllerMock(array $mockedMethods = [])
     {
         $languageServiceMock = $this->getMockBuilder(LanguageService::class)
             ->onlyMethods(['sL'])
             ->disableOriginalConstructor()
             ->getMock();
-        $languageServiceMock->expects(self::any())->method('sL')->willReturn('titleTest');
+        $languageServiceMock->method('sL')->willReturn('titleTest');
 
         $mockedMethods = array_merge(['getLanguageService'], $mockedMethods);
         $scheduleModuleMock = $this->getMockBuilder(SchedulerModuleController::class)
             ->onlyMethods($mockedMethods)
             ->disableOriginalConstructor()
             ->getMock();
-        $scheduleModuleMock->expects(self::any())->method('getLanguageService')->willReturn($languageServiceMock);
+        $scheduleModuleMock->method('getLanguageService')->willReturn($languageServiceMock);
 
         return $scheduleModuleMock;
     }
@@ -76,7 +77,7 @@ class CleanerFieldProviderTest extends UnitTestCase
     /**
      * @return array
      */
-    public function validateAdditionalFieldsLogsPeriodErrorDataProvider()
+    public function validateAdditionalFieldsLogsPeriodErrorDataProvider(): array
     {
         return [
             ['abc'],
@@ -93,7 +94,7 @@ class CleanerFieldProviderTest extends UnitTestCase
      * @test
      * @dataProvider validateAdditionalFieldsLogsPeriodErrorDataProvider
      */
-    public function validateAdditionalFieldsLogsPeriodError($period)
+    public function validateAdditionalFieldsLogsPeriodError($period): void
     {
         $submittedData = [
             'RecyclerCleanerPeriod' => $period,
@@ -111,7 +112,7 @@ class CleanerFieldProviderTest extends UnitTestCase
     /**
      * @return array
      */
-    public function validateAdditionalFieldsDataProvider()
+    public function validateAdditionalFieldsDataProvider(): array
     {
         return [
             ['abc'],
@@ -126,7 +127,7 @@ class CleanerFieldProviderTest extends UnitTestCase
      * @test
      * @dataProvider validateAdditionalFieldsDataProvider
      */
-    public function validateAdditionalFieldsLogsTableError($table)
+    public function validateAdditionalFieldsLogsTableError($table): void
     {
         $submittedData = [
             'RecyclerCleanerPeriod' => 14,
@@ -139,7 +140,7 @@ class CleanerFieldProviderTest extends UnitTestCase
     /**
      * @test
      */
-    public function validateAdditionalFieldsIsTrueIfValid()
+    public function validateAdditionalFieldsIsTrueIfValid(): void
     {
         $submittedData = [
             'RecyclerCleanerPeriod' => 14,
@@ -154,7 +155,7 @@ class CleanerFieldProviderTest extends UnitTestCase
     /**
      * @test
      */
-    public function saveAdditionalFieldsSavesFields()
+    public function saveAdditionalFieldsSavesFields(): void
     {
         $submittedData = [
             'RecyclerCleanerPeriod' => 14,
diff --git a/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php b/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php
index 7bd9cf10d415..eab089f351a0 100644
--- a/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php
+++ b/typo3/sysext/redirects/Tests/Unit/Evaluation/SourceHostTest.php
@@ -75,7 +75,7 @@ class SourceHostTest extends UnitTestCase
      * @param string $input
      * @param string $expected
      */
-    public function evaluateFieldValueWorksWithDifferentInputs(string $input, string $expected)
+    public function evaluateFieldValueWorksWithDifferentInputs(string $input, string $expected): void
     {
         $subject = new SourceHost();
         self::assertSame($expected, $subject->evaluateFieldValue($input));
diff --git a/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php b/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php
index 9e373ba5a3bd..0b13ba6d2817 100644
--- a/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php
+++ b/typo3/sysext/redirects/Tests/Unit/FormDataProvider/ValuePickerItemDataProviderTest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Redirects\Tests\Unit\FormDataProvider;
 
+use Prophecy\PhpUnit\ProphecyTrait;
 use TYPO3\CMS\Core\Site\Entity\Site;
 use TYPO3\CMS\Core\Site\SiteFinder;
 use TYPO3\CMS\Redirects\FormDataProvider\ValuePickerItemDataProvider;
@@ -24,8 +25,9 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class ValuePickerItemDataProviderTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
-    protected $sysRedirectResultSet = [
+    use ProphecyTrait;
+
+    protected array $sysRedirectResultSet = [
         'tableName' => 'sys_redirect',
         'processedTca' => [
             'columns' => [
@@ -43,7 +45,7 @@ class ValuePickerItemDataProviderTest extends UnitTestCase
     /**
      * @test
      */
-    public function addDataDoesNothingIfNoRedirectDataGiven()
+    public function addDataDoesNothingIfNoRedirectDataGiven(): void
     {
         $result = [
             'tableName' => 'tt_content',
@@ -59,7 +61,7 @@ class ValuePickerItemDataProviderTest extends UnitTestCase
     /**
      * @test
      */
-    public function addDataAddsHostsAsKeyAndValueToRedirectValuePicker()
+    public function addDataAddsHostsAsKeyAndValueToRedirectValuePicker(): void
     {
         // no results for now
         $siteFinderProphecy = $this->prophesize(SiteFinder::class);
@@ -80,7 +82,7 @@ class ValuePickerItemDataProviderTest extends UnitTestCase
     /**
      * @test
      */
-    public function addDataDoesNotChangeResultSetIfNoSitesAreFound()
+    public function addDataDoesNotChangeResultSetIfNoSitesAreFound(): void
     {
         $siteFinderProphecy = $this->prophesize(SiteFinder::class);
         $siteFinderProphecy->getAllSites()->willReturn([]);
diff --git a/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php b/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php
index 8ba93281e13b..6e33a8b1763b 100644
--- a/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php
+++ b/typo3/sysext/redirects/Tests/Unit/Repository/DemandTest.php
@@ -42,10 +42,10 @@ class DemandTest extends UnitTestCase
     /**
      * @test
      * @dataProvider getParametersRespectsDemandStateStateDataProvider
-     * @param string $input
-     * @param string $expected
+     * @param array $input
+     * @param array $expected
      */
-    public function getParametersRespectsDemandState(array $input, array $expected)
+    public function getParametersRespectsDemandState(array $input, array $expected): void
     {
         self::assertEquals($expected, (new Demand(...$input))->getParameters());
     }
diff --git a/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php b/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php
index 35dfa14de4f7..b3b31ac4d08d 100644
--- a/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php
+++ b/typo3/sysext/redirects/Tests/Unit/Service/RedirectServiceTest.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Redirects\Tests\Unit\Service;
 
 use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Prophecy\Prophecy\ObjectProphecy;
 use Psr\Log\LoggerInterface;
 use TYPO3\CMS\Core\Http\ServerRequest;
@@ -36,7 +37,8 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class RedirectServiceTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
+    use ProphecyTrait;
+
     /**
      * @var bool Reset singletons created by subject
      */
@@ -45,27 +47,24 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @var RedirectCacheService|ObjectProphecy
      */
-    protected $redirectCacheServiceProphecy;
+    protected ObjectProphecy $redirectCacheServiceProphecy;
 
     /**
      * @var LinkService|ObjectProphecy
      */
-    protected $linkServiceProphecy;
+    protected ObjectProphecy $linkServiceProphecy;
 
-    /**
-     * @var RedirectService
-     */
-    protected $redirectService;
+    protected RedirectService $redirectService;
 
     /**
-     * @var SiteFinder
+     * @var ObjectProphecy|SiteFinder
      */
-    protected $siteFinder;
+    protected ObjectProphecy $siteFinder;
 
     /**
      * @var ObjectProphecy|RedirectRepository
      */
-    protected $redirectRepository;
+    protected ObjectProphecy $redirectRepository;
 
     protected function setUp(): void
     {
@@ -85,7 +84,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsNullIfNoRedirectsExist()
+    public function matchRedirectReturnsNullIfNoRedirectsExist(): void
     {
         $this->redirectCacheServiceProphecy->getRedirects()->willReturn([]);
 
@@ -99,7 +98,7 @@ class RedirectServiceTest extends UnitTestCase
      * @dataProvider matchRedirectReturnsRedirectOnFlatMatchDataProvider
      * @param string $path
      */
-    public function matchRedirectReturnsRedirectOnFlatMatch(string $path = '')
+    public function matchRedirectReturnsRedirectOnFlatMatch(string $path = ''): void
     {
         $row = [
             'target' => 'https://example.com',
@@ -154,7 +153,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsRedirectOnRespectQueryParametersMatch()
+    public function matchRedirectReturnsRedirectOnRespectQueryParametersMatch(): void
     {
         $row = [
             'target' => 'https://example.com',
@@ -186,7 +185,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsRedirectOnRespectQueryParametersMatchWithSlash()
+    public function matchRedirectReturnsRedirectOnRespectQueryParametersMatchWithSlash(): void
     {
         $row = [
             'target' => 'https://example.com',
@@ -218,7 +217,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsRedirectOnFullRespectQueryParametersMatch()
+    public function matchRedirectReturnsRedirectOnFullRespectQueryParametersMatch(): void
     {
         $row = [
             'target' => 'https://example.com/target',
@@ -250,7 +249,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsNullOnPartialRespectQueryParametersMatch()
+    public function matchRedirectReturnsNullOnPartialRespectQueryParametersMatch(): void
     {
         $row = [
             'target' => 'https://example.com/target',
@@ -282,7 +281,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsMatchingRedirectWithMatchingQueryParametersOverMatchingPath()
+    public function matchRedirectReturnsMatchingRedirectWithMatchingQueryParametersOverMatchingPath(): void
     {
         $row1 = [
             'target' => 'https://example.com/no-promotion',
@@ -330,7 +329,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsRedirectSpecificToDomainOnFlatMatchIfSpecificAndNonSpecificExist()
+    public function matchRedirectReturnsRedirectSpecificToDomainOnFlatMatchIfSpecificAndNonSpecificExist(): void
     {
         $row1 = [
             'target' => 'https://example.com',
@@ -377,7 +376,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsRedirectOnRegexMatch()
+    public function matchRedirectReturnsRedirectOnRegexMatch(): void
     {
         $row = [
             'target' => 'https://example.com',
@@ -408,7 +407,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function matchRedirectReturnsOnlyActiveRedirects()
+    public function matchRedirectReturnsOnlyActiveRedirects(): void
     {
         $row1 = [
             'target' => 'https://example.com',
@@ -449,7 +448,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlReturnsNullIfUrlCouldNotBeResolved()
+    public function getTargetUrlReturnsNullIfUrlCouldNotBeResolved(): void
     {
         $this->linkServiceProphecy->resolve(Argument::any())->willThrow(new InvalidPathException('', 1516531195));
 
@@ -461,7 +460,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlReturnsUrlForTypeUrl()
+    public function getTargetUrlReturnsUrlForTypeUrl(): void
     {
         $redirectTargetMatch = [
             'target' => 'https://example.com',
@@ -486,7 +485,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlReturnsUrlForTypeFile()
+    public function getTargetUrlReturnsUrlForTypeFile(): void
     {
         $fileProphecy = $this->prophesize(File::class);
         $fileProphecy->getPublicUrl()->willReturn('https://example.com/file.txt');
@@ -513,7 +512,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlReturnsUrlForTypeFolder()
+    public function getTargetUrlReturnsUrlForTypeFolder(): void
     {
         $folderProphecy = $this->prophesize(Folder::class);
         $folderProphecy->getPublicUrl()->willReturn('https://example.com/folder/');
@@ -541,7 +540,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlRespectsForceHttps()
+    public function getTargetUrlRespectsForceHttps(): void
     {
         $redirectTargetMatch = [
             'target' => 'https://example.com',
@@ -566,7 +565,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlAddsExistingQueryParams()
+    public function getTargetUrlAddsExistingQueryParams(): void
     {
         $redirectTargetMatch = [
             'target' => 'https://example.com',
@@ -592,7 +591,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlRespectsAdditionalParametersFromTypolink()
+    public function getTargetUrlRespectsAdditionalParametersFromTypolink(): void
     {
         /** @var RedirectService $redirectService */
         $redirectService = $this->getAccessibleMock(
@@ -629,7 +628,7 @@ class RedirectServiceTest extends UnitTestCase
         $request = $request->withQueryParams($queryParams);
         $request = $request->withAttribute('site', $site);
         $request = $request->withAttribute('frontend.user', $frontendUserAuthentication);
-        $redirectService->expects(self::any())->method('getUriFromCustomLinkDetails')
+        $redirectService->method('getUriFromCustomLinkDetails')
             ->with($redirectTargetMatch, $site, $linkDetails, $queryParams, $request)
             ->willReturn($uri);
         $result = $redirectService->getTargetUrl($redirectTargetMatch, $request);
@@ -640,7 +639,7 @@ class RedirectServiceTest extends UnitTestCase
     /**
      * @test
      */
-    public function getTargetUrlReplaceRegExpCaptureGroup()
+    public function getTargetUrlReplaceRegExpCaptureGroup(): void
     {
         $redirectTargetMatch = [
             'source_path' => '#^/foo/(.*)#',
diff --git a/typo3/sysext/reports/Tests/Unit/Report/ServicesListReportTest.php b/typo3/sysext/reports/Tests/Unit/Report/ServicesListReportTest.php
index b077ffe3e5e7..d88ed0dcace9 100644
--- a/typo3/sysext/reports/Tests/Unit/Report/ServicesListReportTest.php
+++ b/typo3/sysext/reports/Tests/Unit/Report/ServicesListReportTest.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Reports\Tests\Unit\Report;
 
 use Prophecy\Argument;
+use Prophecy\PhpUnit\ProphecyTrait;
 use Prophecy\Prophecy\ObjectProphecy;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -32,15 +33,10 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
  */
 class ServicesListReportTest extends UnitTestCase
 {
-    use \Prophecy\PhpUnit\ProphecyTrait;
-    /**
-     * @var ServicesListReport
-     */
-    protected $subject;
+    use ProphecyTrait;
+
+    protected ServicesListReport $subject;
 
-    /**
-     * SetUp
-     */
     public function setUp(): void
     {
         parent::setUp();
@@ -53,7 +49,7 @@ class ServicesListReportTest extends UnitTestCase
     /**
      * @test
      */
-    public function getReportCollectsRelevantDataToAssignThemToTemplateForResponse()
+    public function getReportCollectsRelevantDataToAssignThemToTemplateForResponse(): void
     {
         $standaloneViewProphecy = $this->standaloneViewProphecy();
 
@@ -69,7 +65,6 @@ class ServicesListReportTest extends UnitTestCase
 
     /**
      * @return ObjectProphecy
-     * @internal param $templatePath
      */
     private function standaloneViewProphecy(): ObjectProphecy
     {
@@ -77,7 +72,6 @@ class ServicesListReportTest extends UnitTestCase
             'EXT:reports/Resources/Private/Templates/ServicesListReport.html'
         );
         $serverRequestProphecy = $this->prophesize(Request::class);
-        /** @var ObjectProphecy $standaloneViewProphecy */
         $standaloneViewProphecy = $this->prophesize(StandaloneView::class);
         $standaloneViewProphecy->getRequest()->willReturn($serverRequestProphecy->reveal());
         $standaloneViewProphecy->setTemplatePathAndFilename($templatePath)->shouldBeCalled();
@@ -107,7 +101,6 @@ class ServicesListReportTest extends UnitTestCase
      */
     private function reportControllerProphecy(): ObjectProphecy
     {
-        $reportControllerProphecy = $this->prophesize(ReportController::class);
-        return $reportControllerProphecy;
+        return $this->prophesize(ReportController::class);
     }
 }
-- 
GitLab