diff --git a/selfprivacy_api/services/service.py b/selfprivacy_api/services/service.py index dc7579d..a53c028 100644 --- a/selfprivacy_api/services/service.py +++ b/selfprivacy_api/services/service.py @@ -128,7 +128,12 @@ class Service(ABC): @classmethod def is_enabled(cls) -> bool: - """`True` if the service is enabled.""" + """ + `True` if the service is enabled. + `False` if it is not enabled or not defined in file + If there is nothing in the file, this is equivalent to False + because NixOS won't enable it then. + """ name = cls.get_id() with ReadUserData() as user_data: return user_data.get(name, {}).get("enable", False) diff --git a/tests/test_graphql/test_services.py b/tests/test_graphql/test_services.py index 8a88ef7..f28f204 100644 --- a/tests/test_graphql/test_services.py +++ b/tests/test_graphql/test_services.py @@ -557,6 +557,25 @@ def possibly_dubiously_enabled_service( return dummy_service +# Yeah, idk yet how to dry it. +@pytest.fixture(params=["deleted_attribute", "service_not_in_json"]) +def undefined_enabledness_service(dummy_service: DummyService, request) -> DummyService: + if request.param == "deleted_attribute": + with WriteUserData() as data: + del data[dummy_service.get_id()]["enable"] + if request.param == "service_not_in_json": + with WriteUserData() as data: + del data[dummy_service.get_id()] + return dummy_service + + +def test_undefined_enabledness_in_json_means_False( + undefined_enabledness_service: DummyService, +): + dummy_service = undefined_enabledness_service + assert dummy_service.is_enabled() is False + + def test_enabling_disabling_writes_json( possibly_dubiously_enabled_service: DummyService, ):