aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/skype/test.py
blob: f20039e2c639e6c8fde1910e8c1babaebb254d94 (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/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):
		with open("t/skyped.log", "w") as skyped_log,\
				open("t/pexpect.log", "w") as pexpect_log:
			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'], logfile=pexpect_log)
				bitlbee_mock = open("t/%s-bitlbee.mock" % name)
				for i in bitlbee_mock.readlines():
					line = i.strip()
					if line.startswith(">> "):
						bitlbee.expect_exact(line[3:], timeout=10)
					elif line.startswith("<< "):
						bitlbee.sendline(line[3:])
				bitlbee_mock.close()
				bitlbee.close()
			finally:
				skyped.terminate()
				skyped.communicate()

	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")
		try:
			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")
		finally:
			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 testCallFailed(self):
		self.mock("call-failed")

	def testAddYes(self):
		self.mock("add-yes")

	def testAddNo(self):
		self.mock("add-no")

	def testGroupchatInvited(self):
		self.mock("groupchat-invited")

	def testGroupchatInvite(self):
		self.mock("groupchat-invite")

	def testCalledYes(self):
		self.mock("called-yes")

	def testCalledNo(self):
		self.mock("called-no")

	def testFiletransfer(self):
		self.mock("filetransfer")

	def testGroupRead(self):
		self.mock("group-read")

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