added some validation
This commit is contained in:
parent
c11a8eb92e
commit
6fc1cc3ec3
@ -25,8 +25,20 @@ class HttpCodeActivationStrategy extends ErrorLevelActivationStrategy
|
|||||||
private $exclusions;
|
private $exclusions;
|
||||||
private $requestStack;
|
private $requestStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $exclusions each exclusion must have a "code" and "urls" keys
|
||||||
|
*/
|
||||||
public function __construct(RequestStack $requestStack, array $exclusions, $actionLevel)
|
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);
|
parent::__construct($actionLevel);
|
||||||
|
|
||||||
$this->requestStack = $requestStack;
|
$this->requestStack = $requestStack;
|
||||||
@ -49,8 +61,8 @@ class HttpCodeActivationStrategy extends ErrorLevelActivationStrategy
|
|||||||
}
|
}
|
||||||
|
|
||||||
$urlBlacklist = null;
|
$urlBlacklist = null;
|
||||||
if (count($exclusion['url'])) {
|
if (count($exclusion['urls'])) {
|
||||||
return !preg_match('{('.implode('|', $exclusion['url']).')}i', $request->getPathInfo());
|
return !preg_match('{('.implode('|', $exclusion['urls']).')}i', $request->getPathInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -20,6 +20,22 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
|
|||||||
|
|
||||||
class HttpCodeActivationStrategyTest extends TestCase
|
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
|
* @dataProvider isActivatedProvider
|
||||||
*/
|
*/
|
||||||
@ -31,10 +47,10 @@ class HttpCodeActivationStrategyTest extends TestCase
|
|||||||
$strategy = new HttpCodeActivationStrategy(
|
$strategy = new HttpCodeActivationStrategy(
|
||||||
$requestStack,
|
$requestStack,
|
||||||
array(
|
array(
|
||||||
array('code' => 403, 'url' => array()),
|
array('code' => 403, 'urls' => array()),
|
||||||
array('code' => 404, 'url' => array()),
|
array('code' => 404, 'urls' => array()),
|
||||||
array('code' => 405, 'url' => array()),
|
array('code' => 405, 'urls' => array()),
|
||||||
array('code' => 400, 'url' => array('^/400/a', '^/400/b')),
|
array('code' => 400, 'urls' => array('^/400/a', '^/400/b')),
|
||||||
),
|
),
|
||||||
Logger::WARNING
|
Logger::WARNING
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user