mirror of
https://github.com/rookiestar28/ComfyUI-OpenClaw.git
synced 2026-08-14 00:48:07 +00:00
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
"""
|
|
Tests for R61 API Error Contract.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import unittest
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
# Add project root to path
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from api.errors import APIError, ErrorCode, create_error_response, to_response
|
|
|
|
|
|
class TestR61APIErrors(unittest.TestCase):
|
|
|
|
def test_apierror_serialization(self):
|
|
err = APIError(
|
|
"Something went wrong",
|
|
code=ErrorCode.VALIDATION_ERROR.value,
|
|
status=400,
|
|
detail={"field": "prompt"},
|
|
)
|
|
data = err.to_dict()
|
|
|
|
self.assertFalse(data["ok"])
|
|
self.assertEqual(data["error"], "Something went wrong") # Legacy
|
|
self.assertEqual(data["message"], "Something went wrong")
|
|
self.assertEqual(data["code"], "validation_error")
|
|
self.assertEqual(data["detail"], {"field": "prompt"})
|
|
|
|
def test_default_values(self):
|
|
err = APIError("Basic error")
|
|
data = err.to_dict()
|
|
self.assertEqual(data["code"], "internal_error")
|
|
self.assertEqual(data["detail"], {})
|
|
self.assertEqual(err.status, 500)
|
|
|
|
@patch("api.errors.web")
|
|
def test_to_response_aiohttp(self, mock_web):
|
|
"""Test conversion to aiohttp response when safe."""
|
|
mock_response = MagicMock()
|
|
mock_web.json_response.return_value = mock_response
|
|
|
|
err = APIError("Test", status=418)
|
|
resp = to_response(err)
|
|
|
|
mock_web.json_response.assert_called_once()
|
|
args, kwargs = mock_web.json_response.call_args
|
|
self.assertEqual(kwargs["status"], 418)
|
|
self.assertEqual(args[0]["error"], "Test")
|
|
self.assertEqual(resp, mock_response)
|
|
|
|
@patch("api.errors.web", None)
|
|
def test_to_response_fallback(self):
|
|
"""Test fallback when aiohttp is missing."""
|
|
err = APIError("Fallback")
|
|
resp = to_response(err)
|
|
self.assertIsInstance(resp, dict)
|
|
self.assertEqual(resp["error"], "Fallback")
|
|
|
|
def test_create_error_response_helper(self):
|
|
# With active mock for web to return a distinct object
|
|
with patch("api.errors.web") as mock_web:
|
|
mock_web.json_response.return_value = "RESPONSE_OBJ"
|
|
resp = create_error_response("Helper test", status=404)
|
|
self.assertEqual(resp, "RESPONSE_OBJ")
|
|
|
|
args, kwargs = mock_web.json_response.call_args
|
|
self.assertEqual(kwargs["status"], 404)
|
|
self.assertEqual(args[0]["error"], "Helper test")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|