-
-
Notifications
You must be signed in to change notification settings - Fork 961
Description
API Platform version(s) affected: 4.3.0
Description
In
- Use values from ProblemExceptionInterface #7776
an additional path to convert an Exception to an error was introduced.
But it is possible that the detail property is not initialized.
A check must be put there + a fallback to the previous path where $exception->getMessage() is used for the detail.
Stack trace:
303) App\Tests\Api\ContentNodes\SingleText\CreateSingleTextTest::testCreateRejectsTooLongInstanceName
Error: Typed property ApiPlatform\Validator\Exception\ValidationException::$detail must not be accessed before initialization
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/validator/Exception/ValidationException.php:167
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/ApiResource/Error.php:203
/home/runner/work/ecamp3/ecamp3/api/src/State/ValidationErrorProvider.php:37
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/CallableProvider.php:43
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/Provider/ReadProvider.php:84
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Security/State/AccessCheckerProvider.php:68
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Bundle/SwaggerUi/SwaggerUiProvider.php:50
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/json-api/State/JsonApiProvider.php:30
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Security/State/AccessCheckerProvider.php:68
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/Provider/SecurityParameterProvider.php:50
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/Provider/DeserializeProvider.php:60
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Security/State/AccessCheckerProvider.php:68
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Validator/State/ValidateProvider.php:32
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Security/State/AccessCheckerProvider.php:68
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Validator/State/ParameterValidatorProvider.php:101
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/Provider/ParameterProvider.php:102
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/state/Provider/ContentNegotiationProvider.php:56
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Controller/MainController.php:94
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/HttpKernel.php:183
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/HttpKernel.php:76
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/EventListener/ErrorListener.php:99
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/EventListener/ExceptionListener.php:50
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/event-dispatcher/Debug/WrappedListener.php:115
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/event-dispatcher/EventDispatcher.php:206
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/event-dispatcher/EventDispatcher.php:56
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:126
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/HttpKernel.php:241
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/HttpKernel.php:91
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/Kernel.php:193
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/http-kernel/HttpKernelBrowser.php:62
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/framework-bundle/KernelBrowser.php:180
/home/runner/work/ecamp3/ecamp3/api/vendor/symfony/browser-kit/AbstractBrowser.php:398
/home/runner/work/ecamp3/ecamp3/api/vendor/api-platform/symfony/Bundle/Test/Client.php:115
/home/runner/work/ecamp3/ecamp3/api/tests/Api/ECampApiTestCase.php:248
/home/runner/work/ecamp3/ecamp3/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php:237
How to reproduce
Use Error::createFromException with a ValidationException.
https://github.com/ecamp/ecamp3/blob/renovate/api-platform/api/src/State/ValidationErrorProvider.php#L37
PR: ecamp/ecamp3#9231
Possible Solution
A check must be put there + a fallback to the previous path where $exception->getMessage() is used for the detail.
Additional Context