156 lines
4.6 KiB
Python
156 lines
4.6 KiB
Python
"""Common fixtures for the Pterodactyl tests."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
from pydactyl.responses import PaginatedResponse
|
|
import pytest
|
|
|
|
from homeassistant.components.pterodactyl.const import DOMAIN
|
|
from homeassistant.const import CONF_API_KEY, CONF_URL
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
TEST_URL = "https://192.168.0.1:8080/"
|
|
TEST_API_KEY = "TestClientApiKey"
|
|
TEST_USER_INPUT = {
|
|
CONF_URL: TEST_URL,
|
|
CONF_API_KEY: TEST_API_KEY,
|
|
}
|
|
TEST_SERVER_LIST_DATA = {
|
|
"meta": {"pagination": {"total": 2, "count": 2, "per_page": 50, "current_page": 1}},
|
|
"data": [
|
|
{
|
|
"object": "server",
|
|
"attributes": {
|
|
"server_owner": True,
|
|
"identifier": "1",
|
|
"internal_id": 1,
|
|
"uuid": "1-1-1-1-1",
|
|
"name": "Test Server 1",
|
|
"node": "default_node",
|
|
"description": "Description of Test Server 1",
|
|
"limits": {
|
|
"memory": 2048,
|
|
"swap": 1024,
|
|
"disk": 10240,
|
|
"io": 500,
|
|
"cpu": 100,
|
|
"threads": None,
|
|
"oom_disabled": True,
|
|
},
|
|
"invocation": "java -jar test_server1.jar",
|
|
"docker_image": "test_docker_image_1",
|
|
"egg_features": ["java_version"],
|
|
},
|
|
},
|
|
{
|
|
"object": "server",
|
|
"attributes": {
|
|
"server_owner": True,
|
|
"identifier": "2",
|
|
"internal_id": 2,
|
|
"uuid": "2-2-2-2-2",
|
|
"name": "Test Server 2",
|
|
"node": "default_node",
|
|
"description": "Description of Test Server 2",
|
|
"limits": {
|
|
"memory": 2048,
|
|
"swap": 1024,
|
|
"disk": 10240,
|
|
"io": 500,
|
|
"cpu": 100,
|
|
"threads": None,
|
|
"oom_disabled": True,
|
|
},
|
|
"invocation": "java -jar test_server_2.jar",
|
|
"docker_image": "test_docker_image2",
|
|
"egg_features": ["java_version"],
|
|
},
|
|
},
|
|
],
|
|
}
|
|
TEST_SERVER = {
|
|
"server_owner": True,
|
|
"identifier": "1",
|
|
"internal_id": 1,
|
|
"uuid": "1-1-1-1-1",
|
|
"name": "Test Server 1",
|
|
"node": "default_node",
|
|
"is_node_under_maintenance": False,
|
|
"sftp_details": {"ip": "192.168.0.1", "port": 2022},
|
|
"description": "",
|
|
"limits": {
|
|
"memory": 2048,
|
|
"swap": 1024,
|
|
"disk": 10240,
|
|
"io": 500,
|
|
"cpu": 100,
|
|
"threads": None,
|
|
"oom_disabled": True,
|
|
},
|
|
"invocation": "java -jar test.jar",
|
|
"docker_image": "test_docker_image",
|
|
"egg_features": ["eula", "java_version", "pid_limit"],
|
|
"feature_limits": {"databases": 0, "allocations": 0, "backups": 3},
|
|
"status": None,
|
|
"is_suspended": False,
|
|
"is_installing": False,
|
|
"is_transferring": False,
|
|
"relationships": {"allocations": {...}, "variables": {...}},
|
|
}
|
|
TEST_SERVER_UTILIZATION = {
|
|
"current_state": "running",
|
|
"is_suspended": False,
|
|
"resources": {
|
|
"memory_bytes": 1111,
|
|
"cpu_absolute": 22,
|
|
"disk_bytes": 3333,
|
|
"network_rx_bytes": 44,
|
|
"network_tx_bytes": 55,
|
|
"uptime": 6666,
|
|
},
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_setup_entry() -> Generator[AsyncMock]:
|
|
"""Override async_setup_entry."""
|
|
with patch(
|
|
"homeassistant.components.pterodactyl.async_setup_entry", return_value=True
|
|
) as mock_setup_entry:
|
|
yield mock_setup_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Create Pterodactyl mock config entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN,
|
|
unique_id=None,
|
|
entry_id="01234567890123456789012345678901",
|
|
title=TEST_URL,
|
|
data={
|
|
CONF_URL: TEST_URL,
|
|
CONF_API_KEY: TEST_API_KEY,
|
|
},
|
|
version=1,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_pterodactyl():
|
|
"""Mock the Pterodactyl API."""
|
|
with patch(
|
|
"homeassistant.components.pterodactyl.api.PterodactylClient", autospec=True
|
|
) as mock:
|
|
mock.return_value.client.servers.list_servers.return_value = PaginatedResponse(
|
|
mock.return_value, "client", TEST_SERVER_LIST_DATA
|
|
)
|
|
mock.return_value.client.servers.get_server.return_value = TEST_SERVER
|
|
mock.return_value.client.servers.get_server_utilization.return_value = (
|
|
TEST_SERVER_UTILIZATION
|
|
)
|
|
|
|
yield mock.return_value
|