2023-04-17 15:37:11 +00:00
|
|
|
"""
|
|
|
|
Tests for generic service methods
|
|
|
|
"""
|
|
|
|
from pytest import raises
|
|
|
|
|
2023-04-19 11:34:14 +00:00
|
|
|
from selfprivacy_api.services.bitwarden import Bitwarden
|
|
|
|
from selfprivacy_api.services.pleroma import Pleroma
|
|
|
|
from selfprivacy_api.services.owned_path import OwnedPath
|
2023-04-19 12:12:46 +00:00
|
|
|
from selfprivacy_api.services.generic_service_mover import FolderMoveNames
|
2023-04-19 11:34:14 +00:00
|
|
|
|
2023-04-17 15:37:11 +00:00
|
|
|
from selfprivacy_api.services.test_service import DummyService
|
2023-07-12 15:02:45 +00:00
|
|
|
from selfprivacy_api.services.service import Service, ServiceStatus, StoppedService
|
2023-07-12 12:10:40 +00:00
|
|
|
from selfprivacy_api.utils.waitloop import wait_until_true
|
|
|
|
|
2023-09-20 13:48:30 +00:00
|
|
|
from tests.test_common import raw_dummy_service
|
2023-04-17 15:37:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_unimplemented_folders_raises():
|
|
|
|
with raises(NotImplementedError):
|
|
|
|
Service.get_folders()
|
|
|
|
with raises(NotImplementedError):
|
|
|
|
Service.get_owned_folders()
|
|
|
|
|
|
|
|
class OurDummy(DummyService, folders=["testydir", "dirtessimo"]):
|
|
|
|
pass
|
|
|
|
|
|
|
|
owned_folders = OurDummy.get_owned_folders()
|
|
|
|
assert owned_folders is not None
|
2023-04-19 11:34:14 +00:00
|
|
|
|
|
|
|
|
2023-07-12 15:02:45 +00:00
|
|
|
def test_service_stopper(raw_dummy_service):
|
|
|
|
dummy: Service = raw_dummy_service
|
|
|
|
dummy.set_delay(0.3)
|
|
|
|
|
|
|
|
assert dummy.get_status() == ServiceStatus.ACTIVE
|
|
|
|
|
|
|
|
with StoppedService(dummy) as stopped_dummy:
|
|
|
|
assert stopped_dummy.get_status() == ServiceStatus.INACTIVE
|
|
|
|
assert dummy.get_status() == ServiceStatus.INACTIVE
|
|
|
|
|
|
|
|
assert dummy.get_status() == ServiceStatus.ACTIVE
|
|
|
|
|
|
|
|
|
2023-07-12 12:10:40 +00:00
|
|
|
def test_delayed_start_stop(raw_dummy_service):
|
|
|
|
dummy = raw_dummy_service
|
2023-07-12 12:27:55 +00:00
|
|
|
dummy.set_delay(0.3)
|
2023-07-12 12:10:40 +00:00
|
|
|
|
2023-07-12 12:27:55 +00:00
|
|
|
dummy.stop()
|
2023-07-12 12:10:40 +00:00
|
|
|
assert dummy.get_status() == ServiceStatus.DEACTIVATING
|
|
|
|
wait_until_true(lambda: dummy.get_status() == ServiceStatus.INACTIVE)
|
|
|
|
assert dummy.get_status() == ServiceStatus.INACTIVE
|
|
|
|
|
2023-07-12 12:27:55 +00:00
|
|
|
dummy.start()
|
2023-07-12 12:10:40 +00:00
|
|
|
assert dummy.get_status() == ServiceStatus.ACTIVATING
|
|
|
|
wait_until_true(lambda: dummy.get_status() == ServiceStatus.ACTIVE)
|
|
|
|
assert dummy.get_status() == ServiceStatus.ACTIVE
|
|
|
|
|
|
|
|
|
2023-04-19 11:34:14 +00:00
|
|
|
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()
|
|
|
|
]
|
2023-04-19 12:12:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_foldermoves_from_ownedpaths():
|
|
|
|
owned = OwnedPath(
|
|
|
|
path="var/lib/bitwarden",
|
|
|
|
group="vaultwarden",
|
|
|
|
owner="vaultwarden",
|
|
|
|
)
|
|
|
|
|
|
|
|
assert FolderMoveNames.from_owned_path(owned) == FolderMoveNames(
|
|
|
|
name="bitwarden",
|
|
|
|
bind_location="var/lib/bitwarden",
|
|
|
|
group="vaultwarden",
|
|
|
|
owner="vaultwarden",
|
|
|
|
)
|