|
1 | 1 | import pytest |
2 | 2 | from allauth.account.models import EmailAddress |
| 3 | +from allauth.core.context import request_context |
3 | 4 | from allauth.core.exceptions import ImmediateHttpResponse |
4 | 5 | from allauth.socialaccount.models import SocialAccount, SocialLogin |
5 | | -from core.authn.allauth_adapter import SocialAccountLoggingAdapter |
| 6 | +from core.authn.allauth_adapter import PyConKRHeadlessAdapter, SocialAccountLoggingAdapter |
6 | 7 | from core.const.account import MERGE_SOURCE_SESSION_KEY |
7 | 8 | from django.urls import reverse |
8 | 9 | from shop.order.models import Order |
@@ -107,22 +108,15 @@ def test_start_lists_provider_forms(client, target_user): |
107 | 108 | assert b'name="process" value="connect"' in response.content |
108 | 109 |
|
109 | 110 |
|
110 | | -def test_merged_account_session_is_logged_out(client, source_user, target_user): |
| 111 | +def test_merged_account_session_logs_out_and_shows_notice(client, source_user, target_user): |
111 | 112 | UserMergeHistory.objects.create(source=source_user, target=target_user).merge() |
112 | 113 | client.force_login(source_user) # 병합된(dead) 계정으로 남은 세션 |
113 | 114 |
|
114 | | - response = client.get(reverse("account-home")) |
| 115 | + response = client.get(reverse("account-home"), follow=True) |
115 | 116 |
|
116 | | - assert response.status_code == 302 |
117 | | - assert "merged=1" in response["Location"] |
| 117 | + assert response.redirect_chain[-1][0] == reverse("account-login") |
118 | 118 | assert "_auth_user_id" not in client.session |
119 | | - |
120 | | - |
121 | | -def test_login_shows_merged_notice(client, db): |
122 | | - response = client.get(reverse("account-login") + "?merged=1") |
123 | | - |
124 | | - assert response.status_code == 200 |
125 | | - assert "병합".encode() in response.content |
| 119 | + assert "병합".encode() in response.content # login_error 플래시가 error 로 렌더 |
126 | 120 |
|
127 | 121 |
|
128 | 122 | # ---- AccountLoginView --------------------------------------------------------- |
@@ -341,6 +335,18 @@ def test_pre_social_login_ignores_plain_login(rf, source_user, target_user): |
341 | 335 | assert MERGE_SOURCE_SESSION_KEY not in request.session |
342 | 336 |
|
343 | 337 |
|
| 338 | +def test_social_login_error_on_accounts_host_routes_to_login(rf): |
| 339 | + request = rf.get("/") |
| 340 | + request.urlconf = "core.account_urls" # accounts 호스트 = HostUrlconfMiddleware 가 세팅 |
| 341 | + request.session = {} |
| 342 | + |
| 343 | + with request_context(request): |
| 344 | + url = PyConKRHeadlessAdapter().get_frontend_url("socialaccount_login_error") |
| 345 | + |
| 346 | + assert url == reverse("account-login", urlconf="core.account_urls") |
| 347 | + assert request.session["login_error"] == "social_login_failed" |
| 348 | + |
| 349 | + |
344 | 350 | # ---- 다국어 (en) -------------------------------------------------------------- |
345 | 351 |
|
346 | 352 |
|
|
0 commit comments