48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
|
"""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]
|