Skip to content

Commit 948dd00

Browse files
authored
✅ Update test to add verification database records (#43)
1 parent 0eeef17 commit 948dd00

File tree

3 files changed

+77
-9
lines changed

3 files changed

+77
-9
lines changed

backend/app/tests/api/routes/test_login.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
from unittest.mock import patch
22

33
from fastapi.testclient import TestClient
4+
from sqlmodel import Session, select
45

56
from app.core.config import settings
7+
from app.core.security import verify_password
8+
from app.models import User
69
from app.utils import generate_password_reset_token
710

811

@@ -67,7 +70,7 @@ def test_recovery_password_user_not_exits(
6770

6871

6972
def test_reset_password(
70-
client: TestClient, superuser_token_headers: dict[str, str]
73+
client: TestClient, superuser_token_headers: dict[str, str], db: Session
7174
) -> None:
7275
token = generate_password_reset_token(email=settings.FIRST_SUPERUSER)
7376
data = {"new_password": "changethis", "token": token}
@@ -79,6 +82,11 @@ def test_reset_password(
7982
assert r.status_code == 200
8083
assert r.json() == {"message": "Password updated successfully"}
8184

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)
89+
8290

8391
def test_reset_password_invalid_token(
8492
client: TestClient, superuser_token_headers: dict[str, str]

backend/app/tests/api/routes/test_teams.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from typing import Any
22

33
from fastapi.testclient import TestClient
4-
from sqlmodel import Session
4+
from sqlmodel import Session, select
55

66
from app.core.config import settings
77
from app.crud import add_user_to_team
8-
from app.models import Role
8+
from app.models import Role, Team, UserTeamLink
99
from app.tests.utils.team import create_random_team
1010
from app.tests.utils.user import create_user, user_authentication_headers
1111

@@ -108,7 +108,7 @@ def test_read_team_not_found(client: TestClient) -> None:
108108
assert data["detail"] == "Team not found for the current user"
109109

110110

111-
def test_create_team(client: TestClient) -> None:
111+
def test_create_team(client: TestClient, db: Session) -> None:
112112
user_auth_headers = user_authentication_headers(
113113
client=client,
114114
email=settings.FIRST_SUPERUSER,
@@ -128,6 +128,12 @@ def test_create_team(client: TestClient) -> None:
128128
assert data["name"] == team_in["name"]
129129
assert data["description"] == team_in["description"]
130130

131+
team_query = select(Team).where(Team.id == data["id"])
132+
team_db = db.exec(team_query).first()
133+
assert team_db
134+
assert team_db.name == team_in["name"]
135+
assert team_db.description == team_in["description"]
136+
131137

132138
def test_update_team(client: TestClient, db: Session) -> None:
133139
team = create_random_team(db)
@@ -224,6 +230,10 @@ def test_delete_team(client: TestClient, db: Session) -> None:
224230
data = response.json()
225231
assert data["message"] == "Team deleted"
226232

233+
team_query = select(Team).where(Team.id == team.id)
234+
team_db = db.exec(team_query).first()
235+
assert team_db is None
236+
227237

228238
def test_delete_team_not_found(client: TestClient) -> None:
229239
user_auth_headers = user_authentication_headers(
@@ -392,6 +402,14 @@ def test_update_member_in_team(client: TestClient, db: Session) -> None:
392402
assert data["team"]["id"] == team.id
393403
assert data["user"]["id"] == user.id
394404

405+
user_team_query = select(UserTeamLink).where(UserTeamLink.user == user)
406+
user_team_db = db.exec(user_team_query).first()
407+
db.refresh(user_team_db)
408+
assert user_team_db
409+
assert user_team_db.role == data["role"]
410+
assert user_team_db.team_id == data["team"]["id"]
411+
assert user_team_db.user_id == data["user"]["id"]
412+
395413

396414
def test_update_member_in_team_not_enough_permissions(
397415
client: TestClient, db: Session
@@ -478,6 +496,10 @@ def test_remove_member_from_team(client: TestClient, db: Session) -> None:
478496
data = response.json()
479497
assert data["message"] == "User removed from team"
480498

499+
user_team_query = select(UserTeamLink).where(UserTeamLink.user == user_member)
500+
user_team_db = db.exec(user_team_query).first()
501+
assert not user_team_db
502+
481503

482504
def test_remove_member_from_team_not_enough_permissions(
483505
client: TestClient, db: Session

backend/app/tests/api/routes/test_users.py

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
from unittest.mock import patch
22

33
from fastapi.testclient import TestClient
4-
from sqlmodel import Session
4+
from sqlmodel import Session, select
55

66
from app import crud
77
from app.core.config import settings
8-
from app.models import UserCreate
8+
from app.core.security import verify_password
9+
from app.models import User, UserCreate
910
from app.tests.utils.utils import random_email, random_lower_string
1011

1112

@@ -167,7 +168,7 @@ def test_retrieve_users(
167168

168169

169170
def test_update_user_me(
170-
client: TestClient, normal_user_token_headers: dict[str, str]
171+
client: TestClient, normal_user_token_headers: dict[str, str], db: Session
171172
) -> None:
172173
full_name = "Updated Name"
173174
email = random_email()
@@ -182,9 +183,15 @@ def test_update_user_me(
182183
assert updated_user["email"] == email
183184
assert updated_user["full_name"] == full_name
184185

186+
user_query = select(User).where(User.email == email)
187+
user_db = db.exec(user_query).first()
188+
assert user_db
189+
assert user_db.email == email
190+
assert user_db.full_name == full_name
191+
185192

186193
def test_update_password_me(
187-
client: TestClient, superuser_token_headers: dict[str, str]
194+
client: TestClient, superuser_token_headers: dict[str, str], db: Session
188195
) -> None:
189196
new_password = random_lower_string()
190197
data = {
@@ -200,6 +207,12 @@ def test_update_password_me(
200207
updated_user = r.json()
201208
assert updated_user["message"] == "Password updated successfully"
202209

210+
user_query = select(User).where(User.email == settings.FIRST_SUPERUSER)
211+
user_db = db.exec(user_query).first()
212+
assert user_db
213+
assert user_db.email == settings.FIRST_SUPERUSER
214+
assert verify_password(new_password, user_db.hashed_password)
215+
203216
# Revert to the old password to keep consistency in test
204217
old_data = {
205218
"current_password": new_password,
@@ -210,7 +223,10 @@ def test_update_password_me(
210223
headers=superuser_token_headers,
211224
json=old_data,
212225
)
226+
db.refresh(user_db)
227+
213228
assert r.status_code == 200
229+
assert verify_password(settings.FIRST_SUPERUSER_PASSWORD, user_db.hashed_password)
214230

215231

216232
def test_update_password_me_incorrect_password(
@@ -265,7 +281,7 @@ def test_update_password_me_same_password_error(
265281
)
266282

267283

268-
def test_register_user(client: TestClient) -> None:
284+
def test_register_user(client: TestClient, db: Session) -> None:
269285
with patch("app.core.config.settings.USERS_OPEN_REGISTRATION", True):
270286
username = random_email()
271287
password = random_lower_string()
@@ -280,6 +296,13 @@ def test_register_user(client: TestClient) -> None:
280296
assert created_user["email"] == username
281297
assert created_user["full_name"] == full_name
282298

299+
user_query = select(User).where(User.email == username)
300+
user_db = db.exec(user_query).first()
301+
assert user_db
302+
assert user_db.email == username
303+
assert user_db.full_name == full_name
304+
assert verify_password(password, user_db.hashed_password)
305+
283306

284307
def test_register_user_forbidden_error(client: TestClient) -> None:
285308
with patch("app.core.config.settings.USERS_OPEN_REGISTRATION", False):
@@ -333,8 +356,15 @@ def test_update_user(
333356
)
334357
assert r.status_code == 200
335358
updated_user = r.json()
359+
336360
assert updated_user["full_name"] == "Updated_full_name"
337361

362+
user_query = select(User).where(User.email == username)
363+
user_db = db.exec(user_query).first()
364+
db.refresh(user_db)
365+
assert user_db
366+
assert user_db.full_name == "Updated_full_name"
367+
338368

339369
def test_update_user_not_exists(
340370
client: TestClient, superuser_token_headers: dict[str, str]
@@ -388,6 +418,10 @@ def test_delete_user_super_user(
388418
deleted_user = r.json()
389419
assert deleted_user["message"] == "User deleted successfully"
390420

421+
user_query = select(User).where(User.id == user_id)
422+
user_db = db.execute(user_query).first()
423+
assert user_db is None
424+
391425

392426
def test_delete_user_current_user(client: TestClient, db: Session) -> None:
393427
username = random_email()
@@ -413,6 +447,10 @@ def test_delete_user_current_user(client: TestClient, db: Session) -> None:
413447
deleted_user = r.json()
414448
assert deleted_user["message"] == "User deleted successfully"
415449

450+
user_query = select(User).where(User.id == user_id)
451+
user_db = db.execute(user_query).first()
452+
assert user_db is None
453+
416454

417455
def test_delete_user_not_found(
418456
client: TestClient, superuser_token_headers: dict[str, str]

0 commit comments

Comments
 (0)