| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import unittest
- from app import GatewayApp
- from services.api_client import ApiClient
- from services.token_store import InMemoryTokenStore
- from tools.query_order import QueryOrderTool
- class DummyTransport:
- def __init__(self):
- self.calls = []
- def post_json(self, url, payload, headers, timeout):
- self.calls.append(
- {
- 'url': url,
- 'payload': payload,
- 'headers': headers,
- 'timeout': timeout,
- }
- )
- return {
- 'code': 'MCP_0000',
- 'msg': 'success',
- 'data': {
- 'summary': 'ok',
- 'records': [],
- 'tips': [],
- },
- 'meta': {
- 'request_id': headers['X-Request-Id'],
- },
- }
- class GatewayQueryOrderTest(unittest.TestCase):
- def test_gateway_lists_query_order_tool(self):
- app = GatewayApp()
- tools = app.list_tools()
- by_name = {tool['name']: tool for tool in tools}
- self.assertIn('query_order', by_name)
- self.assertIn('keyword', by_name['query_order']['input_schema']['required'])
- def test_api_client_adds_mcp_headers_when_calling_tool(self):
- transport = DummyTransport()
- store = InMemoryTokenStore(refresh_skew_seconds=60)
- store.save('MT_demo', '2099-01-01T00:00:00')
- client = ApiClient(
- base_url='http://tools.example.test',
- token_store=store,
- transport=transport,
- timeout=8,
- )
- response = client.call_tool(
- tool_code='query_order',
- route_path='/admin/mcp/tools/queryOrder',
- payload={'keyword': 'SO20260706001', 'page': 1, 'limit': 20},
- request_id='rq_demo',
- )
- self.assertEqual('MCP_0000', response['code'])
- self.assertEqual(1, len(transport.calls))
- self.assertEqual('Bearer MT_demo', transport.calls[0]['headers']['Authorization'])
- self.assertEqual('query_order', transport.calls[0]['headers']['X-MCP-Tool-Code'])
- self.assertEqual('rq_demo', transport.calls[0]['headers']['X-Request-Id'])
- self.assertEqual('http://tools.example.test/admin/mcp/tools/queryOrder', transport.calls[0]['url'])
- def test_query_order_tool_normalizes_input_before_forwarding(self):
- transport = DummyTransport()
- store = InMemoryTokenStore(refresh_skew_seconds=60)
- store.save('MT_demo', '2099-01-01T00:00:00')
- client = ApiClient(
- base_url='http://tools.example.test',
- token_store=store,
- transport=transport,
- timeout=8,
- )
- tool = QueryOrderTool(api_client=client)
- tool.call(keyword=' SO20260706001 ', page=2, limit=15, request_id='rq_tool')
- self.assertEqual(
- {
- 'keyword': 'SO20260706001',
- 'page': 2,
- 'limit': 15,
- },
- transport.calls[0]['payload'],
- )
- if __name__ == '__main__':
- unittest.main()
|