Merge branch 'master' of https://codefirst.iut.uca.fr/git/SAE3A_MemoryMap/api
continuous-integration/drone/push Build is failing Details

nominatim_fix
Alexis Feron 4 months ago
commit 18532b0091

@ -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
@ -215,7 +215,7 @@ async def get_friend(id: str, current_user: User = Depends(get_current_user)):
if friend is None: friend_not_found() if friend is None: friend_not_found()
return serializers.friend_serialize(friend) return serializers.friend_serialize(friend,False if friend['user_id']==current_user._id else True)
@app.post( @app.post(
path="/friend/add", path="/friend/add",
@ -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,12 +17,11 @@ 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
data = response.json() data = response.json()
assert isinstance(data, dict) assert isinstance(data, list)
def test_get_friend(token): def test_get_friend(token):
friend_id = str(db["friends"].find_one({})["_id"]) friend_id = str(db["friends"].find_one({})["_id"])
@ -30,7 +29,6 @@ def test_get_friend(token):
assert response.status_code == 200 assert response.status_code == 200
data = response.json() data = response.json()
assert "id" in data assert "id" in data
assert "user_id" in data
assert "friend_user_id" in data assert "friend_user_id" in data
assert "status" in data assert "status" in data

Loading…
Cancel
Save