debian-koji/tests/test_hub/test_kojixmlrpc.py
2023-03-01 11:46:24 +01:00

92 lines
3 KiB
Python

import unittest
from kojihub import kojixmlrpc
class TestHandler(unittest.TestCase):
def test_list_api(self):
basic_api = [
{
'name': '_listapi',
'doc': 'List available API calls',
'argspec': ([], None, None, None, [], None, {}),
'argdesc': '()',
'args': []
},
{
'name': 'system.listMethods',
'doc': None,
'argspec': ([], None, None, None, [], None, {}),
'argdesc': '()',
'args': []
},
{
'name': 'system.methodSignature',
'doc': None,
'argspec': (['method'], None, None, None, [], None, {}),
'argdesc': '(method)',
'args': ['method']},
{
'name': 'system.methodHelp',
'doc': None,
'argspec': (['method'], None, None, None, [], None, {}),
'argdesc': '(method)', 'args': ['method']
}
]
h = kojixmlrpc.HandlerRegistry()
result = h.list_api()
self.assertEqual(result, basic_api)
def test_list_methods(self):
basic_methods = {
'_listapi',
'system.methodSignature',
'system.listMethods',
'system.methodHelp',
}
h = kojixmlrpc.HandlerRegistry()
result = h.system_listMethods()
self.assertEqual(set(result), basic_methods)
def test_methodSignature(self):
h = kojixmlrpc.HandlerRegistry()
result = h.system_methodSignature('any method')
self.assertEqual(result, 'signatures not supported')
def test_methodHelp(self):
help = '_listapi()\ndescription: List available API calls'
h = kojixmlrpc.HandlerRegistry()
result = h.system_methodHelp('_listapi')
self.assertEqual(result, help)
def _random_method(self, par1, par2, par3=None, par4='text'):
"""Random method docstring"""
pass
def test_registered_func(self):
h = kojixmlrpc.HandlerRegistry()
h.register_function(self._random_method, name='endpoint')
result = h.system_listMethods()
self.assertIn('endpoint', set(result))
result = h.list_api()
methods = {x['name']: x for x in result}
self.assertIn('endpoint', methods.keys())
api = methods['endpoint']
self.assertEqual(api, {
'name': 'endpoint',
'doc': 'Random method docstring',
'args': ['par1', 'par2', ['par3', None], ['par4', 'text']],
'argdesc': "(par1, par2, par3=None, par4='text')",
'argspec': (
['par1', 'par2', 'par3', 'par4'],
None, None, (None, 'text'), [], None, {}
),
})
result = h.system_methodHelp('endpoint')
help = "endpoint(par1, par2, par3=None, par4='text')\ndescription: Random method docstring"
self.assertEqual(result, help)