def test_write_ssh_config_arc_overwrite(self, mock_create_file,
                                            mock_abspath, mock_warning):
        op_info = ssh_info.ConfigSession("config", "rg", "vm", None, None,
                                         None, True, False, "user", None,
                                         "port", "Microsoft.HybridCompute",
                                         None, None, "client")
        op_info.config_path = "config"
        op_info.ssh_client_folder = "client"
        op_info.private_key_file = "priv"
        op_info.public_key_file = "pub"
        op_info.cert_file = "cert"
        op_info.proxy_path = "proxy"
        mock_create_file.return_value = "relay"
        expected_lines = [
            "", "Host rg-vm", "\tHostName vm", "\tUser user",
            "\tCertificateFile \"cert\"", "\tIdentityFile \"priv\"",
            "\tProxyCommand \"proxy\" -r \"relay\" -p port"
        ]

        with mock.patch('builtins.open') as mock_open:
            mock_file = mock.Mock()
            mock_open.return_value.__enter__.return_value = mock_file
            ssh_utils.write_ssh_config(op_info, True, True)

        mock_warning.assert_called_once_with(True, True, True, "cert", "relay",
                                             "client")
        mock_open.assert_called_once_with("config", 'w', encoding='utf-8')
        mock_file.write.assert_called_once_with('\n'.join(expected_lines))
    def test_write_ssh_config_append(self, mock_validity):
        expected_lines = [
            "",
            "Host rg-vm",
            "\tUser username",
            "\tHostName 1.2.3.4",
            "\tCertificateFile cert",
            "\tIdentityFile privatekey",
            "Host 1.2.3.4",
            "\tUser username",
            "\tCertificateFile cert",
            "\tIdentityFile privatekey"
        ]

        mock_validity.return_value = None

        with mock.patch('builtins.open') as mock_open:
            mock_file = mock.Mock()
            mock_open.return_value.__enter__.return_value = mock_file
            ssh_utils.write_ssh_config(
                "path/to/file", "rg", "vm", False, None, "1.2.3.4", "username", "cert", "privatekey", True, True
            )

        mock_validity.assert_called_once_with("cert")

        mock_open.assert_called_once_with("path/to/file", "a")
        mock_file.write.assert_called_once_with('\n'.join(expected_lines))
Exemplo n.º 3
0
    def test_write_ssh_config_ip_only(self, mock_make_dirs):
        expected_lines = [
            "Host 1.2.3.4", "\tUser username", "\tCertificateFile cert",
            "\tIdentityFile privatekey"
        ]

        with mock.patch('builtins.open') as mock_open:
            mock_file = mock.Mock()
            mock_open.return_value.__enter__.return_value = mock_file
            ssh_utils.write_ssh_config("path/to/file", None, None, "1.2.3.4",
                                       "username", "cert", "privatekey")

        mock_make_dirs.assert_called_once_with("path/to/file")
        mock_open.assert_called_once_with("path/to/file", "w")
        mock_file.write.assert_called_once_with('\n'.join(expected_lines))
Exemplo n.º 4
0
    def test_write_ssh_config_append(self, mock_get_text, mock_validity):
        expected_lines = [
            "",
            "Host rg-vm",
            "\tUser username",
            "\tHostName 1.2.3.4",
            "\tCertificateFile cert",
            "\tIdentityFile privatekey",
            "Host 1.2.3.4",
            "\tUser username",
            "\tCertificateFile cert",
            "\tIdentityFile privatekey"
        ]

        mock_validity.return_value = None
        mock_get_text.return_value = expected_lines

        op_info = mock.Mock()
        op_info.config_path = "path/to/file"
        op_info.resource_group_name = "rg"
        op_info.vm_name = "vm"
        op_info.overwrite = False
        op_info.ip = "1.2.3.4"
        op_info.local_user = "******"
        op_info.cert_file = "cert"
        op_info.private_key_file = "privatekey"
        op_info.ssh_client_folder = "client/folder"
        op_info.get_config_text = mock_get_text

        with mock.patch('builtins.open') as mock_open:
            mock_file = mock.Mock()
            mock_open.return_value.__enter__.return_value = mock_file
            ssh_utils.write_ssh_config(
                op_info, True, True
            )

        mock_validity.assert_called_once_with("cert", "client/folder")

        mock_open.assert_called_once_with("path/to/file", "a", encoding='utf-8')
        mock_file.write.assert_called_once_with('\n'.join(expected_lines))