Test discovery message deleted on uninstall (#4174)

* Test discovery message deleted on uninstall

* Test data is correct since core looks at it
This commit is contained in:
Mike Degatano 2023-03-08 05:08:55 -05:00 committed by GitHub
parent ab83c51910
commit 3887fcfc93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 1 deletions

View File

@ -1,6 +1,7 @@
"""Test addon manager."""
from unittest.mock import Mock, PropertyMock, patch
import asyncio
from unittest.mock import AsyncMock, MagicMock, Mock, PropertyMock, patch
from awesomeversion import AwesomeVersion
import pytest
@ -130,3 +131,36 @@ async def test_addon_shutdown_error(
assert check_exception_chain(
capture_exception.call_args[0][0], (AddonsError, DockerNotFound)
)
async def test_addon_uninstall_removes_discovery(
coresys: CoreSys, install_addon_ssh: Addon
):
"""Test discovery messages removed when addon uninstalled."""
assert coresys.discovery.list_messages == []
message = coresys.discovery.send(
install_addon_ssh, "mqtt", {"host": "localhost", "port": 1883}
)
assert message.addon == TEST_ADDON_SLUG
assert message.service == "mqtt"
assert coresys.discovery.list_messages == [message]
coresys.homeassistant.api.ensure_access_token = AsyncMock()
coresys.websession.delete = MagicMock()
await coresys.addons.uninstall(TEST_ADDON_SLUG)
await asyncio.sleep(0)
coresys.websession.delete.assert_called_once()
assert (
coresys.websession.delete.call_args.args[0]
== f"http://172.30.32.1:8123/api/hassio_push/discovery/{message.uuid}"
)
assert coresys.websession.delete.call_args.kwargs["json"] == {
"addon": TEST_ADDON_SLUG,
"service": "mqtt",
"uuid": message.uuid,
}
assert coresys.addons.installed == []
assert coresys.discovery.list_messages == []

View File

@ -525,6 +525,8 @@ def install_addon_ssh(coresys: CoreSys, repository):
"""Install local_ssh add-on."""
store = coresys.addons.store[TEST_ADDON_SLUG]
coresys.addons.data.install(store)
coresys.addons.data._data = coresys.addons.data._schema(coresys.addons.data._data)
addon = Addon(coresys, store.slug)
coresys.addons.local[addon.slug] = addon
yield addon