119 lines
4.0 KiB
Python
119 lines
4.0 KiB
Python
# 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"
|