diff --git a/mistral/api/controllers/v2/task.py b/mistral/api/controllers/v2/task.py index 7c9e4ea50..518bde5bf 100644 --- a/mistral/api/controllers/v2/task.py +++ b/mistral/api/controllers/v2/task.py @@ -28,6 +28,7 @@ from mistral.api.controllers.v2 import sub_execution from mistral.api.controllers.v2 import types from mistral import context from mistral.db.v2 import api as db_api +from mistral.db.v2.sqlalchemy import models as db_models from mistral import exceptions as exc from mistral import expressions as expr from mistral.lang import parser as spec_parser @@ -440,6 +441,12 @@ class ExecutionTasksController(rest.RestController): """ acl.enforce('tasks:list', context.ctx()) + with db_api.transaction(): + db_api.get_workflow_execution( + workflow_execution_id, + fields=(db_models.WorkflowExecution.id,) + ) + filters = filter_utils.create_filters_from_request_params( workflow_execution_id=workflow_execution_id, created_at=created_at, diff --git a/mistral/tests/unit/api/v2/test_executions.py b/mistral/tests/unit/api/v2/test_executions.py index a3b1b787f..7873b1f33 100644 --- a/mistral/tests/unit/api/v2/test_executions.py +++ b/mistral/tests/unit/api/v2/test_executions.py @@ -994,3 +994,17 @@ class TestExecutionsController(base.APITest): "The field 'id' can't hold None value.", resp.body.decode() ) + + @mock.patch.object(db_api, 'get_workflow_execution', MOCK_NOT_FOUND) + def test_get_all_tasks_within_execution(self): + fake_execution_id = "00000000-0000-0000-0000-000000000000" + resp = self.app.get( + '/v2/executions/%s/tasks' % fake_execution_id, + expect_errors=True + ) + + self.assertEqual(404, resp.status_int) + self.assertIn( + "Object not found", + resp.body.decode() + )