test_public_gateway.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import unittest
  2. from public_gateway import PublicGatewayApp
  3. class FakeSessionStore:
  4. def __init__(self):
  5. self.sessions = {}
  6. def get(self, gateway_session_id):
  7. return self.sessions.get(gateway_session_id)
  8. class FakeApiClient:
  9. def __init__(self):
  10. self.calls = []
  11. def call_tool(self, token, tool_code, route_path, payload, request_id):
  12. self.calls.append((token, tool_code, route_path, payload, request_id))
  13. return {'code': 'MCP_0000', 'data': {'token_used': token}}
  14. class PublicGatewayAppTest(unittest.TestCase):
  15. def test_two_employees_use_isolated_tokens(self):
  16. store = FakeSessionStore()
  17. store.sessions['GWS_A'] = {'mcp_token': 'MT_A'}
  18. store.sessions['GWS_B'] = {'mcp_token': 'MT_B'}
  19. api_client = FakeApiClient()
  20. app = PublicGatewayApp(session_store=store, api_client=api_client, auth_client=None)
  21. result_a = app.call_tool('GWS_A', 'query_order', {'keyword': 'A'}, request_id='rq_a')
  22. result_b = app.call_tool('GWS_B', 'query_order', {'keyword': 'B'}, request_id='rq_b')
  23. self.assertEqual('MT_A', result_a['data']['token_used'])
  24. self.assertEqual('MT_B', result_b['data']['token_used'])
  25. self.assertEqual('MT_A', api_client.calls[0][0])
  26. self.assertEqual('MT_B', api_client.calls[1][0])
  27. def test_missing_session_returns_bind_hint(self):
  28. app = PublicGatewayApp(session_store=FakeSessionStore(), api_client=FakeApiClient(), auth_client=None)
  29. with self.assertRaises(RuntimeError) as error:
  30. app.call_tool('GWS_missing', 'query_order', {'keyword': 'A'}, request_id='rq_missing')
  31. self.assertIn('绑定授权码', str(error.exception))
  32. if __name__ == '__main__':
  33. unittest.main()