diff --git a/web/b3desk/session.py b/web/b3desk/session.py index 4ce7f101..da59b94b 100644 --- a/web/b3desk/session.py +++ b/web/b3desk/session.py @@ -23,8 +23,8 @@ 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 af2a4ca0..00a4a4f2 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 ):