De-duplicate MQTT config_flow code (#79369)
* De-duplicate config_flow code * De duplicate code birth and will
This commit is contained in:
parent
9a81b65815
commit
aee82e2b3b
4 changed files with 195 additions and 121 deletions
|
@ -188,15 +188,12 @@ async def test_manual_config_set(
|
|||
# Check we tried the connection, with precedence for config entry settings
|
||||
mock_try_connection.assert_called_once_with(
|
||||
{
|
||||
"broker": "bla",
|
||||
"broker": "127.0.0.1",
|
||||
"protocol": "3.1.1",
|
||||
"keepalive": 60,
|
||||
"discovery_prefix": "homeassistant",
|
||||
"protocol": "3.1.1",
|
||||
"port": 1883,
|
||||
},
|
||||
"127.0.0.1",
|
||||
1883,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
# Check config entry got setup
|
||||
assert len(mock_finish_setup.mock_calls) == 1
|
||||
|
@ -291,6 +288,44 @@ async def test_hassio_confirm(hass, mock_try_connection_success, mock_finish_set
|
|||
assert len(mock_finish_setup.mock_calls) == 1
|
||||
|
||||
|
||||
async def test_hassio_cannot_connect(
|
||||
hass, mock_try_connection_time_out, mock_finish_setup
|
||||
):
|
||||
"""Test a config flow is aborted when a connection was not successful."""
|
||||
mock_try_connection.return_value = True
|
||||
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
"mqtt",
|
||||
data=HassioServiceInfo(
|
||||
config={
|
||||
"addon": "Mock Addon",
|
||||
"host": "mock-broker",
|
||||
"port": 1883,
|
||||
"username": "mock-user",
|
||||
"password": "mock-pass",
|
||||
"protocol": "3.1.1", # Set by the addon's discovery, ignored by HA
|
||||
"ssl": False, # Set by the addon's discovery, ignored by HA
|
||||
}
|
||||
),
|
||||
context={"source": config_entries.SOURCE_HASSIO},
|
||||
)
|
||||
assert result["type"] == "form"
|
||||
assert result["step_id"] == "hassio_confirm"
|
||||
assert result["description_placeholders"] == {"addon": "Mock Addon"}
|
||||
|
||||
mock_try_connection_time_out.reset_mock()
|
||||
result = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"], {"discovery": True}
|
||||
)
|
||||
|
||||
assert result["type"] == "form"
|
||||
assert result["errors"]["base"] == "cannot_connect"
|
||||
# Check we tried the connection
|
||||
assert len(mock_try_connection_time_out.mock_calls)
|
||||
# Check config entry got setup
|
||||
assert len(mock_finish_setup.mock_calls) == 0
|
||||
|
||||
|
||||
@patch(
|
||||
"homeassistant.config.async_hass_config_yaml",
|
||||
AsyncMock(return_value={}),
|
||||
|
@ -299,7 +334,7 @@ async def test_option_flow(
|
|||
hass,
|
||||
mqtt_mock_entry_no_yaml_config,
|
||||
mock_try_connection,
|
||||
mock_reload_after_entry_update,
|
||||
caplog,
|
||||
):
|
||||
"""Test config flow options."""
|
||||
mqtt_mock = await mqtt_mock_entry_no_yaml_config()
|
||||
|
@ -372,7 +407,10 @@ async def test_option_flow(
|
|||
await hass.async_block_till_done()
|
||||
assert config_entry.title == "another-broker"
|
||||
# assert that the entry was reloaded with the new config
|
||||
assert mock_reload_after_entry_update.call_count == 1
|
||||
assert (
|
||||
"<Event call_service[L]: domain=mqtt, service=reload, service_data=>"
|
||||
in caplog.text
|
||||
)
|
||||
|
||||
|
||||
async def test_disable_birth_will(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue