Add local API support to Overkiz integration (Somfy TaHoma Developer Mode) (#71644)

* Add initial config flow implementation

* Add initial config flow implementation

* Add todos

* Bugfixes

* Add first zeroconf code

* Fixes for new firmware

* Bugfixes for local integration

* Delete local token

* Fix diagnostics

* Update translations and improve code

* Update translations and improve code

* Add local integration updates

* Add local integration updates

* Small tweaks

* Add comments

* Bugfix

* Small code improvements

* Small code improvements

* Small code improvements

* Small code improvements

* Small code improvements

* Small code improvements

* Bugfixes

* Small code improvements

* Small code improvements

* Change Config Flow (breaking change)

* Remove token when integration is unloaded

* Remove print

* Simplify

* Bugfixes

* Improve configflow

* Clean up unnecessary things

* Catch nosuchtoken exception

* Add migration for Config Flow

* Add version 2 migration

* Revert change in Config Flow

* Fix api type

* Update strings

* Improve migrate entry

* Implement changes

* add more comments

* Extend diagnostics

* Ruff fixes

* Clean up code

* Bugfixes

* Set gateway id

* Start writing tests

* Add first local test

* Code coverage to 64%

* Fixes

* Remove local token on remove entry

* Add debug logging + change manifest

* Add developer mode check

* Fix not_such_token issue

* Small text changes

* Bugfix

* Fix tests

* Address feedback

* DRY

* Test coverage to 77%

* Coverage to 78%

* Remove token removal by UUID

* Add better retry methods

* Clean up

* Remove old data

* 87% coverage

* 90% code coverage

* 100% code coverage

* Use patch.multiple

* Improve tests

* Apply pre-commit after rebase

* Fix breaking changes in ZeroconfServiceInfo

* Add verify_ssl

* Fix test import

* Fix tests

* Catch SSL verify failed

* Revert hub to server rename

* Move Config Flow version back to 1

* Add diagnostics tests

* Fix tests

* Fix strings

* Implement feedback

* Add debug logging for local connection errors

* Simplify Config Flow and fix tests

* Simplify Config Flow

* Fix verify_ssl

* Fix rebase mistake

* Address feedback

* Apply suggestions from code review

* Update tests/components/overkiz/test_config_flow.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
Mick Vleeshouwer
2023-11-22 16:53:17 +01:00
committed by GitHub
co-authored by Erik Montnemery
parent 01c49ba0e4
commit 75f237b587
13 changed files with 1130 additions and 233 deletions
+2 -2
View File
@@ -12,8 +12,8 @@ from tests.components.overkiz import load_setup_fixture
from tests.components.overkiz.test_config_flow import (
TEST_EMAIL,
TEST_GATEWAY_ID,
TEST_HUB,
TEST_PASSWORD,
TEST_SERVER,
)
MOCK_SETUP_RESPONSE = Mock(devices=[], gateways=[])
@@ -26,7 +26,7 @@ def mock_config_entry() -> MockConfigEntry:
title="Somfy TaHoma Switch",
domain=DOMAIN,
unique_id=TEST_GATEWAY_ID,
data={"username": TEST_EMAIL, "password": TEST_PASSWORD, "hub": TEST_HUB},
data={"username": TEST_EMAIL, "password": TEST_PASSWORD, "hub": TEST_SERVER},
)
@@ -1,6 +1,7 @@
# serializer version: 1
# name: test_device_diagnostics
dict({
'api_type': 'cloud',
'device': dict({
'controllable_name': 'rts:RollerShutterRTSComponent',
'device_url': 'rts://****-****-6867/16756006',
@@ -969,6 +970,7 @@
# ---
# name: test_diagnostics
dict({
'api_type': 'cloud',
'execution_history': list([
]),
'server': 'somfy_europe',
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -4,7 +4,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.setup import async_setup_component
from .test_config_flow import TEST_EMAIL, TEST_GATEWAY_ID, TEST_HUB, TEST_PASSWORD
from .test_config_flow import TEST_EMAIL, TEST_GATEWAY_ID, TEST_PASSWORD, TEST_SERVER
from tests.common import MockConfigEntry, mock_registry
@@ -23,7 +23,7 @@ async def test_unique_id_migration(hass: HomeAssistant) -> None:
mock_entry = MockConfigEntry(
domain=DOMAIN,
unique_id=TEST_GATEWAY_ID,
data={"username": TEST_EMAIL, "password": TEST_PASSWORD, "hub": TEST_HUB},
data={"username": TEST_EMAIL, "password": TEST_PASSWORD, "hub": TEST_SERVER},
)
mock_entry.add_to_hass(hass)