diff --git a/homeassistant/components/cloud/iot.py b/homeassistant/components/cloud/iot.py index 8aa9c41236745f..d725cb309bcc63 100644 --- a/homeassistant/components/cloud/iot.py +++ b/homeassistant/components/cloud/iot.py @@ -12,9 +12,10 @@ from homeassistant.components.google_assistant import smart_home as ga from homeassistant.core import callback from homeassistant.util.decorator import Registry -from homeassistant.util.aiohttp import MockRequest, serialize_response +from homeassistant.util.aiohttp import MockRequest from homeassistant.helpers.aiohttp_client import async_get_clientsession from . import auth_api +from . import utils from .const import MESSAGE_EXPIRATION, MESSAGE_AUTH_FAIL HANDLERS = Registry() @@ -360,7 +361,7 @@ async def async_handle_webhook(hass, cloud, payload): response = await hass.components.webhook.async_handle_webhook( found['webhook_id'], request) - response_dict = serialize_response(response) + response_dict = utils.aiohttp_serialize_response(response) body = response_dict.get('body') return { diff --git a/homeassistant/components/cloud/utils.py b/homeassistant/components/cloud/utils.py new file mode 100644 index 00000000000000..da1d3809989e75 --- /dev/null +++ b/homeassistant/components/cloud/utils.py @@ -0,0 +1,13 @@ +"""Helper functions for cloud components.""" +from typing import Any, Dict + +from aiohttp import web + + +def aiohttp_serialize_response(response: web.Response) -> Dict[str, Any]: + """Serialize an aiohttp response to a dictionary.""" + return { + 'status': response.status, + 'body': response.text, + 'headers': dict(response.headers), + } diff --git a/homeassistant/util/aiohttp.py b/homeassistant/util/aiohttp.py index e1809eae4924d5..9ad59e6b3c715e 100644 --- a/homeassistant/util/aiohttp.py +++ b/homeassistant/util/aiohttp.py @@ -42,12 +42,3 @@ async def post(self) -> 'MultiDict[str]': async def text(self) -> str: """Return the body as text.""" return self._text - - -def serialize_response(response: web.Response) -> Dict[str, Any]: - """Serialize an aiohttp response to a dictionary.""" - return { - 'status': response.status, - 'body': response.text, - 'headers': dict(response.headers), - } diff --git a/tests/components/cloud/test_aiohttp.py b/tests/components/cloud/test_aiohttp.py new file mode 100644 index 00000000000000..24de4ce6214c8a --- /dev/null +++ b/tests/components/cloud/test_aiohttp.py @@ -0,0 +1,24 @@ +"""Test aiohttp request helper.""" +from aiohttp import web + +from homeassistant.components.cloud import utils + + +def test_serialize_text(): + """Test serializing a text response.""" + response = web.Response(status=201, text='Hello') + assert utils.aiohttp_serialize_response(response) == { + 'status': 201, + 'body': 'Hello', + 'headers': {'Content-Type': 'text/plain; charset=utf-8'}, + } + + +def test_serialize_json(): + """Test serializing a JSON response.""" + response = web.json_response({"how": "what"}) + assert utils.aiohttp_serialize_response(response) == { + 'status': 200, + 'body': '{"how": "what"}', + 'headers': {'Content-Type': 'application/json; charset=utf-8'}, + } diff --git a/tests/util/test_aiohttp.py b/tests/util/test_aiohttp.py index 2ebd9d0955259f..1594570d7a2dc3 100644 --- a/tests/util/test_aiohttp.py +++ b/tests/util/test_aiohttp.py @@ -32,23 +32,3 @@ async def test_request_post_query(): assert request.query == { 'get': 'true' } - - -def test_serialize_text(): - """Test serializing a text response.""" - response = web.Response(status=201, text='Hello') - assert aiohttp.serialize_response(response) == { - 'status': 201, - 'body': 'Hello', - 'headers': {'Content-Type': 'text/plain; charset=utf-8'}, - } - - -def test_serialize_json(): - """Test serializing a JSON response.""" - response = web.json_response({"how": "what"}) - assert aiohttp.serialize_response(response) == { - 'status': 200, - 'body': '{"how": "what"}', - 'headers': {'Content-Type': 'application/json; charset=utf-8'}, - }