From 6fc1cc3ec3830aa1a1b2e078a81125fd52f957ef Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 4 Apr 2018 08:24:09 +0200 Subject: [PATCH] added some validation --- .../HttpCodeActivationStrategy.php | 16 +++++++++++-- .../HttpCodeActivationStrategyTest.php | 24 +++++++++++++++---- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php b/src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php index a8cc8a0f11..561af6f394 100644 --- a/src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php +++ b/src/Symfony/Bridge/Monolog/Handler/FingersCrossed/HttpCodeActivationStrategy.php @@ -25,8 +25,20 @@ class HttpCodeActivationStrategy extends ErrorLevelActivationStrategy private $exclusions; private $requestStack; + /** + * @param array $exclusions each exclusion must have a "code" and "urls" keys + */ public function __construct(RequestStack $requestStack, array $exclusions, $actionLevel) { + foreach ($exclusions as $exclusion) { + if (!array_key_exists('code', $exclusion)) { + throw new \LogicException(sprintf('An exclusion must have a "code" key')); + } + if (!array_key_exists('urls', $exclusion)) { + throw new \LogicException(sprintf('An exclusion must have a "urls" key')); + } + } + parent::__construct($actionLevel); $this->requestStack = $requestStack; @@ -49,8 +61,8 @@ class HttpCodeActivationStrategy extends ErrorLevelActivationStrategy } $urlBlacklist = null; - if (count($exclusion['url'])) { - return !preg_match('{('.implode('|', $exclusion['url']).')}i', $request->getPathInfo()); + if (count($exclusion['urls'])) { + return !preg_match('{('.implode('|', $exclusion['urls']).')}i', $request->getPathInfo()); } return false; diff --git a/src/Symfony/Bridge/Monolog/Tests/Handler/FingersCrossed/HttpCodeActivationStrategyTest.php b/src/Symfony/Bridge/Monolog/Tests/Handler/FingersCrossed/HttpCodeActivationStrategyTest.php index 18ad0a2c3d..9f0b0b3735 100644 --- a/src/Symfony/Bridge/Monolog/Tests/Handler/FingersCrossed/HttpCodeActivationStrategyTest.php +++ b/src/Symfony/Bridge/Monolog/Tests/Handler/FingersCrossed/HttpCodeActivationStrategyTest.php @@ -20,6 +20,22 @@ use Symfony\Component\HttpKernel\Exception\HttpException; class HttpCodeActivationStrategyTest extends TestCase { + /** + * @expectedException \LogicException + */ + public function testExclusionsWithoutCode() + { + new HttpCodeActivationStrategy(new RequestStack(), array(array('urls' => array())), Logger::WARNING); + } + + /** + * @expectedException \LogicException + */ + public function testExclusionsWithoutUrls() + { + new HttpCodeActivationStrategy(new RequestStack(), array(array('code' => 404)), Logger::WARNING); + } + /** * @dataProvider isActivatedProvider */ @@ -31,10 +47,10 @@ class HttpCodeActivationStrategyTest extends TestCase $strategy = new HttpCodeActivationStrategy( $requestStack, array( - array('code' => 403, 'url' => array()), - array('code' => 404, 'url' => array()), - array('code' => 405, 'url' => array()), - array('code' => 400, 'url' => array('^/400/a', '^/400/b')), + array('code' => 403, 'urls' => array()), + array('code' => 404, 'urls' => array()), + array('code' => 405, 'urls' => array()), + array('code' => 400, 'urls' => array('^/400/a', '^/400/b')), ), Logger::WARNING );