Update Sonarr config flow to standardize ports (#127625)

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
This commit is contained in:
Richard Cox 2024-11-10 12:23:23 -07:00 committed by GitHub
parent 88c227681d
commit 0468e7e7a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 38 additions and 3 deletions

View File

@ -93,6 +93,13 @@ class SonarrConfigFlow(ConfigFlow, domain=DOMAIN):
errors = {} errors = {}
if user_input is not None: if user_input is not None:
# aiopyarr defaults to the service port if one isn't given
# this is counter to standard practice where http = 80
# and https = 443.
if CONF_URL in user_input:
url = yarl.URL(user_input[CONF_URL])
user_input[CONF_URL] = f"{url.scheme}://{url.host}:{url.port}{url.path}"
if self.source == SOURCE_REAUTH: if self.source == SOURCE_REAUTH:
user_input = {**self._get_reauth_entry().data, **user_input} user_input = {**self._get_reauth_entry().data, **user_input}

View File

@ -5,6 +5,6 @@ from homeassistant.const import CONF_API_KEY, CONF_URL
MOCK_REAUTH_INPUT = {CONF_API_KEY: "test-api-key-reauth"} MOCK_REAUTH_INPUT = {CONF_API_KEY: "test-api-key-reauth"}
MOCK_USER_INPUT = { MOCK_USER_INPUT = {
CONF_URL: "http://192.168.1.189:8989", CONF_URL: "http://192.168.1.189:8989/",
CONF_API_KEY: "MOCK_API_KEY", CONF_API_KEY: "MOCK_API_KEY",
} }

View File

@ -50,6 +50,34 @@ async def test_cannot_connect(
assert result["errors"] == {"base": "cannot_connect"} assert result["errors"] == {"base": "cannot_connect"}
async def test_url_rewrite(
hass: HomeAssistant,
mock_sonarr_config_flow: MagicMock,
mock_setup_entry: None,
) -> None:
"""Test the full manual user flow from start to finish."""
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={CONF_SOURCE: SOURCE_USER},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "user"
user_input = MOCK_USER_INPUT.copy()
user_input[CONF_URL] = "https://192.168.1.189"
result = await hass.config_entries.flow.async_configure(
result["flow_id"],
user_input=user_input,
)
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == "192.168.1.189"
assert result["data"]
assert result["data"][CONF_URL] == "https://192.168.1.189:443/"
async def test_invalid_auth( async def test_invalid_auth(
hass: HomeAssistant, mock_sonarr_config_flow: MagicMock hass: HomeAssistant, mock_sonarr_config_flow: MagicMock
) -> None: ) -> None:
@ -145,7 +173,7 @@ async def test_full_user_flow_implementation(
assert result["title"] == "192.168.1.189" assert result["title"] == "192.168.1.189"
assert result["data"] assert result["data"]
assert result["data"][CONF_URL] == "http://192.168.1.189:8989" assert result["data"][CONF_URL] == "http://192.168.1.189:8989/"
async def test_full_user_flow_advanced_options( async def test_full_user_flow_advanced_options(
@ -175,7 +203,7 @@ async def test_full_user_flow_advanced_options(
assert result["title"] == "192.168.1.189" assert result["title"] == "192.168.1.189"
assert result["data"] assert result["data"]
assert result["data"][CONF_URL] == "http://192.168.1.189:8989" assert result["data"][CONF_URL] == "http://192.168.1.189:8989/"
assert result["data"][CONF_VERIFY_SSL] assert result["data"][CONF_VERIFY_SSL]