simplify(compat): homeassistant_tool — drop 2 back-compat globals (_HASS_URL/_HASS_TOKEN), repoint 2 test files
_get_config() only ever read get_secret() in production; the module globals existed for test monkeypatching. Tests now patch tools.homeassistant_tool._get_config directly.
This commit is contained in:
@@ -164,12 +164,8 @@ class TestToolRest:
|
||||
async def test_list_entities_returns_all(self, monkeypatch):
|
||||
"""_async_list_entities returns all entities from the fake server."""
|
||||
async with FakeHAServer() as server:
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", server.token,
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token=server.token: (url, token))
|
||||
|
||||
result = await _async_list_entities()
|
||||
|
||||
@@ -182,12 +178,8 @@ class TestToolRest:
|
||||
async def test_list_entities_domain_filter(self, monkeypatch):
|
||||
"""Domain filter is applied after fetching from server."""
|
||||
async with FakeHAServer() as server:
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", server.token,
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token=server.token: (url, token))
|
||||
|
||||
result = await _async_list_entities(domain="light")
|
||||
|
||||
@@ -199,12 +191,8 @@ class TestToolRest:
|
||||
async def test_get_state_single_entity(self, monkeypatch):
|
||||
"""_async_get_state returns full entity details."""
|
||||
async with FakeHAServer() as server:
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", server.token,
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token=server.token: (url, token))
|
||||
|
||||
result = await _async_get_state("light.bedroom")
|
||||
|
||||
@@ -219,12 +207,8 @@ class TestToolRest:
|
||||
import aiohttp as _aiohttp
|
||||
|
||||
async with FakeHAServer() as server:
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", server.token,
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token=server.token: (url, token))
|
||||
|
||||
with pytest.raises(_aiohttp.ClientResponseError) as exc_info:
|
||||
await _async_get_state("light.nonexistent")
|
||||
@@ -234,12 +218,8 @@ class TestToolRest:
|
||||
async def test_call_service_turn_on(self, monkeypatch):
|
||||
"""_async_call_service sends correct payload and server records it."""
|
||||
async with FakeHAServer() as server:
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", server.token,
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token=server.token: (url, token))
|
||||
|
||||
result = await _async_call_service(
|
||||
domain="light",
|
||||
@@ -311,12 +291,8 @@ class TestAuthAndErrors:
|
||||
import aiohttp as _aiohttp
|
||||
|
||||
async with FakeHAServer() as server:
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", "bad-token",
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token="bad-token": (url, token))
|
||||
|
||||
with pytest.raises(_aiohttp.ClientResponseError) as exc_info:
|
||||
await _async_list_entities()
|
||||
@@ -329,12 +305,8 @@ class TestAuthAndErrors:
|
||||
|
||||
async with FakeHAServer() as server:
|
||||
server.force_500 = True
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_URL", server.url,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"tools.homeassistant_tool._HASS_TOKEN", server.token,
|
||||
)
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda url=server.url, token=server.token: (url, token))
|
||||
|
||||
with pytest.raises(_aiohttp.ClientResponseError) as exc_info:
|
||||
await _async_list_entities()
|
||||
|
||||
@@ -324,8 +324,6 @@ class TestCheckAvailable:
|
||||
from agent import secret_scope
|
||||
from tools.homeassistant_tool import _get_config
|
||||
|
||||
monkeypatch.setattr("tools.homeassistant_tool._HASS_URL", "")
|
||||
monkeypatch.setattr("tools.homeassistant_tool._HASS_TOKEN", "")
|
||||
monkeypatch.setenv("HASS_URL", "http://default-profile:8123")
|
||||
monkeypatch.setenv("HASS_TOKEN", "default-profile-token")
|
||||
secret_scope.set_multiplex_active(True)
|
||||
@@ -350,7 +348,8 @@ class TestCheckAvailable:
|
||||
|
||||
class TestGetHeaders:
|
||||
def test_bearer_token_format(self, monkeypatch):
|
||||
monkeypatch.setattr("tools.homeassistant_tool._HASS_TOKEN", "my-secret-token")
|
||||
monkeypatch.setattr("tools.homeassistant_tool._get_config",
|
||||
lambda: ("http://ha.local:8123", "my-secret-token"))
|
||||
headers = _get_headers()
|
||||
assert headers["Authorization"] == "Bearer my-secret-token"
|
||||
assert headers["Content-Type"] == "application/json"
|
||||
|
||||
@@ -16,16 +16,12 @@ from tools.registry import registry, tool_error
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Kept for backward compatibility (e.g. test monkeypatching); prefer _get_config().
|
||||
_HASS_URL: str = ""
|
||||
_HASS_TOKEN: str = ""
|
||||
|
||||
|
||||
def _get_config():
|
||||
"""Return the active profile's Home Assistant URL and token."""
|
||||
return (
|
||||
(_HASS_URL or get_secret("HASS_URL", "http://homeassistant.local:8123") or "").rstrip("/"),
|
||||
_HASS_TOKEN or get_secret("HASS_TOKEN", "") or "")
|
||||
(get_secret("HASS_URL", "http://homeassistant.local:8123") or "").rstrip("/"),
|
||||
get_secret("HASS_TOKEN", "") or "")
|
||||
|
||||
|
||||
# Valid HA entity_id (e.g. "light.living_room", "sensor.temperature_1").
|
||||
|
||||
Reference in New Issue
Block a user