コード例 #1
0
def test_export_profile_with_existing_file(profile):
    export_path = "exported"
    exported_file = f"{export_path}.zip"
    tentacles_config = os.path.join(get_profile_path(),
                                    "tentacles_config.json")
    spec_tentacles_config = os.path.join(get_profile_path(), "specific_config")
    other_profile = os.path.join(test_config.TEST_FOLDER, "other_profile")
    with _cleaned_tentacles(export_path,
                            exported_file,
                            tentacles_config,
                            dir1=spec_tentacles_config,
                            dir2=other_profile):
        # create fake tentacles config
        shutil.copy(profile.config_file(), tentacles_config)
        os.mkdir(spec_tentacles_config)
        shutil.copy(profile.config_file(),
                    os.path.join(spec_tentacles_config, "t1.json"))
        shutil.copy(profile.config_file(),
                    os.path.join(spec_tentacles_config, "t2.json"))
        shutil.copy(profile.config_file(),
                    f"{export_path}.{constants.PROFILE_EXPORT_FORMAT}")
        with mock.patch.object(os, "remove", mock.Mock()) as remove_mock:
            profiles.export_profile(profile, export_path)
            remove_mock.assert_called_once_with(
                f"{export_path}.{constants.PROFILE_EXPORT_FORMAT}")
        assert os.path.isfile(exported_file)
        with zipfile.ZipFile(exported_file) as zipped:
            zipped.extractall(other_profile)
        # ensure all files got zipped
        for root, dirs, files in os.walk(profile.path):
            dir_path = os.path.join(
                other_profile, "specific_config"
            ) if "specific_config" in root else other_profile
            assert all(
                os.path.isfile(os.path.join(dir_path, f)) for f in files)
コード例 #2
0
def test_import_profile(profile):
    export_path = os.path.join(test_config.TEST_FOLDER, "super_profile")
    exported_file = f"{export_path}.zip"
    spec_tentacles_config = os.path.join(get_profile_path(), "specific_config")
    tentacles_config = os.path.join(get_profile_path(),
                                    "tentacles_config.json")
    other_profile = os.path.join(constants.USER_PROFILES_FOLDER,
                                 "imported_super_profile")
    with _cleaned_tentacles(export_path,
                            exported_file,
                            tentacles_config,
                            dir1=other_profile,
                            dir2=constants.USER_FOLDER,
                            dir3=spec_tentacles_config):
        # create fake tentacles config
        shutil.copy(profile.config_file(), tentacles_config)
        os.mkdir(spec_tentacles_config)
        shutil.copy(profile.config_file(),
                    os.path.join(spec_tentacles_config, "t1.json"))
        shutil.copy(profile.config_file(),
                    os.path.join(spec_tentacles_config, "t2.json"))
        profiles.export_profile(profile, export_path)
        imported_profile_path = os.path.join(constants.USER_PROFILES_FOLDER,
                                             "imported_super_profile")
        with mock.patch.object(profile_sharing, "_ensure_unique_profile_id", mock.Mock()) \
                as _ensure_unique_profile_id_mock:
            profiles.import_profile(exported_file)
            _ensure_unique_profile_id_mock.assert_called_once()
        assert os.path.isdir(imported_profile_path)
        # ensure all files got imported
        for root, dirs, files in os.walk(profile.path):
            dir_path = os.path.join(
                other_profile, "specific_config"
            ) if "specific_config" in root else other_profile
            assert all(
                os.path.isfile(os.path.join(dir_path, f)) for f in files)
        profiles.import_profile(exported_file)
        assert os.path.isdir(f"{imported_profile_path}_2")
        with mock.patch.object(shutil, "rmtree",
                               mock.Mock()) as shutil_rmtree_mock:
            profiles.import_profile(exported_file, replace_if_exists=True)
            shutil_rmtree_mock.assert_called_once()
        assert os.path.isdir(imported_profile_path)
        assert not os.path.isdir(f"{imported_profile_path}_3")
コード例 #3
0
def export_profile(profile_id, export_path) -> str:
    return profiles.export_profile(
        interfaces_util.get_edited_config(
            dict_only=False).profile_by_id[profile_id], export_path)