Cleanup plex config flow tests (#88991)

This commit is contained in:
epenet 2023-03-05 05:38:26 +01:00 committed by GitHub
parent bfadc8453d
commit ec0223f326
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 115 additions and 126 deletions

View File

@ -39,6 +39,7 @@ from homeassistant.const import (
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType
from .const import DEFAULT_OPTIONS, MOCK_SERVERS, MOCK_TOKEN, PLEX_DIRECT_URL
from .helpers import trigger_plex_update, wait_for_debouncer
@ -55,7 +56,7 @@ async def test_bad_credentials(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch(
@ -66,14 +67,14 @@ async def test_bad_credentials(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
assert result["errors"][CONF_TOKEN] == "faulty_credentials"
@ -85,7 +86,7 @@ async def test_bad_hostname(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch(
@ -97,14 +98,14 @@ async def test_bad_hostname(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
assert result["errors"][CONF_HOST] == "not_found"
@ -116,7 +117,7 @@ async def test_unknown_exception(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexapi.myplex.MyPlexAccount", side_effect=Exception), patch(
@ -125,13 +126,13 @@ async def test_unknown_exception(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "abort"
assert result["type"] == FlowResultType.ABORT
assert result["reason"] == "unknown"
@ -148,7 +149,7 @@ async def test_no_servers_found(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexauth.PlexAuth.initiate_auth"), patch(
@ -157,13 +158,13 @@ async def test_no_servers_found(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
assert result["errors"]["base"] == "no_servers"
@ -175,7 +176,7 @@ async def test_single_available_server(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexauth.PlexAuth.initiate_auth"), patch(
@ -184,25 +185,22 @@ async def test_single_available_server(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
server_id = result["data"][CONF_SERVER_IDENTIFIER]
mock_plex_server = hass.data[DOMAIN][SERVERS][server_id]
assert result["title"] == mock_plex_server.url_in_use
assert result["data"][CONF_SERVER] == mock_plex_server.friendly_name
assert (
result["data"][CONF_SERVER_IDENTIFIER]
== mock_plex_server.machine_identifier
result["title"] == "https://1-2-3-4.123456789001234567890.plex.direct:32400"
)
assert result["data"][CONF_SERVER] == "Plex Server 1"
assert result["data"][CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert (
result["data"][PLEX_SERVER_CONFIG][CONF_URL] == mock_plex_server.url_in_use
result["data"][PLEX_SERVER_CONFIG][CONF_URL]
== "https://1-2-3-4.123456789001234567890.plex.direct:32400"
)
assert result["data"][PLEX_SERVER_CONFIG][CONF_TOKEN] == MOCK_TOKEN
@ -220,7 +218,7 @@ async def test_multiple_servers_with_selection(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
requests_mock.get(
@ -233,13 +231,13 @@ async def test_multiple_servers_with_selection(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "select_server"
result = await hass.config_entries.flow.async_configure(
@ -248,19 +246,16 @@ async def test_multiple_servers_with_selection(
CONF_SERVER_IDENTIFIER: MOCK_SERVERS[0][CONF_SERVER_IDENTIFIER]
},
)
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
server_id = result["data"][CONF_SERVER_IDENTIFIER]
mock_plex_server = hass.data[DOMAIN][SERVERS][server_id]
assert result["title"] == mock_plex_server.url_in_use
assert result["data"][CONF_SERVER] == mock_plex_server.friendly_name
assert (
result["data"][CONF_SERVER_IDENTIFIER]
== mock_plex_server.machine_identifier
result["title"] == "https://1-2-3-4.123456789001234567890.plex.direct:32400"
)
assert result["data"][CONF_SERVER] == "Plex Server 1"
assert result["data"][CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert (
result["data"][PLEX_SERVER_CONFIG][CONF_URL] == mock_plex_server.url_in_use
result["data"][PLEX_SERVER_CONFIG][CONF_URL]
== "https://1-2-3-4.123456789001234567890.plex.direct:32400"
)
assert result["data"][PLEX_SERVER_CONFIG][CONF_TOKEN] == MOCK_TOKEN
@ -286,7 +281,7 @@ async def test_adding_last_unconfigured_server(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
requests_mock.get(
@ -300,25 +295,22 @@ async def test_adding_last_unconfigured_server(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
server_id = result["data"][CONF_SERVER_IDENTIFIER]
mock_plex_server = hass.data[DOMAIN][SERVERS][server_id]
assert result["title"] == mock_plex_server.url_in_use
assert result["data"][CONF_SERVER] == mock_plex_server.friendly_name
assert (
result["data"][CONF_SERVER_IDENTIFIER]
== mock_plex_server.machine_identifier
result["title"] == "https://1-2-3-4.123456789001234567890.plex.direct:32400"
)
assert result["data"][CONF_SERVER] == "Plex Server 1"
assert result["data"][CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert (
result["data"][PLEX_SERVER_CONFIG][CONF_URL] == mock_plex_server.url_in_use
result["data"][PLEX_SERVER_CONFIG][CONF_URL]
== "https://1-2-3-4.123456789001234567890.plex.direct:32400"
)
assert result["data"][PLEX_SERVER_CONFIG][CONF_TOKEN] == MOCK_TOKEN
@ -347,7 +339,7 @@ async def test_all_available_servers_configured(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
requests_mock.get("https://plex.tv/users/account", text=plextv_account)
@ -362,13 +354,13 @@ async def test_all_available_servers_configured(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "abort"
assert result["type"] == FlowResultType.ABORT
assert result["reason"] == "all_configured"
@ -380,7 +372,7 @@ async def test_option_flow(hass: HomeAssistant, entry, mock_plex_server) -> None
result = await hass.config_entries.options.async_init(
entry.entry_id, context={"source": "test"}, data=None
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "plex_mp_settings"
result = await hass.config_entries.options.async_configure(
@ -391,7 +383,7 @@ async def test_option_flow(hass: HomeAssistant, entry, mock_plex_server) -> None
CONF_MONITORED_USERS: list(mock_plex_server.accounts),
},
)
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
assert result["data"] == {
Platform.MEDIA_PLAYER: {
CONF_USE_EPISODE_ART: True,
@ -414,7 +406,7 @@ async def test_missing_option_flow(
result = await hass.config_entries.options.async_init(
entry.entry_id, context={"source": "test"}, data=None
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "plex_mp_settings"
result = await hass.config_entries.options.async_configure(
@ -425,7 +417,7 @@ async def test_missing_option_flow(
CONF_MONITORED_USERS: list(mock_plex_server.accounts),
},
)
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
assert result["data"] == {
Platform.MEDIA_PLAYER: {
CONF_USE_EPISODE_ART: True,
@ -451,7 +443,7 @@ async def test_option_flow_new_users_available(
mock_plex_server = await setup_plex_server(config_entry=entry)
await hass.async_block_till_done()
server_id = mock_plex_server.machine_identifier
server_id = "unique_id_123"
monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users
new_users = [x for x in mock_plex_server.accounts if x not in monitored_users]
@ -461,7 +453,7 @@ async def test_option_flow_new_users_available(
result = await hass.config_entries.options.async_init(
entry.entry_id, context={"source": "test"}, data=None
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "plex_mp_settings"
multiselect_defaults = result["data_schema"].schema["monitored_users"].options
@ -477,7 +469,7 @@ async def test_external_timed_out(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexauth.PlexAuth.initiate_auth"), patch(
@ -486,13 +478,13 @@ async def test_external_timed_out(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "abort"
assert result["type"] == FlowResultType.ABORT
assert result["reason"] == "token_request_timeout"
@ -505,7 +497,7 @@ async def test_callback_view(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexauth.PlexAuth.initiate_auth"), patch(
@ -514,7 +506,7 @@ async def test_callback_view(
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
client = await hass_client_no_auth()
forward_url = f'{config_flow.AUTH_CALLBACK_PATH}?flow_id={result["flow_id"]}'
@ -541,7 +533,7 @@ async def test_manual_config(
config_flow.DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
assert result["data_schema"] is None
hass.config_entries.flow.async_abort(result["flow_id"])
@ -553,7 +545,7 @@ async def test_manual_config(
)
assert result["data_schema"] is not None
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user_advanced"
with patch("plexauth.PlexAuth.initiate_auth"):
@ -561,7 +553,7 @@ async def test_manual_config(
result["flow_id"], user_input={"setup_method": AUTOMATIC_SETUP_STRING}
)
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
hass.config_entries.flow.async_abort(result["flow_id"])
# Advanced manual
@ -571,14 +563,14 @@ async def test_manual_config(
)
assert result["data_schema"] is not None
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user_advanced"
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={"setup_method": MANUAL_SETUP_STRING}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "manual_setup"
MANUAL_SERVER = {
@ -599,7 +591,7 @@ async def test_manual_config(
result["flow_id"], user_input=MANUAL_SERVER_NO_HOST_OR_TOKEN
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "manual_setup"
assert result["errors"]["base"] == "host_or_token"
@ -611,7 +603,7 @@ async def test_manual_config(
result["flow_id"], user_input=MANUAL_SERVER
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "manual_setup"
assert result["errors"]["base"] == "ssl_error"
@ -623,7 +615,7 @@ async def test_manual_config(
result["flow_id"], user_input=MANUAL_SERVER
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "manual_setup"
assert result["errors"]["base"] == "ssl_error"
@ -635,7 +627,7 @@ async def test_manual_config(
result["flow_id"], user_input=MANUAL_SERVER
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "manual_setup"
assert result["errors"]["base"] == "ssl_error"
@ -647,15 +639,12 @@ async def test_manual_config(
)
await hass.async_block_till_done()
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
server_id = result["data"][CONF_SERVER_IDENTIFIER]
mock_plex_server = hass.data[DOMAIN][SERVERS][server_id]
assert result["title"] == mock_plex_server.url_in_use
assert result["data"][CONF_SERVER] == mock_plex_server.friendly_name
assert result["data"][CONF_SERVER_IDENTIFIER] == mock_plex_server.machine_identifier
assert result["data"][PLEX_SERVER_CONFIG][CONF_URL] == mock_plex_server.url_in_use
assert result["title"] == "http://1.2.3.4:32400"
assert result["data"][CONF_SERVER] == "Plex Server 1"
assert result["data"][CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert result["data"][PLEX_SERVER_CONFIG][CONF_URL] == "http://1.2.3.4:32400"
assert result["data"][PLEX_SERVER_CONFIG][CONF_TOKEN] == MOCK_TOKEN
@ -673,14 +662,14 @@ async def test_manual_config_with_token(
context={"source": SOURCE_USER, "show_advanced_options": True},
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user_advanced"
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={"setup_method": MANUAL_SETUP_STRING}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "manual_setup"
with patch(
@ -690,15 +679,13 @@ async def test_manual_config_with_token(
result["flow_id"], user_input={CONF_TOKEN: MOCK_TOKEN}
)
assert result["type"] == "create_entry"
assert result["type"] == FlowResultType.CREATE_ENTRY
server_id = result["data"][CONF_SERVER_IDENTIFIER]
mock_plex_server = hass.data[DOMAIN][SERVERS][server_id]
mock_url = mock_plex_server.url_in_use
mock_url = "https://1-2-3-4.123456789001234567890.plex.direct:32400"
assert result["title"] == mock_url
assert result["data"][CONF_SERVER] == mock_plex_server.friendly_name
assert result["data"][CONF_SERVER_IDENTIFIER] == mock_plex_server.machine_identifier
assert result["data"][CONF_SERVER] == "Plex Server 1"
assert result["data"][CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert result["data"][PLEX_SERVER_CONFIG][CONF_URL] == mock_url
assert result["data"][PLEX_SERVER_CONFIG][CONF_TOKEN] == MOCK_TOKEN
@ -708,26 +695,6 @@ async def test_manual_config_with_token(
await hass.async_block_till_done()
async def test_setup_with_limited_credentials(
hass: HomeAssistant, entry, setup_plex_server
) -> None:
"""Test setup with a user with limited permissions."""
with patch(
"plexapi.server.PlexServer.systemAccounts",
side_effect=plexapi.exceptions.Unauthorized,
) as mock_accounts:
mock_plex_server = await setup_plex_server()
assert mock_accounts.called
plex_server = hass.data[DOMAIN][SERVERS][mock_plex_server.machine_identifier]
assert len(plex_server.accounts) == 0
assert plex_server.owner is None
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
assert entry.state is ConfigEntryState.LOADED
async def test_integration_discovery(hass: HomeAssistant) -> None:
"""Test integration self-discovery."""
mock_gdm = MockGDM()
@ -781,13 +748,13 @@ async def test_trigger_reauth(
"plexauth.PlexAuth.token", return_value="BRAND_NEW_TOKEN"
):
result = await hass.config_entries.flow.async_configure(flow_id, user_input={})
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "abort"
assert result["type"] == FlowResultType.ABORT
assert result["reason"] == "reauth_successful"
assert result["flow_id"] == flow_id
@ -795,8 +762,8 @@ async def test_trigger_reauth(
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
assert entry.state is ConfigEntryState.LOADED
assert entry.data[CONF_SERVER] == mock_plex_server.friendly_name
assert entry.data[CONF_SERVER_IDENTIFIER] == mock_plex_server.machine_identifier
assert entry.data[CONF_SERVER] == "Plex Server 1"
assert entry.data[CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert entry.data[PLEX_SERVER_CONFIG][CONF_URL] == PLEX_DIRECT_URL
assert entry.data[PLEX_SERVER_CONFIG][CONF_TOKEN] == "BRAND_NEW_TOKEN"
@ -837,13 +804,13 @@ async def test_trigger_reauth_multiple_servers_available(
"plexauth.PlexAuth.token", return_value="BRAND_NEW_TOKEN"
):
result = await hass.config_entries.flow.async_configure(flow_id, user_input={})
assert result["type"] == "external"
assert result["type"] == FlowResultType.EXTERNAL_STEP
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "external_done"
assert result["type"] == FlowResultType.EXTERNAL_STEP_DONE
result = await hass.config_entries.flow.async_configure(result["flow_id"])
assert result["type"] == "abort"
assert result["type"] == FlowResultType.ABORT
assert result["flow_id"] == flow_id
assert result["reason"] == "reauth_successful"
@ -851,8 +818,8 @@ async def test_trigger_reauth_multiple_servers_available(
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
assert entry.state is ConfigEntryState.LOADED
assert entry.data[CONF_SERVER] == mock_plex_server.friendly_name
assert entry.data[CONF_SERVER_IDENTIFIER] == mock_plex_server.machine_identifier
assert entry.data[CONF_SERVER] == "Plex Server 1"
assert entry.data[CONF_SERVER_IDENTIFIER] == "unique_id_123"
assert entry.data[PLEX_SERVER_CONFIG][CONF_URL] == PLEX_DIRECT_URL
assert entry.data[PLEX_SERVER_CONFIG][CONF_TOKEN] == "BRAND_NEW_TOKEN"
@ -862,7 +829,7 @@ async def test_client_request_missing(hass: HomeAssistant) -> None:
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexauth.PlexAuth.initiate_auth"), patch(
@ -884,7 +851,7 @@ async def test_client_header_issues(
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == "form"
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "user"
with patch("plexauth.PlexAuth.initiate_auth"), patch(

View File

@ -314,3 +314,25 @@ async def test_scan_clients_schedule(hass: HomeAssistant, setup_plex_server) ->
await hass.async_block_till_done()
assert mock_scan_clients.called
async def test_setup_with_limited_credentials(
hass: HomeAssistant, entry, setup_plex_server
) -> None:
"""Test setup with a user with limited permissions."""
with patch(
"plexapi.server.PlexServer.systemAccounts",
side_effect=plexapi.exceptions.Unauthorized,
) as mock_accounts:
mock_plex_server = await setup_plex_server()
assert mock_accounts.called
plex_server = hass.data[const.DOMAIN][const.SERVERS][
mock_plex_server.machine_identifier
]
assert len(plex_server.accounts) == 0
assert plex_server.owner is None
assert len(hass.config_entries.async_entries(const.DOMAIN)) == 1
assert entry.state is ConfigEntryState.LOADED