55import unittest
66from pssh import ParallelSSHClient , UnknownHostException , \
77 AuthenticationException , ConnectionErrorException , _setup_logger
8- from fake_server .fake_server import start_server , make_socket , logger as server_logger
8+ from fake_server .fake_server import start_server , make_socket , logger as server_logger , \
9+ paramiko_logger
910import random
1011import logging
1112import gevent
1213import threading
14+ import paramiko
15+ import os
1316
14- _setup_logger (server_logger )
17+ # _setup_logger(server_logger)
18+ # _setup_logger(paramiko_logger)
19+
20+ USER_KEY = paramiko .RSAKey .from_private_key_file (
21+ os .path .sep .join ([os .path .dirname (__file__ ), 'test_client_private_key' ]))
1522
1623class ParallelSSHClientTest (unittest .TestCase ):
1724
1825 def setUp (self ):
1926 self .fake_cmd = 'fake cmd'
2027 self .fake_resp = 'fake response'
28+ self .user_key = USER_KEY
29+ self .listen_socket = make_socket ('127.0.0.1' )
30+ self .listen_port = self .listen_socket .getsockname ()[1 ]
2131
32+ def tearDown (self ):
33+ del self .listen_socket
34+
2235 def test_pssh_client_exec_command (self ):
23- sock = make_socket ('127.0.0.1' )
24- listen_port = sock .getsockname ()[1 ]
25- server = start_server ({ self .fake_cmd : self .fake_resp }, sock )
26- client = ParallelSSHClient (['127.0.0.1' ], port = listen_port )
36+ server = start_server ({ self .fake_cmd : self .fake_resp }, self .listen_socket )
37+ client = ParallelSSHClient (['127.0.0.1' ], port = self .listen_port ,
38+ pkey = self .user_key )
2739 cmd = client .exec_command (self .fake_cmd )[0 ]
2840 output = client .get_stdout (cmd )
2941 expected = {'127.0.0.1' : {'exit_code' : 0 }}
@@ -33,11 +45,10 @@ def test_pssh_client_exec_command(self):
3345 server .join ()
3446
3547 def test_pssh_client_auth_failure (self ):
36- sock = make_socket ('127.0.0.1' )
37- listen_port = sock .getsockname ()[1 ]
3848 server = start_server ({ self .fake_cmd : self .fake_resp },
39- sock , fail_auth = True )
40- client = ParallelSSHClient (['127.0.0.1' ], port = listen_port )
49+ self .listen_socket , fail_auth = True )
50+ client = ParallelSSHClient (['127.0.0.1' ], port = self .listen_port ,
51+ pkey = self .user_key )
4152 cmd = client .exec_command (self .fake_cmd )[0 ]
4253 # Handle exception
4354 try :
@@ -47,3 +58,17 @@ def test_pssh_client_auth_failure(self):
4758 pass
4859 del client
4960 server .join ()
61+
62+ def test_pssh_client_exec_command_password (self ):
63+ """Test password authentication. Fake server accepts any password
64+ even empty string"""
65+ server = start_server ({ self .fake_cmd : self .fake_resp }, self .listen_socket )
66+ client = ParallelSSHClient (['127.0.0.1' ], port = self .listen_port ,
67+ password = '' )
68+ cmd = client .exec_command (self .fake_cmd )[0 ]
69+ output = client .get_stdout (cmd )
70+ expected = {'127.0.0.1' : {'exit_code' : 0 }}
71+ self .assertEqual (expected , output ,
72+ msg = "Got unexpected command output - %s" % (output ,))
73+ del client
74+ server .join ()
0 commit comments