From ec13eecc59f916221cc781ea113ef59596181827 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Sat, 27 Jun 2020 04:03:51 -0400 Subject: [PATCH] Update Plex tests to mock websockets (#37147) * Update Plex tests to mock websockets * Avoid unnecessary class mock --- tests/components/plex/helpers.py | 8 ++--- tests/components/plex/test_config_flow.py | 29 ++++++++---------- tests/components/plex/test_init.py | 18 +++++++----- tests/components/plex/test_server.py | 36 +++++++++++++++-------- 4 files changed, 50 insertions(+), 41 deletions(-) diff --git a/tests/components/plex/helpers.py b/tests/components/plex/helpers.py index 462bd2a5061..8055ab0d5b1 100644 --- a/tests/components/plex/helpers.py +++ b/tests/components/plex/helpers.py @@ -1,9 +1,7 @@ """Helper methods for Plex tests.""" -from homeassistant.components.plex.const import DOMAIN, WEBSOCKETS -def trigger_plex_update(hass, plex_server): +def trigger_plex_update(mock_websocket): """Call the websocket callback method.""" - server_id = plex_server.machineIdentifier - websocket = hass.data[DOMAIN][WEBSOCKETS][server_id] - websocket.callback() + callback = mock_websocket.call_args[0][1] + callback() diff --git a/tests/components/plex/test_config_flow.py b/tests/components/plex/test_config_flow.py index 87183c8f2ad..5ca973f8561 100644 --- a/tests/components/plex/test_config_flow.py +++ b/tests/components/plex/test_config_flow.py @@ -367,13 +367,11 @@ async def test_option_flow(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen") as mock_listen: + ), patch("homeassistant.components.plex.PlexWebsocket", autospec=True): entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() - assert mock_listen.called - assert len(hass.config_entries.async_entries(DOMAIN)) == 1 assert entry.state == ENTRY_STATE_LOADED @@ -417,13 +415,11 @@ async def test_missing_option_flow(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen") as mock_listen: + ), patch("homeassistant.components.plex.PlexWebsocket", autospec=True): entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() - assert mock_listen.called - assert len(hass.config_entries.async_entries(DOMAIN)) == 1 assert entry.state == ENTRY_STATE_LOADED @@ -471,17 +467,17 @@ async def test_option_flow_new_users_available(hass, caplog): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() + trigger_plex_update(mock_websocket) + await hass.async_block_till_done() + server_id = mock_plex_server.machineIdentifier - - with patch("plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount()): - trigger_plex_update(hass, mock_plex_server) - await hass.async_block_till_done() - 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] @@ -676,7 +672,7 @@ async def test_manual_config(hass): assert result["errors"]["base"] == "ssl_error" with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( - "homeassistant.components.plex.PlexWebsocket.listen" + "homeassistant.components.plex.PlexWebsocket", autospec=True ): result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input=MANUAL_SERVER @@ -711,7 +707,7 @@ async def test_manual_config_with_token(hass): with patch("plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount()), patch( "plexapi.server.PlexServer", return_value=mock_plex_server - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch("homeassistant.components.plex.PlexWebsocket", autospec=True): result = await hass.config_entries.flow.async_configure( result["flow_id"], user_input={CONF_TOKEN: MOCK_TOKEN} ) @@ -742,13 +738,12 @@ async def test_setup_with_limited_credentials(hass): ) as mock_accounts, patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() ), patch( - "homeassistant.components.plex.PlexWebsocket.listen" - ) as mock_listen: + "homeassistant.components.plex.PlexWebsocket", autospec=True + ): entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() - assert mock_listen.called assert mock_accounts.called plex_server = hass.data[DOMAIN][SERVERS][mock_plex_server.machineIdentifier] diff --git a/tests/components/plex/test_init.py b/tests/components/plex/test_init.py index 6902fb4401f..fa60f4dd7d2 100644 --- a/tests/components/plex/test_init.py +++ b/tests/components/plex/test_init.py @@ -163,7 +163,9 @@ async def test_setup_with_photo_session(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() @@ -171,7 +173,7 @@ async def test_setup_with_photo_session(hass): assert len(hass.config_entries.async_entries(const.DOMAIN)) == 1 assert entry.state == ENTRY_STATE_LOADED - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() media_player = hass.states.get("media_player.plex_product_title") @@ -261,15 +263,15 @@ async def test_tokenless_server(hass): ) with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( - "homeassistant.components.plex.PlexWebsocket.listen" - ): + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() assert entry.state == ENTRY_STATE_LOADED - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() @@ -286,12 +288,14 @@ async def test_bad_token_with_tokenless_server(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", side_effect=plexapi.exceptions.Unauthorized - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() assert entry.state == ENTRY_STATE_LOADED - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() diff --git a/tests/components/plex/test_server.py b/tests/components/plex/test_server.py index f678fb30183..7da20846599 100644 --- a/tests/components/plex/test_server.py +++ b/tests/components/plex/test_server.py @@ -57,14 +57,16 @@ async def test_new_users_available(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() server_id = mock_plex_server.machineIdentifier - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users @@ -96,14 +98,16 @@ async def test_new_ignored_users_available(hass, caplog): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() server_id = mock_plex_server.machineIdentifier - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users @@ -139,7 +143,9 @@ async def test_network_error_during_refresh(hass, caplog): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() @@ -147,7 +153,7 @@ async def test_network_error_during_refresh(hass, caplog): server_id = mock_plex_server.machineIdentifier loaded_server = hass.data[DOMAIN][SERVERS][server_id] - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() sensor = hass.states.get("sensor.plex_plex_server_1") @@ -175,7 +181,9 @@ async def test_mark_sessions_idle(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() @@ -183,7 +191,7 @@ async def test_mark_sessions_idle(hass): server_id = mock_plex_server.machineIdentifier loaded_server = hass.data[DOMAIN][SERVERS][server_id] - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() sensor = hass.states.get("sensor.plex_plex_server_1") @@ -216,12 +224,14 @@ async def test_ignore_plex_web_client(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount(players=0) - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() sensor = hass.states.get("sensor.plex_plex_server_1") @@ -246,7 +256,9 @@ async def test_media_lookups(hass): with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() - ), patch("homeassistant.components.plex.PlexWebsocket.listen"): + ), patch( + "homeassistant.components.plex.PlexWebsocket", autospec=True + ) as mock_websocket: entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() @@ -255,7 +267,7 @@ async def test_media_lookups(hass): loaded_server = hass.data[DOMAIN][SERVERS][server_id] # Plex Key searches - trigger_plex_update(hass, mock_plex_server) + trigger_plex_update(mock_websocket) await hass.async_block_till_done() media_player_id = hass.states.async_entity_ids("media_player")[0]