Implement story 1.5: provisioning execution tile download cache validation wifi kill
Add tiles.py, airspace.py, wifi.join_home_wifi, portal /submit route, and rewire provision.py main loop; all tasks and quality gates pass (56 tests, ruff clean). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
|
||||
from planemapper.provisioning import ProvisioningError
|
||||
from planemapper.provisioning.portal import app
|
||||
|
||||
|
||||
@@ -69,3 +70,54 @@ def test_find_location_error(client) -> None:
|
||||
resp = client.post("/find-location", data={"location": "ZZZZ", "radius": "100"})
|
||||
assert resp.status_code == 200
|
||||
assert "ICAO code not found" in resp.data.decode()
|
||||
|
||||
|
||||
def test_submit_success(client) -> None:
|
||||
with (
|
||||
patch("planemapper.provisioning.portal.wifi.join_home_wifi"),
|
||||
patch("planemapper.provisioning.portal.tiles.download_and_composite"),
|
||||
patch("planemapper.provisioning.portal.airspace.download"),
|
||||
patch("planemapper.provisioning.portal.tiles.validate_cache"),
|
||||
patch("planemapper.provisioning.portal.config.write"),
|
||||
patch("planemapper.provisioning.portal.wifi.kill_wifi"),
|
||||
):
|
||||
resp = client.post(
|
||||
"/submit",
|
||||
data={
|
||||
"confirmed_lat": "51.5",
|
||||
"confirmed_lon": "-0.1",
|
||||
"confirmed_name": "London",
|
||||
"radius": "100",
|
||||
"wifi_ssid": "HomeNet",
|
||||
"wifi_password": "secret",
|
||||
},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
assert b"Setup complete" in resp.data
|
||||
|
||||
|
||||
def test_submit_validation_failure(client) -> None:
|
||||
with (
|
||||
patch("planemapper.provisioning.portal.wifi.join_home_wifi"),
|
||||
patch("planemapper.provisioning.portal.tiles.download_and_composite"),
|
||||
patch("planemapper.provisioning.portal.airspace.download"),
|
||||
patch(
|
||||
"planemapper.provisioning.portal.tiles.validate_cache",
|
||||
side_effect=ProvisioningError("bad png"),
|
||||
),
|
||||
patch("planemapper.provisioning.portal.config.write"),
|
||||
patch("planemapper.provisioning.portal.wifi.kill_wifi"),
|
||||
):
|
||||
resp = client.post(
|
||||
"/submit",
|
||||
data={
|
||||
"confirmed_lat": "51.5",
|
||||
"confirmed_lon": "-0.1",
|
||||
"confirmed_name": "London",
|
||||
"radius": "100",
|
||||
"wifi_ssid": "HomeNet",
|
||||
"wifi_password": "secret",
|
||||
},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
assert b"Try again" in resp.data
|
||||
|
||||
Reference in New Issue
Block a user