🦺 Validate files in PinDTO + test

nominatim_fix
Alix JEUDI--LEMOINE 3 weeks ago
parent 8b9b4e6e08
commit 1ad47cb20b

@ -1,11 +1,24 @@
from pydantic import BaseModel
from pydantic import BaseModel, Field, field_validator
from typing import List
from bson import ObjectId
import bson
class PinDTO(BaseModel):
title: str
description: str
location: list
files: list
user_id: str
files: List[str] = Field(default_factory=list)
user_id: str = None
@field_validator('files')
@classmethod
def validate_files(cls, files):
for file_id in files:
try:
ObjectId(file_id)
except bson.errors.InvalidId:
raise ValueError(f"Invalid image ID format: {file_id}")
return files
class PinShareDTO(BaseModel):
friend_id: str

@ -41,6 +41,21 @@ def test_add_pin(token, user_id):
pin_id = create_test_pin(token, user_id, image_id)
assert pin_id is not None
def test_add_pin_invalid_files_format(token, user_id):
response = client.post(
"/pin/add",
json={
"title": "Test Pin",
"description": "Test Description",
"location": [0,0],
"files": ["abc"],
"user_id": user_id
},
headers={"Authorization": f"Bearer {token}"}
)
assert response.status_code == 422
assert "Invalid image ID format" in response.json()["detail"][0]["msg"]
def test_list_pins(token):
response = client.get("/pins", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200

Loading…
Cancel
Save