feat: recording upload and management API with tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-03 22:10:42 +05:00
parent bfb1fc9312
commit 2a9cf9e224
6 changed files with 266 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
import io
import pytest
from httpx import AsyncClient
@pytest.mark.asyncio
async def test_upload_recording(auth_client: AsyncClient):
file_content = b"\x00" * 1024
resp = await auth_client.post(
"/api/recordings/upload",
files={"file": ("test.mp4", io.BytesIO(file_content), "video/mp4")},
data={"title": "Test Meeting"},
)
assert resp.status_code == 201
data = resp.json()
assert data["title"] == "Test Meeting"
assert data["format"] == "mp4"
assert data["source"] == "web"
assert data["status"] == "uploaded"
@pytest.mark.asyncio
async def test_upload_unsupported_format(auth_client: AsyncClient):
resp = await auth_client.post(
"/api/recordings/upload",
files={"file": ("test.exe", io.BytesIO(b"\x00"), "application/octet-stream")},
)
assert resp.status_code == 400
@pytest.mark.asyncio
async def test_list_recordings(auth_client: AsyncClient):
await auth_client.post(
"/api/recordings/upload",
files={"file": ("list_test.mp3", io.BytesIO(b"\x00" * 512), "audio/mp3")},
)
resp = await auth_client.get("/api/recordings")
assert resp.status_code == 200
data = resp.json()
assert data["total"] >= 1
assert len(data["items"]) >= 1
@pytest.mark.asyncio
async def test_get_recording_by_id(auth_client: AsyncClient):
upload_resp = await auth_client.post(
"/api/recordings/upload",
files={"file": ("get_test.wav", io.BytesIO(b"\x00" * 256), "audio/wav")},
)
rec_id = upload_resp.json()["id"]
resp = await auth_client.get(f"/api/recordings/{rec_id}")
assert resp.status_code == 200
assert resp.json()["id"] == rec_id
@pytest.mark.asyncio
async def test_delete_recording(auth_client: AsyncClient):
upload_resp = await auth_client.post(
"/api/recordings/upload",
files={"file": ("del_test.ogg", io.BytesIO(b"\x00" * 128), "audio/ogg")},
)
rec_id = upload_resp.json()["id"]
resp = await auth_client.delete(f"/api/recordings/{rec_id}")
assert resp.status_code == 204