added some validation
This commit is contained in:
parent
c11a8eb92e
commit
6fc1cc3ec3
@ -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;
|
||||
|
@ -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
|
||||
);
|
||||
|
Reference in New Issue
Block a user