Some little python code to visualize an LDAP structure.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

113 lines
5.0 KiB

import unittest
import mock
from os.path import dirname, realpath
from sys import argv, path
path.append(dirname(dirname(realpath(__file__))) + '/lib')
from Communication.DatagramService import DatagramService
class TestDatagramService(unittest.TestCase):
def setUp(self):
self._transport = mock.Mock()
self._protocol = mock.Mock()
self._message = mock.Mock()
self._parser = mock.Mock()
self._composer = mock.Mock()
self._bufsize = 22655
self._msginfo = ('111222333', 1212)
self._datagram = DatagramService(
self._transport, self._protocol, self._bufsize)
self._protocol.getParser.return_value = self._parser
self._protocol.getComposer.return_value = self._composer
self._message.getRemote.return_value = self._msginfo[1]
def testHasPendingData(self):
self.assertFalse(self._datagram.hasPendingData())
self._datagram._write_buffer = '12345'
self.assertTrue(self._datagram.hasPendingData())
def testIterInit(self):
self.assertEqual(self._datagram.__iter__(), self._datagram)
def testMessageIteratorNoData(self):
self.assertRaises(StopIteration, self._datagram.next)
def testMessageIteratorCreateMessageFails(self):
self._datagram._read_buffer = mock.Mock()
self._datagram._read_buffer.popleft.return_value = self._msginfo
self._protocol.createMessage.return_value = None
self.assertRaises(StopIteration, self._datagram.next)
self._datagram._read_buffer.popleft.assert_called_once_with()
self._protocol.createMessage.assert_called_once_with(self._msginfo[1])
def testMessageIteratorNoDataParsed(self):
self._datagram._read_buffer = mock.Mock()
self._datagram._read_buffer.popleft.return_value = self._msginfo
self._protocol.createMessage.return_value = self._message
self._parser.parse.return_value = 0
self.assertRaises(StopIteration, self._datagram.next)
self._datagram._read_buffer.popleft.assert_called_once_with()
self._protocol.createMessage.assert_called_once_with(self._msginfo[1])
self._parser.parse.assert_called_once_with(
self._message, self._msginfo[0])
def testMessageIteratorGetMessage(self):
self._datagram._read_buffer = mock.Mock()
self._datagram._read_buffer.popleft.return_value = self._msginfo
self._protocol.createMessage.return_value = self._message
self._parser.parse.return_value = 10
self.assertEqual(self._datagram.next(), self._message)
self._datagram._read_buffer.popleft.assert_called_once_with()
self._protocol.createMessage.assert_called_once_with(self._msginfo[1])
self._parser.parse.assert_called_once_with(
self._message, self._msginfo[0])
def testComposeSuccess(self):
self._composer.compose.return_value = '111222333'
self.assertTrue(self._datagram.compose(self._message))
self.assertIn(
('111222333', self._msginfo[1]),
self._datagram._write_buffer)
def testComposeFail(self):
self._composer.compose.side_effect = Exception('Boom!')
self.assertFalse(self._datagram.compose(self._message))
self.assertFalse(self._datagram._write_buffer)
def testAppendReadData(self):
self._datagram.appendReadData(('111', 1212))
self.assertIn(('111', 1212), self._datagram._read_buffer)
self._datagram.appendReadData(('222', 1212))
self.assertIn(('111', 1212), self._datagram._read_buffer)
self.assertIn(('222', 1212), self._datagram._read_buffer)
self._datagram.appendReadData(('333', 1212))
self.assertIn(('111', 1212), self._datagram._read_buffer)
self.assertIn(('222', 1212), self._datagram._read_buffer)
self.assertIn(('333', 1212), self._datagram._read_buffer)
def testNextWriteData(self):
self.assertEqual(self._datagram.nextWriteData(), ('', None))
self._datagram._write_buffer.append(('111222333', 1212))
self.assertEqual(self._datagram.nextWriteData(), ('111222333', 1212))
self.assertNotIn(('111222333', 1212), self._datagram._write_buffer)
def testAppendWriteData(self):
self._datagram.appendWriteData(('111', 1212))
self.assertIn(('111', 1212), self._datagram._write_buffer)
self._datagram.appendWriteData(('222', 1212))
self.assertIn(('111', 1212), self._datagram._write_buffer)
self.assertIn(('222', 1212), self._datagram._write_buffer)
self._datagram.appendWriteData(('333', 1212))
self.assertIn(('111', 1212), self._datagram._write_buffer)
self.assertIn(('222', 1212), self._datagram._write_buffer)
self.assertIn(('333', 1212), self._datagram._write_buffer)
def suite():
return unittest.TestLoader().loadTestsFromTestCase(TestDatagramService)
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
# vim: set ft=python et ts=8 sw=4 sts=4: