fix: falcon.percent_escape messing up query strings
This commit is contained in:
@@ -37,7 +37,7 @@ from falcon.api import API, DEFAULT_MEDIA_TYPE # NOQA
|
||||
from falcon.status_codes import * # NOQA
|
||||
from falcon.exceptions import * # NOQA
|
||||
from falcon.http_error import HTTPError # NOQA
|
||||
from falcon.util import dt_to_http, http_date_to_dt, to_query_str # NOQA
|
||||
from falcon.util import * # NOQA
|
||||
from falcon.hooks import before, after # NOQA
|
||||
from falcon.request import Request # NOQA
|
||||
from falcon.response import Response # NOQA
|
||||
|
||||
@@ -59,3 +59,11 @@ class TestFalconUtils(testtools.TestCase):
|
||||
'doit': 'false'}
|
||||
|
||||
self.assertEquals(expected, garbage_out)
|
||||
|
||||
def test_percent_escape(self):
|
||||
url = 'http://example.com/v1/fizbit/messages?limit=3&echo=true'
|
||||
self.assertEquals(falcon.percent_escape(url), url)
|
||||
|
||||
url2a = u'http://example.com/v1/fizbit/messages?limit=3&e\u00e7ho=true'
|
||||
url2b = 'http://example.com/v1/fizbit/messages?limit=3&e%C3%A7ho=true'
|
||||
self.assertEquals(falcon.percent_escape(url2a), url2b)
|
||||
|
||||
@@ -25,6 +25,9 @@ else: # pragma nocover
|
||||
from urllib import quote as url_quote
|
||||
|
||||
|
||||
__all__ = ('dt_to_http', 'http_date_to_dt', 'to_query_str', 'percent_escape')
|
||||
|
||||
|
||||
def dt_to_http(dt):
|
||||
"""Converts a datetime instance to an HTTP date string.
|
||||
|
||||
@@ -104,4 +107,4 @@ def percent_escape(url):
|
||||
if not six.PY3 and isinstance(url, six.text_type): # pragma nocover
|
||||
url = url.encode('utf-8')
|
||||
|
||||
return url_quote(url, safe='/:,')
|
||||
return url_quote(url, safe='/:,=?&-_')
|
||||
|
||||
Reference in New Issue
Block a user