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
|
#!/usr/bin/env python
from __future__ import absolute_import
"""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
import os.path
import time
try:
import win32process
except ImportError:
win32process = None
from tests import test_ssl, unittest
if win32process:
from M2Crypto import Rand
def find_openssl():
plist = os.environ['PATH'].split(';')
for p in plist:
try:
path_dir = os.listdir(p)
if 'openssl.exe' in path_dir:
return os.path.join(p, 'openssl.exe')
except OSError:
pass
return None
srv_host = 'localhost'
srv_port = 64000
class SSLWinClientTestCase(test_ssl.BaseSSLClientTestCase):
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, _, _, _ = win32process.CreateProcess(
self.openssl, ' '.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.TestLoader().loadTestsFromTestCase(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()
|