From 5cbbd8897218892b03ef28304f6b587ad37a84cb Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Sat, 27 Jun 2026 12:19:03 +0200 Subject: [PATCH] fix: guard section params before validator setup --- src/bsblan/_validation.py | 3 +++ tests/test_api_validation.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/bsblan/_validation.py b/src/bsblan/_validation.py index e4a6b2ea..4f756505 100644 --- a/src/bsblan/_validation.py +++ b/src/bsblan/_validation.py @@ -96,6 +96,9 @@ def get_section_params(self, section: SectionLiteral) -> dict[str, str]: dict[str, str]: Mapping of parameter id to parameter name. """ + if not self._api_validator: + raise BSBLANError(ErrorMsg.API_VALIDATOR_NOT_INITIALIZED) + return cast("APIValidator", self._api_validator).get_section_params(section) def apply_bus_specific_api_config( diff --git a/tests/test_api_validation.py b/tests/test_api_validation.py index 4250b7ce..121cb0ab 100644 --- a/tests/test_api_validation.py +++ b/tests/test_api_validation.py @@ -89,6 +89,18 @@ async def test_validate_api_section_no_validator() -> None: await bsblan._validator._validate_api_section("device") +@pytest.mark.asyncio +async def test_get_section_params_no_validator() -> None: + """Test section parameter lookup with no validator initialized.""" + async with aiohttp.ClientSession() as session: + bsblan = BSBLAN(BSBLANConfig(host="example.com"), session=session) + + bsblan._validator._api_validator = None + + with pytest.raises(BSBLANError, match=ErrorMsg.API_VALIDATOR_NOT_INITIALIZED): + bsblan._validator.get_section_params("device") + + @pytest.mark.asyncio async def test_validate_api_section_no_api_data() -> None: """Test API section validation with no API data initialized."""