"""Test config flow.""" from tests.common import MockConfigEntry async def test_user_setup(hass, mqtt_mock): """Test we can finish a config flow.""" result = await hass.config_entries.flow.async_init( "tasmota", context={"source": "user"} ) assert result["type"] == "form" result = await hass.config_entries.flow.async_configure(result["flow_id"], {}) assert result["type"] == "create_entry" assert result["result"].data == { "discovery_prefix": "tasmota/discovery", } async def test_user_setup_advanced(hass, mqtt_mock): """Test we can finish a config flow.""" result = await hass.config_entries.flow.async_init( "tasmota", context={"source": "user", "show_advanced_options": True} ) assert result["type"] == "form" result = await hass.config_entries.flow.async_configure( result["flow_id"], {"discovery_prefix": "test_tasmota/discovery"} ) assert result["type"] == "create_entry" assert result["result"].data == { "discovery_prefix": "test_tasmota/discovery", } async def test_user_setup_invalid_topic_prefix(hass, mqtt_mock): """Test if connection cannot be made.""" result = await hass.config_entries.flow.async_init( "tasmota", context={"source": "user", "show_advanced_options": True} ) assert result["type"] == "form" result = await hass.config_entries.flow.async_configure( result["flow_id"], {"discovery_prefix": "tasmota/config/#"} ) assert result["type"] == "form" assert result["errors"]["base"] == "invalid_discovery_topic" async def test_user_single_instance(hass, mqtt_mock): """Test we only allow a single config flow.""" MockConfigEntry(domain="tasmota").add_to_hass(hass) result = await hass.config_entries.flow.async_init( "tasmota", context={"source": "user"} ) assert result["type"] == "abort" assert result["reason"] == "single_instance_allowed"