@@ -67,7 +67,7 @@ async def test_create_user_existing_username(client: AsyncClient) -> None:
67
67
68
68
@pytest .mark .anyio
69
69
async def test_get_existing_user (
70
- client : AsyncClient , superuser_token_headers : dict
70
+ client : AsyncClient , superuser_token_headers : dict [ str , str ]
71
71
) -> None :
72
72
user = await create_test_user ()
73
73
r = await client .get (
@@ -83,6 +83,7 @@ async def test_get_existing_user(
83
83
async def test_update_profile (client : AsyncClient ) -> None :
84
84
# create user
85
85
user = await create_test_user ()
86
+ user_hashed_password = user .hashed_password
86
87
token_headers = await generate_user_auth_headers (client , user )
87
88
88
89
# update user email and pw
@@ -95,6 +96,7 @@ async def test_update_profile(client: AsyncClient) -> None:
95
96
updated_user = await User .get (user .id )
96
97
assert updated_user is not None
97
98
assert updated_user .email == data ["email" ]
99
+ assert updated_user .hashed_password != user_hashed_password
98
100
99
101
100
102
@pytest .mark .anyio
@@ -130,3 +132,52 @@ async def test_update_profile_cannot_set_superuser(client: AsyncClient) -> None:
130
132
assert updated_user is not None
131
133
assert updated_user .is_superuser is False
132
134
assert updated_user .is_active is True
135
+
136
+
137
+ @pytest .mark .anyio
138
+ async def test_update_user (
139
+ client : AsyncClient , superuser_token_headers : dict [str , str ]
140
+ ) -> None :
141
+ # create user
142
+ user = await create_test_user ()
143
+ user_hashed_password = user .hashed_password
144
+
145
+ # update user email and pw
146
+ data = {
147
+ "email" : random_email (),
148
+ "password" : random_lower_string (),
149
+ "is_superuser" : True ,
150
+ "is_active" : False ,
151
+ }
152
+ r = await client .patch (
153
+ f"{ settings .API_V1_STR } /users/{ user .uuid } " ,
154
+ json = data ,
155
+ headers = superuser_token_headers ,
156
+ )
157
+ assert r .status_code == 200
158
+
159
+ updated_user = await User .get (user .id )
160
+ assert updated_user is not None
161
+ assert updated_user .email == data ["email" ]
162
+ assert updated_user .hashed_password != user_hashed_password
163
+ assert updated_user .is_superuser is True
164
+ assert updated_user .is_active is False
165
+
166
+
167
+ @pytest .mark .anyio
168
+ async def test_update_user_existing_email (
169
+ client : AsyncClient , superuser_token_headers : dict [str , str ]
170
+ ) -> None :
171
+ # create user
172
+ user = await create_test_user ()
173
+
174
+ # update user email to already existing email
175
+ data = {"email" : settings .FIRST_SUPERUSER }
176
+ r = await client .patch (
177
+ f"{ settings .API_V1_STR } /users/{ user .uuid } " ,
178
+ json = data ,
179
+ headers = superuser_token_headers ,
180
+ )
181
+ response = r .json ()
182
+ assert r .status_code == 400
183
+ assert response ["detail" ] == "User with that email already exists."
0 commit comments