From c4b29853610fe6d2c7dff7d3067b17f33f24e5e6 Mon Sep 17 00:00:00 2001 From: QuantumGhost Date: Sat, 9 May 2026 02:12:46 +0800 Subject: [PATCH] test(api): fix broken HITL tests --- .../controllers/web/test_human_input_file_upload.py | 9 ++++----- .../advanced_chat/test_generate_task_pipeline_core.py | 4 ++-- .../test_sqlalchemy_api_workflow_run_repository.py | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/api/tests/unit_tests/controllers/web/test_human_input_file_upload.py b/api/tests/unit_tests/controllers/web/test_human_input_file_upload.py index 66747b89d6..5786748ba3 100644 --- a/api/tests/unit_tests/controllers/web/test_human_input_file_upload.py +++ b/api/tests/unit_tests/controllers/web/test_human_input_file_upload.py @@ -31,7 +31,7 @@ def _upload_context() -> SimpleNamespace: return SimpleNamespace( form_id="form-1", upload_token_id="token-row-1", - end_user=SimpleNamespace(id="end-user-1", tenant_id="tenant-1"), + owner=SimpleNamespace(id="owner-1", current_tenant_id="tenant-1"), ) @@ -90,7 +90,7 @@ def test_local_upload_ignores_source_and_records_form_file_link(monkeypatch: pyt assert result["id"] == "file-1" file_service.upload_file.assert_called_once() assert file_service.upload_file.call_args.kwargs["source"] is None - assert file_service.upload_file.call_args.kwargs["user"].id == "end-user-1" + assert file_service.upload_file.call_args.kwargs["user"].id == "owner-1" service.record_upload_file.assert_called_once_with( context=service.validate_upload_token.return_value, file_id="file-1", @@ -115,9 +115,7 @@ def test_local_upload_missing_file_raises_after_valid_token(monkeypatch: pytest. service.validate_upload_token.assert_called_once_with("hitl_upload_token-1") -def test_remote_upload_validates_token_before_fetching_remote_url( - monkeypatch: pytest.MonkeyPatch, app: Flask -) -> None: +def test_remote_upload_validates_token_before_fetching_remote_url(monkeypatch: pytest.MonkeyPatch, app: Flask) -> None: service = MagicMock() service.validate_upload_token.side_effect = InvalidUploadTokenForbiddenError() monkeypatch.setattr(upload_module, "HumanInputFileUploadService", lambda engine: service) @@ -180,6 +178,7 @@ def test_remote_upload_records_form_file_link(monkeypatch: pytest.MonkeyPatch, a assert result["url"] == "signed:file-1" file_service.upload_file.assert_called_once() assert file_service.upload_file.call_args.kwargs["source_url"] == "https://example.com/file.txt" + assert file_service.upload_file.call_args.kwargs["user"].id == "owner-1" service.record_upload_file.assert_called_once_with( context=service.validate_upload_token.return_value, file_id="file-1", diff --git a/api/tests/unit_tests/core/app/apps/advanced_chat/test_generate_task_pipeline_core.py b/api/tests/unit_tests/core/app/apps/advanced_chat/test_generate_task_pipeline_core.py index 64bcfa9a18..cd85a3b781 100644 --- a/api/tests/unit_tests/core/app/apps/advanced_chat/test_generate_task_pipeline_core.py +++ b/api/tests/unit_tests/core/app/apps/advanced_chat/test_generate_task_pipeline_core.py @@ -51,7 +51,7 @@ from core.base.tts.app_generator_tts_publisher import AudioTrunk from core.workflow.system_variables import build_system_variables from graphon.entities.pause_reason import PauseReasonType from graphon.enums import BuiltinNodeTypes -from graphon.nodes.human_input.entities import UserAction +from graphon.nodes.human_input.entities import UserActionConfig from graphon.runtime import GraphRuntimeState, VariablePool from libs.datetime_utils import naive_utc_now from models.enums import MessageStatus @@ -148,7 +148,7 @@ class TestAdvancedChatGenerateTaskPipeline: node_title="Approval", form_content="Need approval", inputs=[], - actions=[UserAction(id="approve", title="Approve")], + actions=[UserActionConfig(id="approve", title="Approve")], display_in_ui=True, form_token="token-1", resolved_default_values={}, diff --git a/api/tests/unit_tests/repositories/test_sqlalchemy_api_workflow_run_repository.py b/api/tests/unit_tests/repositories/test_sqlalchemy_api_workflow_run_repository.py index ac4b087b91..8f27d0938d 100644 --- a/api/tests/unit_tests/repositories/test_sqlalchemy_api_workflow_run_repository.py +++ b/api/tests/unit_tests/repositories/test_sqlalchemy_api_workflow_run_repository.py @@ -3,7 +3,7 @@ from __future__ import annotations from datetime import UTC, datetime from types import SimpleNamespace -from graphon.nodes.human_input.entities import FormDefinition, FormInput, UserAction +from graphon.nodes.human_input.entities import FormDefinition, ParagraphInputConfig, UserActionConfig from graphon.nodes.human_input.enums import FormInputType from models.human_input import RecipientType from repositories.sqlalchemy_api_workflow_run_repository import _build_human_input_required_reason @@ -13,8 +13,8 @@ def _build_form_model() -> SimpleNamespace: expiration_time = datetime(2024, 1, 1, tzinfo=UTC) definition = FormDefinition( form_content="content", - inputs=[FormInput(type=FormInputType.TEXT_INPUT, output_variable_name="name")], - user_actions=[UserAction(id="approve", title="Approve")], + inputs=[ParagraphInputConfig(type=FormInputType.PARAGRAPH, output_variable_name="name")], + user_actions=[UserActionConfig(id="approve", title="Approve")], rendered_content="rendered", expiration_time=expiration_time, default_values={"name": "Alice"},