From cc2b34e84a6c3f15bfa1272e1e92f0c9cd4e3b2b Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Sat, 4 Jul 2026 23:13:11 +0200 Subject: [PATCH] =?UTF-8?q?feat(abonnement):=20linkedin=5Fbutton=20param?= =?UTF-8?q?=C3=A9trable=20par=20next,=20inscription=20vers=20mes-infos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- src/pages/connexion.py | 7 +++++-- src/pages/inscription.py | 2 +- tests/test_linkedin_button.py | 27 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 tests/test_linkedin_button.py diff --git a/src/pages/connexion.py b/src/pages/connexion.py index 2dcda19..a9df7f7 100644 --- a/src/pages/connexion.py +++ b/src/pages/connexion.py @@ -28,10 +28,13 @@ INFO_MESSAGES = { } -def linkedin_button(): +def linkedin_button(next_url: str | None = None): + href = "/auth/linkedin" + if next_url: + href += f"?next={next_url}" return html.A( "Connexion avec LinkedIn", - href="/auth/linkedin", + href=href, className="btn w-100 mb-2", style={"backgroundColor": "rgb(10, 102, 194)", "color": "white"}, ) diff --git a/src/pages/inscription.py b/src/pages/inscription.py index 179f847..d660da4 100644 --- a/src/pages/inscription.py +++ b/src/pages/inscription.py @@ -70,7 +70,7 @@ def layout(error: str | None = None, email: str | None = None, **_): ], ), html.Div("ou", className="text-center text-muted my-2"), - linkedin_button(), + linkedin_button("/compte/abonnement/mes-infos"), html.Hr(), dcc.Link("Déjà un compte ? Se connecter", href="/connexion"), ], diff --git a/tests/test_linkedin_button.py b/tests/test_linkedin_button.py new file mode 100644 index 0000000..1003a72 --- /dev/null +++ b/tests/test_linkedin_button.py @@ -0,0 +1,27 @@ +def test_linkedin_button_default_has_no_next(): + # Import app first to initialize Dash + from src.app import app # noqa: F401 + from src.pages.connexion import linkedin_button + + html_str = str(linkedin_button()) + assert "href='/auth/linkedin'" in html_str + assert "next=" not in html_str + + +def test_linkedin_button_with_next_appends_query(): + # Import app first to initialize Dash + from src.app import app # noqa: F401 + from src.pages.connexion import linkedin_button + + html_str = str(linkedin_button("/compte/abonnement/mes-infos")) + assert "/auth/linkedin?next=/compte/abonnement/mes-infos" in html_str + + +def test_inscription_linkedin_targets_mes_infos(): + # Import app first to initialize Dash + from src.app import app # noqa: F401 + from src.pages import inscription + + assert "/auth/linkedin?next=/compte/abonnement/mes-infos" in str( + inscription.layout() + )