Files
dify/api/tests/unit_tests/controllers/trigger/test_trigger.py

74 lines
2.5 KiB
Python

from unittest.mock import patch
import pytest
from werkzeug.exceptions import NotFound
import controllers.trigger.trigger as module
@pytest.fixture(autouse=True)
def mock_request():
module.request = object()
@pytest.fixture(autouse=True)
def mock_jsonify():
module.jsonify = lambda payload: payload
VALID_UUID = "123e4567-e89b-42d3-a456-426614174000"
INVALID_UUID = "not-a-uuid"
class TestTriggerEndpoint:
def test_invalid_uuid(self):
with pytest.raises(NotFound):
module.trigger_endpoint(INVALID_UUID)
@patch.object(module.TriggerService, "process_endpoint")
@patch.object(module.TriggerSubscriptionBuilderService, "process_builder_validation_endpoint")
def test_first_handler_returns_response(self, mock_builder, mock_trigger):
mock_trigger.return_value = ("ok", 200)
mock_builder.return_value = None
response = module.trigger_endpoint(VALID_UUID)
assert response == ("ok", 200)
mock_builder.assert_not_called()
@patch.object(module.TriggerService, "process_endpoint")
@patch.object(module.TriggerSubscriptionBuilderService, "process_builder_validation_endpoint")
def test_second_handler_returns_response(self, mock_builder, mock_trigger):
mock_trigger.return_value = None
mock_builder.return_value = ("ok", 200)
response = module.trigger_endpoint(VALID_UUID)
assert response == ("ok", 200)
@patch.object(module.TriggerService, "process_endpoint")
@patch.object(module.TriggerSubscriptionBuilderService, "process_builder_validation_endpoint")
def test_no_handler_returns_response(self, mock_builder, mock_trigger):
mock_trigger.return_value = None
mock_builder.return_value = None
response, status = module.trigger_endpoint(VALID_UUID)
assert status == 404
assert response["error"] == "Endpoint not found"
@patch.object(module.TriggerService, "process_endpoint", side_effect=ValueError("bad input"))
def test_value_error(self, mock_trigger):
response, status = module.trigger_endpoint(VALID_UUID)
assert status == 400
assert response["error"] == "Endpoint processing failed"
assert response["message"] == "bad input"
@patch.object(module.TriggerService, "process_endpoint", side_effect=Exception("boom"))
def test_unexpected_exception(self, mock_trigger):
response, status = module.trigger_endpoint(VALID_UUID)
assert status == 500
assert response["error"] == "Internal server error"