From 9903304b101972f3e180713c707be67accb8c1a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89loi=20Rivard?= Date: Wed, 6 Dec 2023 13:32:05 +0100 Subject: [PATCH] feat: force username case --- web/b3desk/session.py | 4 ++-- web/tests/meeting/test_join.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/web/b3desk/session.py b/web/b3desk/session.py index fb205502..7ab5f273 100644 --- a/web/b3desk/session.py +++ b/web/b3desk/session.py @@ -20,7 +20,7 @@ def has_user_session(): def get_authenticated_attendee_fullname(): attendee_session = UserSession(session) attendee_info = attendee_session.userinfo - given_name = attendee_info.get("given_name", "") - family_name = attendee_info.get("family_name", "") + given_name = attendee_info.get("given_name", "").title() + family_name = attendee_info.get("family_name", "").title() fullname = f"{given_name} {family_name}".strip() return fullname diff --git a/web/tests/meeting/test_join.py b/web/tests/meeting/test_join.py index 13cb991f..e0bdcad2 100644 --- a/web/tests/meeting/test_join.py +++ b/web/tests/meeting/test_join.py @@ -84,6 +84,36 @@ def test_join_meeting_as_authenticated_attendee( assert response.form["fullname"].value == "Bob Dylan" +def test_fix_authenticated_attendee_name_case(client_app, meeting, user): + """The user names coming from the identity provider might be uppercase. In + such cases b3desk should correct the display. + + https://github.com/numerique-gouv/b3desk/issues/47 + """ + + user.given_name = "JOHN" + user.family_name = "LENNON" + user.email = "john@lennon.com" + with client_app.session_transaction() as session: + session["current_provider"] = "attendee" + session["last_authenticated"] = "true" + session["userinfo"] = { + "given_name": user.given_name, + "family_name": user.family_name, + "email": user.email, + } + + url = f"/meeting/join/{meeting.id}/authenticated" + response = client_app.get(url, status=302) + + assert "/meeting/wait/1/creator/1/hash/" in response.location + assert "John%20Lennon" in response.location + + response = response.follow() + + assert response.form["fullname"].value == "John Lennon" + + def test_join_meeting_as_authenticated_attendee_with_fullname_suffix( client_app, meeting, authenticated_attendee, bbb_response ):