Beispiel #1
0
async def test_discovery_already_configured_update_csharp(hass, controller):
    """Already configured and csharp changes."""
    entry = MockConfigEntry(
        domain="homekit_controller",
        data={
            "AccessoryIP": "4.4.4.4",
            "AccessoryPort": 66,
            "AccessoryPairingID": "AA:BB:CC:DD:EE:FF",
        },
        unique_id="aa:bb:cc:dd:ee:ff",
    )
    entry.add_to_hass(hass)

    connection_mock = AsyncMock()
    connection_mock.pairing.connect.reconnect_soon = AsyncMock()
    connection_mock.async_refresh_entity_map = AsyncMock()
    hass.data[KNOWN_DEVICES] = {"AA:BB:CC:DD:EE:FF": connection_mock}

    device = setup_mock_accessory(controller)
    discovery_info = get_device_discovery_info(device)

    # Set device as already paired
    discovery_info.properties["sf"] = 0x00
    discovery_info.properties["c#"] = 99999
    discovery_info.properties[
        zeroconf.ATTR_PROPERTIES_ID] = "AA:BB:CC:DD:EE:FF"

    # Device is discovered
    result = await hass.config_entries.flow.async_init(
        "homekit_controller",
        context={"source": config_entries.SOURCE_ZEROCONF},
        data=discovery_info,
    )
    assert result["type"] == "abort"
    assert result["reason"] == "already_configured"
    await hass.async_block_till_done()

    assert entry.data["AccessoryIP"] == discovery_info.host
    assert entry.data["AccessoryPort"] == discovery_info.port
    assert connection_mock.async_refresh_entity_map.await_count == 1