From 097fae0348b17656cab8734ad3b49f5256ad6973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elliot=20Morales=20Sol=C3=A9?= Date: Tue, 21 Sep 2021 07:51:17 +0200 Subject: [PATCH] Correct Alexa scene activation (#56469) Co-authored-by: Paulus Schoutsen Co-authored-by: Paulus Schoutsen --- homeassistant/components/alexa/handlers.py | 5 +++-- homeassistant/components/alexa/state_report.py | 4 ++-- tests/components/alexa/__init__.py | 5 ++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/alexa/handlers.py b/homeassistant/components/alexa/handlers.py index fc587128e82..192da955e3f 100644 --- a/homeassistant/components/alexa/handlers.py +++ b/homeassistant/components/alexa/handlers.py @@ -54,6 +54,7 @@ from .const import ( API_THERMOSTAT_MODES, API_THERMOSTAT_MODES_CUSTOM, API_THERMOSTAT_PRESETS, + DATE_FORMAT, Cause, Inputs, ) @@ -318,7 +319,7 @@ async def async_api_activate(hass, config, directive, context): payload = { "cause": {"type": Cause.VOICE_INTERACTION}, - "timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z", + "timestamp": dt_util.utcnow().strftime(DATE_FORMAT), } return directive.response( @@ -342,7 +343,7 @@ async def async_api_deactivate(hass, config, directive, context): payload = { "cause": {"type": Cause.VOICE_INTERACTION}, - "timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z", + "timestamp": dt_util.utcnow().strftime(DATE_FORMAT), } return directive.response( diff --git a/homeassistant/components/alexa/state_report.py b/homeassistant/components/alexa/state_report.py index 712a08ac6b9..7a23706b4ba 100644 --- a/homeassistant/components/alexa/state_report.py +++ b/homeassistant/components/alexa/state_report.py @@ -13,7 +13,7 @@ from homeassistant.core import HomeAssistant, State, callback from homeassistant.helpers.significant_change import create_checker import homeassistant.util.dt as dt_util -from .const import API_CHANGE, DOMAIN, Cause +from .const import API_CHANGE, DATE_FORMAT, DOMAIN, Cause from .entities import ENTITY_ADAPTERS, AlexaEntity, generate_alexa_id from .messages import AlexaResponse @@ -252,7 +252,7 @@ async def async_send_doorbell_event_message(hass, config, alexa_entity): namespace="Alexa.DoorbellEventSource", payload={ "cause": {"type": Cause.PHYSICAL_INTERACTION}, - "timestamp": f"{dt_util.utcnow().replace(tzinfo=None).isoformat()}Z", + "timestamp": dt_util.utcnow().strftime(DATE_FORMAT), }, ) diff --git a/tests/components/alexa/__init__.py b/tests/components/alexa/__init__.py index bc007fefb84..5b1706c15e2 100644 --- a/tests/components/alexa/__init__.py +++ b/tests/components/alexa/__init__.py @@ -1,4 +1,5 @@ """Tests for the Alexa integration.""" +import re from uuid import uuid4 from homeassistant.components.alexa import config, smart_home @@ -162,7 +163,8 @@ async def assert_scene_controller_works( ) assert response["event"]["payload"]["cause"]["type"] == "VOICE_INTERACTION" assert "timestamp" in response["event"]["payload"] - + pattern = r"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.0Z" + assert re.search(pattern, response["event"]["payload"]["timestamp"]) if deactivate_service: await assert_request_calls_service( "Alexa.SceneController", @@ -175,6 +177,7 @@ async def assert_scene_controller_works( cause_type = response["event"]["payload"]["cause"]["type"] assert cause_type == "VOICE_INTERACTION" assert "timestamp" in response["event"]["payload"] + assert re.search(pattern, response["event"]["payload"]["timestamp"]) async def reported_properties(hass, endpoint):