cli: unittest for multiCall
This commit is contained in:
parent
70db1c5650
commit
b65d2c3fcf
1 changed files with 57 additions and 0 deletions
|
|
@ -7,6 +7,7 @@ except ImportError:
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import koji
|
import koji
|
||||||
|
from koji.xmlrpcplus import Fault
|
||||||
|
|
||||||
|
|
||||||
class TestClientSession(unittest.TestCase):
|
class TestClientSession(unittest.TestCase):
|
||||||
|
|
@ -170,3 +171,59 @@ class TestFastUpload(unittest.TestCase):
|
||||||
kwargs = call[0][2]
|
kwargs = call[0][2]
|
||||||
self.assertTrue('volume' in kwargs)
|
self.assertTrue('volume' in kwargs)
|
||||||
self.assertEqual(kwargs['volume'], 'foobar')
|
self.assertEqual(kwargs['volume'], 'foobar')
|
||||||
|
|
||||||
|
|
||||||
|
class TestMultiCall(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.ksession = koji.ClientSession('http://koji.example.com/kojihub')
|
||||||
|
# mocks
|
||||||
|
self.ksession._sendCall = mock.MagicMock()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.ksession
|
||||||
|
|
||||||
|
def test_multiCall_disable(self):
|
||||||
|
with self.assertRaises(koji.GenericError) as cm:
|
||||||
|
self.ksession.multiCall()
|
||||||
|
self.assertEqual(cm.exception.args[0],
|
||||||
|
"ClientSession.multicall must be set to True"
|
||||||
|
" before calling multiCall()")
|
||||||
|
|
||||||
|
def test_multiCall_empty(self):
|
||||||
|
self.ksession.multicall = True
|
||||||
|
ret = self.ksession.multiCall()
|
||||||
|
self.assertEqual([], ret)
|
||||||
|
self.ksession._sendCall.assert_not_called()
|
||||||
|
|
||||||
|
def test_multiCall_strict(self):
|
||||||
|
self.ksession._sendCall.return_value = [[], {'faultCode': 1000,
|
||||||
|
'faultString': 'msg'}]
|
||||||
|
self.ksession.multicall = True
|
||||||
|
self.ksession.methodA('a', 'b', c='c')
|
||||||
|
self.ksession.methodB(1, 2, 3)
|
||||||
|
with self.assertRaises(koji.GenericError):
|
||||||
|
self.ksession.multiCall(strict=True)
|
||||||
|
|
||||||
|
def test_multiCall_not_strict(self):
|
||||||
|
self.ksession._sendCall.return_value = [[], {'faultCode': 1000,
|
||||||
|
'faultString': 'msg'}]
|
||||||
|
self.ksession.multicall = True
|
||||||
|
self.ksession.methodA('a', 'b', c='c')
|
||||||
|
self.ksession.methodB(1, 2, 3)
|
||||||
|
ret = self.ksession.multiCall()
|
||||||
|
self.assertFalse(self.ksession.multicall)
|
||||||
|
self.assertEqual([[], {'faultCode': 1000, 'faultString': 'msg'}], ret)
|
||||||
|
|
||||||
|
def test_multiCall_batch(self):
|
||||||
|
self.ksession._sendCall.side_effect = [[['a', 'b', 'c']],
|
||||||
|
[{'faultCode': 1000,
|
||||||
|
'faultString': 'msg'}]]
|
||||||
|
self.ksession.multicall = True
|
||||||
|
self.ksession.methodA('a', 'b', c='c')
|
||||||
|
self.ksession.methodB(1, 2, 3)
|
||||||
|
ret = self.ksession.multiCall(batch=1)
|
||||||
|
self.assertFalse(self.ksession.multicall)
|
||||||
|
self.assertEqual(2, self.ksession._sendCall.call_count)
|
||||||
|
self.assertEqual([['a', 'b', 'c'],
|
||||||
|
{'faultCode': 1000, 'faultString': 'msg'}], ret)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue