1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
import pytest
from aioasuswrt.asuswrt import AsusWrt
from .test_data import (
ARP_DATA,
ARP_DEVICES,
INTERFACES_COUNT,
LEASES_DATA,
LEASES_DEVICES,
LOADAVG_DATA,
NEIGH_DATA,
NEIGH_DEVICES,
NETDEV_DATA,
RX,
RX_DATA,
TEMP_DATA,
TEMP_DATA_2ND,
TX,
TX_DATA,
WAKE_DEVICES_AP,
WAKE_DEVICES_NO_IP,
WL_DATA,
WL_DEVICES,
)
def mock_run_cmd(mocker, values):
iter = 0
async def patch_func(command, *args, **kwargs):
nonlocal iter
print(f"Command: {command}\nwith args={args} and kwargs={kwargs}")
iter = iter + 1
try:
return values[iter - 1]
except IndexError:
print(
f"Not enough elements in return list! Iteration {iter} while list is {len(values)}."
)
assert False
mocker.patch(
"aioasuswrt.connection.SshConnection.async_run_command",
side_effect=patch_func,
)
@pytest.mark.asyncio
async def test_get_wl(event_loop, mocker):
"""Testing wl."""
mock_run_cmd(mocker, [WL_DATA])
scanner = AsusWrt(host="localhost", port=22)
devices = await scanner.async_get_wl()
assert WL_DEVICES == devices
@pytest.mark.asyncio
async def test_get_wl_empty(event_loop, mocker):
"""Testing wl."""
mock_run_cmd(mocker, [""])
scanner = AsusWrt(host="localhost", port=22)
devices = await scanner.async_get_wl()
assert {} == devices
@pytest.mark.asyncio
async def test_async_get_leases(event_loop, mocker):
"""Testing leases."""
mock_run_cmd(mocker, [LEASES_DATA])
scanner = AsusWrt(host="localhost", port=22)
data = await scanner.async_get_leases(NEIGH_DEVICES.copy())
assert LEASES_DEVICES == data
@pytest.mark.asyncio
async def test_get_arp(event_loop, mocker):
"""Testing arp."""
mock_run_cmd(mocker, [ARP_DATA])
scanner = AsusWrt(host="localhost", port=22)
data = await scanner.async_get_arp()
assert ARP_DEVICES == data
@pytest.mark.asyncio
async def test_get_neigh(event_loop, mocker):
"""Testing neigh."""
mock_run_cmd(mocker, [NEIGH_DATA])
scanner = AsusWrt(host="localhost", port=22)
data = await scanner.async_get_neigh(NEIGH_DEVICES.copy())
assert NEIGH_DEVICES == data
@pytest.mark.asyncio
async def test_get_connected_devices_ap(event_loop, mocker):
"""Test for get asuswrt_data in ap mode."""
# Note, unfortunately the order of data is important and should be the
# same as in the `async_get_connected_devices` function.
mock_run_cmd(mocker, [WL_DATA, ARP_DATA, NEIGH_DATA, LEASES_DATA])
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=True)
data = await scanner.async_get_connected_devices()
assert WAKE_DEVICES_AP == data
@pytest.mark.asyncio
async def test_get_connected_devices_no_ip(event_loop, mocker):
"""Test for get asuswrt_data and not requiring ip."""
mock_run_cmd(mocker, [WL_DATA, ARP_DATA, NEIGH_DATA, LEASES_DATA])
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=False)
data = await scanner.async_get_connected_devices()
assert WAKE_DEVICES_NO_IP == data
@pytest.mark.asyncio
async def test_get_packets_total(event_loop, mocker):
"""Test getting packet totals."""
mock_run_cmd(mocker, [TX_DATA, RX_DATA])
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=False)
data = await scanner.async_get_tx()
assert TX == data
data = await scanner.async_get_rx()
assert RX == data
@pytest.mark.asyncio
async def test_async_get_temperature(event_loop, mocker):
"""Test getting temperature."""
mock_run_cmd(mocker, TEMP_DATA)
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=False)
data = await scanner.async_get_temperature()
assert data == {"2.4GHz": 49.5, "5.0GHz": 54.5, "CPU": 77.0}
mock_run_cmd(mocker, TEMP_DATA_2ND)
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=False)
data = await scanner.async_get_temperature()
assert data == {"2.4GHz": 0.0, "5.0GHz": 0.0, "CPU": 81.3}
@pytest.mark.asyncio
async def test_async_get_loadavg(event_loop, mocker):
"""Test getting loadavg."""
mock_run_cmd(mocker, [LOADAVG_DATA])
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=False)
data = await scanner.async_get_loadavg()
assert data == [0.23, 0.5, 0.68]
@pytest.mark.asyncio
async def test_async_get_interfaces_counts(event_loop, mocker):
"""Test getting loadavg."""
mock_run_cmd(mocker, [NETDEV_DATA])
scanner = AsusWrt(host="localhost", port=22, mode="ap", require_ip=False)
data = await scanner.async_get_interfaces_counts()
assert data == INTERFACES_COUNT
# @pytest.mark.asyncio
# async def test_async_get_meminfo(event_loop, mocker):
# """Test getting meminfo."""
# mocker.patch(
# 'aioasuswrt.connection.SshConnection.async_run_command',
# side_effect=cmd_mock)
# scanner = AsusWrt(host="localhost", port=22, mode='ap', require_ip=False)
# data = await scanner.async_get_meminfo()
# assert data == []
|