From 348ece8b9c47d4494a8bfa2808be727d4ca3bc1c Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Mon, 20 Feb 2023 16:09:01 +0000 Subject: [PATCH] fix(backups): singleton metaclass was screwing with tests --- selfprivacy_api/backup/__init__.py | 6 ++-- tests/test_graphql/test_backup.py | 55 +++++++++++++++++++----------- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/selfprivacy_api/backup/__init__.py b/selfprivacy_api/backup/__init__.py index d948d34..b328831 100644 --- a/selfprivacy_api/backup/__init__.py +++ b/selfprivacy_api/backup/__init__.py @@ -10,7 +10,8 @@ from selfprivacy_api.backup.providers import get_provider from selfprivacy_api.graphql.queries.providers import BackupProvider -class Backups(metaclass=SingletonMetaclass): +# class Backups(metaclass=SingletonMetaclass): +class Backups: """A singleton controller for backups""" provider: AbstractBackupProvider @@ -18,7 +19,8 @@ class Backups(metaclass=SingletonMetaclass): def __init__(self, test_repo_file: str = ""): if test_repo_file != "": self.set_localfile_repo(test_repo_file) - self.lookup_provider() + else: + self.lookup_provider() def set_localfile_repo(self, file_path: str): ProviderClass = get_provider(BackupProvider.FILE) diff --git a/tests/test_graphql/test_backup.py b/tests/test_graphql/test_backup.py index 28ef828..9753217 100644 --- a/tests/test_graphql/test_backup.py +++ b/tests/test_graphql/test_backup.py @@ -1,5 +1,6 @@ import pytest import os.path as path +from os import makedirs from selfprivacy_api.services.test_service import DummyService @@ -15,17 +16,36 @@ TESTFILE_BODY = "testytest!" REPO_NAME = "test_backup" +@pytest.fixture(scope="function") +def backups(tmpdir): + test_repo_path = path.join(tmpdir, "totallyunrelated") + return Backups(test_repo_path) + + @pytest.fixture() -def test_service(tmpdir, backups): - testile_path = path.join(tmpdir, "testfile.txt") - with open(testile_path, "w") as file: +def raw_dummy_service(tmpdir, backups): + service_dir = path.join(tmpdir, "test_service") + makedirs(service_dir) + + testfile_path = path.join(service_dir, "testfile.txt") + with open(testfile_path, "w") as file: file.write(TESTFILE_BODY) # we need this to not change get_location() much - class TestDummyService(DummyService, location=tmpdir): + class TestDummyService(DummyService, location=service_dir): pass service = TestDummyService() + return service + + +@pytest.fixture() +def dummy_service(tmpdir, backups, raw_dummy_service): + service = raw_dummy_service + repo_path = path.join(tmpdir, "test_repo") + assert not path.exists(repo_path) + # assert not repo_path + backups.init_repo(service) return service @@ -49,12 +69,6 @@ def file_backup(tmpdir) -> AbstractBackupProvider: return provider -@pytest.fixture() -def backups(tmpdir): - test_repo_path = path.join(tmpdir, "test_repo") - return Backups(test_repo_path) - - def test_select_backend(): provider = providers.get_provider(BackupProvider.BACKBLAZE) assert provider is not None @@ -65,15 +79,18 @@ def test_file_backend_init(file_backup): file_backup.backuper.init("somerepo") -def test_backup_simple(test_service, memory_backup): +def test_backup_simple_file(raw_dummy_service, file_backup): # temporarily incomplete - assert test_service is not None - assert memory_backup is not None - memory_backup.backuper.start_backup(test_service.get_location(), REPO_NAME) + service = raw_dummy_service + assert service is not None + assert file_backup is not None + + name = service.get_id() + file_backup.backuper.init(name) -def test_backup_service(test_service, backups): - backups.back_up(test_service) +def test_backup_service(dummy_service, backups): + backups.back_up(dummy_service) def test_no_repo(memory_backup): @@ -81,6 +98,6 @@ def test_no_repo(memory_backup): assert memory_backup.backuper.get_snapshots("") == [] -# def test_one_snapshot(backups, test_service): -# backups.back_up(test_service) -# assert len(backups.get_snapshots(test_service)) == 1 +# def test_one_snapshot(backups, dummy_service): +# backups.back_up(dummy_service) +# assert len(backups.get_snapshots(dummy_service)) == 1