core/tests/components/test_wake_on_lan.py

48 lines
1.5 KiB
Python
Raw Normal View History

"""Tests for Wake On LAN component."""
import asyncio
from unittest import mock
import pytest
from homeassistant.setup import async_setup_component
from homeassistant.components.wake_on_lan import (
DOMAIN, SERVICE_SEND_MAGIC_PACKET)
@pytest.fixture
def mock_wakeonlan():
"""Mock mock_wakeonlan."""
module = mock.MagicMock()
with mock.patch.dict('sys.modules', {
'wakeonlan': module,
}):
yield module
@asyncio.coroutine
def test_send_magic_packet(hass, caplog, mock_wakeonlan):
"""Test of send magic packet service call."""
mac = "aa:bb:cc:dd:ee:ff"
bc_ip = "192.168.255.255"
yield from async_setup_component(hass, DOMAIN, {})
yield from hass.services.async_call(
DOMAIN, SERVICE_SEND_MAGIC_PACKET,
{"mac": mac, "broadcast_address": bc_ip}, blocking=True)
assert len(mock_wakeonlan.mock_calls) == 1
assert mock_wakeonlan.mock_calls[-1][1][0] == mac
assert mock_wakeonlan.mock_calls[-1][2]['ip_address'] == bc_ip
yield from hass.services.async_call(
DOMAIN, SERVICE_SEND_MAGIC_PACKET,
{"broadcast_address": bc_ip}, blocking=True)
assert 'ERROR' in caplog.text
assert len(mock_wakeonlan.mock_calls) == 1
yield from hass.services.async_call(
DOMAIN, SERVICE_SEND_MAGIC_PACKET, {"mac": mac}, blocking=True)
assert len(mock_wakeonlan.mock_calls) == 2
assert mock_wakeonlan.mock_calls[-1][1][0] == mac
assert not mock_wakeonlan.mock_calls[-1][2]