friend route modify
continuous-integration/drone/push Build is failing Details

master
Maxence JOUANNET 3 months ago
parent 055dbe1c62
commit 66cad20696

@ -1,8 +0,0 @@
from pydantic import BaseModel
from app.models.friend import Friend
class FriendListDTO(BaseModel):
friends: list[Friend]
external_friends: list[Friend]

@ -1,5 +1,4 @@
from .UserRegisterDTO import UserRegisterDTO from .UserRegisterDTO import UserRegisterDTO
from .FriendAddDTO import FriendAddDTO from .FriendAddDTO import FriendAddDTO
from .FriendListDTO import FriendListDTO
from .UserDTO import UserDTO from .UserDTO import UserDTO
from .PinDTO import PinDTO from .PinDTO import PinDTO

@ -17,7 +17,7 @@ import app.serializers as serializers # Import all serializers (detailed in __in
from app.models import User, Friend, Token, TokenData, HTTPError from app.models import User, Friend, Token, TokenData, HTTPError
# Import all DTOs (detailed in __init__.py) # Import all DTOs (detailed in __init__.py)
from app.dto import FriendAddDTO, FriendListDTO, UserDTO, UserRegisterDTO, PinDTO from app.dto import FriendAddDTO, UserDTO, UserRegisterDTO, PinDTO
# Contains all constants # Contains all constants
import app.config as config import app.config as config
@ -287,11 +287,11 @@ async def deny_friend(id: str, current_user: User = Depends(get_current_user)):
@app.get( @app.get(
path="/friends", path="/friends",
response_model=FriendListDTO, response_model=list[Friend],
responses={401: {"model": HTTPError}} responses={401: {"model": HTTPError}}
) )
async def list_friends(current_user: User = Depends(get_current_user)): async def list_friends(current_user: User = Depends(get_current_user)):
return FriendListDTO(**serializers.friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list())) return serializers.friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list())
@app.get( @app.get(
path="/users", path="/users",

@ -4,6 +4,5 @@ from pydantic import BaseModel, Field
class Friend(BaseModel): class Friend(BaseModel):
id: Optional[str] id: Optional[str]
user_id: str
friend_user_id: str friend_user_id: str
status: str status: str

@ -1,25 +1,21 @@
from app.models.friend import Friend from app.models.friend import Friend
def friend_serialize(friend: list) -> Friend: def friend_serialize(friend: list, is_external: bool) -> Friend:
status = friend['status'] if 'status' in friend else 'pending' status = friend['status'] if 'status' in friend else 'pending'
return Friend(**{ return Friend(**{
"id": str(friend["_id"]), "id": str(friend["_id"]),
"user_id": friend["user_id"], "friend_user_id": friend["user_id"] if is_external else friend["friend_user_id"],
"friend_user_id": friend["friend_user_id"],
"status": status "status": status
}) })
def friends_serialize(friends: list, external_friends: list) -> dict: def friends_serialize(friends: list, external_friends: list) -> dict:
serialized_friends: dict = { serialized_friends: list = []
'friends': [],
'external_friends': []
}
for friend in friends: for friend in friends:
serialized_friends["friends"].append(friend_serialize(friend)) serialized_friends.append(friend_serialize(friend,False))
for external_friend in external_friends: for external_friend in external_friends:
serialized_friends["external_friends"].append(friend_serialize(external_friend)) serialized_friends.append(friend_serialize(external_friend,True))
return serialized_friends return serialized_friends

@ -17,7 +17,6 @@ def test_add_friend_myself(token):
response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"}) response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 409 # Cannot add yourself as a friend assert response.status_code == 409 # Cannot add yourself as a friend
def test_list_friends(token): def test_list_friends(token):
response = client.get("/friends", headers={"Authorization": f"Bearer {token}"}) response = client.get("/friends", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200 assert response.status_code == 200

Loading…
Cancel
Save