Files
call-center/tests/test_email_adapter_service.py
T

45 lines
1.8 KiB
Python

from fastapi.testclient import TestClient
from services.email_adapter_service.app import app as email_app
from services.interaction_service.app import app as interaction_app
def test_email_message_creates_interaction_and_can_be_listed():
email_client = TestClient(email_app)
interaction_client = TestClient(interaction_app)
created = email_client.post(
"/integrations/email/messages",
json={
"from_email": "person@example.com",
"subject": "Portal access issue",
"body": "Please restore access to the portal account.",
"customer_external_id": "cust_ext_email_1",
"queue_id": "line2",
"priority": 2,
"payload": {"source": "test", "mailbox": "support@example.com"},
},
)
assert created.status_code == 200
payload = created.json()
assert payload["message_id"].startswith("eml_")
assert payload["interaction_id"].startswith("int_")
interaction = interaction_client.get(f"/interactions/{payload['interaction_id']}")
assert interaction.status_code == 200
assert interaction.json()["channel"] == "email"
assert interaction.json()["queue_id"] == "line2"
assert interaction.json()["customer_id"] == "cust_ext_email_1"
assert interaction.json()["subject"] == "Portal access issue"
timeline = interaction_client.get(f"/interactions/{payload['interaction_id']}/timeline")
assert timeline.status_code == 200
actions = [event["action"] for event in timeline.json()["events"]]
assert "interaction.created" in actions
assert "email.message_received" in actions
listed = email_client.get("/integrations/email/messages?from_email=person@example.com")
assert listed.status_code == 200
assert len(listed.json()) >= 1
assert listed.json()[-1]["from_email"] == "person@example.com"