'1_layout' => '{% block content %}{% endblock %}',
'1_child' => "{% extends \"1_layout\" %}\n{% block content %}\n{{ \"a\"|json_encode }}\n{% endblock %}",
'1_include' => '{{ include("1_basic1", sandboxed=true) }}',
+ '1_range_operator' => '{{ (1..2)[0] }}',
);
}
}
}
+ public function testSandboxUnallowedRangeOperator()
+ {
+ $twig = $this->getEnvironment(true, array(), self::$templates);
+ try {
+ $twig->loadTemplate('1_range_operator')->render(self::$params);
+ $this->fail('Sandbox throws a SecurityError exception if the unallowed range operator is called');
+ } catch (Twig_Sandbox_SecurityError $e) {
+ $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedFunctionError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFunctionError');
+ $this->assertEquals('range', $e->getFunctionName(), 'Exception should be raised on the "range" function');
+ }
+ }
+
public function testSandboxAllowMethodFoo()
{
$twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => 'foo'));
$this->assertEquals('bar', $twig->loadTemplate('1_basic7')->render(self::$params), 'Sandbox allow some functions');
}
+ public function testSandboxAllowRangeOperator()
+ {
+ $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array(), array(), array('range'));
+ $this->assertEquals('1', $twig->loadTemplate('1_range_operator')->render(self::$params), 'Sandbox allow the range operator');
+ }
+
public function testSandboxAllowFunctionsCaseInsensitive()
{
foreach (array('getfoobar', 'getFoobar', 'getFooBar') as $name) {
} catch (Throwable $e) {
} catch (Exception $e) {
}
- if ($e === null) {
+ if (null === $e) {
$this->fail('An exception should be thrown for this test to be valid.');
}