45 lines
1.8 KiB
Python
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"
|