Skip to content

Commit

Permalink
Fix issue in Required filter validator with dot notation
Browse files Browse the repository at this point in the history
  • Loading branch information
jdeniau committed Apr 15, 2021
1 parent 14bd387 commit 3c404ee
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/Filter/Validator/Required.php
Expand Up @@ -13,6 +13,8 @@

namespace ApiPlatform\Core\Filter\Validator;

use ApiPlatform\Core\Util\RequestParser;

final class Required implements ValidatorInterface
{
/**
Expand Down Expand Up @@ -47,8 +49,7 @@ public function validate(string $name, array $filterDescription, array $queryPar
*/
private function requestHasQueryParameter(array $queryParameters, string $name): bool
{
$matches = [];
parse_str($name, $matches);
$matches = RequestParser::parseRequestParams($name);
if (!$matches) {
return false;
}
Expand Down Expand Up @@ -76,8 +77,7 @@ private function requestHasQueryParameter(array $queryParameters, string $name):
*/
private function requestGetQueryParameter(array $queryParameters, string $name)
{
$matches = [];
parse_str($name, $matches);
$matches = RequestParser::parseRequestParams($name);
if (empty($matches)) {
return null;
}
Expand Down
29 changes: 29 additions & 0 deletions tests/Filter/Validator/RequiredTest.php
Expand Up @@ -101,4 +101,33 @@ public function testEmptyValueAllowed()
$filter->validate('some_filter', $explicitFilterDefinition, $request)
);
}

public function testBracketNotation()
{
$filter = new Required();

$request = ['foo' => ['bar' => ['bar']]];

$requiredFilter = [
'required' => true,
];

$this->assertEmpty(
$filter->validate('foo[bar]', $requiredFilter, $request)
);
}

public function testDotNotation()
{
$request = ['foo.bar' => 'bar'];
$filter = new Required();

$requiredFilter = [
'required' => true,
];

$this->assertEmpty(
$filter->validate('foo.bar', $requiredFilter, $request)
);
}
}

0 comments on commit 3c404ee

Please sign in to comment.