Skip to content

Commit ab48a49

Browse files
More test around excaping
1 parent feb046f commit ab48a49

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

tests/filters/test_default_if_none.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,45 @@ def test_default_if_none_preserves_html_safe_value(assert_render):
5555
)
5656

5757

58+
@pytest.mark.parametrize(
59+
"template,context,expected",
60+
[
61+
pytest.param(
62+
"{% autoescape on %}{{ value|default_if_none:'default' }}{% endautoescape %}",
63+
{"value": "<b>html</b>"},
64+
"&lt;b&gt;html&lt;/b&gt;",
65+
id="autoescape_html_value",
66+
),
67+
pytest.param(
68+
"{% autoescape on %}{{ value|default_if_none:default }}{% endautoescape %}",
69+
{"value": None, "default": "<b>default</b>"},
70+
"&lt;b&gt;default&lt;/b&gt;",
71+
id="autoescape_html_default_variable",
72+
),
73+
pytest.param(
74+
"{{ value|default_if_none:'<b>default</b>'|escape }}",
75+
{"value": None},
76+
"<b>default</b>",
77+
id="explicit_default_str_literal_never_escaped",
78+
),
79+
pytest.param(
80+
"{{ value|default_if_none:default|escape }}",
81+
{"value": None, "default": "<b>default</b>"},
82+
"&lt;b&gt;default&lt;/b&gt;",
83+
id="explicit_escape_html_default_variable",
84+
),
85+
pytest.param(
86+
"{% autoescape on %}{{ value|default_if_none:default|safe }}{% endautoescape %}",
87+
{"value": None, "default": "<b>default</b>"},
88+
"<b>default</b>",
89+
id="safe_prevents_escape_default",
90+
),
91+
],
92+
)
93+
def test_default_if_none_html_escaping(assert_render, template, context, expected):
94+
assert_render(template=template, context=context, expected=expected)
95+
96+
5897
def test_default_if_none_with_forloop_variable(assert_render):
5998
template = "{% for x in items %}{{ x|default_if_none:forloop.counter }}{% endfor %}"
6099
assert_render(

0 commit comments

Comments
 (0)