def _create_temp_work_dir(override_dict: dict = None, lfs_enabled: bool = True): """Helper method to create a temporary working directory and associated config file""" def merge_dict(d1, d2) -> None: """Method to merge 1 dictionary into another, updating and adding key/values as needed """ for k, v2 in d2.items(): v1 = d1.get(k) # returns None if v1 has no value for this key if (isinstance(v1, collections.Mapping) and isinstance(v2, collections.Mapping)): merge_dict(v1, v2) else: d1[k] = v2 # Create a temporary working directory unit_test_working_dir = os.path.join(tempfile.gettempdir(), uuid.uuid4().hex) os.makedirs(unit_test_working_dir) os.makedirs(os.path.join(unit_test_working_dir, '.labmanager', 'upload'), exist_ok=True) default_override_config = { 'core': { 'team_mode': False, 'import_demo_on_first_login': False }, 'environment': { 'repo_url': ["https://github.com/gigantum/base-images-testing.git"] }, 'flask': { 'DEBUG': False }, 'git': { 'working_directory': unit_test_working_dir, 'backend': 'filesystem-shim', 'lfs_enabled': lfs_enabled }, 'auth': { 'audience': "io.gigantum.api.dev" }, 'lock': { 'redis': { 'strict': False, } } } os.environ['HOST_WORK_DIR'] = unit_test_working_dir config = Configuration() merge_dict(config.config, default_override_config) if override_dict: config.config.update(override_dict) config_file = os.path.join(unit_test_working_dir, "temp_config.yaml") config.save(config_file) # Return (path-to-config-file, ephemeral-working-directory). return config_file, unit_test_working_dir
def _create_temp_work_dir(lfs_enabled: bool = True): """Helper method to create a temporary working directory and associated config file""" # Create a temporary working directory temp_dir = os.path.join(tempfile.gettempdir(), uuid.uuid4().hex) os.makedirs(temp_dir) config = Configuration() # Make sure the "test" environment components are always used config.config["environment"]["repo_url"] = [ "https://github.com/gigantum/base-images-testing.git" ] config.config["flask"]["DEBUG"] = False # Set the working dir to the new temp dir config.config["git"]["working_directory"] = temp_dir config.config["git"]["lfs_enabled"] = lfs_enabled # Set the auth0 client to the test client (only contains 1 test user and is partitioned from prod) config.config["auth"]["audience"] = "io.gigantum.api.dev" config.config["auth"]["client_id"] = "Z6Wl854wqCjNY0D4uJx8SyPyySyfKmAy" config_file = os.path.join(temp_dir, "temp_config.yaml") config.save(config_file) os.environ['HOST_WORK_DIR'] = temp_dir # Create upload folder if not os.path.exists(config.upload_dir): os.makedirs(config.upload_dir) return config_file, temp_dir
def _create_temp_work_dir(): """Helper method to create a temporary working directory and associated config file""" # Create a temporary working directory temp_dir = os.path.join(tempfile.gettempdir(), uuid.uuid4().hex) os.makedirs(temp_dir) config = Configuration() config.config["git"]["working_directory"] = temp_dir config.config["auth"]["audience"] = "io.gigantum.api.dev" config.config["auth"]["client_id"] = "Z6Wl854wqCjNY0D4uJx8SyPyySyfKmAy" config_file = os.path.join(temp_dir, "temp_config.yaml") config.save(config_file) return config_file, temp_dir
def test_save(self, mock_config_file_no_delete): """Test writing changes to a config file""" configuration = Configuration(mock_config_file_no_delete) assert 'core' in configuration.config assert 'team_mode' in configuration.config["core"] assert configuration.config["core"]["team_mode"] is True assert 'git' in configuration.config configuration.config["core"]["team_mode"] = False configuration.config["git"]["working_directory"] = "/some/dir/now/" configuration.save() del configuration configuration = Configuration(mock_config_file_no_delete) assert 'core' in configuration.config assert 'team_mode' in configuration.config["core"] assert configuration.config["core"]["team_mode"] is False assert 'git' in configuration.config assert configuration.config["git"]["working_directory"] == "/some/dir/now/"