"""Облачный discovery против мок-облака (aiohttp), без сети Ayla.""" from __future__ import annotations import pytest from pyfglair.provision import ProvisionError, discover, esphome_secrets from conftest import DSN, KEY_ID async def test_discover_ok(cloud): devices = await discover( "user@example.com", "secret", "eu", base_url=cloud["url"] ) assert len(devices) == 1 dev = devices[0] assert dev.name == "Bedroom" assert dev.model == "AP-WC1E" assert dev.dsn == DSN assert dev.lan_ip == "192.168.1.50" assert dev.lanip_key == "TW9ja0tleQ==" assert dev.lanip_key_id == KEY_ID assert dev.temp_type == "C" assert dev.mac == "aabbccddeeff" cfg = dev.as_config() assert cfg["ip_address"] == "192.168.1.50" assert cfg["app"] == "fglair-eu" secrets = esphome_secrets(devices) assert 'bedroom_dsn: "AC000W00MOCK0001"' in secrets assert "bedroom_lanip_key_id: 64201" in secrets async def test_discover_bad_login(cloud): cloud["fail_login"] = True with pytest.raises(ProvisionError, match="Ошибка входа"): await discover("user@example.com", "bad", "eu", base_url=cloud["url"]) async def test_discover_no_key(cloud): cloud["no_key"] = True with pytest.raises(ProvisionError, match="ключ"): await discover("user@example.com", "secret", "eu", base_url=cloud["url"]) async def test_discover_unknown_region(): with pytest.raises(ProvisionError, match="регион"): await discover("user@example.com", "secret", "xx")