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.""" """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 from awesomeversion import AwesomeVersion
import pytest import pytest
@ -130,3 +131,36 @@ async def test_addon_shutdown_error(
assert check_exception_chain( assert check_exception_chain(
capture_exception.call_args[0][0], (AddonsError, DockerNotFound) 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.""" """Install local_ssh add-on."""
store = coresys.addons.store[TEST_ADDON_SLUG] store = coresys.addons.store[TEST_ADDON_SLUG]
coresys.addons.data.install(store) coresys.addons.data.install(store)
coresys.addons.data._data = coresys.addons.data._schema(coresys.addons.data._data)
addon = Addon(coresys, store.slug) addon = Addon(coresys, store.slug)
coresys.addons.local[addon.slug] = addon coresys.addons.local[addon.slug] = addon
yield addon yield addon