Skip to content

Commit 129ee4b

Browse files
committed
feat: 등록 데스크 이메일 로그인 명세 추가
1 parent 60b1714 commit 129ee4b

3 files changed

Lines changed: 30 additions & 14 deletions

File tree

app/internal_api/test/session_test.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import pytest
2+
from django.conf import settings
23
from django.urls import reverse
34
from rest_framework.status import HTTP_200_OK, HTTP_403_FORBIDDEN, HTTP_405_METHOD_NOT_ALLOWED
5+
from rest_framework.test import APIClient
46

57
SESSION_URL = reverse("v1:registration_desk:desk-session")
8+
LOGIN_URL = reverse("headless:browser:account:login")
69

710

811
@pytest.mark.django_db
@@ -46,3 +49,22 @@ def test_session_sets_csrf_cookie_even_when_forbidden(anon_client, settings):
4649
@pytest.mark.django_db
4750
def test_session_does_not_handle_logout(staff_client):
4851
assert staff_client.delete(SESSION_URL).status_code == HTTP_405_METHOD_NOT_ALLOWED
52+
53+
54+
@pytest.mark.django_db
55+
def test_email_password_login_creates_registration_desk_session(staff_user):
56+
staff_user.set_password("registration-desk-password")
57+
staff_user.save()
58+
client = APIClient(enforce_csrf_checks=True)
59+
csrf_response = client.get(SESSION_URL)
60+
csrf_token = csrf_response.cookies[settings.CSRF_COOKIE_NAME].value
61+
62+
login_response = client.post(
63+
LOGIN_URL,
64+
{"email": staff_user.email, "password": "registration-desk-password"},
65+
format="json",
66+
HTTP_X_CSRFTOKEN=csrf_token,
67+
)
68+
69+
assert login_response.status_code == HTTP_200_OK
70+
assert client.get(SESSION_URL).status_code == HTTP_200_OK

app/well_known/test/rosa_test.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,11 @@ def test_rosa_discovery_is_available_without_authentication():
2020
"type": "session",
2121
"session_url": "/v1/internal-api/registration-desk/session/",
2222
"login": {
23-
"type": "browser_redirect",
23+
"type": "password",
2424
"method": "POST",
25-
"provider_redirect_url": "/authn/social/browser/v1/auth/provider/redirect",
26-
"providers": ["google", "naver", "kakao"],
27-
"provider_parameter": "provider",
28-
"callback_url_parameter": "callback_url",
29-
"fixed_parameters": {"process": "login"},
30-
"csrf_form_field": "csrfmiddlewaretoken",
25+
"url": "/authn/social/browser/v1/auth/login",
26+
"identifier_field": "email",
27+
"password_field": "password",
3128
},
3229
"logout_url": "/authn/social/browser/v1/auth/session",
3330
"logout_method": "DELETE",

app/well_known/views.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,11 @@ def retrieve_rosa_discovery(request: HttpRequest) -> Response:
4343
"type": "session",
4444
"session_url": session_url,
4545
"login": {
46-
"type": "browser_redirect",
46+
"type": "password",
4747
"method": "POST",
48-
"provider_redirect_url": reverse("headless:browser:socialaccount:redirect_to_provider"),
49-
"providers": ["google", "naver", "kakao"],
50-
"provider_parameter": "provider",
51-
"callback_url_parameter": "callback_url",
52-
"fixed_parameters": {"process": "login"},
53-
"csrf_form_field": "csrfmiddlewaretoken",
48+
"url": reverse("headless:browser:account:login"),
49+
"identifier_field": "email",
50+
"password_field": "password",
5451
},
5552
"logout_url": reverse("headless:browser:account:current_session"),
5653
"logout_method": "DELETE",

0 commit comments

Comments
 (0)