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