summaryrefslogtreecommitdiffhomepage
path: root/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'test.py')
-rwxr-xr-xtest.py45
1 files changed, 38 insertions, 7 deletions
diff --git a/test.py b/test.py
index bd966d1e..37fc5a6f 100755
--- a/test.py
+++ b/test.py
@@ -44,6 +44,10 @@ from tests.test_packetizer import PacketizerTest
from tests.test_auth import AuthTest
from tests.test_transport import TransportTest
from tests.test_client import SSHClientTest
+from test_client import SSHClientTest
+from test_gssapi import GSSAPITest
+from test_ssh_gss import GSSAuthTest
+from test_kex_gss import GSSKexTest
default_host = 'localhost'
default_user = os.environ.get('USER', 'nobody')
@@ -85,6 +89,17 @@ def main():
help='skip SFTP client/server tests, which can be slow')
parser.add_option('--no-big-file', action='store_false', dest='use_big_file', default=True,
help='skip big file SFTP tests, which are slow as molasses')
+ parser.add_option('--gssapi-test', action='store_true', dest='gssapi_test', default=False,
+ help='Test the used APIs for GSS-API / SSPI authentication')
+ parser.add_option('--test-gssauth', action='store_true', dest='test_gssauth', default=False,
+ help='Test GSS-API / SSPI authentication for SSHv2. To test this, you need kerberos a infrastructure.\
+ Note: Paramiko needs access to your krb5.keytab file. Make it readable for Paramiko or\
+ copy the used key to another file and set the environment variable KRB5_KTNAME to this file.')
+ parser.add_option('--test-gssapi-keyex', action='store_true', dest='test_gsskex', default=False,
+ help='Test GSS-API / SSPI authenticated iffie-Hellman Key Exchange and user\
+ authentication. To test this, you need kerberos a infrastructure.\
+ Note: Paramiko needs access to your krb5.keytab file. Make it readable for Paramiko or\
+ copy the used key to another file and set the environment variable KRB5_KTNAME to this file.')
parser.add_option('-R', action='store_false', dest='use_loopback_sftp', default=True,
help='perform SFTP tests against a remote server (by default, SFTP tests ' +
'are done through a loopback socket)')
@@ -101,12 +116,22 @@ def main():
parser.add_option('-P', '--sftp-passwd', dest='password', type='string', default=default_passwd,
metavar='<password>',
help='[with -R] (optional) password to unlock the private key for remote sftp tests')
-
+ parser.add_option('--krb5_principal', dest='krb5_principal', type='string',
+ metavar='<krb5_principal>',
+ help='The krb5 principal (your username) for GSS-API / SSPI authentication')
+ parser.add_option('--targ_name', dest='targ_name', type='string',
+ metavar='<targ_name>',
+ help='Target name for GSS-API / SSPI authentication.\
+ This is the hosts name you are running the test on in the kerberos database.')
+ parser.add_option('--server_mode', action='store_true', dest='server_mode', default=False,
+ help='Usage with --gssapi-test. Test the available GSS-API / SSPI server mode to.\
+ Note: you need to have access to the kerberos keytab file.')
+
options, args = parser.parse_args()
-
+
# setup logging
paramiko.util.log_to_file('test.log')
-
+
if options.use_sftp:
from tests.test_sftp import SFTPTest
if options.use_loopback_sftp:
@@ -136,6 +161,15 @@ def main():
suite.addTest(unittest.makeSuite(SFTPTest))
if options.use_big_file:
suite.addTest(unittest.makeSuite(BigSFTPTest))
+ if options.gssapi_test:
+ GSSAPITest.init(options.targ_name, options.server_mode)
+ suite.addTest(unittest.makeSuite(GSSAPITest))
+ if options.test_gssauth:
+ GSSAuthTest.init(options.krb5_principal, options.targ_name)
+ suite.addTest(unittest.makeSuite(GSSAuthTest))
+ if options.test_gsskex:
+ GSSKexTest.init(options.krb5_principal, options.targ_name)
+ suite.addTest(unittest.makeSuite(GSSKexTest))
verbosity = 1
if options.verbose:
verbosity = 2
@@ -149,10 +183,7 @@ def main():
# TODO: make that not a problem, jeez
for thread in threading.enumerate():
if thread is not threading.currentThread():
- if PY2:
- thread._Thread__stop()
- else:
- thread._stop()
+ thread.join(timeout=1)
# Exit correctly
if not result.wasSuccessful():
sys.exit(1)