Skip to content

Commit f1be802

Browse files
committed
Fix addon_stats and broken tests
1 parent 8e185ce commit f1be802

4 files changed

Lines changed: 21 additions & 54 deletions

File tree

homeassistant/components/hassio/coordinator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ async def _async_update_data(self) -> dict[str, Any]:
364364
new_data[DATA_KEY_ADDONS] = {
365365
slug: {
366366
**addon,
367-
**addons_stats.get(slug, {}),
367+
**(addons_stats.get(slug) or {}),
368368
ATTR_REPOSITORY: repositories.get(
369369
repo_slug := addon.get(ATTR_REPOSITORY, ""), repo_slug
370370
),

tests/components/hassio/test_sensor.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ def mock_all(
4848
supervisor_stats: AsyncMock,
4949
) -> None:
5050
"""Mock all setup requests."""
51-
_install_default_mocks(aioclient_mock)
51+
aioclient_mock.post("http://127.0.0.1/homeassistant/options", json={"result": "ok"})
52+
aioclient_mock.post("http://127.0.0.1/supervisor/options", json={"result": "ok"})
53+
aioclient_mock.get(
54+
"http://127.0.0.1/ingress/panels", json={"result": "ok", "data": {"panels": {}}}
55+
)
5256

5357
host_info.return_value = replace(host_info.return_value, agent_version="1.0.0")
5458
addons_list.return_value[1] = replace(
@@ -82,15 +86,6 @@ def mock_addon_info(slug: str):
8286
addon_installed.side_effect = mock_addon_info
8387

8488

85-
def _install_default_mocks(aioclient_mock: AiohttpClientMocker):
86-
"""Install default mocks."""
87-
aioclient_mock.post("http://127.0.0.1/homeassistant/options", json={"result": "ok"})
88-
aioclient_mock.post("http://127.0.0.1/supervisor/options", json={"result": "ok"})
89-
aioclient_mock.get(
90-
"http://127.0.0.1/ingress/panels", json={"result": "ok", "data": {"panels": {}}}
91-
)
92-
93-
9489
@pytest.mark.parametrize(
9590
("store_addons", "store_repositories"), [(MOCK_STORE_ADDONS, MOCK_REPOSITORIES)]
9691
)
@@ -187,20 +182,14 @@ async def test_stats_addon_sensor(
187182
# Verify that the entity is disabled by default.
188183
assert hass.states.get(entity_id) is None
189184

190-
aioclient_mock.clear_requests()
191-
_install_default_mocks(aioclient_mock)
192185
addon_stats.side_effect = SupervisorError
193-
194186
freezer.tick(HASSIO_UPDATE_INTERVAL + timedelta(seconds=1))
195187
async_fire_time_changed(hass)
196188
await hass.async_block_till_done(wait_background_tasks=True)
197189

198190
assert "Could not fetch stats" not in caplog.text
199191

200-
aioclient_mock.clear_requests()
201-
_install_default_mocks(aioclient_mock)
202192
addon_stats.side_effect = None
203-
204193
freezer.tick(HASSIO_UPDATE_INTERVAL + timedelta(seconds=1))
205194
async_fire_time_changed(hass)
206195
await hass.async_block_till_done(wait_background_tasks=True)
@@ -230,10 +219,7 @@ async def test_stats_addon_sensor(
230219
state = hass.states.get(entity_id)
231220
assert state.state == expected
232221

233-
aioclient_mock.clear_requests()
234-
_install_default_mocks(aioclient_mock)
235222
addon_stats.side_effect = SupervisorError
236-
237223
freezer.tick(HASSIO_UPDATE_INTERVAL + timedelta(seconds=1))
238224
async_fire_time_changed(hass)
239225
await hass.async_block_till_done(wait_background_tasks=True)

tests/components/http/test_ban.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,14 +245,13 @@ async def test_ip_ban_manager_never_started(
245245
)
246246
),
247247
)
248+
@pytest.mark.usefixtures("hassio_env", "resolution_info", "os_info")
248249
async def test_access_from_supervisor_ip(
249250
remote_addr,
250251
bans,
251252
status,
252253
hass: HomeAssistant,
253254
aiohttp_client: ClientSessionGenerator,
254-
hassio_env,
255-
resolution_info: AsyncMock,
256255
) -> None:
257256
"""Test accessing to server from supervisor IP."""
258257
app = web.Application()

tests/components/onboarding/test_views.py

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import asyncio
44
from collections.abc import AsyncGenerator
5+
from dataclasses import replace
56
from http import HTTPStatus
67
import os
78
from typing import Any
@@ -54,15 +55,14 @@ async def rpi_fixture(
5455

5556
@pytest.fixture(name="no_rpi")
5657
async def no_rpi_fixture(
57-
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, mock_supervisor
58+
hass: HomeAssistant,
59+
aioclient_mock: AiohttpClientMocker,
60+
homeassistant_info: AsyncMock,
61+
mock_supervisor,
5862
) -> None:
5963
"""Mock core info with rpi."""
60-
aioclient_mock.get(
61-
"http://127.0.0.1/core/info",
62-
json={
63-
"result": "ok",
64-
"data": {"version_latest": "1.0.0", "machine": "odroid-n2"},
65-
},
64+
homeassistant_info.return_value = replace(
65+
homeassistant_info.return_value, machine="odroid-n2"
6666
)
6767
assert await async_setup_component(hass, "hassio", {})
6868
await hass.async_block_till_done()
@@ -74,38 +74,20 @@ async def mock_supervisor_fixture(
7474
store_info: AsyncMock,
7575
supervisor_is_connected: AsyncMock,
7676
resolution_info: AsyncMock,
77+
supervisor_root_info: AsyncMock,
78+
host_info: AsyncMock,
79+
supervisor_info: AsyncMock,
80+
network_info: AsyncMock,
81+
os_info: AsyncMock,
7782
) -> AsyncGenerator[None]:
7883
"""Mock supervisor."""
7984
aioclient_mock.post("http://127.0.0.1/homeassistant/options", json={"result": "ok"})
8085
aioclient_mock.post("http://127.0.0.1/supervisor/options", json={"result": "ok"})
81-
aioclient_mock.get(
82-
"http://127.0.0.1/network/info",
83-
json={
84-
"result": "ok",
85-
"data": {
86-
"host_internet": True,
87-
"supervisor_internet": True,
88-
},
89-
},
86+
supervisor_info.return_value = replace(
87+
supervisor_info.return_value, diagnostics=True
9088
)
9189
with (
9290
patch.dict(os.environ, {"SUPERVISOR": "127.0.0.1"}),
93-
patch(
94-
"homeassistant.components.hassio.HassIO.get_info",
95-
return_value={},
96-
),
97-
patch(
98-
"homeassistant.components.hassio.HassIO.get_host_info",
99-
return_value={},
100-
),
101-
patch(
102-
"homeassistant.components.hassio.HassIO.get_supervisor_info",
103-
return_value={"diagnostics": True},
104-
),
105-
patch(
106-
"homeassistant.components.hassio.HassIO.get_os_info",
107-
return_value={},
108-
),
10991
patch(
11092
"homeassistant.components.hassio.HassIO.get_ingress_panels",
11193
return_value={"panels": {}},

0 commit comments

Comments
 (0)