From c4d3ba66902d372b35c96e88bd8613e1ee555526 Mon Sep 17 00:00:00 2001 From: User Date: Tue, 18 Feb 2025 19:21:29 +0000 Subject: [PATCH 1/5] Refactor reset password test --- backend/app/tests/api/routes/test_login.py | 32 +++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/backend/app/tests/api/routes/test_login.py b/backend/app/tests/api/routes/test_login.py index 34fe8ee560..49ab317eeb 100644 --- a/backend/app/tests/api/routes/test_login.py +++ b/backend/app/tests/api/routes/test_login.py @@ -1,11 +1,14 @@ from unittest.mock import patch +from app.crud import create_user +from app.tests.utils.user import user_authentication_headers from fastapi.testclient import TestClient from sqlmodel import Session, select from app.core.config import settings from app.core.security import verify_password -from app.models import User +from app.models import User, UserCreate +from app.tests.utils.utils import random_email, random_lower_string from app.utils import generate_password_reset_token @@ -70,22 +73,37 @@ def test_recovery_password_user_not_exits( def test_reset_password( - client: TestClient, superuser_token_headers: dict[str, str], db: Session + client: TestClient, db: Session ) -> None: - token = generate_password_reset_token(email=settings.FIRST_SUPERUSER) - data = {"new_password": "changethis", "token": token} + email = random_email() + password = random_lower_string() + new_password = random_lower_string() + + user = UserCreate( + email=email, + full_name="Test User", + password=password, + is_active=True, + is_superuser=False, + ) + user = create_user(session=db, user_create=user) + token = generate_password_reset_token(email=email) + headers = user_authentication_headers(client=client, email=email, password=password) + data = {"new_password": new_password, "token": token} + r = client.post( f"{settings.API_V1_STR}/reset-password/", - headers=superuser_token_headers, + headers=headers, json=data, ) + assert r.status_code == 200 assert r.json() == {"message": "Password updated successfully"} - user_query = select(User).where(User.email == settings.FIRST_SUPERUSER) + user_query = select(User).where(User.email == email) user = db.exec(user_query).first() assert user - assert verify_password(data["new_password"], user.hashed_password) + assert verify_password(new_password, user.hashed_password) def test_reset_password_invalid_token( From bb38f010eed0cdabfed265ad1e2e750418cf3d1b Mon Sep 17 00:00:00 2001 From: User Date: Tue, 18 Feb 2025 19:48:59 +0000 Subject: [PATCH 2/5] Update --- backend/app/tests/api/routes/test_login.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/app/tests/api/routes/test_login.py b/backend/app/tests/api/routes/test_login.py index 49ab317eeb..21c5d829ca 100644 --- a/backend/app/tests/api/routes/test_login.py +++ b/backend/app/tests/api/routes/test_login.py @@ -79,14 +79,14 @@ def test_reset_password( password = random_lower_string() new_password = random_lower_string() - user = UserCreate( + user_create = UserCreate( email=email, full_name="Test User", password=password, is_active=True, is_superuser=False, ) - user = create_user(session=db, user_create=user) + user = create_user(session=db, user_create=user_create) token = generate_password_reset_token(email=email) headers = user_authentication_headers(client=client, email=email, password=password) data = {"new_password": new_password, "token": token} From 9412886f31472e6b716284166861b95a34b3eeb4 Mon Sep 17 00:00:00 2001 From: User Date: Tue, 18 Feb 2025 19:54:35 +0000 Subject: [PATCH 3/5] Update --- backend/app/tests/api/routes/test_login.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/app/tests/api/routes/test_login.py b/backend/app/tests/api/routes/test_login.py index 21c5d829ca..04bc42f79f 100644 --- a/backend/app/tests/api/routes/test_login.py +++ b/backend/app/tests/api/routes/test_login.py @@ -100,9 +100,7 @@ def test_reset_password( assert r.status_code == 200 assert r.json() == {"message": "Password updated successfully"} - user_query = select(User).where(User.email == email) - user = db.exec(user_query).first() - assert user + db.refresh(user) assert verify_password(new_password, user.hashed_password) From 0ea4f4f0ad57e298f069215dbc3acf09566cf0ea Mon Sep 17 00:00:00 2001 From: User Date: Tue, 18 Feb 2025 19:58:47 +0000 Subject: [PATCH 4/5] Format --- backend/app/tests/api/routes/test_login.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/app/tests/api/routes/test_login.py b/backend/app/tests/api/routes/test_login.py index 04bc42f79f..4f33537d20 100644 --- a/backend/app/tests/api/routes/test_login.py +++ b/backend/app/tests/api/routes/test_login.py @@ -72,9 +72,7 @@ def test_recovery_password_user_not_exits( assert r.status_code == 404 -def test_reset_password( - client: TestClient, db: Session -) -> None: +def test_reset_password(client: TestClient, db: Session) -> None: email = random_email() password = random_lower_string() new_password = random_lower_string() From 4eb4f8db4f6182c45d6d549ae0c0533a8b377e8a Mon Sep 17 00:00:00 2001 From: User Date: Tue, 18 Feb 2025 20:02:57 +0000 Subject: [PATCH 5/5] Format --- backend/app/tests/api/routes/test_login.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/app/tests/api/routes/test_login.py b/backend/app/tests/api/routes/test_login.py index 4f33537d20..80fa787979 100644 --- a/backend/app/tests/api/routes/test_login.py +++ b/backend/app/tests/api/routes/test_login.py @@ -1,13 +1,13 @@ from unittest.mock import patch -from app.crud import create_user -from app.tests.utils.user import user_authentication_headers from fastapi.testclient import TestClient -from sqlmodel import Session, select +from sqlmodel import Session from app.core.config import settings from app.core.security import verify_password -from app.models import User, UserCreate +from app.crud import create_user +from app.models import UserCreate +from app.tests.utils.user import user_authentication_headers from app.tests.utils.utils import random_email, random_lower_string from app.utils import generate_password_reset_token