forked from Github-Mirrors/canaille
unit tests: improved flaskutils coverage
This commit is contained in:
parent
118af82409
commit
9a3363a17f
3 changed files with 30 additions and 15 deletions
|
@ -1,6 +1,8 @@
|
|||
import datetime
|
||||
import logging
|
||||
from functools import wraps
|
||||
from urllib.parse import urlsplit
|
||||
from urllib.parse import urlunsplit
|
||||
|
||||
import ldap
|
||||
from canaille.models import User
|
||||
|
@ -79,3 +81,12 @@ def smtp_needed():
|
|||
|
||||
def timestamp(dt):
|
||||
return datetime.datetime.timestamp(dt)
|
||||
|
||||
|
||||
def set_parameter_in_url_query(url, **kwargs):
|
||||
split = list(urlsplit(url))
|
||||
pairs = split[3].split("&")
|
||||
parameters = {pair.split("=")[0]: pair.split("=")[1] for pair in pairs if pair}
|
||||
parameters = {**parameters, **kwargs}
|
||||
split[3] = "&".join(f"{key}={value}" for key, value in parameters.items())
|
||||
return urlunsplit(split)
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
import datetime
|
||||
from urllib.parse import urlsplit
|
||||
from urllib.parse import urlunsplit
|
||||
|
||||
from authlib.integrations.flask_oauth2 import current_token
|
||||
from authlib.jose import JsonWebKey
|
||||
|
@ -21,6 +19,7 @@ from flask_themer import render_template
|
|||
from werkzeug.datastructures import CombinedMultiDict
|
||||
|
||||
from ..flaskutils import current_user
|
||||
from ..flaskutils import set_parameter_in_url_query
|
||||
from ..forms import FullLoginForm
|
||||
from ..models import User
|
||||
from .forms import LogoutForm
|
||||
|
@ -255,19 +254,6 @@ def userinfo():
|
|||
return jsonify(response)
|
||||
|
||||
|
||||
def set_parameter_in_url_query(url, **kwargs):
|
||||
split = list(urlsplit(url))
|
||||
|
||||
parameters = "&".join(f"{key}={value}" for key, value in kwargs.items())
|
||||
|
||||
if split[3]:
|
||||
split[3] = f"{split[3]}&{parameters}"
|
||||
else:
|
||||
split[3] = parameters
|
||||
|
||||
return urlunsplit(split)
|
||||
|
||||
|
||||
@bp.route("/end_session", methods=["GET", "POST"])
|
||||
def end_session():
|
||||
data = CombinedMultiDict((request.args, request.form))
|
||||
|
|
18
tests/test_flaskutils.py
Normal file
18
tests/test_flaskutils.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
from canaille.flaskutils import set_parameter_in_url_query
|
||||
|
||||
|
||||
def test_set_parameter_in_url_query():
|
||||
assert (
|
||||
set_parameter_in_url_query("https://auth.mydomain.tld", foo="bar")
|
||||
== "https://auth.mydomain.tld?foo=bar"
|
||||
)
|
||||
|
||||
assert (
|
||||
set_parameter_in_url_query("https://auth.mydomain.tld?foo=baz", foo="bar")
|
||||
== "https://auth.mydomain.tld?foo=bar"
|
||||
)
|
||||
|
||||
assert (
|
||||
set_parameter_in_url_query("https://auth.mydomain.tld?foo=baz", hello="world")
|
||||
== "https://auth.mydomain.tld?foo=baz&hello=world"
|
||||
)
|
Loading…
Reference in a new issue