81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime, timezone
|
|
from uuid import uuid4
|
|
|
|
from app.api.executions.get_execution import _build_step_run_response
|
|
from app.models.execution import ExecutionStepRun, ExecutionStepStatus
|
|
|
|
|
|
def _build_step_run(
|
|
*,
|
|
request_snapshot,
|
|
response_snapshot,
|
|
) -> ExecutionStepRun:
|
|
now = datetime.now(timezone.utc)
|
|
step_run = ExecutionStepRun(
|
|
run_id=uuid4(),
|
|
step=1,
|
|
status=ExecutionStepStatus.SUCCEEDED,
|
|
)
|
|
step_run.name = "Step 1"
|
|
step_run.request_snapshot = request_snapshot
|
|
step_run.response_snapshot = response_snapshot
|
|
step_run.created_at = now
|
|
step_run.updated_at = now
|
|
return step_run
|
|
|
|
|
|
def test_build_step_run_response_for_post_sets_accepted_and_output_payloads():
|
|
step_run = _build_step_run(
|
|
request_snapshot={
|
|
"method": "post",
|
|
"json_body": {"subject": "Hi", "message": "Hello"},
|
|
},
|
|
response_snapshot={
|
|
"status_code": 200,
|
|
"body": {"sent": 1},
|
|
},
|
|
)
|
|
|
|
response = _build_step_run_response(step_run)
|
|
|
|
assert response.method == "POST"
|
|
assert response.status_code == 200
|
|
assert response.accepted_payload == {"subject": "Hi", "message": "Hello"}
|
|
assert response.output_payload == {"sent": 1}
|
|
|
|
|
|
def test_build_step_run_response_for_get_keeps_accepted_payload_none():
|
|
step_run = _build_step_run(
|
|
request_snapshot={
|
|
"method": "GET",
|
|
"query_params": {"limit": 20},
|
|
},
|
|
response_snapshot={
|
|
"status_code": "204",
|
|
"body": "",
|
|
},
|
|
)
|
|
|
|
response = _build_step_run_response(step_run)
|
|
|
|
assert response.method == "GET"
|
|
assert response.status_code == 204
|
|
assert response.accepted_payload is None
|
|
assert response.output_payload == ""
|
|
|
|
|
|
def test_build_step_run_response_handles_missing_snapshots():
|
|
step_run = _build_step_run(
|
|
request_snapshot=None,
|
|
response_snapshot=None,
|
|
)
|
|
|
|
response = _build_step_run_response(step_run)
|
|
|
|
assert response.method is None
|
|
assert response.status_code is None
|
|
assert response.accepted_payload is None
|
|
assert response.output_payload is None
|