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 datetime
|
||||||
import logging
|
import logging
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
from urllib.parse import urlsplit
|
||||||
|
from urllib.parse import urlunsplit
|
||||||
|
|
||||||
import ldap
|
import ldap
|
||||||
from canaille.models import User
|
from canaille.models import User
|
||||||
|
@ -79,3 +81,12 @@ def smtp_needed():
|
||||||
|
|
||||||
def timestamp(dt):
|
def timestamp(dt):
|
||||||
return datetime.datetime.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
|
import datetime
|
||||||
from urllib.parse import urlsplit
|
|
||||||
from urllib.parse import urlunsplit
|
|
||||||
|
|
||||||
from authlib.integrations.flask_oauth2 import current_token
|
from authlib.integrations.flask_oauth2 import current_token
|
||||||
from authlib.jose import JsonWebKey
|
from authlib.jose import JsonWebKey
|
||||||
|
@ -21,6 +19,7 @@ from flask_themer import render_template
|
||||||
from werkzeug.datastructures import CombinedMultiDict
|
from werkzeug.datastructures import CombinedMultiDict
|
||||||
|
|
||||||
from ..flaskutils import current_user
|
from ..flaskutils import current_user
|
||||||
|
from ..flaskutils import set_parameter_in_url_query
|
||||||
from ..forms import FullLoginForm
|
from ..forms import FullLoginForm
|
||||||
from ..models import User
|
from ..models import User
|
||||||
from .forms import LogoutForm
|
from .forms import LogoutForm
|
||||||
|
@ -255,19 +254,6 @@ def userinfo():
|
||||||
return jsonify(response)
|
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"])
|
@bp.route("/end_session", methods=["GET", "POST"])
|
||||||
def end_session():
|
def end_session():
|
||||||
data = CombinedMultiDict((request.args, request.form))
|
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