| 
1 | 1 | from unittest.mock import patch  | 
2 | 2 | 
 
  | 
 | 3 | +from app.crud import create_user  | 
 | 4 | +from app.tests.utils.user import user_authentication_headers  | 
3 | 5 | from fastapi.testclient import TestClient  | 
4 | 6 | from sqlmodel import Session, select  | 
5 | 7 | 
 
  | 
6 | 8 | from app.core.config import settings  | 
7 | 9 | from app.core.security import verify_password  | 
8 |  | -from app.models import User  | 
 | 10 | +from app.models import User, UserCreate  | 
 | 11 | +from app.tests.utils.utils import random_email, random_lower_string  | 
9 | 12 | from app.utils import generate_password_reset_token  | 
10 | 13 | 
 
  | 
11 | 14 | 
 
  | 
@@ -70,22 +73,37 @@ def test_recovery_password_user_not_exits(  | 
70 | 73 | 
 
  | 
71 | 74 | 
 
  | 
72 | 75 | def test_reset_password(  | 
73 |  | -    client: TestClient, superuser_token_headers: dict[str, str], db: Session  | 
 | 76 | +    client: TestClient, db: Session  | 
74 | 77 | ) -> None:  | 
75 |  | -    token = generate_password_reset_token(email=settings.FIRST_SUPERUSER)  | 
76 |  | -    data = {"new_password": "changethis", "token": token}  | 
 | 78 | +    email = random_email()  | 
 | 79 | +    password = random_lower_string()  | 
 | 80 | +    new_password = random_lower_string()  | 
 | 81 | + | 
 | 82 | +    user = UserCreate(  | 
 | 83 | +        email=email,  | 
 | 84 | +        full_name="Test User",  | 
 | 85 | +        password=password,  | 
 | 86 | +        is_active=True,  | 
 | 87 | +        is_superuser=False,  | 
 | 88 | +    )  | 
 | 89 | +    user = create_user(session=db, user_create=user)  | 
 | 90 | +    token = generate_password_reset_token(email=email)  | 
 | 91 | +    headers = user_authentication_headers(client=client, email=email, password=password)  | 
 | 92 | +    data = {"new_password": new_password, "token": token}  | 
 | 93 | + | 
77 | 94 |     r = client.post(  | 
78 | 95 |         f"{settings.API_V1_STR}/reset-password/",  | 
79 |  | -        headers=superuser_token_headers,  | 
 | 96 | +        headers=headers,  | 
80 | 97 |         json=data,  | 
81 | 98 |     )  | 
 | 99 | + | 
82 | 100 |     assert r.status_code == 200  | 
83 | 101 |     assert r.json() == {"message": "Password updated successfully"}  | 
84 | 102 | 
 
  | 
85 |  | -    user_query = select(User).where(User.email == settings.FIRST_SUPERUSER)  | 
 | 103 | +    user_query = select(User).where(User.email == email)  | 
86 | 104 |     user = db.exec(user_query).first()  | 
87 | 105 |     assert user  | 
88 |  | -    assert verify_password(data["new_password"], user.hashed_password)  | 
 | 106 | +    assert verify_password(new_password, user.hashed_password)  | 
89 | 107 | 
 
  | 
90 | 108 | 
 
  | 
91 | 109 | def test_reset_password_invalid_token(  | 
 | 
0 commit comments