Spaces:
Running
Running
import pytest | |
from fastapi.testclient import TestClient | |
from everycure.app import app | |
import os | |
import tempfile | |
client = TestClient(app) | |
def create_test_pdf(): | |
# Create a temporary PDF file for testing | |
with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tmp: | |
tmp.write(b"%PDF-1.5\nTest PDF content") | |
return tmp.name | |
def test_pdf(): | |
pdf_path = create_test_pdf() | |
yield pdf_path | |
# Cleanup after test | |
os.unlink(pdf_path) | |
def test_extract_entities_invalid_file(): | |
# Test with non-PDF file | |
with tempfile.NamedTemporaryFile(suffix=".txt") as tmp: | |
tmp.write(b"Not a PDF file") | |
tmp.seek(0) | |
response = client.post( | |
"/api/v1/extract", | |
files={"file": ("test.txt", tmp, "text/plain")} | |
) | |
assert response.status_code == 415 | |
assert "Unsupported file type" in response.json()["detail"] | |
def test_extract_entities_empty_file(test_pdf): | |
with open(test_pdf, "rb") as f: | |
response = client.post( | |
"/api/v1/extract", | |
files={} # No file provided | |
) | |
assert response.status_code == 400 # Bad request error | |
assert "Bad request, file not included or empty filename" in response.json()["detail"] | |
def test_extract_entities_server_error(monkeypatch): | |
# Mock extract_entities_from_pdf to raise an exception | |
def mock_extract(*args): | |
raise Exception("Internal server error") | |
monkeypatch.setattr("everycure.app.extract_entities_from_pdf", mock_extract) | |
# Create a valid PDF file but force a server error | |
with tempfile.NamedTemporaryFile(suffix=".pdf") as tmp: | |
tmp.write(b"%PDF-1.5\nTest PDF content") | |
tmp.seek(0) | |
response = client.post( | |
"/api/v1/extract", | |
files={"file": ("test.pdf", tmp, "application/pdf")} | |
) | |
assert response.status_code == 500 | |
assert "Internal server error" in response.json()["detail"] | |