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