Example #1
0
 public function testSandboxGloballySet()
 {
     $twig = $this->getEnvironment(false, array(), self::$templates);
     $this->assertEquals('FOO', $twig->loadTemplate('1_basic')->render(self::$params), 'Sandbox does nothing if it is disabled globally');
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic1')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed method is called');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic2')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed filter is called');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic3')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed tag is used in the template');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic4')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed property is called in the template');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic5')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed method (__toString()) is called in the template');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic6')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed method (__toString()) is called in the template');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates);
     try {
         $twig->loadTemplate('1_basic7')->render(self::$params);
         $this->fail('Sandbox throws a SecurityError exception if an unallowed function is called in the template');
     } catch (Twig_Sandbox_SecurityError $e) {
     }
     $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => 'foo'));
     FooObject::reset();
     $this->assertEquals('foo', $twig->loadTemplate('1_basic1')->render(self::$params), 'Sandbox allow some methods');
     $this->assertEquals(1, FooObject::$called['foo'], 'Sandbox only calls method once');
     $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => '__toString'));
     FooObject::reset();
     $this->assertEquals('foo', $twig->loadTemplate('1_basic5')->render(self::$params), 'Sandbox allow some methods');
     $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once');
     $twig = $this->getEnvironment(true, array(), self::$templates, array(), array('upper'));
     $this->assertEquals('FABIEN', $twig->loadTemplate('1_basic2')->render(self::$params), 'Sandbox allow some filters');
     $twig = $this->getEnvironment(true, array(), self::$templates, array('if'));
     $this->assertEquals('foo', $twig->loadTemplate('1_basic3')->render(self::$params), 'Sandbox allow some tags');
     $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array(), array('FooObject' => 'bar'));
     $this->assertEquals('bar', $twig->loadTemplate('1_basic4')->render(self::$params), 'Sandbox allow some properties');
     $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array(), array(), array('cycle'));
     $this->assertEquals('bar', $twig->loadTemplate('1_basic7')->render(self::$params), 'Sandbox allow some functions');
     foreach (array('getfoobar', 'getFoobar', 'getFooBar') as $name) {
         $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => $name));
         FooObject::reset();
         $this->assertEquals('foobarfoobar', $twig->loadTemplate('1_basic8')->render(self::$params), 'Sandbox allow methods in a case-insensitive way');
         $this->assertEquals(2, FooObject::$called['getFooBar'], 'Sandbox only calls method once');
     }
 }
Example #2
0
 public function testSandboxAllowFunctionsCaseInsensitive()
 {
     foreach (array('getfoobar', 'getFoobar', 'getFooBar') as $name) {
         $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => $name));
         FooObject::reset();
         $this->assertEquals('foobarfoobar', $twig->loadTemplate('1_basic8')->render(self::$params), 'Sandbox allow methods in a case-insensitive way');
         $this->assertEquals(2, FooObject::$called['getFooBar'], 'Sandbox only calls method once');
         $this->assertEquals('foobarfoobar', $twig->loadTemplate('1_basic9')->render(self::$params), 'Sandbox allow methods via shortcut names (ie. without get/set)');
     }
 }