aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/skype/test.py
blob: 28c14618bf8bb5c424a2e574a89ddbdba2877f3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/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")
	
	def testAddYes(self):
		self.mock("add-yes")

if __name__ == '__main__':
	unittest.main()