Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
namespace Syna\Test\View;
use Syna\Factory;
use Syna\Test\TestCase;
use Mockery as m;
use Syna\ViewLocator;
class EscapingTest extends TestCase
{
/** @var m\Mock|Factory */
protected $factory;
protected function setUp()
{
parent::setUp();
$this->factory = m::mock(Factory::class, [new ViewLocator($this->templatePath)])->makePartial();
}
/** @test */
public function usingEscapeMethod()
{
$this->createTemplate('escape.php', '<?= $v->escape("<p class=\\"intro\\">Lorem ipsum</p>") ?>');
$view = $this->factory->view('escape');
$result = $view->render();
self::assertSame('<p class="intro">Lorem ipsum</p>', $result);
}
/** @test */
public function usingDollarE()
{
$this->createTemplate('escape.php', '<?= $e("<p class=\\"intro\\">Lorem ipsum</p>") ?>');
$view = $this->factory->view('escape');
$result = $view->render();
self::assertSame('<p class="intro">Lorem ipsum</p>', $result);
}
/** @test */
public function batchProcessingBeforeEscaping()
{
$this->createTemplate('escape.php', '<?= $e($title, "strtoupper") ?>');
$view = $this->factory->view('escape');
$result = $view->render(['title' => 'Lorem & Ipsum']);
self::assertSame('LOREM & IPSUM', $result);
}
}