def test_basic_usage_absolute_path(self): """ Basic execution. """ mock = self.ssh_cli # script to execute sd = "/root/random_script.sh" # Connect behavior mock.connect() mock_cli = mock.client # The actual mocked object: SSHClient expected_conn = {'username': '******', 'key_filename': '~/.ssh/ubuntu_ssh', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'timeout': '600', 'port': 8822} mock_cli.connect.assert_called_once_with(**expected_conn) mock.put(sd, sd, mirror_local_mode=False) mock_cli.open_sftp().put.assert_called_once_with(sd, sd) mock.run(sd) # Make assertions over 'run' method mock_cli.get_transport().open_session().exec_command \ .assert_called_once_with(sd) mock.close()
def test_basic_usage_absolute_path(self): """ Basic execution. """ mock = self.ssh_cli # script to execute sd = "/root/random_script.sh" # Connect behavior mock.connect() mock_cli = mock.client # The actual mocked object: SSHClient expected_conn = { "username": "******", "key_filename": "~/.ssh/ubuntu_ssh", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "timeout": 28, "port": 8822, } mock_cli.connect.assert_called_once_with(**expected_conn) mock.put(sd, sd, mirror_local_mode=False) mock_cli.open_sftp().put.assert_called_once_with(sd, sd) mock.run(sd) # Make assertions over 'run' method mock_cli.get_transport().open_session( ).exec_command.assert_called_once_with(sd) mock.close()
def test_key_material_argument(self): path = os.path.join(get_resources_base_path(), 'ssh', 'dummy_rsa') with open(path, 'r') as fp: private_key = fp.read() conn_params = { 'hostname': 'dummy.host.org', 'username': '******', 'key_material': private_key } mock = ParamikoSSHClient(**conn_params) mock.connect() pkey = paramiko.RSAKey.from_private_key(StringIO(private_key)) expected_conn = { 'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'pkey': pkey, 'timeout': 30, 'port': 22 } mock.client.connect.assert_called_once_with(**expected_conn)
def test_create_with_key_via_bastion(self): conn_params = {'hostname': 'dummy.host.org', 'bastion_host': 'bastion.host.org', 'username': '******', 'key_files': 'id_rsa'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_bastion_conn = {'username': '******', 'allow_agent': False, 'hostname': 'bastion.host.org', 'look_for_keys': False, 'key_filename': 'id_rsa', 'timeout': 60, 'port': 22} mock.bastion_client.connect.assert_called_once_with(**expected_bastion_conn) expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'key_filename': 'id_rsa', 'timeout': 60, 'port': 22, 'sock': mock.bastion_socket} mock.client.connect.assert_called_once_with(**expected_conn)
def test_create_with_key_via_bastion(self): conn_params = {'hostname': 'dummy.host.org', 'bastion_host': 'bastion.host.org', 'username': '******', 'key_files': 'id_rsa'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_bastion_conn = {'username': '******', 'allow_agent': False, 'hostname': 'bastion.host.org', 'look_for_keys': False, 'key_filename': 'id_rsa', 'timeout': 60, 'port': 22} mock.bastion_client.connect.assert_called_once_with(**expected_bastion_conn) expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'key_filename': 'id_rsa', 'timeout': 60, 'port': 22, 'sock': mock.bastion_socket} mock.client.connect.assert_called_once_with(**expected_conn)
def test_basic_usage_absolute_path(self): """ Basic execution. """ mock = self.ssh_cli # script to execute sd = "/root/random_script.sh" # Connect behavior mock.connect() mock_cli = mock.client # The actual mocked object: SSHClient expected_conn = {'username': '******', 'key_filename': '~/.ssh/ubuntu_ssh', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'timeout': '600', 'port': 8822} mock_cli.connect.assert_called_once_with(**expected_conn) mock.put(sd, sd, mirror_local_mode=False) mock_cli.open_sftp().put.assert_called_once_with(sd, sd) mock.run(sd) # Make assertions over 'run' method mock_cli.get_transport().open_session().exec_command \ .assert_called_once_with(sd) mock.close()
def test_key_material_argument(self): path = os.path.join(get_resources_base_path(), "ssh", "dummy_rsa") with open(path, "r") as fp: private_key = fp.read() conn_params = { "hostname": "dummy.host.org", "username": "******", "key_material": private_key, } mock = ParamikoSSHClient(**conn_params) mock.connect() pkey = paramiko.RSAKey.from_private_key(StringIO(private_key)) expected_conn = { "username": "******", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "pkey": pkey, "timeout": 30, "port": 22, } mock.client.connect.assert_called_once_with(**expected_conn)
def test_create_with_key_via_bastion(self): conn_params = { "hostname": "dummy.host.org", "bastion_host": "bastion.host.org", "username": "******", "key_files": "id_rsa", } mock = ParamikoSSHClient(**conn_params) mock.connect() expected_bastion_conn = { "username": "******", "allow_agent": False, "hostname": "bastion.host.org", "look_for_keys": False, "key_filename": "id_rsa", "timeout": 30, "port": 22, } mock.bastion_client.connect.assert_called_once_with( **expected_bastion_conn) expected_conn = { "username": "******", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "key_filename": "id_rsa", "timeout": 30, "port": 22, "sock": mock.bastion_socket, } mock.client.connect.assert_called_once_with(**expected_conn)
def test_key_with_passphrase_success(self): path = os.path.join(get_resources_base_path(), "ssh", "dummy_rsa_passphrase") with open(path, "r") as fp: private_key = fp.read() # Key material provided conn_params = { "hostname": "dummy.host.org", "username": "******", "key_material": private_key, "passphrase": "testphrase", } mock = ParamikoSSHClient(**conn_params) mock.connect() pkey = paramiko.RSAKey.from_private_key(StringIO(private_key), "testphrase") expected_conn = { "username": "******", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "pkey": pkey, "timeout": 30, "port": 22, } mock.client.connect.assert_called_once_with(**expected_conn) # Path to private key file provided conn_params = { "hostname": "dummy.host.org", "username": "******", "key_files": path, "passphrase": "testphrase", } mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = { "username": "******", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "key_filename": path, "password": "******", "timeout": 30, "port": 22, } mock.client.connect.assert_called_once_with(**expected_conn)
def test_key_with_passphrase_success(self): path = os.path.join(get_resources_base_path(), 'ssh', 'dummy_rsa_passphrase') with open(path, 'r') as fp: private_key = fp.read() # Key material provided conn_params = { 'hostname': 'dummy.host.org', 'username': '******', 'key_material': private_key, 'passphrase': 'testphrase' } mock = ParamikoSSHClient(**conn_params) mock.connect() pkey = paramiko.RSAKey.from_private_key(StringIO(private_key), 'testphrase') expected_conn = { 'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'pkey': pkey, 'timeout': 30, 'port': 22 } mock.client.connect.assert_called_once_with(**expected_conn) # Path to private key file provided conn_params = { 'hostname': 'dummy.host.org', 'username': '******', 'key_files': path, 'passphrase': 'testphrase' } mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = { 'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'key_filename': path, 'password': '******', 'timeout': 30, 'port': 22 } mock.client.connect.assert_called_once_with(**expected_conn)
def test_create_with_password(self): conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'password': '******'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'password': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_delete_script(self): """ Provide a basic test with 'delete' action. """ mock = self.ssh_cli # script to execute sd = '/root/random_script.sh' mock.connect() mock.delete_file(sd) # Make assertions over the 'delete' method mock.client.open_sftp().unlink.assert_called_with(sd) mock.close()
def test_create_with_password(self): conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'password': '******'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'password': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_delete_script(self): """ Provide a basic test with 'delete' action. """ mock = self.ssh_cli # script to execute sd = '/root/random_script.sh' mock.connect() mock.delete_file(sd) # Make assertions over the 'delete' method mock.client.open_sftp().unlink.assert_called_with(sd) mock.close()
def test_deprecated_key_argument(self): conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'key_files': 'id_rsa'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'key_filename': 'id_rsa', 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_deprecated_key_argument(self): conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'key_files': 'id_rsa'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'key_filename': 'id_rsa', 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_set_proxycommand(self, mock_ProxyCommand): """ Loads proxy commands from ssh config file """ ssh_config_file_path = os.path.join(get_resources_base_path(), 'ssh', 'dummy_ssh_config') cfg.CONF.set_override(name='ssh_config_file_path', override=ssh_config_file_path, group='ssh_runner') cfg.CONF.set_override(name='use_ssh_config', override=True, group='ssh_runner') conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'password': '******'} mock = ParamikoSSHClient(**conn_params) mock.connect() mock_ProxyCommand.assert_called_once_with('ssh -q -W dummy.host.org:22 dummy_bastion')
def test_set_proxycommand(self, mock_ProxyCommand): """ Loads proxy commands from ssh config file """ ssh_config_file_path = os.path.join(get_resources_base_path(), 'ssh', 'dummy_ssh_config') cfg.CONF.set_override(name='ssh_config_file_path', override=ssh_config_file_path, group='ssh_runner') cfg.CONF.set_override(name='use_ssh_config', override=True, group='ssh_runner') conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'password': '******'} mock = ParamikoSSHClient(**conn_params) mock.connect() mock_ProxyCommand.assert_called_once_with('ssh -q -W dummy.host.org:22 dummy_bastion')
def test_create_without_credentials_use_default_key(self): # No credentials are provided by default stanley ssh key exists so it should use that cfg.CONF.set_override(name='ssh_key_file', override='stanley_rsa', group='system_user') conn_params = {'hostname': 'dummy.host.org', 'username': '******'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'hostname': 'dummy.host.org', 'key_filename': 'stanley_rsa', 'allow_agent': False, 'look_for_keys': False, 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_create_without_credentials_use_default_key(self): # No credentials are provided by default stanley ssh key exists so it should use that cfg.CONF.set_override(name='ssh_key_file', override='stanley_rsa', group='system_user') conn_params = {'hostname': 'dummy.host.org', 'username': '******'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'hostname': 'dummy.host.org', 'key_filename': 'stanley_rsa', 'allow_agent': False, 'look_for_keys': False, 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_create_with_password(self): conn_params = { "hostname": "dummy.host.org", "username": "******", "password": "******", } mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = { "username": "******", "password": "******", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "timeout": 30, "port": 22, } mock.client.connect.assert_called_once_with(**expected_conn)
def test_deprecated_key_argument(self): conn_params = { "hostname": "dummy.host.org", "username": "******", "key_files": "id_rsa", } mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = { "username": "******", "allow_agent": False, "hostname": "dummy.host.org", "look_for_keys": False, "key_filename": "id_rsa", "timeout": 30, "port": 22, } mock.client.connect.assert_called_once_with(**expected_conn)
def test_key_with_passphrase_success(self): path = os.path.join(get_resources_base_path(), 'ssh', 'dummy_rsa_passphrase') with open(path, 'r') as fp: private_key = fp.read() # Key material provided conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'key_material': private_key, 'passphrase': 'testphrase'} mock = ParamikoSSHClient(**conn_params) mock.connect() pkey = paramiko.RSAKey.from_private_key(StringIO(private_key), 'testphrase') expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'pkey': pkey, 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn) # Path to private key file provided conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'key_files': path, 'passphrase': 'testphrase'} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'key_filename': path, 'password': '******', 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_put_dir(self, *args): mock = self.ssh_cli mock.connect() local_dir = os.path.join(get_resources_base_path(), 'packs') mock.put_dir(local_path=local_dir, remote_path='/tmp') mock_cli = mock.client # The actual mocked object: SSHClient # Assert that expected dirs are created on remote box. calls = [call('/tmp/packs/pythonactions'), call('/tmp/packs/pythonactions/actions')] mock_cli.open_sftp().mkdir.assert_has_calls(calls, any_order=True) # Assert that expected files are copied to remote box. local_file = os.path.join(get_resources_base_path(), 'packs/pythonactions/actions/pascal_row.py') remote_file = os.path.join('/tmp', 'packs/pythonactions/actions/pascal_row.py') calls = [call(local_file, remote_file)] mock_cli.open_sftp().put.assert_has_calls(calls, any_order=True)
def test_put_dir(self, *args): mock = self.ssh_cli mock.connect() local_dir = os.path.join(get_resources_base_path(), 'packs') mock.put_dir(local_path=local_dir, remote_path='/tmp') mock_cli = mock.client # The actual mocked object: SSHClient # Assert that expected dirs are created on remote box. calls = [call('/tmp/packs/pythonactions'), call('/tmp/packs/pythonactions/actions')] mock_cli.open_sftp().mkdir.assert_has_calls(calls, any_order=True) # Assert that expected files are copied to remote box. local_file = os.path.join(get_resources_base_path(), 'packs/pythonactions/actions/pascal_row.py') remote_file = os.path.join('/tmp', 'packs/pythonactions/actions/pascal_row.py') calls = [call(local_file, remote_file)] mock_cli.open_sftp().put.assert_has_calls(calls, any_order=True)
def test_create_without_credentials_use_default_key(self): # No credentials are provided by default stanley ssh key exists so it should use that cfg.CONF.set_override(name="ssh_key_file", override="stanley_rsa", group="system_user") conn_params = {"hostname": "dummy.host.org", "username": "******"} mock = ParamikoSSHClient(**conn_params) mock.connect() expected_conn = { "username": "******", "hostname": "dummy.host.org", "key_filename": "stanley_rsa", "allow_agent": False, "look_for_keys": False, "timeout": 30, "port": 22, } mock.client.connect.assert_called_once_with(**expected_conn)
def test_key_material_argument(self): path = os.path.join(get_resources_base_path(), 'ssh', 'dummy_rsa') with open(path, 'r') as fp: private_key = fp.read() conn_params = {'hostname': 'dummy.host.org', 'username': '******', 'key_material': private_key} mock = ParamikoSSHClient(**conn_params) mock.connect() pkey = paramiko.RSAKey.from_private_key(StringIO(private_key)) expected_conn = {'username': '******', 'allow_agent': False, 'hostname': 'dummy.host.org', 'look_for_keys': False, 'pkey': pkey, 'timeout': 60, 'port': 22} mock.client.connect.assert_called_once_with(**expected_conn)
def test_set_proxycommand(self, mock_ProxyCommand): """ Loads proxy commands from ssh config file """ ssh_config_file_path = os.path.join(get_resources_base_path(), "ssh", "dummy_ssh_config") cfg.CONF.set_override( name="ssh_config_file_path", override=ssh_config_file_path, group="ssh_runner", ) cfg.CONF.set_override(name="use_ssh_config", override=True, group="ssh_runner") conn_params = { "hostname": "dummy.host.org", "username": "******", "password": "******", } mock = ParamikoSSHClient(**conn_params) mock.connect() mock_ProxyCommand.assert_called_once_with( "ssh -q -W dummy.host.org:22 dummy_bastion")