diff --git a/src/azure-cli-core/azure/cli/core/_config.py b/src/azure-cli-core/azure/cli/core/_config.py index c002a77601d..1ec6286acc8 100644 --- a/src/azure-cli-core/azure/cli/core/_config.py +++ b/src/azure-cli-core/azure/cli/core/_config.py @@ -11,3 +11,4 @@ CONFIG_FILE_NAME = 'config' GLOBAL_CONFIG_PATH = os.path.join(GLOBAL_CONFIG_DIR, CONFIG_FILE_NAME) ENV_VAR_PREFIX = 'AZURE' +ENV_VAR_TEST_LIVE = 'AZURE_TEST_RUN_LIVE' diff --git a/src/azure-cli-core/azure/cli/core/mock.py b/src/azure-cli-core/azure/cli/core/mock.py index c96eedca0c2..70ec6ff2733 100644 --- a/src/azure-cli-core/azure/cli/core/mock.py +++ b/src/azure-cli-core/azure/cli/core/mock.py @@ -17,16 +17,33 @@ def __init__(self, commands_loader_cls=None, random_config_dir=False, **kwargs): from azure.cli.core.cloud import get_active_cloud from azure.cli.core.parser import AzCliCommandParser from azure.cli.core.util import random_string - from azure.cli.core._config import GLOBAL_CONFIG_DIR, ENV_VAR_PREFIX + from azure.cli.core._config import GLOBAL_CONFIG_DIR, ENV_VAR_PREFIX, ENV_VAR_TEST_LIVE from azure.cli.core._help import AzCliHelp from azure.cli.core._output import AzOutputProducer from knack.completion import ARGCOMPLETE_ENV_NAME + from knack.util import ensure_dir + + if random_config_dir: + config_dir = os.path.join(GLOBAL_CONFIG_DIR, 'dummy_cli_config_dir', random_string()) + + # In recording mode, copy login credentials from global config dir to the dummy config dir + if os.getenv(ENV_VAR_TEST_LIVE, '').lower() == 'true': + if os.path.exists(GLOBAL_CONFIG_DIR): + ensure_dir(config_dir) + import shutil + for file in ['azureProfile.json', 'msal_token_cache.bin', 'clouds.config', 'msal_token_cache.json', + 'service_principal_entries.json']: + try: + shutil.copy(os.path.join(GLOBAL_CONFIG_DIR, file), config_dir) + except FileNotFoundError: + pass + else: + config_dir = GLOBAL_CONFIG_DIR super(DummyCli, self).__init__( cli_name='az', - config_dir=os.path.join(GLOBAL_CONFIG_DIR, 'dummy_cli_config_dir', - random_string()) if random_config_dir else GLOBAL_CONFIG_DIR, + config_dir=config_dir, config_env_var_prefix=ENV_VAR_PREFIX, commands_loader_cls=commands_loader_cls or MainCommandsLoader, parser_cls=AzCliCommandParser,