Bump hass-nabucasa from 0.111.2 to 1.0.0 and refactor related code (#150566)

This commit is contained in:
Joakim Sørensen
2025-08-15 11:35:52 +02:00
committed by GitHub
parent 58f8b3c401
commit 83ee380b17
10 changed files with 37 additions and 33 deletions

View File

@@ -7,7 +7,7 @@ from http import HTTPStatus
import logging
from typing import TYPE_CHECKING, Any
from hass_nabucasa import Cloud, cloud_api
from hass_nabucasa import Cloud
from hass_nabucasa.google_report_state import ErrorResponse
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
@@ -377,7 +377,7 @@ class CloudGoogleConfig(AbstractConfig):
return HTTPStatus.OK
async with self._sync_entities_lock:
resp = await cloud_api.async_google_actions_request_sync(self._cloud)
resp = await self._cloud.google_report_state.request_sync()
return resp.status
async def async_connect_agent_user(self, agent_user_id: str) -> None:

View File

@@ -13,6 +13,6 @@
"integration_type": "system",
"iot_class": "cloud_push",
"loggers": ["acme", "hass_nabucasa", "snitun"],
"requirements": ["hass-nabucasa==0.111.2"],
"requirements": ["hass-nabucasa==1.0.0"],
"single_config_entry": true
}

View File

@@ -35,7 +35,7 @@ fnv-hash-fast==1.5.0
go2rtc-client==0.2.1
ha-ffmpeg==3.2.2
habluetooth==5.0.1
hass-nabucasa==0.111.2
hass-nabucasa==1.0.0
hassil==3.1.0
home-assistant-bluetooth==1.13.1
home-assistant-frontend==20250811.0

View File

@@ -47,7 +47,7 @@ dependencies = [
"fnv-hash-fast==1.5.0",
# hass-nabucasa is imported by helpers which don't depend on the cloud
# integration
"hass-nabucasa==0.111.2",
"hass-nabucasa==1.0.0",
# When bumping httpx, please check the version pins of
# httpcore, anyio, and h11 in gen_requirements_all
"httpx==0.28.1",

2
requirements.txt generated
View File

@@ -22,7 +22,7 @@ certifi>=2021.5.30
ciso8601==2.3.2
cronsim==2.6
fnv-hash-fast==1.5.0
hass-nabucasa==0.111.2
hass-nabucasa==1.0.0
httpx==0.28.1
home-assistant-bluetooth==1.13.1
ifaddr==0.2.0

2
requirements_all.txt generated
View File

@@ -1133,7 +1133,7 @@ habiticalib==0.4.2
habluetooth==5.0.1
# homeassistant.components.cloud
hass-nabucasa==0.111.2
hass-nabucasa==1.0.0
# homeassistant.components.splunk
hass-splunk==0.1.1

View File

@@ -994,7 +994,7 @@ habiticalib==0.4.2
habluetooth==5.0.1
# homeassistant.components.cloud
hass-nabucasa==0.111.2
hass-nabucasa==1.0.0
# homeassistant.components.assist_satellite
# homeassistant.components.conversation

View File

@@ -55,7 +55,10 @@ async def cloud_fixture() -> AsyncGenerator[MagicMock]:
# Attributes set in the constructor without parameters.
# We spec the mocks with the real classes
# and set constructor attributes or mock properties as needed.
mock_cloud.google_report_state = MagicMock(spec=GoogleReportState)
mock_cloud.google_report_state = MagicMock(
spec=GoogleReportState,
request_sync=AsyncMock(),
)
mock_cloud.cloudhooks = MagicMock(spec=Cloudhooks)
mock_cloud.remote = MagicMock(
spec=RemoteUI,

View File

@@ -1,7 +1,7 @@
"""Test the Cloud Google Config."""
from http import HTTPStatus
from unittest.mock import Mock, PropertyMock, patch
from unittest.mock import AsyncMock, Mock, PropertyMock, patch
from freezegun import freeze_time
import pytest
@@ -119,15 +119,13 @@ async def test_sync_entities(
assert len(mock_conf.async_get_agent_users()) == 1
with patch(
"hass_nabucasa.cloud_api.async_google_actions_request_sync",
return_value=Mock(status=HTTPStatus.NOT_FOUND),
) as mock_request_sync:
assert (
await mock_conf.async_sync_entities("mock-user-id") == HTTPStatus.NOT_FOUND
mock_conf._cloud.google_report_state.request_sync = AsyncMock(
return_value=Mock(status=HTTPStatus.NOT_FOUND)
)
assert await mock_conf.async_sync_entities("mock-user-id") == HTTPStatus.NOT_FOUND
assert len(mock_conf.async_get_agent_users()) == 0
assert len(mock_request_sync.mock_calls) == 1
assert len(mock_conf._cloud.google_report_state.request_sync.mock_calls) == 1
async def test_google_update_expose_trigger_sync(

View File

@@ -139,31 +139,34 @@ async def setup_cloud_fixture(hass: HomeAssistant, cloud: MagicMock) -> None:
async def test_google_actions_sync(
setup_cloud: None,
hass_client: ClientSessionGenerator,
cloud: MagicMock,
) -> None:
"""Test syncing Google Actions."""
cloud_client = await hass_client()
with patch(
"hass_nabucasa.cloud_api.async_google_actions_request_sync",
return_value=Mock(status=200),
) as mock_request_sync:
cloud.google_report_state.request_sync = AsyncMock(
return_value=Mock(status=HTTPStatus.OK)
)
req = await cloud_client.post("/api/cloud/google_actions/sync")
assert req.status == HTTPStatus.OK
assert mock_request_sync.call_count == 1
assert len(cloud.google_report_state.request_sync.mock_calls) == 1
async def test_google_actions_sync_fails(
setup_cloud: None,
hass_client: ClientSessionGenerator,
cloud: MagicMock,
) -> None:
"""Test syncing Google Actions gone bad."""
cloud_client = await hass_client()
with patch(
"hass_nabucasa.cloud_api.async_google_actions_request_sync",
return_value=Mock(status=HTTPStatus.INTERNAL_SERVER_ERROR),
) as mock_request_sync:
cloud.google_report_state.request_sync = AsyncMock(
return_value=Mock(status=HTTPStatus.INTERNAL_SERVER_ERROR)
)
req = await cloud_client.post("/api/cloud/google_actions/sync")
assert req.status == HTTPStatus.INTERNAL_SERVER_ERROR
assert mock_request_sync.call_count == 1
assert len(cloud.google_report_state.request_sync.mock_calls) == 1
@pytest.mark.parametrize(