mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-07 07:55:16 +02:00
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
|
|
from types import SimpleNamespace
|
||
|
|
from unittest.mock import patch
|
||
|
|
|
||
|
|
from fastapi import FastAPI
|
||
|
|
from fastapi.testclient import TestClient
|
||
|
|
|
||
|
|
from api.routes.workflow import router
|
||
|
|
from api.services.auth.depends import get_user
|
||
|
|
|
||
|
|
|
||
|
|
def _make_test_app() -> FastAPI:
|
||
|
|
app = FastAPI()
|
||
|
|
app.include_router(router)
|
||
|
|
app.dependency_overrides[get_user] = lambda: SimpleNamespace(
|
||
|
|
id=1,
|
||
|
|
provider_id="provider-1",
|
||
|
|
selected_organization_id=11,
|
||
|
|
)
|
||
|
|
return app
|
||
|
|
|
||
|
|
|
||
|
|
def test_create_workflow_rejects_invalid_trigger_path_before_db_write():
|
||
|
|
app = _make_test_app()
|
||
|
|
client = TestClient(app)
|
||
|
|
|
||
|
|
with patch("api.routes.workflow.db_client") as mock_db:
|
||
|
|
response = client.post(
|
||
|
|
"/workflow/create/definition",
|
||
|
|
json={
|
||
|
|
"name": "Support Agent",
|
||
|
|
"workflow_definition": {
|
||
|
|
"nodes": [
|
||
|
|
{
|
||
|
|
"id": "trigger-1",
|
||
|
|
"type": "trigger",
|
||
|
|
"data": {"trigger_path": "support/west"},
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"edges": [],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
)
|
||
|
|
|
||
|
|
assert response.status_code == 422
|
||
|
|
detail = response.json()["detail"]
|
||
|
|
assert detail["is_valid"] is False
|
||
|
|
assert detail["errors"][0]["field"] == "data.trigger_path"
|
||
|
|
assert "single URL path segment" in detail["errors"][0]["message"]
|
||
|
|
assert mock_db.mock_calls == []
|