Fix VS Code file mime type serialization

This commit is contained in:
Alexa Amundson
2025-11-16 04:36:11 -06:00
parent 902e21b760
commit a82809a1cc
3 changed files with 78 additions and 2 deletions

View File

@@ -0,0 +1,72 @@
"""Tests for VS Code integration endpoints"""
from datetime import datetime
from typing import Optional
import pytest
from httpx import AsyncClient
from sqlalchemy.ext.asyncio import AsyncSession
from app.models import File
async def _create_file(db: AsyncSession, user_id: int, name: str, file_type: Optional[str]) -> File:
"""Helper to create a file record for tests."""
now = datetime.utcnow()
file = File(
user_id=user_id,
name=name,
original_name=name,
path=f"/workspace/{name}",
file_type=file_type,
extension=name.split(".")[-1],
size=128,
storage_key=f"storage/{name}",
storage_url=None,
checksum="checksum",
created_at=now,
updated_at=now,
)
db.add(file)
await db.commit()
await db.refresh(file)
return file
@pytest.mark.asyncio
async def test_list_code_files_handles_mime_types(
client: AsyncClient,
auth_headers: dict,
db_session: AsyncSession,
test_user: dict,
):
"""Ensure /files endpoint returns data even when file_type is missing."""
await _create_file(db_session, test_user["id"], "script.py", "text/x-python")
await _create_file(db_session, test_user["id"], "README", None)
response = await client.get("/api/vscode/files", headers=auth_headers)
assert response.status_code == 200
payload = response.json()
assert payload["total"] == 2
mime_values = {file_info["mime_type"] for file_info in payload["files"]}
assert "text/x-python" in mime_values
assert None in mime_values
@pytest.mark.asyncio
async def test_get_file_content_returns_metadata(
client: AsyncClient,
auth_headers: dict,
db_session: AsyncSession,
test_user: dict,
):
"""Ensure the file content endpoint responds with metadata."""
file = await _create_file(db_session, test_user["id"], "main.py", "text/x-python")
response = await client.get(f"/api/vscode/files/{file.id}/content", headers=auth_headers)
assert response.status_code == 200
payload = response.json()
assert payload["id"] == file.id
assert payload["metadata"]["mime_type"] == "text/x-python"
assert payload["metadata"]["size"] == 128