feat: discover and add connected iOS devices
Tests / Test apps.device-host-agent.tests.test_mcp_token.test_load_or_create_concurrent_calls_do_not_corrupt failed
Tests / Test apps.device-host-agent.tests.test_mcp_token.test_load_or_create_concurrent_calls_do_not_corrupt failed
This commit is contained in:
@@ -314,6 +314,75 @@ def test_device_screenshot_requires_csrf_and_connected_device(tmp_path) -> None:
|
||||
assert offline.status_code == 503
|
||||
|
||||
|
||||
def test_device_connection_test_connects_checks_health_and_disconnects(
|
||||
tmp_path, monkeypatch
|
||||
) -> None:
|
||||
events: list[str] = []
|
||||
|
||||
class ProbeDriver:
|
||||
def connect(self) -> None:
|
||||
events.append("connect")
|
||||
|
||||
def health_check(self) -> None:
|
||||
events.append("health")
|
||||
|
||||
def disconnect(self) -> None:
|
||||
events.append("disconnect")
|
||||
|
||||
def factory(driver_type, connection_info):
|
||||
assert driver_type == "wda"
|
||||
assert connection_info["udid"] == "ios-udid"
|
||||
return ProbeDriver
|
||||
|
||||
monkeypatch.setattr("host_agent.web.app.build_driver_factory", factory)
|
||||
client, context = _build_client(tmp_path)
|
||||
csrf_token = _login(client)
|
||||
|
||||
response = client.post(
|
||||
"/api/devices/test-connection",
|
||||
json={"driver_type": "wda", "connection_info": {"udid": "ios-udid"}},
|
||||
headers={"X-CSRF-Token": csrf_token},
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"ok": True, "driver_type": "wda"}
|
||||
assert events == ["connect", "health", "disconnect"]
|
||||
assert context["config_store"].list() == []
|
||||
|
||||
|
||||
def test_ios_discovery_returns_connected_devices_and_unique_ports(
|
||||
tmp_path, monkeypatch
|
||||
) -> None:
|
||||
monkeypatch.setattr(
|
||||
"host_agent.web.app.discover_connected_ios_devices",
|
||||
lambda: [
|
||||
{
|
||||
"udid": "ios-new",
|
||||
"name": "New iPhone",
|
||||
"model": "iPhone 15",
|
||||
"os_version": "18.0",
|
||||
"transport": "wired",
|
||||
}
|
||||
],
|
||||
)
|
||||
client, context = _build_client(tmp_path)
|
||||
context["config_store"].add(
|
||||
device_id="existing",
|
||||
driver_type="wda",
|
||||
connection_info={"udid": "ios-old", "wda_local_port": 8100, "mjpegServerPort": 9100},
|
||||
)
|
||||
_login(client)
|
||||
|
||||
response = client.get("/api/devices/discover-ios")
|
||||
|
||||
assert response.status_code == 200
|
||||
device = response.json()["devices"][0]
|
||||
assert device["udid"] == "ios-new"
|
||||
assert device["configured"] is False
|
||||
assert device["suggested_wda_port"] == 8101
|
||||
assert device["suggested_mjpeg_port"] == 9101
|
||||
|
||||
|
||||
def test_remove_device_unregisters_from_manager(tmp_path) -> None:
|
||||
client, context = _build_client(tmp_path)
|
||||
csrf_token = _login(client)
|
||||
|
||||
Reference in New Issue
Block a user