mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-08 18:44:10 +00:00
Update append_query_parameters to have exclude=["none"] by default,
and avoid using dicts with url_concat, to have consistent tests as otherwise in Python 3.5 the generated URL's could have parameters in random order.
This commit is contained in:
@@ -668,12 +668,18 @@ class BaseHandler(RequestHandler):
|
|||||||
This is important to avoid infinite loops with the next parameter being
|
This is important to avoid infinite loops with the next parameter being
|
||||||
added over and over, for instance.
|
added over and over, for instance.
|
||||||
|
|
||||||
|
The default value for ``exclude`` is an array with "next". This is useful
|
||||||
|
as most use cases in JupyterHub (all?) won't want to include the next
|
||||||
|
parameter twice (the next parameter is added elsewhere to the query
|
||||||
|
parameters).
|
||||||
|
|
||||||
:param str url: a URL
|
:param str url: a URL
|
||||||
:param list exclude: optional list of parameters to be ignored
|
:param list exclude: optional list of parameters to be ignored, defaults to
|
||||||
|
a list with "next" (to avoid redirect-loops)
|
||||||
:rtype (str)
|
:rtype (str)
|
||||||
"""
|
"""
|
||||||
if not exclude:
|
if not exclude:
|
||||||
exclude = []
|
exclude = ['next']
|
||||||
if self.request.query:
|
if self.request.query:
|
||||||
query_string = [
|
query_string = [
|
||||||
param
|
param
|
||||||
|
@@ -517,7 +517,7 @@ async def test_user_redirect_deprecated(app, username):
|
|||||||
|
|
||||||
|
|
||||||
async def test_login_page(app):
|
async def test_login_page(app):
|
||||||
url = url_concat('login', dict(next='foo', param1='test'))
|
url = url_concat('login', [('next', 'foo'), ('param1', 'test')])
|
||||||
r = await get_page(url, app)
|
r = await get_page(url, app)
|
||||||
assert r.url.endswith('/hub/login?next=foo¶m1=test')
|
assert r.url.endswith('/hub/login?next=foo¶m1=test')
|
||||||
# now the login.html rendered template must include the given parameters in the form
|
# now the login.html rendered template must include the given parameters in the form
|
||||||
@@ -577,8 +577,8 @@ async def test_login_strip(app):
|
|||||||
(False, '///other.domain/triple', '', None),
|
(False, '///other.domain/triple', '', None),
|
||||||
(False, '\\\\other.domain/backslashes', '', None),
|
(False, '\\\\other.domain/backslashes', '', None),
|
||||||
# params are handled correctly
|
# params are handled correctly
|
||||||
(True, '/hub/admin', 'hub/admin?left=1&right=2', dict(left=1, right=2)),
|
(True, '/hub/admin', 'hub/admin?left=1&right=2', [('left', 1), ('right', 2)]),
|
||||||
(False, '/hub/admin', 'hub/admin?left=1&right=2', dict(left=1, right=2)),
|
(False, '/hub/admin', 'hub/admin?left=1&right=2', [('left', 1), ('right', 2)]),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_login_redirect(app, running, next_url, location, params):
|
async def test_login_redirect(app, running, next_url, location, params):
|
||||||
|
Reference in New Issue
Block a user