Skip to content

Commit ce8207a

Browse files
committed
Errors fixed & Tests passed
1 parent 26c5377 commit ce8207a

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

src/app/api/dependencies.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ async def get_current_user(
3434
user = await crud_users.get(db=db, username=token_data.username_or_email, is_deleted=False)
3535

3636
if user:
37-
return user
37+
# Ensure consistent return type - always return dict
38+
if hasattr(user, 'model_dump'): # It's a Pydantic model
39+
return user.model_dump()
40+
else: # It's already a dict
41+
return user
3842

3943
raise UnauthorizedException("User not authenticated.")
4044

src/app/core/utils/cache.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ async def _delete_keys_by_pattern(pattern: str) -> None:
171171
- Be cautious with patterns that could match a large number of keys, as deleting
172172
many keys simultaneously may impact the performance of the Redis server.
173173
"""
174+
if client is None:
175+
return
176+
174177
cursor = 0 # Make sure cursor starts at 0
175178
while True:
176179
cursor, keys = await client.scan(cursor, match=pattern, count=100)

tests/test_user.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,14 @@ class TestPatchUser:
117117
async def test_patch_user_success(self, mock_db, current_user_dict, sample_user_read):
118118
"""Test successful user update."""
119119
username = current_user_dict["username"]
120-
sample_user_read.username = username # Make sure usernames match
121120
user_update = UserUpdate(name="New Name")
121+
122+
# Convert the UserRead model to a dictionary for the mock
123+
user_dict = sample_user_read.model_dump()
124+
user_dict["username"] = username
122125

123126
with patch("src.app.api.v1.users.crud_users") as mock_crud:
124-
mock_crud.get = AsyncMock(return_value=sample_user_read)
127+
mock_crud.get = AsyncMock(return_value=user_dict) # Return dict instead of UserRead
125128
mock_crud.exists = AsyncMock(return_value=False) # No conflicts
126129
mock_crud.update = AsyncMock(return_value=None)
127130

@@ -134,11 +137,13 @@ async def test_patch_user_success(self, mock_db, current_user_dict, sample_user_
134137
async def test_patch_user_forbidden(self, mock_db, current_user_dict, sample_user_read):
135138
"""Test user update when user tries to update another user."""
136139
username = "different_user"
137-
sample_user_read.username = username
138140
user_update = UserUpdate(name="New Name")
141+
# Convert the UserRead model to a dictionary for the mock
142+
user_dict = sample_user_read.model_dump()
143+
user_dict["username"] = username
139144

140145
with patch("src.app.api.v1.users.crud_users") as mock_crud:
141-
mock_crud.get = AsyncMock(return_value=sample_user_read)
146+
mock_crud.get = AsyncMock(return_value=user_dict) # Return dict instead of UserRead
142147

143148
with pytest.raises(ForbiddenException):
144149
await patch_user(Mock(), user_update, username, current_user_dict, mock_db)

0 commit comments

Comments
 (0)