status-go/tests-functional/tests/test_init_status_app.py

83 lines
2.7 KiB
Python

from test_cases import StatusBackend
import pytest
from clients.signals import SignalType
import os
@pytest.mark.create_account
@pytest.mark.rpc
class TestInitialiseApp:
@pytest.mark.init
def test_init_app(self):
await_signals = [
SignalType.MEDIASERVER_STARTED.value,
SignalType.NODE_STARTED.value,
SignalType.NODE_READY.value,
SignalType.NODE_LOGIN.value,
]
backend_client = StatusBackend(await_signals)
backend_client.init_status_backend()
backend_client.restore_account_and_login()
assert backend_client is not None
backend_client.verify_json_schema(
backend_client.wait_for_signal(SignalType.MEDIASERVER_STARTED.value), "signal_mediaserver_started")
backend_client.verify_json_schema(
backend_client.wait_for_signal(SignalType.NODE_STARTED.value), "signal_node_started")
backend_client.verify_json_schema(
backend_client.wait_for_signal(SignalType.NODE_READY.value), "signal_node_ready")
backend_client.verify_json_schema(
backend_client.wait_for_signal(SignalType.NODE_LOGIN.value), "signal_node_login")
@pytest.mark.rpc
@pytest.mark.skip("waiting for status-backend to be executed on the same host/container")
class TestInitializeLogging:
@pytest.mark.init
def test_init_logging(self, tmp_path):
self.check_logs(tmp_path, log_enabled=True, api_logging_enabled=True)
@pytest.mark.init
def test_no_logging(self, tmp_path):
self.check_logs(tmp_path, log_enabled=False, api_logging_enabled=False)
def assert_file_first_line(self, path, pattern: str, expected: bool):
assert os.path.exists(path) == expected
if not expected:
return
with open(path) as file:
line = file.readline()
line_found = line.find(pattern) >= 0
assert line_found == expected
def check_logs(self, path, log_enabled: bool, api_logging_enabled: bool):
data_dir = path / "data"
logs_dir = path / "logs"
data_dir.mkdir()
logs_dir.mkdir()
backend = StatusBackend()
backend.api_valid_request("InitializeApplication", {
"dataDir": str(data_dir),
"logDir": str(logs_dir),
"logEnabled": log_enabled,
"apiLoggingEnabled": api_logging_enabled,
})
self.assert_file_first_line(
logs_dir / "geth.log",
pattern="logging initialised",
expected=log_enabled)
self.assert_file_first_line(
logs_dir / "api.log",
pattern='"method": "InitializeApplication"',
expected=api_logging_enabled)