71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
"""Test the Mythic Beasts DNS component."""
|
|
import logging
|
|
import asynctest
|
|
|
|
from homeassistant.setup import async_setup_component
|
|
from homeassistant.components import mythicbeastsdns
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
async def mbddns_update_mock(domain, password, host, ttl=60, session=None):
|
|
"""Mock out mythic beasts updater."""
|
|
if password == 'incorrect':
|
|
_LOGGER.error("Updating Mythic Beasts failed: Not authenticated")
|
|
return False
|
|
if host[0] == '$':
|
|
_LOGGER.error("Updating Mythic Beasts failed: Invalid Character")
|
|
return False
|
|
return True
|
|
|
|
|
|
@asynctest.mock.patch('mbddns.update', new=mbddns_update_mock)
|
|
async def test_update(hass):
|
|
"""Run with correct values and check true is returned."""
|
|
result = await async_setup_component(
|
|
hass,
|
|
mythicbeastsdns.DOMAIN,
|
|
{
|
|
mythicbeastsdns.DOMAIN: {
|
|
'domain': 'example.org',
|
|
'password': 'correct',
|
|
'host': 'hass'
|
|
}
|
|
}
|
|
)
|
|
assert result
|
|
|
|
|
|
@asynctest.mock.patch('mbddns.update', new=mbddns_update_mock)
|
|
async def test_update_fails_if_wrong_token(hass):
|
|
"""Run with incorrect token and check false is returned."""
|
|
result = await async_setup_component(
|
|
hass,
|
|
mythicbeastsdns.DOMAIN,
|
|
{
|
|
mythicbeastsdns.DOMAIN: {
|
|
'domain': 'example.org',
|
|
'password': 'incorrect',
|
|
'host': 'hass'
|
|
}
|
|
}
|
|
)
|
|
assert not result
|
|
|
|
|
|
@asynctest.mock.patch('mbddns.update', new=mbddns_update_mock)
|
|
async def test_update_fails_if_invalid_host(hass):
|
|
"""Run with invalid characters in host and check false is returned."""
|
|
result = await async_setup_component(
|
|
hass,
|
|
mythicbeastsdns.DOMAIN,
|
|
{
|
|
mythicbeastsdns.DOMAIN: {
|
|
'domain': 'example.org',
|
|
'password': 'correct',
|
|
'host': '$hass'
|
|
}
|
|
}
|
|
)
|
|
assert not result
|