diff --git a/selfprivacy_api/services/bitwarden/__init__.py b/selfprivacy_api/services/bitwarden/__init__.py index 8d2a903..56eb0fd 100644 --- a/selfprivacy_api/services/bitwarden/__init__.py +++ b/selfprivacy_api/services/bitwarden/__init__.py @@ -37,6 +37,10 @@ class Bitwarden(Service): """Read SVG icon from file and return it as base64 encoded string.""" return base64.b64encode(BITWARDEN_ICON.encode("utf-8")).decode("utf-8") + @staticmethod + def get_user() -> str: + return "vaultwarden" + @staticmethod def get_url() -> typing.Optional[str]: """Return service url.""" diff --git a/selfprivacy_api/services/pleroma/__init__.py b/selfprivacy_api/services/pleroma/__init__.py index 0191c18..f7e185b 100644 --- a/selfprivacy_api/services/pleroma/__init__.py +++ b/selfprivacy_api/services/pleroma/__init__.py @@ -6,6 +6,7 @@ from selfprivacy_api.jobs import Job, Jobs from selfprivacy_api.services.generic_service_mover import FolderMoveNames, move_service from selfprivacy_api.services.generic_status_getter import get_service_status from selfprivacy_api.services.service import Service, ServiceDnsRecord, ServiceStatus +from selfprivacy_api.services.owned_path import OwnedPath from selfprivacy_api.utils import ReadUserData, WriteUserData, get_domain from selfprivacy_api.utils.block_devices import BlockDevice import selfprivacy_api.utils.network as network_utils @@ -96,8 +97,23 @@ class Pleroma(Service): return "" @staticmethod - def get_folders() -> typing.List[str]: - return ["/var/lib/pleroma", "/var/lib/postgresql"] + def get_owned_folders() -> typing.List[OwnedPath]: + """ + Get a list of occupied directories with ownership info + pleroma has folders that are owned by different users + """ + return [ + OwnedPath( + path="/var/lib/pleroma", + owner="pleroma", + group="pleroma", + ), + OwnedPath( + path="/var/lib/postgresql", + owner="postgres", + group="postgres", + ), + ] @staticmethod def get_drive() -> str: diff --git a/tests/test_services.py b/tests/test_services.py index 52164a9..fbbae09 100644 --- a/tests/test_services.py +++ b/tests/test_services.py @@ -3,6 +3,10 @@ """ from pytest import raises +from selfprivacy_api.services.bitwarden import Bitwarden +from selfprivacy_api.services.pleroma import Pleroma +from selfprivacy_api.services.owned_path import OwnedPath + from selfprivacy_api.services.test_service import DummyService from selfprivacy_api.services.service import Service @@ -18,3 +22,21 @@ def test_unimplemented_folders_raises(): owned_folders = OurDummy.get_owned_folders() assert owned_folders is not None + + +def test_owned_folders_from_not_owned(): + assert Bitwarden.get_owned_folders() == [ + OwnedPath( + path=folder, + group="vaultwarden", + owner="vaultwarden", + ) + for folder in Bitwarden.get_folders() + ] + + +def test_paths_from_owned_paths(): + assert len(Pleroma.get_folders()) == 2 + assert Pleroma.get_folders() == [ + ownedpath.path for ownedpath in Pleroma.get_owned_folders() + ]