# pylint: disable=redefined-outer-name # pylint: disable=unused-argument import json import pytest from selfprivacy_api.utils import get_domain def read_json(file_path): with open(file_path, "r", encoding="utf-8") as file: return json.load(file) @pytest.fixture def domain_file(mocker, datadir): mocker.patch("selfprivacy_api.utils.DOMAIN_FILE", datadir / "domain") return datadir @pytest.fixture def turned_on(mocker, datadir): mocker.patch("selfprivacy_api.utils.USERDATA_FILE", new=datadir / "turned_on.json") assert read_json(datadir / "turned_on.json")["autoUpgrade"]["enable"] == True assert read_json(datadir / "turned_on.json")["autoUpgrade"]["allowReboot"] == True assert read_json(datadir / "turned_on.json")["timezone"] == "Europe/Moscow" return datadir @pytest.fixture def turned_off(mocker, datadir): mocker.patch("selfprivacy_api.utils.USERDATA_FILE", new=datadir / "turned_off.json") assert read_json(datadir / "turned_off.json")["autoUpgrade"]["enable"] == False assert read_json(datadir / "turned_off.json")["autoUpgrade"]["allowReboot"] == False assert read_json(datadir / "turned_off.json")["timezone"] == "Europe/Moscow" return datadir @pytest.fixture def undefined_config(mocker, datadir): mocker.patch("selfprivacy_api.utils.USERDATA_FILE", new=datadir / "undefined.json") assert "autoUpgrade" not in read_json(datadir / "undefined.json") assert "timezone" not in read_json(datadir / "undefined.json") return datadir @pytest.fixture def no_values(mocker, datadir): mocker.patch("selfprivacy_api.utils.USERDATA_FILE", new=datadir / "no_values.json") assert "enable" not in read_json(datadir / "no_values.json")["autoUpgrade"] assert "allowReboot" not in read_json(datadir / "no_values.json")["autoUpgrade"] return datadir def test_wrong_auth(wrong_auth_client): response = wrong_auth_client.get("/system/pythonVersion") assert response.status_code == 401 def test_get_domain(authorized_client, domain_file): assert get_domain() == "test-domain.tld" ## Timezones def test_get_timezone_unauthorized(client, turned_on): response = client.get("/system/configuration/timezone") assert response.status_code == 401 def test_get_timezone(authorized_client, turned_on): response = authorized_client.get("/system/configuration/timezone") assert response.status_code == 200 assert response.get_json() == "Europe/Moscow" def test_get_timezone_on_undefined(authorized_client, undefined_config): response = authorized_client.get("/system/configuration/timezone") assert response.status_code == 200 assert response.get_json() == "Europe/Uzhgorod" def test_put_timezone_unauthorized(client, turned_on): response = client.put( "/system/configuration/timezone", json={"timezone": "Europe/Moscow"} ) assert response.status_code == 401 def test_put_timezone(authorized_client, turned_on): response = authorized_client.put( "/system/configuration/timezone", json={"timezone": "Europe/Helsinki"} ) assert response.status_code == 200 assert read_json(turned_on / "turned_on.json")["timezone"] == "Europe/Helsinki" def test_put_timezone_on_undefined(authorized_client, undefined_config): response = authorized_client.put( "/system/configuration/timezone", json={"timezone": "Europe/Helsinki"} ) assert response.status_code == 200 assert ( read_json(undefined_config / "undefined.json")["timezone"] == "Europe/Helsinki" ) def test_put_timezone_without_timezone(authorized_client, turned_on): response = authorized_client.put("/system/configuration/timezone", json={}) assert response.status_code == 400 assert read_json(turned_on / "turned_on.json")["timezone"] == "Europe/Moscow" def test_put_invalid_timezone(authorized_client, turned_on): response = authorized_client.put( "/system/configuration/timezone", json={"timezone": "Invalid/Timezone"} ) assert response.status_code == 400 assert read_json(turned_on / "turned_on.json")["timezone"] == "Europe/Moscow"