1111from django .test import RequestFactory
1212from django .test .utils import override_settings
1313from django .utils .encoding import force_str
14- from django .utils .html import strip_tags
14+ from django .utils .html import escape
1515from django .utils .timezone import now
1616from django .utils .translation import override as force_language
1717from djangocms_text_ckeditor .cms_plugins import TextPlugin
18- from djangocms_text_ckeditor .models import Text
1918from sekizai .context import SekizaiContext
2019
2120import cms
@@ -139,6 +138,7 @@ def test_unicode_placeholder_name_fails_fast(self):
139138 def test_page_attribute_tag_escapes_content (self ):
140139 script = '<script>alert("XSS");</script>'
141140 ampersand = 'Q&A page'
141+ partial = '"><img src=x onerror=alert(1) "'
142142
143143 class FakePage :
144144 def __init__ (self , title ):
@@ -159,11 +159,14 @@ def __init__(self, page):
159159 template = '{% load cms_tags %}{% page_attribute page_title %}'
160160 output_script = self .render_template_obj (template , {}, request_script )
161161 output_ampersand = self .render_template_obj (template , {}, request_ampersand )
162+ output_partial = self .render_template_obj (template , {}, FakeRequest (FakePage (partial )))
162163
163164 self .assertNotEqual (script , output_script )
164- self .assertEqual (ampersand , output_ampersand )
165- self .assertEqual (strip_tags (script ), output_script )
166- self .assertEqual (strip_tags (ampersand ), output_ampersand )
165+ self .assertNotEqual (ampersand , output_ampersand )
166+ self .assertNotEqual (partial , output_partial )
167+ self .assertEqual (escape (script ), output_script )
168+ self .assertEqual (escape (ampersand ), output_ampersand )
169+ self .assertEqual (escape (partial ), output_partial )
167170
168171 def test_json_encoder (self ):
169172 self .assertEqual (json_filter (True ), 'true' )
0 commit comments