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.
 
 

153 lines
6.3 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.Manager import CommunicationManager
class TestCommunicationManager(unittest.TestCase):
def setUp(self):
self._manager = CommunicationManager()
self._endpoint = mock.Mock()
self._transport = mock.Mock()
self._event = mock.Mock()
self._endpoint.getHandle.return_value = 123
self._endpoint.getTransport.return_value = self._transport
self._event.subject = self._endpoint
self._manager.issueEvent = mock.Mock()
def testEndPointAlreadyHandled(self):
"""
there really should be a test for this to ensure the if
is working correctly.
"""
pass
def testAddEndPoint(self):
self._transport.isListen.return_value = False
self._manager._rcons = mock.Mock()
self._manager.addEndPoint(self._endpoint)
self.assertIn(123, self._manager._cons)
self.assertEqual(self._endpoint, self._manager._cons[123])
self._manager._rcons.append.assert_called_with(123)
def testAddListenEndPoint(self):
self._transport.isListen.return_value = True
self._manager._rcons = mock.Mock()
self._manager.addEndPoint(self._endpoint)
self.assertIn(123, self._manager._listen)
self.assertEqual(self._endpoint, self._manager._listen[123])
self._manager._rcons.append.assert_called_with(123)
def test_addCon(self):
self._manager.addEndPoint = mock.Mock()
self.assertTrue(self._manager._addCon(self._event))
self._manager.addEndPoint.assert_called_once_with(self._endpoint)
def test_enableWriteOnWriteFinTransport(self):
self._transport._fin_state = 2
self.assertTrue(self._manager._enableWrite(self._event))
self.assertNotIn(123, self._manager._wcons)
def test_enableWrite(self):
self._transport._fin_state = 0
self.assertTrue(self._manager._enableWrite(self._event))
self.assertIn(123, self._manager._wcons)
def test_disableWriteNoShutdownRead(self):
self._transport._fin_state = 0
self.assertTrue(self._manager._disableWrite(self._event))
self.assertNotIn(123, self._manager._wcons)
self.test_enableWrite()
self.assertTrue(self._manager._disableWrite(self._event))
self.assertNotIn(123, self._manager._wcons)
def test_disableWriteNoShutdownRead(self):
self._transport._fin_state = 1
self.assertTrue(self._manager._disableWrite(self._event))
self.assertNotIn(123, self._manager._wcons)
self.test_enableWrite()
self.assertTrue(self._manager._disableWrite(self._event))
self.assertNotIn(123, self._manager._wcons)
self._manager.issueEvent.assert_called_with(
self._endpoint, 'shutdown_write')
def test_shutdown(self):
self._transport.isListen.return_value = True
endpoint2 = mock.Mock()
transport2 = mock.Mock()
endpoint2.getTransport.return_value = transport2
endpoint2.getHandle.return_value = 321
transport2.isListen.return_value = False
self._manager.addEndPoint(self._endpoint)
self._manager.addEndPoint(endpoint2)
self.assertFalse(self._manager._shutdown(None))
self._manager.issueEvent.assert_any_call(self._endpoint, 'close')
self._manager.issueEvent.assert_any_call(endpoint2, 'close')
self.assertEqual(self._manager._rcons, [])
self.assertEqual(self._manager._wcons, [])
def test_shutdownReadReadyToClose(self):
self._manager._rcons.append(123)
self._transport.shutdownRead.return_value = 3
self._endpoint.hasPendingData.return_value = False
self.assertFalse(self._manager._shutdownRead(self._event))
self._manager.issueEvent.assert_called_with(self._endpoint, 'close')
def test_shutdownReadReadyToShutdownWrite(self):
self._manager._rcons.append(123)
self._transport.shutdownRead.return_value = 0
self._endpoint.hasPendingData.return_value = False
self.assertFalse(self._manager._shutdownRead(self._event))
self._manager.issueEvent.assert_called_with(self._endpoint, 'shutdown_write')
def test_shutdownReadMarkAsClose(self):
self._manager._rcons.append(123)
self._transport.shutdownRead.return_value = 0
self._endpoint.hasPendingData.return_value = True
self.assertFalse(self._manager._shutdownRead(self._event))
self._endpoint.setClose.assert_called_once_with()
def test_shutdownWriteReadyToClose(self):
self._manager._wcons.append(123)
self._transport.shutdownWrite.return_value = 3
self.assertFalse(self._manager._shutdownWrite(self._event))
self._manager.issueEvent.assert_called_once_with(self._endpoint, 'close')
def test_shutdownWrite(self):
self._manager._wcons.append(123)
self._transport.shutdownWrite.return_value = 0
self.assertFalse(self._manager._shutdownWrite(self._event))
def test_closeCon(self):
self._manager._wcons.append(123)
self._manager._rcons.append(123)
self._manager._cons[123] = self._endpoint
self.assertFalse(self._manager._close(self._event))
self._transport.shutdown.assert_called_with()
self._transport.close.assert_called_with()
self.assertNotIn(123, self._manager._wcons)
self.assertNotIn(123, self._manager._rcons)
self.assertNotIn(123, self._manager._cons)
def test_closeListen(self):
self._manager._wcons.append(123)
self._manager._rcons.append(123)
self._manager._listen[123] = self._endpoint
self.assertFalse(self._manager._close(self._event))
self._transport.shutdown.assert_called_with()
self._transport.close.assert_called_with()
self.assertNotIn(123, self._manager._wcons)
self.assertNotIn(123, self._manager._rcons)
self.assertNotIn(123, self._manager._listen)
def suite():
return unittest.TestLoader().loadTestsFromTestCase(TestCommunicationManager)
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
# vim: set ft=python et ts=8 sw=4 sts=4: