test(api): fix tests for workflow nodes.

pull/20699/head
QuantumGhost 11 months ago
parent b63f90c92f
commit fbc9480343

@ -97,7 +97,7 @@ class HttpRequestNode(BaseNode[HttpRequestNodeData]):
status=WorkflowNodeExecutionStatus.SUCCEEDED, status=WorkflowNodeExecutionStatus.SUCCEEDED,
outputs={ outputs={
"status_code": response.status_code, "status_code": response.status_code,
"body": response.text if not files else "", "body": response.text if not files.value else "",
"headers": response.headers, "headers": response.headers,
"files": files, "files": files,
}, },

@ -3,6 +3,7 @@ import uuid
from unittest.mock import patch from unittest.mock import patch
from core.app.entities.app_invoke_entities import InvokeFrom from core.app.entities.app_invoke_entities import InvokeFrom
from core.variables.segments import ArrayAnySegment, ArrayStringSegment
from core.workflow.entities.node_entities import NodeRunResult from core.workflow.entities.node_entities import NodeRunResult
from core.workflow.entities.variable_pool import VariablePool from core.workflow.entities.variable_pool import VariablePool
from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionStatus from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionStatus
@ -197,7 +198,7 @@ def test_run():
count += 1 count += 1
if isinstance(item, RunCompletedEvent): if isinstance(item, RunCompletedEvent):
assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert item.run_result.outputs == {"output": ["dify 123", "dify 123"]} assert item.run_result.outputs == {"output": ArrayStringSegment(value=["dify 123", "dify 123"])}
assert count == 20 assert count == 20
@ -413,7 +414,7 @@ def test_run_parallel():
count += 1 count += 1
if isinstance(item, RunCompletedEvent): if isinstance(item, RunCompletedEvent):
assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert item.run_result.outputs == {"output": ["dify 123", "dify 123"]} assert item.run_result.outputs == {"output": ArrayStringSegment(value=["dify 123", "dify 123"])}
assert count == 32 assert count == 32
@ -654,7 +655,7 @@ def test_iteration_run_in_parallel_mode():
parallel_arr.append(item) parallel_arr.append(item)
if isinstance(item, RunCompletedEvent): if isinstance(item, RunCompletedEvent):
assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert item.run_result.outputs == {"output": ["dify 123", "dify 123"]} assert item.run_result.outputs == {"output": ArrayStringSegment(value=["dify 123", "dify 123"])}
assert count == 32 assert count == 32
for item in sequential_result: for item in sequential_result:
@ -662,7 +663,7 @@ def test_iteration_run_in_parallel_mode():
count += 1 count += 1
if isinstance(item, RunCompletedEvent): if isinstance(item, RunCompletedEvent):
assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert item.run_result.outputs == {"output": ["dify 123", "dify 123"]} assert item.run_result.outputs == {"output": ArrayStringSegment(value=["dify 123", "dify 123"])}
assert count == 64 assert count == 64
@ -846,7 +847,7 @@ def test_iteration_run_error_handle():
count += 1 count += 1
if isinstance(item, RunCompletedEvent): if isinstance(item, RunCompletedEvent):
assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert item.run_result.outputs == {"output": [None, None]} assert item.run_result.outputs == {"output": ArrayAnySegment(value=[None, None])}
assert count == 14 assert count == 14
# execute remove abnormal output # execute remove abnormal output
@ -857,5 +858,5 @@ def test_iteration_run_error_handle():
count += 1 count += 1
if isinstance(item, RunCompletedEvent): if isinstance(item, RunCompletedEvent):
assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert item.run_result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert item.run_result.outputs == {"output": []} assert item.run_result.outputs == {"output": ArrayAnySegment(value=[])}
assert count == 14 assert count == 14

@ -7,6 +7,7 @@ from docx.oxml.text.paragraph import CT_P
from core.file import File, FileTransferMethod from core.file import File, FileTransferMethod
from core.variables import ArrayFileSegment from core.variables import ArrayFileSegment
from core.variables.segments import ArrayStringSegment
from core.variables.variables import StringVariable from core.variables.variables import StringVariable
from core.workflow.entities.node_entities import NodeRunResult from core.workflow.entities.node_entities import NodeRunResult
from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionStatus from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionStatus
@ -69,7 +70,13 @@ def test_run_invalid_variable_type(document_extractor_node, mock_graph_runtime_s
@pytest.mark.parametrize( @pytest.mark.parametrize(
("mime_type", "file_content", "expected_text", "transfer_method", "extension"), ("mime_type", "file_content", "expected_text", "transfer_method", "extension"),
[ [
("text/plain", b"Hello, world!", ["Hello, world!"], FileTransferMethod.LOCAL_FILE, ".txt"), (
"text/plain",
b"Hello, world!",
["Hello, world!"],
FileTransferMethod.LOCAL_FILE,
".txt",
),
( (
"application/pdf", "application/pdf",
b"%PDF-1.5\n%Test PDF content", b"%PDF-1.5\n%Test PDF content",
@ -84,7 +91,13 @@ def test_run_invalid_variable_type(document_extractor_node, mock_graph_runtime_s
FileTransferMethod.REMOTE_URL, FileTransferMethod.REMOTE_URL,
"", "",
), ),
("text/plain", b"Remote content", ["Remote content"], FileTransferMethod.REMOTE_URL, None), (
"text/plain",
b"Remote content",
["Remote content"],
FileTransferMethod.REMOTE_URL,
None,
),
], ],
) )
def test_run_extract_text( def test_run_extract_text(
@ -131,7 +144,7 @@ def test_run_extract_text(
assert isinstance(result, NodeRunResult) assert isinstance(result, NodeRunResult)
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED, result.error assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED, result.error
assert result.outputs is not None assert result.outputs is not None
assert result.outputs["text"] == expected_text assert result.outputs["text"] == ArrayStringSegment(value=expected_text)
if transfer_method == FileTransferMethod.REMOTE_URL: if transfer_method == FileTransferMethod.REMOTE_URL:
mock_ssrf_proxy_get.assert_called_once_with("https://example.com/file.txt") mock_ssrf_proxy_get.assert_called_once_with("https://example.com/file.txt")

@ -115,7 +115,7 @@ def test_filter_files_by_type(list_operator_node):
}, },
] ]
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
for expected_file, result_file in zip(expected_files, result.outputs["result"]): for expected_file, result_file in zip(expected_files, result.outputs["result"].value):
assert expected_file["filename"] == result_file.filename assert expected_file["filename"] == result_file.filename
assert expected_file["type"] == result_file.type assert expected_file["type"] == result_file.type
assert expected_file["tenant_id"] == result_file.tenant_id assert expected_file["tenant_id"] == result_file.tenant_id

Loading…
Cancel
Save