* */ namespace Combodo\iTop\Test\UnitTest\Module\iTopPortalBase; use Combodo\iTop\Portal\Helper\RequestManipulatorHelper; use Combodo\iTop\Test\UnitTest\ItopDataTestCase; use Combodo\iTop\Test\UnitTest\ItopTestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; /** * @covers \Combodo\iTop\Portal\Helper\RequestManipulatorHelper */ class RequestManipulatorTest extends ItopDataTestCase { protected function LoadRequiredItopFiles(): void { parent::LoadRequiredItopFiles(); } public function testReadParam() { // Create a simple request with only necessary information $oRequest = new Request(); $aValue = ['a', 'b', 'c']; $oRequest->request->set('array_value', $aValue); // Create a request stack $oRequestStack = new RequestStack(); $oRequestStack->push($oRequest); // Instantiate request manipulator helper service $oRequestManipulatorHelper = new RequestManipulatorHelper($oRequestStack); // I - default null value $oNullArrayValue = $oRequestManipulatorHelper->ReadParam('null_array_value', null, FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY); $this->assertNull($oNullArrayValue); // II - default empty array value $oEmptyArrayValue = $oRequestManipulatorHelper->ReadParam('empty_array_value', [], FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY); $this->assertEmpty($oNullArrayValue); // III - since symfony 6.4, this code raised a bad request exception $this->expectException("Symfony\\Component\\HttpFoundation\\Exception\\BadRequestException"); $oRequestManipulatorHelper->ReadParam('array_value', null, FILTER_UNSAFE_RAW); // IV - control value $aReadValue = $oRequestManipulatorHelper->ReadParam('array_value', null, FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY); $this->assertEquals($aValue, $aReadValue); } }