Spaces:
Runtime error
Runtime error
| 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"] | |