From a49dbb9718f8e07dad9cd92c3b0382a1ba908ae6 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 14 Oct 2019 17:19:05 -0400 Subject: [PATCH] Update Unlock directive for Alexa LockController (#27653) * Update the Alexa.LockController Unlock directive to include the lockState property in the context of the response. * Added Test for Alexa.LockController Unlock directive to include the lockState property in the context of the response. --- homeassistant/components/alexa/handlers.py | 8 ++++++-- tests/components/alexa/test_smart_home.py | 10 +++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/alexa/handlers.py b/homeassistant/components/alexa/handlers.py index bd07b71ca29..139defe8313 100644 --- a/homeassistant/components/alexa/handlers.py +++ b/homeassistant/components/alexa/handlers.py @@ -412,7 +412,6 @@ async def async_api_lock(hass, config, directive, context): return response -# Not supported by Alexa yet @HANDLERS.register(("Alexa.LockController", "Unlock")) async def async_api_unlock(hass, config, directive, context): """Process an unlock request.""" @@ -425,7 +424,12 @@ async def async_api_unlock(hass, config, directive, context): context=context, ) - return directive.response() + response = directive.response() + response.add_context_property( + {"namespace": "Alexa.LockController", "name": "lockState", "value": "UNLOCKED"} + ) + + return response @HANDLERS.register(("Alexa.Speaker", "SetVolume")) diff --git a/tests/components/alexa/test_smart_home.py b/tests/components/alexa/test_smart_home.py index 78bdd8e0908..186cb850e34 100644 --- a/tests/components/alexa/test_smart_home.py +++ b/tests/components/alexa/test_smart_home.py @@ -403,12 +403,20 @@ async def test_lock(hass): "Alexa.LockController", "Lock", "lock#test", "lock.lock", hass ) - # always return LOCKED for now properties = msg["context"]["properties"][0] assert properties["name"] == "lockState" assert properties["namespace"] == "Alexa.LockController" assert properties["value"] == "LOCKED" + _, msg = await assert_request_calls_service( + "Alexa.LockController", "Unlock", "lock#test", "lock.unlock", hass + ) + + properties = msg["context"]["properties"][0] + assert properties["name"] == "lockState" + assert properties["namespace"] == "Alexa.LockController" + assert properties["value"] == "UNLOCKED" + async def test_media_player(hass): """Test media player discovery.""" -- GitLab