diff --git a/gso/api/v1/processes.py b/gso/api/v1/processes.py index 6ad15e91519db09643359614a24ce61587a6739e..a5f120397a57c9fa688e0058719c64c113d34181 100644 --- a/gso/api/v1/processes.py +++ b/gso/api/v1/processes.py @@ -3,7 +3,7 @@ from typing import Any from uuid import UUID -from fastapi import APIRouter, HTTPException, status, Depends +from fastapi import APIRouter, Depends, HTTPException, status from orchestrator.db import ProcessStepTable from orchestrator.schemas.base import OrchestratorBaseModel diff --git a/gso/middlewares.py b/gso/middlewares.py index 222f50200ca55aab9d1e5d95fc97a7dd08241c2e..e0d276e3558c72d43127310cdd5576a062cb2be3 100644 --- a/gso/middlewares.py +++ b/gso/middlewares.py @@ -61,6 +61,7 @@ class ModifyProcessEndpointResponse(BaseHTTPMiddleware): Args: ---- request (Request): The incoming HTTP request. + Returns: ------- str: The token from the request headers in specific format. @@ -71,8 +72,7 @@ class ModifyProcessEndpointResponse(BaseHTTPMiddleware): # Remove the "Bearer " prefix from the token token = authorization_header.replace(bearer_prefix, "") return f"?token={token}" - else: - return "" + return "" async def modify_response_body(self, response_body: dict[str, Any], request: Request) -> None: """Modify the response body as needed. diff --git a/test/processes/__init__.py b/test/processes/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/processes/conftest.py b/test/processes/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..428b0a147c77514e35b1c674499c0eacced44ab2 --- /dev/null +++ b/test/processes/conftest.py @@ -0,0 +1 @@ +from test.fixtures import nokia_router_subscription_factory, site_subscription_factory # noqa: F401 diff --git a/test/processes/test_processes.py b/test/processes/test_processes.py new file mode 100644 index 0000000000000000000000000000000000000000..671218400c022a96eaa1e119be60db4fa5ec0d7b --- /dev/null +++ b/test/processes/test_processes.py @@ -0,0 +1,49 @@ +from uuid import uuid4 + +import pytest +from orchestrator.db import ( + ProcessStepTable, + ProcessSubscriptionTable, + ProcessTable, + db, +) +from orchestrator.workflow import ProcessStatus + + +@pytest.fixture() +def create_process(faker, nokia_router_subscription_factory): + process_id = uuid4() + process = ProcessTable(process_id=process_id, workflow_name=faker.sentence(), last_status=ProcessStatus.SUSPENDED) + subscription = nokia_router_subscription_factory() + process_subscription = ProcessSubscriptionTable(process_id=process_id, subscription_id=subscription) + + db.session.add(process) + db.session.add(process_subscription) + db.session.commit() + + return process_id + + +def test_callback_results_endpoint(test_client, create_process, faker): + expected_result = {"id": 1, "output": faker.sentence()} + + step = ProcessStepTable( + process_id=create_process, + name="Modify", + status="suspend", + state={"subscription_id": uuid4(), "callback_result": expected_result}, + ) + db.session.add(step) + db.session.commit() + + response = test_client.get(f"/api/v1/processes/steps/{step.step_id}/callback-results") + + assert response.status_code == 200 + assert response.json() == {"callback_results": expected_result} + + +def test_callback_results_endpoint_with_wrong_step_id(test_client): + response = test_client.get(f"/api/v1/processes/steps/{uuid4()}/callback-results") + + assert response.status_code == 404 + assert response.json() == {"detail": "Callback result not found."}