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
|
#!/usr/bin/env python
"""Unit tests for M2Crypto.SSL.
Win32 version - requires Mark Hammond's Win32 extensions and openssl.exe
on your PATH.
Copyright (c) 2000-2001 Ng Pheng Siong. All rights reserved."""
import os, os.path, string, time, unittest
try:
import win32process
except ImportError:
win32process = None
if win32process:
from M2Crypto import Rand, SSL
import test_ssl
def find_openssl():
plist = os.environ['PATH'].split(';')
for p in plist:
try:
dir = os.listdir(p)
if 'openssl.exe' in dir:
return os.path.join(p, 'openssl.exe')
except WindowsError:
pass
return None
srv_host = 'localhost'
srv_port = 64000
class SSLWinClientTestCase(test_ssl.SSLClientTestCase):
startupinfo = win32process.STARTUPINFO()
openssl = find_openssl()
def start_server(self, args):
# openssl must be started in the tests directory for it
# to find the .pem files
os.chdir('tests')
try:
hproc, hthread, pid, tid = win32process.CreateProcess(self.openssl,
string.join(args), None, None, 0, win32process.DETACHED_PROCESS,
None, None, self.startupinfo)
finally:
os.chdir('..')
time.sleep(0.3)
return hproc
def stop_server(self, hproc):
win32process.TerminateProcess(hproc, 0)
def suite():
return unittest.makeSuite(SSLWinClientTestCase)
def zap_servers():
pass
if __name__ == '__main__':
try:
if find_openssl() is not None:
Rand.load_file('randpool.dat', -1)
unittest.TextTestRunner().run(suite())
Rand.save_file('randpool.dat')
finally:
zap_servers()
|