diff --git a/tests/components/plex/test_config_flow.py b/tests/components/plex/test_config_flow.py index 288c95dfbf1..36c9ab614f5 100644 --- a/tests/components/plex/test_config_flow.py +++ b/tests/components/plex/test_config_flow.py @@ -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( diff --git a/tests/components/plex/test_init.py b/tests/components/plex/test_init.py index 4ef3e3dc813..cdfa409237f 100644 --- a/tests/components/plex/test_init.py +++ b/tests/components/plex/test_init.py @@ -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