email-security-ai / tests /test_api.py
GopalJee2745's picture
Prepare HF Docker deployment: add root app.py, Dockerfile, startup handling
cf19f11
import pytest
from fastapi.testclient import TestClient
from app.app import app
client = TestClient(app)
def test_root_endpoint():
response = client.get("/")
assert response.status_code == 200
assert response.json()["status"] == "ok"
def test_analyze_endpoint():
# Uses the prompt's provided test sample
payload = {
"type":"email",
"timestamp":"2026-03-16T14:22:10Z",
"subject":"Verify your PayPal account",
"sender":"paypal-security@mail-paypal.com",
"content":{"text":"Your account is suspended. Click here to verify."},
"links":[{"url":"http://paypal-login-check.com","domain":"paypal-login-check.com"}],
"images":[],
"attachments":[],
"metadata":{"num_links":1,"num_images":0,"has_attachment":False}
}
response = client.post("/analyze", json=payload)
assert response.status_code == 200
data = response.json()
# Check expected output keys as requested by user
assert "classification" in data
assert "risk_analysis" in data
assert "recommended_actions" in data
assert "rag_evidence" in data
assert "metadata" in data
# Inner structures validation
assert len(data["classification"]["top_labels"]) <= 5
assert data["classification"]["model_version"] == "facebook/bart-large-mnli"
assert "risk_score" in data["risk_analysis"]
assert "reasons" in data["risk_analysis"]
assert isinstance(data["recommended_actions"], list)
assert isinstance(data["rag_evidence"], list)