diff options
author | Miklos Vajna <vmiklos@vmiklos.hu> | 2013-01-13 12:51:02 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@vmiklos.hu> | 2013-01-13 12:51:02 +0100 |
commit | 650d2b479d6aa079f41c620c15b47764ac91595a (patch) | |
tree | 3f4d36747b266df04c0001b1a3410e4a4d080909 /protocols/skype/test.py | |
parent | 9ec6b36ca5b9ee1a2a9311c4c8ebfa18c0c65b1e (diff) |
skype: convert msg test to a mock-based one
Diffstat (limited to 'protocols/skype/test.py')
-rwxr-xr-x | protocols/skype/test.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/protocols/skype/test.py b/protocols/skype/test.py new file mode 100755 index 00000000..99883747 --- /dev/null +++ b/protocols/skype/test.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python2.7 + +import subprocess +import sys +import pexpect +import unittest +import shutil +import os +import hashlib + +class Test(unittest.TestCase): + def openssl(self, args): + with open(os.devnull, "w") as devnull: + proc = subprocess.Popen(['openssl'] + args, stdin=subprocess.PIPE, stderr=devnull) + for i in range(6): + proc.stdin.write("\n") + proc.stdin.close() + proc.communicate() + def mock(self, name): + skyped_log = open("t/skyped.log", "w") + skyped = subprocess.Popen([sys.executable, "skyped.py", "-c", "t/skyped/skyped.conf", "-n", "-d", "-m", "t/%s-skyped.mock" % name], + stdout=skyped_log, stderr=subprocess.STDOUT) + + try: + bitlbee = pexpect.spawn('../../bitlbee', ['-d', 't/bitlbee']) + bitlbee_mock = open("t/%s-bitlbee.mock" % name) + for i in bitlbee_mock.readlines(): + line = i.strip() + if line.startswith(">> "): + bitlbee.expect(line[3:], timeout=10) + elif line.startswith("<< "): + bitlbee.sendline(line[3:]) + bitlbee_mock.close() + bitlbee.close() + finally: + skyped.terminate() + skyped.communicate() + skyped_log.close() + + def setUp(self): + try: + shutil.rmtree("t/bitlbee") + except OSError: + pass + os.makedirs("t/bitlbee") + + try: + shutil.rmtree("t/skyped") + except OSError: + pass + os.makedirs("t/skyped") + cwd = os.getcwd() + os.chdir("t/skyped") + shutil.copyfile("../../skyped.cnf", "skyped.cnf") + self.openssl(['req', '-new', '-x509', '-days', '365', '-nodes', '-config', 'skyped.cnf', '-out', 'skyped.cert.pem', '-keyout', 'skyped.key.pem']) + with open("skyped.conf", "w") as sock: + sock.write("[skyped]\n") + sock.write("username = alice\n") + sock.write("password = %s\n" % hashlib.sha1("foo").hexdigest()) + sock.write("cert = %s/skyped.cert.pem\n" % os.getcwd()) + sock.write("key = %s/skyped.key.pem\n" % os.getcwd()) + sock.write("port = 2727\n") + os.chdir(cwd) + + + def testMsg(self): + self.mock("msg") + + def testLogin(self): + self.mock("login") + + def testInfo(self): + self.mock("info") + + def testCall(self): + self.mock("call") + +if __name__ == '__main__': + unittest.main() |