563b0d4665
Implement wifi.py (start_ap/stop_ap/kill_wifi with subprocess and ProvisioningError), portal.py (Flask captive portal with Android/iOS/Windows probe redirects and 404 catch-all), updated provision.py provisioning loop, and full test suite (38 passing). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
import pytest
|
|
|
|
from planemapper.provisioning.portal import app
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
app.config["TESTING"] = True
|
|
with app.test_client() as c:
|
|
yield c
|
|
|
|
|
|
def test_index_returns_200(client) -> None:
|
|
resp = client.get("/")
|
|
assert resp.status_code == 200
|
|
|
|
|
|
def test_index_contains_form_fields(client) -> None:
|
|
resp = client.get("/")
|
|
data = resp.data.decode()
|
|
assert 'name="location"' in data
|
|
assert 'name="radius"' in data
|
|
assert 'name="wifi_ssid"' in data
|
|
assert 'name="wifi_password"' in data
|
|
assert "Find location" in data
|
|
assert "Set up device" in data
|
|
|
|
|
|
def test_generate_204_redirects_to_index(client) -> None:
|
|
resp = client.get("/generate_204")
|
|
assert resp.status_code in (301, 302)
|
|
assert resp.headers["Location"].endswith("/")
|
|
|
|
|
|
def test_hotspot_detect_redirects_to_index(client) -> None:
|
|
resp = client.get("/hotspot-detect.html")
|
|
assert resp.status_code in (301, 302)
|
|
|
|
|
|
def test_ncsi_redirects_to_index(client) -> None:
|
|
resp = client.get("/ncsi.txt")
|
|
assert resp.status_code in (301, 302)
|
|
|
|
|
|
def test_unknown_route_redirects_to_index(client) -> None:
|
|
resp = client.get("/some/random/path")
|
|
assert resp.status_code in (301, 302)
|