49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
import pytest
|
|
|
|
from core.request_utils import validate_workflow_payload
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("value", "expected", "error"),
|
|
[
|
|
(None, None, "Workflow JSON is required"),
|
|
({}, {}, None),
|
|
([], None, "Workflow JSON must be an object"),
|
|
],
|
|
)
|
|
def test_validate_workflow_payload_matches_analyze_contract(value, expected, error):
|
|
result, message = validate_workflow_payload(value)
|
|
|
|
assert result == expected
|
|
assert message == error
|
|
|
|
|
|
def test_validate_workflow_payload_can_reject_empty_objects():
|
|
result, message = validate_workflow_payload({}, empty_is_missing=True)
|
|
|
|
assert result is None
|
|
assert message == "Workflow JSON is required"
|
|
|
|
|
|
def test_validate_workflow_payload_can_preserve_non_object_resolution_inputs():
|
|
value = ["workflow"]
|
|
|
|
result, message = validate_workflow_payload(
|
|
value,
|
|
empty_is_missing=True,
|
|
require_object=False,
|
|
)
|
|
|
|
assert result == value
|
|
assert message is None
|
|
|
|
|
|
def test_validate_workflow_payload_can_treat_none_as_an_invalid_object():
|
|
result, message = validate_workflow_payload(
|
|
None,
|
|
none_is_missing=False,
|
|
)
|
|
|
|
assert result is None
|
|
assert message == "Workflow JSON must be an object"
|