Files
orchestrator/tests/test_webhooks.py

66 lines
1.7 KiB
Python

import pytest
from fastapi.testclient import TestClient
import os
import tempfile
# Override DB path before importing app
os.environ["ORCH_DB_PATH"] = os.path.join(tempfile.gettempdir(), "test_orchestrator.db")
from src.main import app
client = TestClient(app)
def test_health():
resp = client.get("/health")
assert resp.status_code == 200
assert resp.json()["status"] == "ok"
assert resp.json()["service"] == "orchestrator"
def test_plane_webhook_accepts():
resp = client.post("/webhook/plane", json={
"event": "work_item.created",
"data": {"id": "test-123", "name": "Test task", "project": "proj-1"}
})
assert resp.status_code == 200
assert resp.json()["status"] == "accepted"
def test_plane_webhook_comment():
resp = client.post("/webhook/plane", json={
"event": "comment.created",
"data": {"comment": "LGTM :approved:"}
})
assert resp.status_code == 200
assert resp.json()["status"] == "accepted"
def test_gitea_webhook_push():
resp = client.post(
"/webhook/gitea",
json={"ref": "refs/heads/feature/test", "repository": {"name": "enduro-trails"}},
headers={"X-Gitea-Event": "push"}
)
assert resp.status_code == 200
assert resp.json()["status"] == "accepted"
def test_gitea_webhook_pr():
resp = client.post(
"/webhook/gitea",
json={
"action": "reviewed",
"pull_request": {"state": "approved", "number": 1}
},
headers={"X-Gitea-Event": "pull_request"}
)
assert resp.status_code == 200
assert resp.json()["status"] == "accepted"
def test_status_endpoint():
resp = client.get("/status")
assert resp.status_code == 200
assert "active_tasks" in resp.json()