diff --git a/src/Metadata/Extractor/YamlResourceExtractor.php b/src/Metadata/Extractor/YamlResourceExtractor.php index e14c8a6ade..49bf3967ff 100644 --- a/src/Metadata/Extractor/YamlResourceExtractor.php +++ b/src/Metadata/Extractor/YamlResourceExtractor.php @@ -111,6 +111,8 @@ private function buildExtendedBase(array $resource): array 'condition' => $this->resolveExpressionPlaceholder($this->phpize($resource, 'condition', 'string', resolve: false)), 'controller' => $this->phpize($resource, 'controller', 'string'), 'queryParameterValidationEnabled' => $this->phpize($resource, 'queryParameterValidationEnabled', 'bool'), + 'strictQueryParameterValidation' => $this->phpize($resource, 'strictQueryParameterValidation', 'bool'), + 'hideHydraOperation' => $this->phpize($resource, 'hideHydraOperation', 'bool'), 'types' => $this->buildArrayValue($resource, 'types'), 'cacheHeaders' => $this->buildArrayValue($resource, 'cacheHeaders'), 'hydraContext' => $this->buildArrayValue($resource, 'hydraContext'), @@ -374,8 +376,6 @@ private function buildOperations(array $resource, array $root): ?array 'write' => $this->phpize($operation, 'write', 'bool'), 'serialize' => $this->phpize($operation, 'serialize', 'bool'), 'queryParameterValidate' => $this->phpize($operation, 'queryParameterValidate', 'bool'), - 'strictQueryParameterValidation' => $this->phpize($operation, 'strictQueryParameterValidation', 'bool'), - 'hideHydraOperation' => $this->phpize($resource, 'hideHydraOperation', 'bool'), 'priority' => $this->phpize($operation, 'priority', 'integer'), 'routePriority' => $this->phpize($operation, 'routePriority', 'integer'), 'name' => $this->phpize($operation, 'name', 'string'), diff --git a/src/Metadata/Tests/Extractor/YamlExtractorTest.php b/src/Metadata/Tests/Extractor/YamlExtractorTest.php index 124247eb80..4d7600ef99 100644 --- a/src/Metadata/Tests/Extractor/YamlExtractorTest.php +++ b/src/Metadata/Tests/Extractor/YamlExtractorTest.php @@ -68,6 +68,8 @@ public function testValidYaml(): void 'securityPostValidation' => null, 'securityPostValidationMessage' => null, 'queryParameterValidationEnabled' => null, + 'strictQueryParameterValidation' => null, + 'hideHydraOperation' => null, 'input' => null, 'output' => null, 'types' => null, @@ -144,6 +146,8 @@ public function testValidYaml(): void 'securityPostValidation' => null, 'securityPostValidationMessage' => null, 'queryParameterValidationEnabled' => null, + 'strictQueryParameterValidation' => null, + 'hideHydraOperation' => null, 'input' => null, 'output' => null, 'types' => null, @@ -218,6 +222,8 @@ public function testValidYaml(): void 'securityPostValidation' => null, 'securityPostValidationMessage' => null, 'queryParameterValidationEnabled' => null, + 'strictQueryParameterValidation' => null, + 'hideHydraOperation' => null, 'input' => null, 'output' => null, 'types' => ['someirischema'], @@ -475,6 +481,8 @@ public function testValidYaml(): void 'securityPostValidation' => null, 'securityPostValidationMessage' => null, 'queryParameterValidationEnabled' => null, + 'strictQueryParameterValidation' => null, + 'hideHydraOperation' => null, 'input' => null, 'output' => null, 'types' => null, @@ -573,6 +581,19 @@ public function testInputAndOutputAreBooleans(): void $this->assertFalse($resources[Program::class][0]['operations'][0]['output']); } + public function testHideHydraOperationAndStrictQueryParameterValidation(): void + { + $resources = (new YamlResourceExtractor([__DIR__.'/yaml/hide-hydra-operation.yaml']))->getResources()[Program::class]; + + $this->assertTrue($resources[0]['hideHydraOperation']); + $this->assertTrue($resources[0]['strictQueryParameterValidation']); + $this->assertTrue($resources[0]['operations'][0]['hideHydraOperation']); + $this->assertTrue($resources[0]['operations'][0]['strictQueryParameterValidation']); + $this->assertTrue($resources[1]['operations'][0]['hideHydraOperation']); + $this->assertFalse($resources[2]['operations'][0]['hideHydraOperation']); + $this->assertFalse($resources[2]['operations'][0]['strictQueryParameterValidation']); + } + public function testInputAndOutputAreStrings(): void { $extractor = new YamlResourceExtractor([__DIR__.'/yaml/input-and-output-are-strings.yaml']); diff --git a/src/Metadata/Tests/Extractor/yaml/hide-hydra-operation.yaml b/src/Metadata/Tests/Extractor/yaml/hide-hydra-operation.yaml new file mode 100644 index 0000000000..d4180f21bb --- /dev/null +++ b/src/Metadata/Tests/Extractor/yaml/hide-hydra-operation.yaml @@ -0,0 +1,17 @@ +resources: + ApiPlatform\Metadata\Tests\Fixtures\ApiResource\Program: + - hideHydraOperation: true + strictQueryParameterValidation: true + operations: + ApiPlatform\Metadata\Get: ~ + - uriTemplate: /programs + operations: + ApiPlatform\Metadata\GetCollection: + hideHydraOperation: true + - uriTemplate: /programs/visible + hideHydraOperation: true + strictQueryParameterValidation: true + operations: + ApiPlatform\Metadata\GetCollection: + hideHydraOperation: false + strictQueryParameterValidation: false