require 'helper' class TestSlimCodeEscaping < TestSlim def test_escaping_evil_method source = %q{ p = evil_method } assert_html '

<script>do_something_evil();</script>

', source end def test_render_without_html_safe source = %q{ p = "Hello World\\n, meet \\"Slim\\"." } assert_html "

<strong>Hello World\n, meet \"Slim\"</strong>.

", source end def test_render_without_html_safe2 source = %q{ p = "Hello World\\n, meet 'Slim'." } assert_html "

<strong>Hello World\n, meet 'Slim'</strong>.

", source end def test_render_with_html_safe_false source = %q{ p = "Hello World\\n, meet \\"Slim\\"." } with_html_safe do assert_html "

<strong>Hello World\n, meet \"Slim\"</strong>.

", source, use_html_safe: true end end def test_render_with_html_safe_true source = %q{ p = "Hello World\\n, meet \\"Slim\\".".html_safe } with_html_safe do assert_html "

Hello World\n, meet \"Slim\".

", source, use_html_safe: true end end def test_render_splat_with_html_safe_true source = %q{ p *{ title: '&'.html_safe } } with_html_safe do assert_html "

", source, use_html_safe: true end end def test_render_splat_with_html_safe_false source = %q{ p *{ title: '&' } } with_html_safe do assert_html "

", source, use_html_safe: true end end def test_render_splat_injecting_evil_attr_name source = %q{ p *{ ">

'test' } } with_html_safe do assert_raises Slim::InvalidAttributeNameError do render(source, use_html_safe: true) end end end def test_render_attribute_with_html_safe_true source = %q{ p title=('&'.html_safe) } with_html_safe do assert_html "

", source, use_html_safe: true end end def test_render_with_disable_escape_false source = %q{ = "

Hello

" == "

World

" } assert_html "<p>Hello</p>

World

", source end def test_render_with_disable_escape_true source = %q{ = "

Hello

" == "

World

" } assert_html "

Hello

World

", source, disable_escape: true end def test_escaping_evil_method_with_pretty source = %q{ p = evil_method } assert_html "

\n <script>do_something_evil();</script>\n

", source, pretty: true end def test_render_without_html_safe_with_pretty source = %q{ p = "Hello World\\n, meet \\"Slim\\"." } assert_html "

\n <strong>Hello World\n , meet \"Slim\"</strong>.\n

", source, pretty: true end def test_render_with_html_safe_false_with_pretty source = %q{ p = "Hello World\\n, meet \\"Slim\\"." } with_html_safe do assert_html "

\n <strong>Hello World\n , meet \"Slim\"</strong>.\n

", source, use_html_safe: true, pretty: true end end def test_render_with_html_safe_true_with_pretty source = %q{ p = "Hello World\\n, meet \\"Slim\\".".html_safe } with_html_safe do assert_html "

\n Hello World\n , meet \"Slim\".\n

", source, use_html_safe: true, pretty: true end end def test_render_with_disable_escape_false_with_pretty source = %q{ = "

Hello

" == "

World

" } assert_html "<p>Hello</p>

World

", source, pretty: true end def test_render_with_disable_escape_true_with_pretty source = %q{ = "

Hello

" == "

World

" } assert_html "

Hello

World

", source, disable_escape: true, pretty: true end end