示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
0
    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/"