mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-19 06:23:44 +02:00
Make bssid optional in payload for backwards compatibility, add tests,
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
WIFI_SSID=
|
||||
WIFI_BSSID=
|
||||
WIFI_PASS=
|
||||
SWITCH_MODE_REBOOT_TIME=5
|
||||
WIFI_CONNECTION_TIMEOUT=5
|
||||
|
||||
@@ -37,7 +37,8 @@ def pytest_addoption(parser):
|
||||
|
||||
def pytest_configure(config):
|
||||
config.addinivalue_line(
|
||||
"markers", "has_capability(caps): skip if the board does not have the capability"
|
||||
"markers",
|
||||
"has_capability(caps): skip if the board does not have the capability",
|
||||
)
|
||||
config.addinivalue_line(
|
||||
"markers", "lacks_capability(caps): skip if the board DOES have the capability"
|
||||
@@ -60,7 +61,7 @@ def check_capability_marker(request, board_lacks_capability):
|
||||
"has_capability marker must be provided with a capability to check"
|
||||
)
|
||||
|
||||
for capability in marker.args:
|
||||
for capability in marker.args:
|
||||
if board_lacks_capability(capability):
|
||||
pytest.skip(f"Board does not have capability {capability}")
|
||||
|
||||
@@ -72,7 +73,7 @@ def check_lacks_capability_marker(request, board_lacks_capability):
|
||||
raise ValueError(
|
||||
"lacks_capability marker must be provided with a capability to check"
|
||||
)
|
||||
|
||||
|
||||
for capability in lacks_capability_marker.args:
|
||||
if not board_lacks_capability(capability):
|
||||
pytest.skip(
|
||||
@@ -119,6 +120,7 @@ def board_connection(request):
|
||||
@dataclass
|
||||
class TestConfig:
|
||||
WIFI_SSID: str
|
||||
WIFI_BSSID: str
|
||||
WIFI_PASS: str
|
||||
SWITCH_MODE_REBOOT_TIME: int
|
||||
WIFI_CONNECTION_TIMEOUT: int
|
||||
@@ -127,12 +129,14 @@ class TestConfig:
|
||||
def __init__(
|
||||
self,
|
||||
WIFI_SSID: str,
|
||||
WIFI_BSSID: str,
|
||||
WIFI_PASS: str,
|
||||
SWITCH_MODE_REBOOT_TIME: int,
|
||||
WIFI_CONNECTION_TIMEOUT: int,
|
||||
INVALID_WIFI_CONNECTION_TIMEOUT: int,
|
||||
):
|
||||
self.WIFI_SSID = WIFI_SSID
|
||||
self.WIFI_BSSID = WIFI_BSSID
|
||||
self.WIFI_PASS = WIFI_PASS
|
||||
self.SWITCH_MODE_REBOOT_TIME = int(SWITCH_MODE_REBOOT_TIME)
|
||||
self.WIFI_CONNECTION_TIMEOUT = int(WIFI_CONNECTION_TIMEOUT)
|
||||
|
||||
@@ -255,8 +255,39 @@ def test_reset_config(get_openiris_device, config):
|
||||
|
||||
|
||||
@pytest.mark.has_capability("wireless")
|
||||
def test_set_wifi(get_openiris_device, ensure_board_in_mode, config):
|
||||
# since we want to test actual connection to the network, let's reset the device and reboot it
|
||||
def test_set_wifi_no_bssid_in_payload(
|
||||
get_openiris_device, ensure_board_in_mode, config
|
||||
):
|
||||
device = get_openiris_device()
|
||||
reset_command = device.send_command("reset_config", {"section": "all"})
|
||||
assert not has_command_failed(reset_command)
|
||||
|
||||
with DetectPortChange():
|
||||
device.send_command("restart_device")
|
||||
time.sleep(config.SWITCH_MODE_REBOOT_TIME)
|
||||
|
||||
device = ensure_board_in_mode("wifi", device)
|
||||
params = {
|
||||
"name": "main",
|
||||
"ssid": config.WIFI_SSID,
|
||||
"password": config.WIFI_PASS,
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
}
|
||||
set_wifi_result = device.send_command("set_wifi", params)
|
||||
assert not has_command_failed(set_wifi_result)
|
||||
|
||||
connect_wifi_result = device.send_command("connect_wifi")
|
||||
assert not -has_command_failed(connect_wifi_result)
|
||||
time.sleep(config.WIFI_CONNECTION_TIMEOUT) # and let it try to for some time
|
||||
|
||||
wifi_status_command = device.send_command("get_wifi_status")
|
||||
assert not has_command_failed(wifi_status_command)
|
||||
assert wifi_status_command["results"][0]["result"]["data"]["status"] == "connected"
|
||||
|
||||
|
||||
@pytest.mark.has_capability("wireless")
|
||||
def test_set_wifi_no_bssid(get_openiris_device, ensure_board_in_mode, config):
|
||||
device = get_openiris_device()
|
||||
reset_command = device.send_command("reset_config", {"section": "all"})
|
||||
assert not has_command_failed(reset_command)
|
||||
@@ -270,6 +301,7 @@ def test_set_wifi(get_openiris_device, ensure_board_in_mode, config):
|
||||
params = {
|
||||
"name": "main",
|
||||
"ssid": config.WIFI_SSID,
|
||||
"bssid": "",
|
||||
"password": config.WIFI_PASS,
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
@@ -287,12 +319,76 @@ def test_set_wifi(get_openiris_device, ensure_board_in_mode, config):
|
||||
assert wifi_status_command["results"][0]["result"]["data"]["status"] == "connected"
|
||||
|
||||
|
||||
@pytest.mark.has_capability("wireless")
|
||||
def test_set_wifi_correct_bssid(get_openiris_device, ensure_board_in_mode, config):
|
||||
device = get_openiris_device()
|
||||
reset_command = device.send_command("reset_config", {"section": "all"})
|
||||
assert not has_command_failed(reset_command)
|
||||
|
||||
with DetectPortChange():
|
||||
device.send_command("restart_device")
|
||||
time.sleep(config.SWITCH_MODE_REBOOT_TIME)
|
||||
|
||||
device = ensure_board_in_mode("wifi", device)
|
||||
params = {
|
||||
"name": "main",
|
||||
"ssid": config.WIFI_SSID,
|
||||
"bssid": config.WIFI_BSSID,
|
||||
"password": config.WIFI_PASS,
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
}
|
||||
set_wifi_result = device.send_command("set_wifi", params)
|
||||
assert not has_command_failed(set_wifi_result)
|
||||
|
||||
connect_wifi_result = device.send_command("connect_wifi")
|
||||
assert not -has_command_failed(connect_wifi_result)
|
||||
time.sleep(config.WIFI_CONNECTION_TIMEOUT)
|
||||
|
||||
wifi_status_command = device.send_command("get_wifi_status")
|
||||
assert not has_command_failed(wifi_status_command)
|
||||
assert wifi_status_command["results"][0]["result"]["data"]["status"] == "connected"
|
||||
|
||||
|
||||
@pytest.mark.has_capability("wireless")
|
||||
def test_set_wifi_nonexitant_bssid(get_openiris_device, ensure_board_in_mode, config):
|
||||
device = get_openiris_device()
|
||||
reset_command = device.send_command("reset_config", {"section": "all"})
|
||||
assert not has_command_failed(reset_command)
|
||||
|
||||
with DetectPortChange():
|
||||
device.send_command("restart_device")
|
||||
time.sleep(config.SWITCH_MODE_REBOOT_TIME)
|
||||
|
||||
device = ensure_board_in_mode("wifi", device)
|
||||
params = {
|
||||
"name": "main",
|
||||
"ssid": config.WIFI_SSID,
|
||||
"bssid": "99:99:99:99:99:99", # a completely wrong BSSID, just to test that we fail to connect
|
||||
"password": config.WIFI_PASS,
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
}
|
||||
|
||||
set_wifi_result = device.send_command("set_wifi", params)
|
||||
assert not has_command_failed(set_wifi_result)
|
||||
|
||||
connect_wifi_result = device.send_command("connect_wifi")
|
||||
assert not -has_command_failed(connect_wifi_result)
|
||||
time.sleep(config.WIFI_CONNECTION_TIMEOUT)
|
||||
|
||||
wifi_status_command = device.send_command("get_wifi_status")
|
||||
assert not has_command_failed(wifi_status_command)
|
||||
assert wifi_status_command["results"][0]["result"]["data"]["status"] == "error"
|
||||
|
||||
|
||||
@pytest.mark.has_capability("wireless")
|
||||
def test_set_wifi_invalid_network(get_openiris_device, ensure_board_in_mode, config):
|
||||
device = ensure_board_in_mode("wifi", get_openiris_device())
|
||||
params = {
|
||||
"name": "main",
|
||||
"ssid": "PleaseDontBeARealNetwork",
|
||||
"bssid": "",
|
||||
"password": "AndThePasswordIsFake",
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
@@ -351,6 +447,7 @@ def test_update_main_wifi_network(ensure_board_in_mode, get_openiris_device, con
|
||||
params1 = {
|
||||
"name": "main",
|
||||
"ssid": "Nada",
|
||||
"bssid": "",
|
||||
"password": "Nuuh",
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
@@ -377,6 +474,7 @@ def test_set_wifi_add_another_network(ensure_board_in_mode, get_openiris_device)
|
||||
params = {
|
||||
"name": "anotherNetwork",
|
||||
"ssid": "PleaseDontBeARealNetwork",
|
||||
"bssid": "",
|
||||
"password": "AndThePassowrdIsFake",
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
@@ -475,6 +573,7 @@ def test_update_wifi_command(ensure_board_in_mode, get_openiris_device, payload)
|
||||
params = {
|
||||
"name": "anotherNetwork",
|
||||
"ssid": "PleaseDontBeARealNetwork",
|
||||
"bssid": "",
|
||||
"password": "AndThePasswordIsFake",
|
||||
"channel": 0,
|
||||
"power": 0,
|
||||
|
||||
Reference in New Issue
Block a user