diff --git a/src/Factory/ValueAssigner/ValueAssigner.php b/src/Factory/ValueAssigner/ValueAssigner.php index cef5a5b..e098f96 100644 --- a/src/Factory/ValueAssigner/ValueAssigner.php +++ b/src/Factory/ValueAssigner/ValueAssigner.php @@ -134,6 +134,8 @@ protected function assignEntityValueFromRepository(RequestParameterList $request protected function convertToInt(string $stringValue, string $parameterName): int { + $stringValue = trim($stringValue); + if (!preg_match('/^-?\d+$/', $stringValue)) { throw new \InvalidArgumentException(sprintf('Parameter "%s" is not a valid integer: "%s"', $parameterName, $stringValue)); } diff --git a/tests/Factory/ValueAssigner/ValueAssignerTest.php b/tests/Factory/ValueAssigner/ValueAssignerTest.php index 21d3022..54e335b 100644 --- a/tests/Factory/ValueAssigner/ValueAssignerTest.php +++ b/tests/Factory/ValueAssigner/ValueAssignerTest.php @@ -272,4 +272,41 @@ public function testConvertToIntAcceptsNegativeNumber(): void $this->assertTrue(true); } + + public function testConvertToIntTrimsWhitespace(): void + { + $list = new RequestParameterList(); + $list->add('fromDateTime', ' 1711922400'); + + $query = new \MalteHuebner\DataQueryBundle\Query\FromDateTimeQuery(); + + $queryField = new QueryField(); + $queryField + ->setMethodName('setFromDateTime') + ->setParameterName('fromDateTime') + ->setType(ValueType::INT); + + $this->valueAssigner->assignQueryPropertyValueFromRequest($list, $query, $queryField); + + $this->assertTrue(true); + } + + public function testConvertToIntTrimsWhitespaceForParameter(): void + { + $list = new RequestParameterList(); + $list->add('size', ' 25 '); + + $parameter = new SizeParameter(); + $parameter->setEntityFqcn('App\\Entity\\Test'); + + $parameterField = new ParameterField(); + $parameterField + ->setMethodName('setSize') + ->setParameterName('size') + ->setType(ValueType::INT); + + $this->valueAssigner->assignParameterPropertyValueFromRequest($list, $parameter, $parameterField); + + $this->assertTrue(true); + } }