annotate genshi/filters/tests/html.py @ 820:1837f39efd6f experimental-inline

Sync (old) experimental inline branch with trunk@1027.
author cmlenz
date Wed, 11 Mar 2009 17:51:06 +0000
parents 0742f421caba
children 09cc3627654c
rev   line source
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
2 #
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
3 # Copyright (C) 2006-2008 Edgewall Software
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
4 # All rights reserved.
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
5 #
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
8 # are also available at http://genshi.edgewall.org/wiki/License.
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
9 #
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
12 # history and logs, available at http://genshi.edgewall.org/log/.
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
13
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
14 import doctest
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
15 import unittest
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
16
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
17 from genshi.input import HTML, ParseError
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
18 from genshi.filters.html import HTMLFormFiller, HTMLSanitizer
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
19 from genshi.template import MarkupTemplate
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
20
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
21 class HTMLFormFillerTestCase(unittest.TestCase):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
22
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
23 def test_fill_input_text_no_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
24 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
25 <input type="text" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
26 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
27 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
28 <input type="text" name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
29 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
30
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
31 def test_fill_input_text_single_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
32 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
33 <input type="text" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
34 </p></form>""") | HTMLFormFiller(data={'foo': 'bar'})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
35 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
36 <input type="text" name="foo" value="bar"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
37 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
38
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
39 def test_fill_input_text_multi_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
40 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
41 <input type="text" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
42 </p></form>""") | HTMLFormFiller(data={'foo': ['bar']})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
43 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
44 <input type="text" name="foo" value="bar"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
45 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
46
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
47 def test_fill_input_hidden_no_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
48 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
49 <input type="hidden" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
50 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
51 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
52 <input type="hidden" name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
53 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
54
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
55 def test_fill_input_hidden_single_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
56 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
57 <input type="hidden" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
58 </p></form>""") | HTMLFormFiller(data={'foo': 'bar'})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
59 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
60 <input type="hidden" name="foo" value="bar"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
61 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
62
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
63 def test_fill_input_hidden_multi_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
64 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
65 <input type="hidden" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
66 </p></form>""") | HTMLFormFiller(data={'foo': ['bar']})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
67 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
68 <input type="hidden" name="foo" value="bar"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
69 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
70
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
71 def test_fill_textarea_no_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
72 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
73 <textarea name="foo"></textarea>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
74 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
75 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
76 <textarea name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
77 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
78
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
79 def test_fill_textarea_single_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
80 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
81 <textarea name="foo"></textarea>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
82 </p></form>""") | HTMLFormFiller(data={'foo': 'bar'})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
83 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
84 <textarea name="foo">bar</textarea>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
85 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
86
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
87 def test_fill_textarea_multi_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
88 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
89 <textarea name="foo"></textarea>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
90 </p></form>""") | HTMLFormFiller(data={'foo': ['bar']})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
91 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
92 <textarea name="foo">bar</textarea>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
93 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
94
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
95 def test_fill_input_checkbox_no_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
96 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
97 <input type="checkbox" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
98 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
99 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
100 <input type="checkbox" name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
101 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
102
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
103 def test_fill_input_checkbox_single_value_auto(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
104 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
105 <input type="checkbox" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
106 </p></form>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
107 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
108 <input type="checkbox" name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
109 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': ''})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
110 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
111 <input type="checkbox" name="foo" checked="checked"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
112 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': 'on'})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
113
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
114 def test_fill_input_checkbox_single_value_defined(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
115 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
116 <input type="checkbox" name="foo" value="1" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
117 </p></form>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
118 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
119 <input type="checkbox" name="foo" value="1" checked="checked"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
120 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': '1'})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
121 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
122 <input type="checkbox" name="foo" value="1"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
123 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': '2'})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
124
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
125 def test_fill_input_checkbox_multi_value_auto(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
126 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
127 <input type="checkbox" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
128 </p></form>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
129 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
130 <input type="checkbox" name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
131 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': []})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
132 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
133 <input type="checkbox" name="foo" checked="checked"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
134 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': ['on']})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
135
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
136 def test_fill_input_checkbox_multi_value_defined(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
137 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
138 <input type="checkbox" name="foo" value="1" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
139 </p></form>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
140 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
141 <input type="checkbox" name="foo" value="1" checked="checked"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
142 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': ['1']})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
143 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
144 <input type="checkbox" name="foo" value="1"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
145 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': ['2']})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
146
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
147 def test_fill_input_radio_no_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
148 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
149 <input type="radio" name="foo" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
150 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
151 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
152 <input type="radio" name="foo"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
153 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
154
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
155 def test_fill_input_radio_single_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
156 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
157 <input type="radio" name="foo" value="1" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
158 </p></form>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
159 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
160 <input type="radio" name="foo" value="1" checked="checked"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
161 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': '1'})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
162 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
163 <input type="radio" name="foo" value="1"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
164 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': '2'})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
165
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
166 def test_fill_input_radio_multi_value(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
167 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
168 <input type="radio" name="foo" value="1" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
169 </p></form>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
170 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
171 <input type="radio" name="foo" value="1" checked="checked"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
172 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': ['1']})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
173 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
174 <input type="radio" name="foo" value="1"/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
175 </p></form>""", unicode(html | HTMLFormFiller(data={'foo': ['2']})))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
176
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
177 def test_fill_select_no_value_auto(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
178 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
179 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
180 <option>1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
181 <option>2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
182 <option>3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
183 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
184 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
185 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
186 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
187 <option>1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
188 <option>2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
189 <option>3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
190 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
191 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
192
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
193 def test_fill_select_no_value_defined(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
194 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
195 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
196 <option value="1">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
197 <option value="2">2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
198 <option value="3">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
199 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
200 </p></form>""") | HTMLFormFiller()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
201 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
202 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
203 <option value="1">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
204 <option value="2">2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
205 <option value="3">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
206 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
207 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
208
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
209 def test_fill_select_single_value_auto(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
210 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
211 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
212 <option>1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
213 <option>2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
214 <option>3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
215 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
216 </p></form>""") | HTMLFormFiller(data={'foo': '1'})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
217 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
218 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
219 <option selected="selected">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
220 <option>2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
221 <option>3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
222 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
223 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
224
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
225 def test_fill_select_single_value_defined(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
226 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
227 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
228 <option value="1">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
229 <option value="2">2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
230 <option value="3">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
231 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
232 </p></form>""") | HTMLFormFiller(data={'foo': '1'})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
233 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
234 <select name="foo">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
235 <option value="1" selected="selected">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
236 <option value="2">2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
237 <option value="3">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
238 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
239 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
240
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
241 def test_fill_select_multi_value_auto(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
242 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
243 <select name="foo" multiple>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
244 <option>1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
245 <option>2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
246 <option>3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
247 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
248 </p></form>""") | HTMLFormFiller(data={'foo': ['1', '3']})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
249 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
250 <select name="foo" multiple="multiple">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
251 <option selected="selected">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
252 <option>2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
253 <option selected="selected">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
254 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
255 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
256
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
257 def test_fill_select_multi_value_defined(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
258 html = HTML("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
259 <select name="foo" multiple>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
260 <option value="1">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
261 <option value="2">2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
262 <option value="3">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
263 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
264 </p></form>""") | HTMLFormFiller(data={'foo': ['1', '3']})
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
265 self.assertEquals("""<form><p>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
266 <select name="foo" multiple="multiple">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
267 <option value="1" selected="selected">1</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
268 <option value="2">2</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
269 <option value="3" selected="selected">3</option>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
270 </select>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
271 </p></form>""", unicode(html))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
272
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
273 def test_fill_option_segmented_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
274 html = MarkupTemplate("""<form>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
275 <select name="foo">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
276 <option value="1">foo $x</option>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
277 </select>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
278 </form>""").generate(x=1) | HTMLFormFiller(data={'foo': '1'})
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
279 self.assertEquals("""<form>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
280 <select name="foo">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
281 <option value="1" selected="selected">foo 1</option>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
282 </select>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
283 </form>""", unicode(html))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
284
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
285 def test_fill_option_segmented_text_no_value(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
286 html = MarkupTemplate("""<form>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
287 <select name="foo">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
288 <option>foo $x bar</option>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
289 </select>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
290 </form>""").generate(x=1) | HTMLFormFiller(data={'foo': 'foo 1 bar'})
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
291 self.assertEquals("""<form>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
292 <select name="foo">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
293 <option selected="selected">foo 1 bar</option>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
294 </select>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
295 </form>""", unicode(html))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
296
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
297 def test_fill_option_unicode_value(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
298 html = HTML(u"""<form>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
299 <select name="foo">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
300 <option value="&ouml;">foo</option>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
301 </select>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
302 </form>""") | HTMLFormFiller(data={'foo': u'ƶ'})
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
303 self.assertEquals(u"""<form>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
304 <select name="foo">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
305 <option value="ƶ" selected="selected">foo</option>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
306 </select>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
307 </form>""", unicode(html))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
308
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
309
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
310 class HTMLSanitizerTestCase(unittest.TestCase):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
311
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
312 def test_sanitize_unchanged(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
313 html = HTML('<a href="#">fo<br />o</a>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
314 self.assertEquals(u'<a href="#">fo<br/>o</a>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
315 unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
316
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
317 def test_sanitize_escape_text(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
318 html = HTML('<a href="#">fo&amp;</a>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
319 self.assertEquals(u'<a href="#">fo&amp;</a>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
320 unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
321 html = HTML('<a href="#">&lt;foo&gt;</a>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
322 self.assertEquals(u'<a href="#">&lt;foo&gt;</a>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
323 unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
324
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
325 def test_sanitize_entityref_text(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
326 html = HTML('<a href="#">fo&ouml;</a>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
327 self.assertEquals(u'<a href="#">foƶ</a>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
328 unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
329
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
330 def test_sanitize_escape_attr(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
331 html = HTML('<div title="&lt;foo&gt;"></div>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
332 self.assertEquals(u'<div title="&lt;foo&gt;"/>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
333 unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
334
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
335 def test_sanitize_close_empty_tag(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
336 html = HTML('<a href="#">fo<br>o</a>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
337 self.assertEquals(u'<a href="#">fo<br/>o</a>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
338 unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
339
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
340 def test_sanitize_invalid_entity(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
341 html = HTML('&junk;')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
342 self.assertEquals('&amp;junk;', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
343
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
344 def test_sanitize_remove_script_elem(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
345 html = HTML('<script>alert("Foo")</script>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
346 self.assertEquals(u'', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
347 html = HTML('<SCRIPT SRC="http://example.com/"></SCRIPT>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
348 self.assertEquals(u'', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
349 self.assertRaises(ParseError, HTML, '<SCR\0IPT>alert("foo")</SCR\0IPT>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
350 self.assertRaises(ParseError, HTML,
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
351 '<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
352
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
353 def test_sanitize_remove_onclick_attr(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
354 html = HTML('<div onclick=\'alert("foo")\' />')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
355 self.assertEquals(u'<div/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
356
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
357 def test_sanitize_remove_comments(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
358 html = HTML('''<div><!-- conditional comment crap --></div>''')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
359 self.assertEquals(u'<div/>', unicode(html | HTMLSanitizer()))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
360
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
361 def test_sanitize_remove_style_scripts(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
362 sanitizer = HTMLSanitizer(safe_attrs=HTMLSanitizer.SAFE_ATTRS | set(['style']))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
363 # Inline style with url() using javascript: scheme
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
364 html = HTML('<DIV STYLE=\'background: url(javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
365 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
366 # Inline style with url() using javascript: scheme, using control char
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
367 html = HTML('<DIV STYLE=\'background: url(&#1;javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
368 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
369 # Inline style with url() using javascript: scheme, in quotes
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
370 html = HTML('<DIV STYLE=\'background: url("javascript:alert(foo)")\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
371 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
372 # IE expressions in CSS not allowed
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
373 html = HTML('<DIV STYLE=\'width: expression(alert("foo"));\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
374 self.assertEquals(u'<div/>', unicode(html | sanitizer))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
375 html = HTML('<DIV STYLE=\'width: e/**/xpression(alert("foo"));\'>')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
376 self.assertEquals(u'<div/>', unicode(html | sanitizer))
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
377 html = HTML('<DIV STYLE=\'background: url(javascript:alert("foo"));'
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
378 'color: #fff\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
379 self.assertEquals(u'<div style="color: #fff"/>',
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
380 unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
381 # Inline style with url() using javascript: scheme, using unicode
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
382 # escapes
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
383 html = HTML('<DIV STYLE=\'background: \\75rl(javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
384 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
385 html = HTML('<DIV STYLE=\'background: \\000075rl(javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
386 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
387 html = HTML('<DIV STYLE=\'background: \\75 rl(javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
388 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
389 html = HTML('<DIV STYLE=\'background: \\000075 rl(javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
390 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
391 html = HTML('<DIV STYLE=\'background: \\000075\r\nrl(javascript:alert("foo"))\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
392 self.assertEquals(u'<div/>', unicode(html | sanitizer))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
393
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
394 def test_sanitize_remove_src_javascript(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
395 html = HTML('<img src=\'javascript:alert("foo")\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
396 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
397 # Case-insensitive protocol matching
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
398 html = HTML('<IMG SRC=\'JaVaScRiPt:alert("foo")\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
399 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
400 # Grave accents (not parsed)
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
401 self.assertRaises(ParseError, HTML,
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
402 '<IMG SRC=`javascript:alert("RSnake says, \'foo\'")`>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
403 # Protocol encoded using UTF-8 numeric entities
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
404 html = HTML('<IMG SRC=\'&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;'
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
405 '&#112;&#116;&#58;alert("foo")\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
406 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
407 # Protocol encoded using UTF-8 numeric entities without a semicolon
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
408 # (which is allowed because the max number of digits is used)
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
409 html = HTML('<IMG SRC=\'&#0000106&#0000097&#0000118&#0000097'
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
410 '&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116'
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
411 '&#0000058alert("foo")\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
412 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
413 # Protocol encoded using UTF-8 numeric hex entities without a semicolon
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
414 # (which is allowed because the max number of digits is used)
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
415 html = HTML('<IMG SRC=\'&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69'
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
416 '&#x70&#x74&#x3A;alert("foo")\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
417 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
418 # Embedded tab character in protocol
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
419 html = HTML('<IMG SRC=\'jav\tascript:alert("foo");\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
420 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
421 # Embedded tab character in protocol, but encoded this time
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
422 html = HTML('<IMG SRC=\'jav&#x09;ascript:alert("foo");\'>')
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
423 self.assertEquals(u'<img/>', unicode(html | HTMLSanitizer()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
424
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
425
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
426 def suite():
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
427 suite = unittest.TestSuite()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
428 suite.addTest(doctest.DocTestSuite(HTMLFormFiller.__module__))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
429 suite.addTest(unittest.makeSuite(HTMLFormFillerTestCase, 'test'))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
430 suite.addTest(unittest.makeSuite(HTMLSanitizerTestCase, 'test'))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
431 return suite
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
432
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
433 if __name__ == '__main__':
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
434 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software