debian-koji/tests/test_hub/test_multicall.py
Jana Cupova 1cfe6538db Move database classes and functions from kojihub.py to koji/db.py
Move QueryProcessor, InsertProcessor, UpdateProcessor,
BulkInsertProcessor, _applyQueryOpts, get_event, _dml,
_fetchMulti, _fetchSingle, _singleValue, _multiRow, _singleRow

Update koji-sweep-db script to DB Processors

Fixes: https://pagure.io/koji/issue/3466
2022-10-11 14:29:05 +02:00

41 lines
1.6 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):
self.context_db = mock.patch('koji.db.context').start()
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'))