From 3a8707b14a363d7145b34da78af6b8b64b7373f4 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Fri, 28 Mar 2014 23:48:05 +0000 Subject: [PATCH] Add some basic network side tests. --- ts3/test.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/ts3/test.py b/ts3/test.py index e720f9a..9a9c2fe 100644 --- a/ts3/test.py +++ b/ts3/test.py @@ -1,5 +1,8 @@ import unittest -from ts3.protocol import TS3Proto +import socket +import threading +import time +from ts3.protocol import TS3Proto, ConnectionError, NoConnectionError class TS3ProtoTest(unittest.TestCase): @@ -69,6 +72,54 @@ class TS3ProtoTest(unittest.TestCase): self.assertEqual(self.ts3.parse_data(data), parsed) +def dummy_ts3(event, sock): + """ + A simple dummy TS3 server to run tests against + """ + sock.listen(5) + event.set() + try: + conn, addr = sock.accept() + conn.send('TS3\n\r') + except socket.timeout: + pass + finally: + sock.close() + event.set() + + +class TS3ProtoNetworkTests(unittest.TestCase): + + def setUp(self): + self.evt = threading.Event() + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.sock.settimeout(3) + self.sock.bind(('127.0.0.1', 0)) + self.port = self.sock.getsockname()[1] + threading.Thread(target=dummy_ts3, args=(self.evt, self.sock)).start() + self.evt.wait() + self.evt.clear() + time.sleep(.1) + self.ts3 = TS3Proto() + + def tearDown(self): + self.evt.wait() + if hasattr(self.ts3._telnet, 'sock'): + self.ts3._telnet.sock.close() + + def testConnect(self): + self.assertTrue(self.ts3.connect('127.0.0.1', self.port)) + self.assertTrue(self.ts3.is_connected()) + self.assertIsNone(self.ts3.check_connection()) + + def testConnectFail(self): + self.assertRaises(ConnectionError, self.ts3.connect, '127.0.0.1', 9911) + + def testNoConnection(self): + self.assertFalse(self.ts3.is_connected()) + self.assertRaises(NoConnectionError, self.ts3.check_connection) + + def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TS3ProtoTest))