Cleanup tests for AWS (#64943)

This commit is contained in:
Simone Chemelli
2022-01-26 10:34:33 +01:00
committed by GitHub
parent d56ab16556
commit 4f8831f8f6

View File

@@ -1,7 +1,6 @@
"""Tests for the aws component config and setup.""" """Tests for the aws component config and setup."""
from unittest.mock import AsyncMock, MagicMock, patch as async_patch from unittest.mock import AsyncMock, MagicMock, patch as async_patch
from homeassistant.components import aws
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
@@ -36,22 +35,23 @@ class MockAioSession:
async def test_empty_config(hass): async def test_empty_config(hass):
"""Test a default config will be create for empty config.""" """Test a default config will be create for empty config."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession): mock_session = MockAioSession()
with async_patch(
"homeassistant.components.aws.AioSession", return_value=mock_session
):
await async_setup_component(hass, "aws", {"aws": {}}) await async_setup_component(hass, "aws", {"aws": {}})
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
session = sessions.get("default")
assert isinstance(session, MockAioSession)
# we don't validate auto-created default profile # we don't validate auto-created default profile
session.get_user.assert_not_awaited() mock_session.get_user.assert_not_awaited()
async def test_empty_credential(hass): async def test_empty_credential(hass):
"""Test a default config will be create for empty credential section.""" """Test a default config will be create for empty credential section."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession): mock_session = MockAioSession()
with async_patch(
"homeassistant.components.aws.AioSession", return_value=mock_session
):
await async_setup_component( await async_setup_component(
hass, hass,
"aws", "aws",
@@ -69,22 +69,20 @@ async def test_empty_credential(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
session = sessions.get("default")
assert isinstance(session, MockAioSession)
assert hass.services.has_service("notify", "new_lambda_test") is True assert hass.services.has_service("notify", "new_lambda_test") is True
await hass.services.async_call( await hass.services.async_call(
"notify", "new_lambda_test", {"message": "test", "target": "ARN"}, blocking=True "notify", "new_lambda_test", {"message": "test", "target": "ARN"}, blocking=True
) )
session.invoke.assert_awaited_once() mock_session.invoke.assert_awaited_once()
async def test_profile_credential(hass): async def test_profile_credential(hass):
"""Test credentials with profile name.""" """Test credentials with profile name."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession): mock_session = MockAioSession()
with async_patch(
"homeassistant.components.aws.AioSession", return_value=mock_session
):
await async_setup_component( await async_setup_component(
hass, hass,
"aws", "aws",
@@ -104,12 +102,6 @@ async def test_profile_credential(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
session = sessions.get("test")
assert isinstance(session, MockAioSession)
assert hass.services.has_service("notify", "sns_test") is True assert hass.services.has_service("notify", "sns_test") is True
await hass.services.async_call( await hass.services.async_call(
"notify", "notify",
@@ -117,12 +109,15 @@ async def test_profile_credential(hass):
{"title": "test", "message": "test", "target": "ARN"}, {"title": "test", "message": "test", "target": "ARN"},
blocking=True, blocking=True,
) )
session.publish.assert_awaited_once() mock_session.publish.assert_awaited_once()
async def test_access_key_credential(hass): async def test_access_key_credential(hass):
"""Test credentials with access key.""" """Test credentials with access key."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession): mock_session = MockAioSession()
with async_patch(
"homeassistant.components.aws.AioSession", return_value=mock_session
):
await async_setup_component( await async_setup_component(
hass, hass,
"aws", "aws",
@@ -149,12 +144,6 @@ async def test_access_key_credential(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 2
session = sessions.get("key")
assert isinstance(session, MockAioSession)
assert hass.services.has_service("notify", "sns_test") is True assert hass.services.has_service("notify", "sns_test") is True
await hass.services.async_call( await hass.services.async_call(
"notify", "notify",
@@ -162,15 +151,16 @@ async def test_access_key_credential(hass):
{"title": "test", "message": "test", "target": "ARN"}, {"title": "test", "message": "test", "target": "ARN"},
blocking=True, blocking=True,
) )
session.publish.assert_awaited_once() mock_session.publish.assert_awaited_once()
async def test_notify_credential(hass): async def test_notify_credential(hass):
"""Test notify service can use access key directly.""" """Test notify service can use access key directly."""
mock_session = MockAioSession()
with async_patch( with async_patch(
"homeassistant.components.aws.AioSession", new=MockAioSession "homeassistant.components.aws.AioSession", return_value=mock_session
), async_patch( ), async_patch(
"homeassistant.components.aws.notify.AioSession", new=MockAioSession "homeassistant.components.aws.notify.AioSession", return_value=mock_session
): ):
await async_setup_component( await async_setup_component(
hass, hass,
@@ -192,11 +182,6 @@ async def test_notify_credential(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
assert isinstance(sessions.get("default"), MockAioSession)
assert hass.services.has_service("notify", "sqs_test") is True assert hass.services.has_service("notify", "sqs_test") is True
await hass.services.async_call( await hass.services.async_call(
"notify", "sqs_test", {"message": "test", "target": "ARN"}, blocking=True "notify", "sqs_test", {"message": "test", "target": "ARN"}, blocking=True
@@ -205,10 +190,11 @@ async def test_notify_credential(hass):
async def test_notify_credential_profile(hass): async def test_notify_credential_profile(hass):
"""Test notify service can use profile directly.""" """Test notify service can use profile directly."""
mock_session = MockAioSession()
with async_patch( with async_patch(
"homeassistant.components.aws.AioSession", new=MockAioSession "homeassistant.components.aws.AioSession", return_value=mock_session
), async_patch( ), async_patch(
"homeassistant.components.aws.notify.AioSession", new=MockAioSession "homeassistant.components.aws.notify.AioSession", return_value=mock_session
): ):
await async_setup_component( await async_setup_component(
hass, hass,
@@ -228,11 +214,6 @@ async def test_notify_credential_profile(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
assert isinstance(sessions.get("default"), MockAioSession)
assert hass.services.has_service("notify", "sqs_test") is True assert hass.services.has_service("notify", "sqs_test") is True
await hass.services.async_call( await hass.services.async_call(
"notify", "sqs_test", {"message": "test", "target": "ARN"}, blocking=True "notify", "sqs_test", {"message": "test", "target": "ARN"}, blocking=True
@@ -241,7 +222,10 @@ async def test_notify_credential_profile(hass):
async def test_credential_skip_validate(hass): async def test_credential_skip_validate(hass):
"""Test credential can skip validate.""" """Test credential can skip validate."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession): mock_session = MockAioSession()
with async_patch(
"homeassistant.components.aws.AioSession", return_value=mock_session
):
await async_setup_component( await async_setup_component(
hass, hass,
"aws", "aws",
@@ -260,17 +244,15 @@ async def test_credential_skip_validate(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS] mock_session.get_user.assert_not_awaited()
assert sessions is not None
assert len(sessions) == 1
session = sessions.get("key")
assert isinstance(session, MockAioSession)
session.get_user.assert_not_awaited()
async def test_service_call_extra_data(hass): async def test_service_call_extra_data(hass):
"""Test service call extra data are parsed properly.""" """Test service call extra data are parsed properly."""
with async_patch("homeassistant.components.aws.AioSession", new=MockAioSession): mock_session = MockAioSession()
with async_patch(
"homeassistant.components.aws.AioSession", return_value=mock_session
):
await async_setup_component( await async_setup_component(
hass, hass,
"aws", "aws",
@@ -288,12 +270,6 @@ async def test_service_call_extra_data(hass):
) )
await hass.async_block_till_done() await hass.async_block_till_done()
sessions = hass.data[aws.DATA_SESSIONS]
assert sessions is not None
assert len(sessions) == 1
session = sessions.get("default")
assert isinstance(session, MockAioSession)
assert hass.services.has_service("notify", "sns_test") is True assert hass.services.has_service("notify", "sns_test") is True
await hass.services.async_call( await hass.services.async_call(
"notify", "notify",
@@ -305,8 +281,7 @@ async def test_service_call_extra_data(hass):
}, },
blocking=True, blocking=True,
) )
mock_session.publish.assert_called_once_with(
session.publish.assert_called_once_with(
TargetArn="ARN", TargetArn="ARN",
Message="test", Message="test",
Subject="Home Assistant", Subject="Home Assistant",