55
66from app .core .config import settings
77from app .core .security import verify_password
8- from app .models import User
8+ from app .crud import update_user
9+ from app .models import User , UserUpdate
10+ from app .tests .utils .user import create_user
911from app .utils import generate_password_reset_token
1012
1113
@@ -21,6 +23,20 @@ def test_get_access_token(client: TestClient) -> None:
2123 assert tokens ["access_token" ]
2224
2325
26+ def test_get_access_token_inactive_user (client : TestClient , db : Session ) -> None :
27+ password = "secretpassword"
28+ user = create_user (db , password = password )
29+ update_user (session = db , db_user = user , user_in = UserUpdate (is_active = False ))
30+
31+ login_data = {
32+ "username" : user .email ,
33+ "password" : password ,
34+ }
35+ r = client .post (f"{ settings .API_V1_STR } /login/access-token" , data = login_data )
36+ assert r .status_code == 400
37+ assert r .json () == {"detail" : "Inactive user" }
38+
39+
2440def test_get_access_token_incorrect_password (client : TestClient ) -> None :
2541 login_data = {
2642 "username" : settings .FIRST_SUPERUSER ,
@@ -88,6 +104,39 @@ def test_reset_password(
88104 assert verify_password (data ["new_password" ], user .hashed_password )
89105
90106
107+ def test_reset_password_no_such_user_email (
108+ client : TestClient , superuser_token_headers : dict [str , str ], db : Session
109+ ) -> None :
110+ token = generate_password_reset_token (
email = "[email protected] " )
111+ data = {"new_password" : "changethis" , "token" : token }
112+ r = client .post (
113+ f"{ settings .API_V1_STR } /reset-password/" ,
114+ headers = superuser_token_headers ,
115+ json = data ,
116+ )
117+ assert r .status_code == 404
118+ assert r .json () == {
119+ "detail" : "The user with this email does not exist in the system."
120+ }
121+
122+
123+ def test_reset_password_inactive_user (
124+ client : TestClient , superuser_token_headers : dict [str , str ], db : Session
125+ ) -> None :
126+ 127+ user = create_user (db , email = email )
128+ update_user (session = db , db_user = user , user_in = UserUpdate (is_active = False ))
129+ token = generate_password_reset_token (email = email )
130+ data = {"new_password" : "changethis" , "token" : token }
131+ r = client .post (
132+ f"{ settings .API_V1_STR } /reset-password/" ,
133+ headers = superuser_token_headers ,
134+ json = data ,
135+ )
136+ assert r .status_code == 400
137+ assert r .json () == {"detail" : "Inactive user" }
138+
139+
91140def test_reset_password_invalid_token (
92141 client : TestClient , superuser_token_headers : dict [str , str ]
93142) -> None :
0 commit comments