11from unittest .mock import patch
22
33from fastapi .testclient import TestClient
4- from sqlmodel import Session
4+ from sqlmodel import Session , select
55
66from app import crud
77from 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
910from app .tests .utils .utils import random_email , random_lower_string
1011
1112
@@ -167,7 +168,7 @@ def test_retrieve_users(
167168
168169
169170def 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
186193def 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
216232def 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
284307def 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
339369def 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
392426def 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
417455def test_delete_user_not_found (
418456 client : TestClient , superuser_token_headers : dict [str , str ]
0 commit comments