@@ -336,6 +336,12 @@ def test_localization(self):
336
336
337
337
338
338
class AdminURLWidgetTest(SimpleTestCase):
339
+
def test_get_context_validates_url(self):
340
+
w = widgets.AdminURLFieldWidget()
341
+
for invalid in ['', '/not/a/full/url/', 'javascript:alert("Danger XSS!")']:
342
+
self.assertFalse(w.get_context('name', invalid, {})['url_valid'])
343
+
self.assertTrue(w.get_context('name', 'http://example.com', {})['url_valid'])
344
+
339
345
def test_render(self):
340
346
w = widgets.AdminURLFieldWidget()
341
347
self.assertHTMLEqual(
@@ -369,31 +375,31 @@ def test_render_quoting(self):
369
375
VALUE_RE = re.compile('value="([^"]+)"')
370
376
TEXT_RE = re.compile('<a[^>]+>([^>]+)</a>')
371
377
w = widgets.AdminURLFieldWidget()
372
-
output = w.render('test', 'http://example.com/<sometag>some text</sometag>')
378
+
output = w.render('test', 'http://example.com/<sometag>some-text</sometag>')
373
379
self.assertEqual(
374
380
HREF_RE.search(output).groups()[0],
375
-
'http://example.com/%3Csometag%3Esome%20text%3C/sometag%3E',
381
+
'http://example.com/%3Csometag%3Esome-text%3C/sometag%3E',
376
382
)
377
383
self.assertEqual(
378
384
TEXT_RE.search(output).groups()[0],
379
-
'http://example.com/<sometag>some text</sometag>',
385
+
'http://example.com/<sometag>some-text</sometag>',
380
386
)
381
387
self.assertEqual(
382
388
VALUE_RE.search(output).groups()[0],
383
-
'http://example.com/<sometag>some text</sometag>',
389
+
'http://example.com/<sometag>some-text</sometag>',
384
390
)
385
-
output = w.render('test', 'http://example-äüö.com/<sometag>some text</sometag>')
391
+
output = w.render('test', 'http://example-äüö.com/<sometag>some-text</sometag>')
386
392
self.assertEqual(
387
393
HREF_RE.search(output).groups()[0],
388
-
'http://xn--example--7za4pnc.com/%3Csometag%3Esome%20text%3C/sometag%3E',
394
+
'http://xn--example--7za4pnc.com/%3Csometag%3Esome-text%3C/sometag%3E',
389
395
)
390
396
self.assertEqual(
391
397
TEXT_RE.search(output).groups()[0],
392
-
'http://example-äüö.com/<sometag>some text</sometag>',
398
+
'http://example-äüö.com/<sometag>some-text</sometag>',
393
399
)
394
400
self.assertEqual(
395
401
VALUE_RE.search(output).groups()[0],
396
-
'http://example-äüö.com/<sometag>some text</sometag>',
402
+
'http://example-äüö.com/<sometag>some-text</sometag>',
397
403
)
398
404
output = w.render('test', 'http://www.example.com/%C3%A4"><script>alert("XSS!")</script>"')
399
405
self.assertEqual(
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4