From 90e530978d590a5bdcf75525aa03f844766018b8 Mon Sep 17 00:00:00 2001 From: Gabriel Hurley Date: Sat, 3 Nov 2012 13:06:57 -0700 Subject: Fixed #18210 -- Escaped special characters in reverse prefixes. Ensured that special characters passed in to reverse via the prefix argument are properly escaped so that calls to django.utils.regex_helpers.normalize and/or string formatting operations don't result in exceptions. Thanks to toofishes for the error report. --- tests/regressiontests/urlpatterns_reverse/tests.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'tests') diff --git a/tests/regressiontests/urlpatterns_reverse/tests.py b/tests/regressiontests/urlpatterns_reverse/tests.py index 234897d267..85f18db4c5 100644 --- a/tests/regressiontests/urlpatterns_reverse/tests.py +++ b/tests/regressiontests/urlpatterns_reverse/tests.py @@ -171,6 +171,18 @@ class URLPatternReverse(TestCase): # Reversing None should raise an error, not return the last un-named view. self.assertRaises(NoReverseMatch, reverse, None) + def test_prefix_braces(self): + self.assertEqual('/%7B%7Binvalid%7D%7D/includes/non_path_include/', + reverse('non_path_include', prefix='/{{invalid}}/')) + + def test_prefix_parenthesis(self): + self.assertEqual('/bogus%29/includes/non_path_include/', + reverse('non_path_include', prefix='/bogus)/')) + + def test_prefix_format_char(self): + self.assertEqual('/bump%2520map/includes/non_path_include/', + reverse('non_path_include', prefix='/bump%20map/')) + class ResolverTests(unittest.TestCase): def test_resolver_repr(self): """ -- cgit v1.3