92 lines
3 KiB
Python
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)
|
|
|