From 62f389d4450a612b57c1dcb864d93415ac13f25a Mon Sep 17 00:00:00 2001 From: Yu Ming Zhu Date: Sep 01 2020 09:23:04 +0000 Subject: hub: unittest for multicall --- diff --git a/tests/test_hub/test_multicall.py b/tests/test_hub/test_multicall.py new file mode 100644 index 0000000..34a424d --- /dev/null +++ b/tests/test_hub/test_multicall.py @@ -0,0 +1,40 @@ +import mock +import unittest + +import kojixmlrpc +from kojixmlrpc import Fault, HandlerRegistry, ModXMLRPCRequestHandler + + +class DummyExports(object): + + def foo(self, bar, err=None): + if err: + raise err + return bar + + +class TestMulticall(unittest.TestCase): + + def test_multicall(self): + kojixmlrpc.kojihub = mock.MagicMock() + kojixmlrpc.context.opts = mock.MagicMock() + kojixmlrpc.context.session = mock.MagicMock() + self.registry = HandlerRegistry() + self.exports = DummyExports() + self.registry.register_instance(self.exports) + calls = [{'methodName': 'foo', 'params': [1]}, + {'methodName': 'non', 'params': [mock.ANY]}, + {'methodName': 'foo', 'params': [2, Exception('with int arg', 1)]}, + {'methodName': 'foo', 'params': [3, Fault(2, 'xmlrpc fault')]}] + h = ModXMLRPCRequestHandler(self.registry) + h.check_session = mock.MagicMock() + h.enforce_lockout = mock.MagicMock() + kojixmlrpc.context.event_id = mock.MagicMock() + rv = h.multiCall(calls) + self.assertEqual(rv, [[1], + {'faultCode': 1000, 'faultString': 'Invalid method: non', + 'traceback': mock.ANY}, + {'faultCode': 1, 'faultString': 'with int arg, 1', + 'traceback': mock.ANY}, + {'faultCode': 2, 'faultString': 'xmlrpc fault'}]) + self.assertFalse(hasattr(kojixmlrpc.context, 'event_id'))