mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2024-08-19 06:55:12 +00:00
Co-authored-by: inexcode <inex.code@selfprivacy.org> Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/13
139 lines
3.2 KiB
Python
139 lines
3.2 KiB
Python
import base64
|
|
import json
|
|
import pytest
|
|
|
|
|
|
def read_json(file_path):
|
|
with open(file_path, "r", encoding="utf-8") as file:
|
|
return json.load(file)
|
|
|
|
|
|
def call_args_asserts(mocked_object):
|
|
assert mocked_object.call_count == 7
|
|
assert mocked_object.call_args_list[0][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"dovecot2.service",
|
|
]
|
|
assert mocked_object.call_args_list[1][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"postfix.service",
|
|
]
|
|
assert mocked_object.call_args_list[2][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"vaultwarden.service",
|
|
]
|
|
assert mocked_object.call_args_list[3][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"gitea.service",
|
|
]
|
|
assert mocked_object.call_args_list[4][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"phpfpm-nextcloud.service",
|
|
]
|
|
assert mocked_object.call_args_list[5][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"ocserv.service",
|
|
]
|
|
assert mocked_object.call_args_list[6][0][0] == [
|
|
"systemctl",
|
|
"show",
|
|
"pleroma.service",
|
|
]
|
|
|
|
|
|
SUCCESSFUL_STATUS = b"""
|
|
Type=oneshot
|
|
ExitType=main
|
|
Restart=no
|
|
NotifyAccess=none
|
|
RestartUSec=100ms
|
|
LoadState=loaded
|
|
ActiveState=active
|
|
FreezerState=running
|
|
SubState=exited
|
|
"""
|
|
|
|
FAILED_STATUS = b"""
|
|
Type=oneshot
|
|
ExitType=main
|
|
Restart=no
|
|
NotifyAccess=none
|
|
RestartUSec=100ms
|
|
LoadState=loaded
|
|
ActiveState=failed
|
|
FreezerState=running
|
|
SubState=exited
|
|
"""
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_subproccess_popen(mocker):
|
|
mock = mocker.patch(
|
|
"subprocess.check_output", autospec=True, return_value=SUCCESSFUL_STATUS
|
|
)
|
|
return mock
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_broken_service(mocker):
|
|
mock = mocker.patch(
|
|
"subprocess.check_output", autospec=True, return_value=FAILED_STATUS
|
|
)
|
|
return mock
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
def test_unauthorized(client, mock_subproccess_popen):
|
|
"""Test unauthorized"""
|
|
response = client.get("/services/status")
|
|
assert response.status_code == 401
|
|
|
|
|
|
def test_illegal_methods(authorized_client, mock_subproccess_popen):
|
|
response = authorized_client.post("/services/status")
|
|
assert response.status_code == 405
|
|
response = authorized_client.put("/services/status")
|
|
assert response.status_code == 405
|
|
response = authorized_client.delete("/services/status")
|
|
assert response.status_code == 405
|
|
|
|
|
|
def test_dkim_key(authorized_client, mock_subproccess_popen):
|
|
response = authorized_client.get("/services/status")
|
|
assert response.status_code == 200
|
|
assert response.json() == {
|
|
"imap": 0,
|
|
"smtp": 0,
|
|
"http": 0,
|
|
"bitwarden": 0,
|
|
"gitea": 0,
|
|
"nextcloud": 0,
|
|
"ocserv": 0,
|
|
"pleroma": 0,
|
|
}
|
|
call_args_asserts(mock_subproccess_popen)
|
|
|
|
|
|
def test_no_dkim_key(authorized_client, mock_broken_service):
|
|
response = authorized_client.get("/services/status")
|
|
assert response.status_code == 200
|
|
assert response.json() == {
|
|
"imap": 1,
|
|
"smtp": 1,
|
|
"http": 0,
|
|
"bitwarden": 1,
|
|
"gitea": 1,
|
|
"nextcloud": 1,
|
|
"ocserv": 1,
|
|
"pleroma": 1,
|
|
}
|
|
call_args_asserts(mock_broken_service)
|