debian-koji/tests/test_hub/test_multicall.py
2020-09-01 11:23:04 +02:00

40 lines
1.5 KiB
Python

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'))