Skip to content

Commit 930fe7e

Browse files
Merge branch '6.2' into 6.3
* 6.2: [VarDumper] Fix calling scope detection inside magic accessors [Validator] add missing German translations [Serializer] Fix denormalizing abstract part headers in MimeMessageNormalizer [Form] Remove an obsolete phpdoc comment [FrameworkBundle][Workflow] Throw exception is workflow.xxx.transitions is not an array
2 parents f2599f3 + 331d13a commit 930fe7e

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

DependencyInjection/Configuration.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,10 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode): void
465465
->beforeNormalization()
466466
->always()
467467
->then(function ($places) {
468+
if (!\is_array($places)) {
469+
throw new InvalidConfigurationException('The "places" option must be an array in workflow configuration.');
470+
}
471+
468472
// It's an indexed array of shape ['place1', 'place2']
469473
if (isset($places[0]) && \is_string($places[0])) {
470474
return array_map(function (string $place) {
@@ -510,6 +514,10 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode): void
510514
->beforeNormalization()
511515
->always()
512516
->then(function ($transitions) {
517+
if (!\is_array($transitions)) {
518+
throw new InvalidConfigurationException('The "transitions" option must be an array in workflow configuration.');
519+
}
520+
513521
// It's an indexed array, we let the validation occur
514522
if (isset($transitions[0]) && \is_array($transitions[0])) {
515523
return $transitions;

Tests/DependencyInjection/PhpFrameworkExtensionTest.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection;
1313

14+
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
1415
use Symfony\Component\Config\FileLocator;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
1617
use Symfony\Component\DependencyInjection\Exception\LogicException;
@@ -58,6 +59,36 @@ public function testAssetPackageCannotHavePathAndUrl()
5859
});
5960
}
6061

62+
public function testWorkflowValidationPlacesIsArray()
63+
{
64+
$this->expectException(InvalidConfigurationException::class);
65+
$this->expectExceptionMessage('The "places" option must be an array in workflow configuration.');
66+
$this->createContainerFromClosure(function ($container) {
67+
$container->loadFromExtension('framework', [
68+
'workflows' => [
69+
'article' => [
70+
'places' => null,
71+
],
72+
],
73+
]);
74+
});
75+
}
76+
77+
public function testWorkflowValidationTransitonsIsArray()
78+
{
79+
$this->expectException(InvalidConfigurationException::class);
80+
$this->expectExceptionMessage('The "transitions" option must be an array in workflow configuration.');
81+
$this->createContainerFromClosure(function ($container) {
82+
$container->loadFromExtension('framework', [
83+
'workflows' => [
84+
'article' => [
85+
'transitions' => null,
86+
],
87+
],
88+
]);
89+
});
90+
}
91+
6192
public function testWorkflowValidationStateMachine()
6293
{
6394
$this->expectException(InvalidDefinitionException::class);

0 commit comments

Comments
 (0)