Files
core/tests/components/minecraft_server/test_diagnostics.py
Perchun Pak 8fb4f1f7f9 Update mcstatus to 12.0.1 in Minecraft Server (#144704)
Update mcstatus to 12.0.1
2025-05-26 18:39:13 +02:00

70 lines
2.2 KiB
Python

"""Tests for Minecraft Server diagnostics."""
from unittest.mock import patch
from mcstatus import BedrockServer, JavaServer
from mcstatus.responses import BedrockStatusResponse, JavaStatusResponse
import pytest
from syrupy.assertion import SnapshotAssertion
from homeassistant.core import HomeAssistant
from .const import (
TEST_BEDROCK_STATUS_RESPONSE,
TEST_HOST,
TEST_JAVA_STATUS_RESPONSE,
TEST_PORT,
)
from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
@pytest.mark.parametrize(
("mock_config_entry", "server", "status_response"),
[
("java_mock_config_entry", JavaServer, TEST_JAVA_STATUS_RESPONSE),
("bedrock_mock_config_entry", BedrockServer, TEST_BEDROCK_STATUS_RESPONSE),
],
)
async def test_config_entry_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
mock_config_entry: MockConfigEntry,
server: JavaServer | BedrockServer,
status_response: JavaStatusResponse | BedrockStatusResponse,
request: pytest.FixtureRequest,
snapshot: SnapshotAssertion,
) -> None:
"""Test fetching of the config entry diagnostics."""
# Use 'request' fixture to access 'mock_config_entry' fixture, as it cannot be used directly in 'parametrize'.
mock_config_entry = request.getfixturevalue(mock_config_entry)
mock_config_entry.add_to_hass(hass)
if server.__name__ == "JavaServer":
lookup_function_name = "async_lookup"
else:
lookup_function_name = "lookup"
# Setup mock entry.
with (
patch(
f"mcstatus.server.{server.__name__}.{lookup_function_name}",
return_value=server(host=TEST_HOST, port=TEST_PORT),
),
patch(
f"mcstatus.server.{server.__name__}.async_status",
return_value=status_response,
),
):
assert await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
# Test diagnostics.
assert (
await get_diagnostics_for_config_entry(hass, hass_client, mock_config_entry)
== snapshot
)