1#!/usr/bin/env python 2# Copyright (c) 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved 3# 4# Permission is hereby granted, free of charge, to any person obtaining a 5# copy of this software and associated documentation files (the 6# "Software"), to deal in the Software without restriction, including 7# without limitation the rights to use, copy, modify, merge, publish, dis- 8# tribute, sublicense, and/or sell copies of the Software, and to permit 9# persons to whom the Software is furnished to do so, subject to the fol- 10# lowing conditions: 11# 12# The above copyright notice and this permission notice shall be included 13# in all copies or substantial portions of the Software. 14# 15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- 17# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 18# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 19# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21# IN THE SOFTWARE. 22# 23 24try: 25 import paramiko 26 from boto.manage.cmdshell import SSHClient 27except ImportError: 28 paramiko = None 29 SSHClient = None 30 31from tests.compat import mock, unittest 32 33 34class TestSSHTimeout(unittest.TestCase): 35 @unittest.skipIf(not paramiko, 'Paramiko missing') 36 def test_timeout(self): 37 client_tmp = paramiko.SSHClient 38 39 def client_mock(): 40 client = client_tmp() 41 client.connect = mock.Mock(name='connect') 42 return client 43 44 paramiko.SSHClient = client_mock 45 paramiko.RSAKey.from_private_key_file = mock.Mock() 46 47 server = mock.Mock() 48 test = SSHClient(server) 49 50 self.assertEqual(test._ssh_client.connect.call_args[1]['timeout'], None) 51 52 test2 = SSHClient(server, timeout=30) 53 54 self.assertEqual(test2._ssh_client.connect.call_args[1]['timeout'], 30) 55