/** * Validates the request * @param Request $request * @param Response $response * @param callable|null $out * @inheritdoc */ public function __invoke(Request $request, Response $response, callable $out = null) { /** * @var ValidationResult $validationResult */ $validationResult = $this->validator->validate($request); if (!is_bool($validationResult) && $validationResult->notValid()) { $validationException = new ValidationFailedException(); $validationException->setValidationResult($validationResult); throw $validationException; } elseif (!is_bool($validationResult)) { // Valid return $out($validationResult->getRequest(), $response); } else { return $out($request, $response); } }
/** * @covers StdLib\Validator\Validator::validate */ public function testValidateValidationAppliedWithErrors() { /** * Apply the validation to the config */ $this->applyValidationConfig(); $optionExtractor = $this->getMockBuilder(OptionsExtractor::class)->disableOriginalConstructor()->getMock(); $entityManagerMock = $this->getMockBuilder(EntityManagerInterface::class)->getMock(); $validator = new Validator($optionExtractor, $this->router, $entityManagerMock); /** * @var ValidationResultInterface $validationResult */ $validationResult = $validator->validate($this->createRequest(static::$urlInvalid)); $exceptionValidator = new ValidationFailedException(); $exceptionValidator->setValidationResult($validationResult); $this->assertEquals($exceptionValidator->getValidationResult(), $validationResult); }