Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/utils/send_email.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ def send_email_resend(to: str, subject: str, html: str) -> dict:
if not resend.api_key:
return {"error": "Missing RESEND_API_KEY"}
params: resend.Emails.SendParams = {
"from": "NX <nx@goldlabel.pro>",
"from": "NX° <nx@goldlabel.pro>",
"to": [to],
"subject": subject,
"html": html,
Expand Down
11 changes: 3 additions & 8 deletions tests/test_health.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,7 @@ def test_health_endpoint():
assert response.json() == {"status": "ok"}

def test_health_meta_keys():
# The /health endpoint now only returns {"status": "ok"}
response = client.get("/health")
data = response.json()
if "meta" in data:
meta = data["meta"]
for key in ["severity", "title", "version", "base_url", "time"]:
assert key in meta
else:
# Legacy: no meta, just status
assert data == {"status": "ok"}
assert response.status_code == 200
assert response.json() == {"status": "ok"}
9 changes: 7 additions & 2 deletions tests/test_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,17 @@ def test_llm_real_api():


def test_llm_get_endpoint():
response = client.get("/llm")
api_key = os.getenv("PYTHON_KEY", "test")
response = client.get("/llm", headers={"X-API-Key": api_key})
assert response.status_code == 200
data = response.json()
assert "meta" in data
assert data["meta"]["severity"] == "success"
assert "LLM" in data["meta"]["title"]
assert "records" in data["meta"]["title"]
assert "data" in data
assert "data" in data["data"]
assert isinstance(data["data"]["data"], list)


def test_llm_post_endpoint(monkeypatch):
Expand All @@ -51,8 +55,9 @@ class MockGenAIClient:

monkeypatch.setattr("google.genai.Client", lambda *args, **kwargs: MockGenAIClient())

api_key = os.getenv("PYTHON_KEY", "test")
payload = {"prompt": "Test prompt"}
response = client.post("/llm", json=payload)
response = client.post("/llm", json=payload, headers={"X-API-Key": api_key})
assert response.status_code == 200
data = response.json()
assert "meta" in data
Expand Down
5 changes: 3 additions & 2 deletions tests/test_prospects.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ def test_get_prospects_root():
assert response.status_code == 200
data = response.json()
assert "meta" in data
assert "pagination" in data
assert "data" in data
assert isinstance(data["data"], list)
# Check that the expected keys are present in the data list (if not empty)
if data["data"]:
first_item = data["data"][0]
# Adjust these keys to match your actual prospect schema
assert "id" in first_item
assert "first_name" in first_item or "last_name" in first_item
# Meta checks
Expand All @@ -27,5 +27,6 @@ def test_prospects_returns_list():
assert response.status_code == 200
data = response.json()
assert "meta" in data
assert "pagination" in data
assert "data" in data
assert isinstance(data["data"], list) or isinstance(data["data"], dict)
assert isinstance(data["data"], list)
26 changes: 26 additions & 0 deletions tests/test_resend.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import os
import pytest
from fastapi.testclient import TestClient
from app.main import app

client = TestClient(app)

def test_resend_post_email(monkeypatch):
"""Test POST /resend actually sends an email if RESEND_API_KEY is set."""
resend_api_key = os.getenv("RESEND_API_KEY")
if not resend_api_key:
pytest.skip("RESEND_API_KEY not set; skipping real email test.")

payload = {
"to": 'listingslab@gmail.com',
"subject": "Python pytest",
"html": "Python tests have run"
}
response = client.post("/resend", json=payload)
assert response.status_code == 202
data = response.json()
assert "meta" in data
assert data["meta"]["severity"] == "success"
assert "Email sent successfully" in data["meta"]["title"]
assert "data" in data
assert "id" in data["data"] or "object" in data["data"]
2 changes: 1 addition & 1 deletion tests/test_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from unittest.mock import MagicMock
from fastapi.testclient import TestClient
from app.api.routes import get_db_connection
from app.main import app

client = TestClient(app)
Expand All @@ -22,3 +21,4 @@ def test_health_returns_ok() -> None:
assert response.status_code == 200
assert response.json() == {"status": "ok"}


Loading