diff --git a/typo3/sysext/extbase/Classes/Mvc/Web/RequestBuilder.php b/typo3/sysext/extbase/Classes/Mvc/Web/RequestBuilder.php index 8f68ce33df36ac4f86399550dd788b2c90cccc32..cd5c41f3e1079e29d3a07b1676754f4305260c52 100644 --- a/typo3/sysext/extbase/Classes/Mvc/Web/RequestBuilder.php +++ b/typo3/sysext/extbase/Classes/Mvc/Web/RequestBuilder.php @@ -27,7 +27,6 @@ use TYPO3\CMS\Extbase\Mvc\Exception as MvcException; use TYPO3\CMS\Extbase\Mvc\Exception\InvalidActionNameException; use TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException; use TYPO3\CMS\Extbase\Mvc\Request; -use TYPO3\CMS\Extbase\Object\ObjectManagerInterface; use TYPO3\CMS\Extbase\Service\EnvironmentService; use TYPO3\CMS\Extbase\Service\ExtensionService; @@ -37,11 +36,6 @@ use TYPO3\CMS\Extbase\Service\ExtensionService; */ class RequestBuilder implements SingletonInterface { - /** - * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface - */ - protected $objectManager; - /** * This is a unique key for a plugin (not the extension key!) * @@ -114,14 +108,6 @@ class RequestBuilder implements SingletonInterface */ private $allowedControllerAliases = []; - /** - * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager - */ - public function injectObjectManager(ObjectManagerInterface $objectManager) - { - $this->objectManager = $objectManager; - } - /** * @param \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager */ @@ -217,7 +203,7 @@ class RequestBuilder implements SingletonInterface } /** @var \TYPO3\CMS\Extbase\Mvc\Request $request */ - $request = $this->objectManager->get(Request::class); + $request = GeneralUtility::makeInstance(Request::class); $request->setPluginName($this->pluginName); $request->setControllerExtensionName($this->extensionName); $request->setControllerAliasToClassNameMapping($this->controllerAliasToClassMapping); diff --git a/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php b/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php index f1e6a861bd05dc52365e1d693e5108df7a88f7f7..677c0c99b9b9d35efa427a6cffe2482ce0502b1c 100644 --- a/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php +++ b/typo3/sysext/fluid/Classes/Core/Widget/WidgetRequestBuilder.php @@ -61,7 +61,7 @@ class WidgetRequestBuilder extends RequestBuilder } $widgetContext = $this->ajaxWidgetContextHolder->get($rawGetArguments['fluid-widget-id']); - $request = $this->objectManager->get(WidgetRequest::class, $widgetContext->getControllerObjectName()); + $request = GeneralUtility::makeInstance(WidgetRequest::class, $widgetContext->getControllerObjectName()); $request->setRequestUri(GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL')); $request->setBaseUri($baseUri); $request->setMethod($_SERVER['REQUEST_METHOD'] ?? null); diff --git a/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php b/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php index 0956beb11eb8fde739daf46740bdcfe44e6e714d..dd156b85ff6cfbad273112641b0fb8f309208203 100644 --- a/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php +++ b/typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php @@ -15,8 +15,8 @@ namespace TYPO3\CMS\Fluid\Tests\Unit\Core\Widget; +use Prophecy\Argument; use TYPO3\CMS\Core\Utility\GeneralUtility; -use TYPO3\CMS\Extbase\Object\ObjectManagerInterface; use TYPO3\CMS\Extbase\Service\EnvironmentService; use TYPO3\CMS\Fluid\Core\Widget\AjaxWidgetContextHolder; use TYPO3\CMS\Fluid\Core\Widget\WidgetContext; @@ -34,40 +34,22 @@ class WidgetRequestBuilderTest extends UnitTestCase */ protected $widgetRequestBuilder; - /** - * @var ObjectManagerInterface - */ - protected $mockObjectManager; - - /** - * @var WidgetRequest - */ - protected $mockWidgetRequest; - - /** - * @var AjaxWidgetContextHolder - */ - protected $mockAjaxWidgetContextHolder; - - /** - * @var WidgetContext - */ - protected $mockWidgetContext; - protected function setUp(): void { parent::setUp(); - $this->widgetRequestBuilder = $this->getAccessibleMock(WidgetRequestBuilder::class, ['setArgumentsFromRawRequestData']); - $this->mockWidgetRequest = $this->createMock(WidgetRequest::class); - $this->mockObjectManager = $this->createMock(ObjectManagerInterface::class); - $this->mockObjectManager->expects(self::any())->method('get')->with(WidgetRequest::class)->willReturn($this->mockWidgetRequest); - $this->widgetRequestBuilder->_set('objectManager', $this->mockObjectManager); - $this->mockWidgetContext = $this->createMock(WidgetContext::class); - $this->mockAjaxWidgetContextHolder = $this->createMock(AjaxWidgetContextHolder::class); - $this->widgetRequestBuilder->injectAjaxWidgetContextHolder($this->mockAjaxWidgetContextHolder); + + $mockWidgetContext = $this->createMock(WidgetContext::class); + $mockWidgetContext->method('getControllerObjectName')->willReturn('TYPO3\\CMS\\Core\\Controller\\FooController'); + + $ajaxWidgetContextHolderProphecy = $this->prophesize(AjaxWidgetContextHolder::class); + $ajaxWidgetContextHolderProphecy->get(Argument::cetera())->willReturn($mockWidgetContext); + $environmentServiceMock = $this->createMock(EnvironmentService::class); $environmentServiceMock->expects(self::any())->method('isEnvironmentInFrontendMode')->willReturn(true); $environmentServiceMock->expects(self::any())->method('isEnvironmentInBackendMode')->willReturn(false); + + $this->widgetRequestBuilder = new WidgetRequestBuilder(); + $this->widgetRequestBuilder->injectAjaxWidgetContextHolder($ajaxWidgetContextHolderProphecy->reveal()); $this->widgetRequestBuilder->injectEnvironmentService($environmentServiceMock); } @@ -76,16 +58,6 @@ class WidgetRequestBuilderTest extends UnitTestCase */ public function buildThrowsIfNoFluidWidgetIdWasSet() { - $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', - 'REQUEST_METHOD' => 'foo' - ]; - $_GET = [ - 'not-the-fluid-widget-id' => 'foo' - ]; $this->expectException(\InvalidArgumentException::class); $this->expectExceptionCode(1521190675); $this->widgetRequestBuilder->build(); @@ -97,19 +69,17 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsRequestUri() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', - 'REQUEST_METHOD' => 'foo' + 'REQUEST_METHOD' => 'GET' ]; $_GET = [ 'fluid-widget-id' => 'foo' ]; $requestUri = GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'); - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setRequestURI')->with($requestUri); - $this->widgetRequestBuilder->build(); + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); + + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame($requestUri, $request->getRequestUri()); } /** @@ -118,19 +88,17 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsBaseUri() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', - 'REQUEST_METHOD' => 'foo' + 'REQUEST_METHOD' => 'GET' ]; $_GET = [ 'fluid-widget-id' => 'foo' ]; $baseUri = GeneralUtility::getIndpEnv('TYPO3_SITE_URL'); - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setBaseURI')->with($baseUri); - $this->widgetRequestBuilder->build(); + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); + + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame($baseUri, $request->getBaseUri()); } /** @@ -139,18 +107,16 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsRequestMethod() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', 'REQUEST_METHOD' => 'POST' ]; $_GET = [ 'fluid-widget-id' => 'foo' ]; - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setMethod')->with('POST'); - $this->widgetRequestBuilder->build(); + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); + + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame('POST', $request->getMethod()); } /** @@ -159,10 +125,6 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsPostArgumentsFromRequest() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', 'REQUEST_METHOD' => 'POST' ]; $_GET = [ @@ -172,9 +134,11 @@ class WidgetRequestBuilderTest extends UnitTestCase $_POST = [ 'post' => 'bar' ]; - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setArguments')->with($_POST); - $this->widgetRequestBuilder->build(); + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); + + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame($_POST, $request->getArguments()); } /** @@ -183,10 +147,6 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsGetArgumentsFromRequest() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', 'REQUEST_METHOD' => 'GET' ]; $_GET = [ @@ -196,9 +156,11 @@ class WidgetRequestBuilderTest extends UnitTestCase $_POST = [ 'post' => 'bar' ]; - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setArguments')->with($_GET); - $this->widgetRequestBuilder->build(); + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); + + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame($_GET, $request->getArguments()); } /** @@ -207,19 +169,17 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsControllerActionNameFromGetArguments() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', - 'REQUEST_METHOD' => 'foo' + 'REQUEST_METHOD' => 'GET' ]; $_GET = [ 'action' => 'myAction', 'fluid-widget-id' => 'foo' ]; - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setControllerActionName')->with('myAction'); - $this->widgetRequestBuilder->build(); + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); + + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame('myAction', $request->getControllerActionName()); } /** @@ -228,39 +188,16 @@ class WidgetRequestBuilderTest extends UnitTestCase public function buildSetsWidgetContext() { $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', - 'REQUEST_METHOD' => 'foo' + 'REQUEST_METHOD' => 'GET' ]; $_GET = [ 'fluid-widget-id' => '123' ]; - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->with('123')->willReturn($this->mockWidgetContext); - $this->mockWidgetRequest->expects(self::once())->method('setWidgetContext')->with($this->mockWidgetContext); - $this->widgetRequestBuilder->build(); - } + /** @var WidgetRequest $request */ + $request = $this->widgetRequestBuilder->build(); - /** - * @test - */ - public function buildReturnsRequest() - { - $_SERVER = [ - 'REMOTE_ADDR' => 'foo', - 'SSL_SESSION_ID' => 'foo', - 'REQUEST_URI' => 'foo', - 'ORIG_SCRIPT_NAME' => 'foo', - 'REQUEST_METHOD' => 'foo' - ]; - $_GET = [ - 'fluid-widget-id' => 'foo' - ]; - $this->mockAjaxWidgetContextHolder->expects(self::once())->method('get')->willReturn($this->mockWidgetContext); - $expected = $this->mockWidgetRequest; - $actual = $this->widgetRequestBuilder->build(); - self::assertSame($expected, $actual); + self::assertInstanceOf(WidgetRequest::class, $request); + self::assertSame('TYPO3\\CMS\\Core\\Controller\\FooController', $request->getControllerObjectName()); + self::assertSame('[]', $request->getArgumentPrefix()); } }