Migrate mqtt to use async_update_entry to alter config entries (#110407)
This commit is contained in:
parent
4a98f3f223
commit
04dccc7ec6
2 changed files with 146 additions and 100 deletions
|
@ -458,10 +458,13 @@ async def test_option_flow(
|
||||||
mqtt_mock = await mqtt_mock_entry()
|
mqtt_mock = await mqtt_mock_entry()
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mqtt_mock.async_connect.reset_mock()
|
mqtt_mock.async_connect.reset_mock()
|
||||||
|
|
||||||
|
@ -586,14 +589,18 @@ async def test_bad_certificate(
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
# Add at least one advanced option to get the full form
|
# Add at least one advanced option to get the full form
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
mqtt.CONF_CLIENT_ID: "custom1234",
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
mqtt.CONF_KEEPALIVE: 60,
|
mqtt.CONF_PORT: 1234,
|
||||||
mqtt.CONF_TLS_INSECURE: False,
|
mqtt.CONF_CLIENT_ID: "custom1234",
|
||||||
mqtt.CONF_PROTOCOL: "3.1.1",
|
mqtt.CONF_KEEPALIVE: 60,
|
||||||
}
|
mqtt.CONF_TLS_INSECURE: False,
|
||||||
|
mqtt.CONF_PROTOCOL: "3.1.1",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
mqtt_mock.async_connect.reset_mock()
|
mqtt_mock.async_connect.reset_mock()
|
||||||
|
|
||||||
|
@ -659,11 +666,14 @@ async def test_keepalive_validation(
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
# Add at least one advanced option to get the full form
|
# Add at least one advanced option to get the full form
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
mqtt.CONF_CLIENT_ID: "custom1234",
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
}
|
mqtt.CONF_PORT: 1234,
|
||||||
|
mqtt.CONF_CLIENT_ID: "custom1234",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mqtt_mock.async_connect.reset_mock()
|
mqtt_mock.async_connect.reset_mock()
|
||||||
|
|
||||||
|
@ -695,10 +705,15 @@ async def test_disable_birth_will(
|
||||||
mqtt_mock = await mqtt_mock_entry()
|
mqtt_mock = await mqtt_mock_entry()
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
mock_reload_after_entry_update.reset_mock()
|
||||||
|
|
||||||
mqtt_mock.async_connect.reset_mock()
|
mqtt_mock.async_connect.reset_mock()
|
||||||
|
|
||||||
|
@ -766,13 +781,17 @@ async def test_invalid_discovery_prefix(
|
||||||
mqtt_mock = await mqtt_mock_entry()
|
mqtt_mock = await mqtt_mock_entry()
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
mqtt.CONF_DISCOVERY: True,
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
mqtt.CONF_DISCOVERY_PREFIX: "homeassistant",
|
mqtt.CONF_PORT: 1234,
|
||||||
}
|
mqtt.CONF_DISCOVERY: True,
|
||||||
|
mqtt.CONF_DISCOVERY_PREFIX: "homeassistant",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
mock_reload_after_entry_update.reset_mock()
|
||||||
mqtt_mock.async_connect.reset_mock()
|
mqtt_mock.async_connect.reset_mock()
|
||||||
|
|
||||||
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
||||||
|
@ -844,25 +863,28 @@ async def test_option_flow_default_suggested_values(
|
||||||
"""Test config flow options has default/suggested values."""
|
"""Test config flow options has default/suggested values."""
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
mqtt.CONF_USERNAME: "user",
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
mqtt.CONF_PASSWORD: "pass",
|
mqtt.CONF_PORT: 1234,
|
||||||
mqtt.CONF_DISCOVERY: True,
|
mqtt.CONF_USERNAME: "user",
|
||||||
mqtt.CONF_BIRTH_MESSAGE: {
|
mqtt.CONF_PASSWORD: "pass",
|
||||||
mqtt.ATTR_TOPIC: "ha_state/online",
|
mqtt.CONF_DISCOVERY: True,
|
||||||
mqtt.ATTR_PAYLOAD: "online",
|
mqtt.CONF_BIRTH_MESSAGE: {
|
||||||
mqtt.ATTR_QOS: 1,
|
mqtt.ATTR_TOPIC: "ha_state/online",
|
||||||
mqtt.ATTR_RETAIN: True,
|
mqtt.ATTR_PAYLOAD: "online",
|
||||||
|
mqtt.ATTR_QOS: 1,
|
||||||
|
mqtt.ATTR_RETAIN: True,
|
||||||
|
},
|
||||||
|
mqtt.CONF_WILL_MESSAGE: {
|
||||||
|
mqtt.ATTR_TOPIC: "ha_state/offline",
|
||||||
|
mqtt.ATTR_PAYLOAD: "offline",
|
||||||
|
mqtt.ATTR_QOS: 2,
|
||||||
|
mqtt.ATTR_RETAIN: False,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mqtt.CONF_WILL_MESSAGE: {
|
)
|
||||||
mqtt.ATTR_TOPIC: "ha_state/offline",
|
|
||||||
mqtt.ATTR_PAYLOAD: "offline",
|
|
||||||
mqtt.ATTR_QOS: 2,
|
|
||||||
mqtt.ATTR_RETAIN: False,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
# Test default/suggested values from config
|
# Test default/suggested values from config
|
||||||
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
||||||
|
@ -1010,10 +1032,13 @@ async def test_skipping_advanced_options(
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
# Initiate with a basic setup
|
# Initiate with a basic setup
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mqtt_mock.async_connect.reset_mock()
|
mqtt_mock.async_connect.reset_mock()
|
||||||
|
|
||||||
|
@ -1036,10 +1061,13 @@ async def test_options_user_connection_fails(
|
||||||
"""Test if connection cannot be made."""
|
"""Test if connection cannot be made."""
|
||||||
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
||||||
assert result["type"] == "form"
|
assert result["type"] == "form"
|
||||||
|
|
||||||
|
@ -1067,10 +1095,13 @@ async def test_options_bad_birth_message_fails(
|
||||||
"""Test bad birth message."""
|
"""Test bad birth message."""
|
||||||
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
|
|
||||||
|
@ -1105,10 +1136,13 @@ async def test_options_bad_will_message_fails(
|
||||||
"""Test bad will message."""
|
"""Test bad will message."""
|
||||||
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
|
|
||||||
|
@ -1150,33 +1184,37 @@ async def test_try_connection_with_advanced_parameters(
|
||||||
"""Test config flow with advanced parameters from config."""
|
"""Test config flow with advanced parameters from config."""
|
||||||
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
mqtt.CONF_USERNAME: "user",
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
mqtt.CONF_PASSWORD: "pass",
|
mqtt.CONF_PORT: 1234,
|
||||||
mqtt.CONF_TRANSPORT: "websockets",
|
mqtt.CONF_USERNAME: "user",
|
||||||
mqtt.CONF_CERTIFICATE: "auto",
|
mqtt.CONF_PASSWORD: "pass",
|
||||||
mqtt.CONF_TLS_INSECURE: True,
|
mqtt.CONF_TRANSPORT: "websockets",
|
||||||
mqtt.CONF_CLIENT_CERT: MOCK_CLIENT_CERT.decode(encoding="utf-8)"),
|
mqtt.CONF_CERTIFICATE: "auto",
|
||||||
mqtt.CONF_CLIENT_KEY: MOCK_CLIENT_KEY.decode(encoding="utf-8"),
|
mqtt.CONF_TLS_INSECURE: True,
|
||||||
mqtt.CONF_WS_PATH: "/path/",
|
mqtt.CONF_CLIENT_CERT: MOCK_CLIENT_CERT.decode(encoding="utf-8)"),
|
||||||
mqtt.CONF_WS_HEADERS: {"h1": "v1", "h2": "v2"},
|
mqtt.CONF_CLIENT_KEY: MOCK_CLIENT_KEY.decode(encoding="utf-8"),
|
||||||
mqtt.CONF_KEEPALIVE: 30,
|
mqtt.CONF_WS_PATH: "/path/",
|
||||||
mqtt.CONF_DISCOVERY: True,
|
mqtt.CONF_WS_HEADERS: {"h1": "v1", "h2": "v2"},
|
||||||
mqtt.CONF_BIRTH_MESSAGE: {
|
mqtt.CONF_KEEPALIVE: 30,
|
||||||
mqtt.ATTR_TOPIC: "ha_state/online",
|
mqtt.CONF_DISCOVERY: True,
|
||||||
mqtt.ATTR_PAYLOAD: "online",
|
mqtt.CONF_BIRTH_MESSAGE: {
|
||||||
mqtt.ATTR_QOS: 1,
|
mqtt.ATTR_TOPIC: "ha_state/online",
|
||||||
mqtt.ATTR_RETAIN: True,
|
mqtt.ATTR_PAYLOAD: "online",
|
||||||
|
mqtt.ATTR_QOS: 1,
|
||||||
|
mqtt.ATTR_RETAIN: True,
|
||||||
|
},
|
||||||
|
mqtt.CONF_WILL_MESSAGE: {
|
||||||
|
mqtt.ATTR_TOPIC: "ha_state/offline",
|
||||||
|
mqtt.ATTR_PAYLOAD: "offline",
|
||||||
|
mqtt.ATTR_QOS: 2,
|
||||||
|
mqtt.ATTR_RETAIN: False,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mqtt.CONF_WILL_MESSAGE: {
|
)
|
||||||
mqtt.ATTR_TOPIC: "ha_state/offline",
|
|
||||||
mqtt.ATTR_PAYLOAD: "offline",
|
|
||||||
mqtt.ATTR_QOS: 2,
|
|
||||||
mqtt.ATTR_RETAIN: False,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
# Test default/suggested values from config
|
# Test default/suggested values from config
|
||||||
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
result = await hass.config_entries.options.async_init(config_entry.entry_id)
|
||||||
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
||||||
|
@ -1265,10 +1303,13 @@ async def test_setup_with_advanced_settings(
|
||||||
|
|
||||||
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
}
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
|
mqtt.CONF_PORT: 1234,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
|
|
||||||
|
@ -1422,13 +1463,16 @@ async def test_change_websockets_transport_to_tcp(
|
||||||
"""Test option flow setup with websockets transport settings."""
|
"""Test option flow setup with websockets transport settings."""
|
||||||
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
config_entry = MockConfigEntry(domain=mqtt.DOMAIN)
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
config_entry.data = {
|
hass.config_entries.async_update_entry(
|
||||||
mqtt.CONF_BROKER: "test-broker",
|
config_entry,
|
||||||
mqtt.CONF_PORT: 1234,
|
data={
|
||||||
mqtt.CONF_TRANSPORT: "websockets",
|
mqtt.CONF_BROKER: "test-broker",
|
||||||
mqtt.CONF_WS_HEADERS: {"header_1": "custom_header1"},
|
mqtt.CONF_PORT: 1234,
|
||||||
mqtt.CONF_WS_PATH: "/some_path",
|
mqtt.CONF_TRANSPORT: "websockets",
|
||||||
}
|
mqtt.CONF_WS_HEADERS: {"header_1": "custom_header1"},
|
||||||
|
mqtt.CONF_WS_PATH: "/some_path",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
mock_try_connection.return_value = True
|
mock_try_connection.return_value = True
|
||||||
|
|
||||||
|
|
|
@ -2638,7 +2638,9 @@ async def test_default_entry_setting_are_applied(
|
||||||
|
|
||||||
# Config entry data is incomplete but valid according the schema
|
# Config entry data is incomplete but valid according the schema
|
||||||
entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
entry.data = {"broker": "test-broker", "port": 1234}
|
hass.config_entries.async_update_entry(
|
||||||
|
entry, data={"broker": "test-broker", "port": 1234}
|
||||||
|
)
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue