Update Plex tests to mock websockets (#37147)

* Update Plex tests to mock websockets

* Avoid unnecessary class mock
This commit is contained in:
jjlawren 2020-06-27 04:03:51 -04:00 committed by GitHub
parent e48bcd2070
commit ec13eecc59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 50 additions and 41 deletions

View file

@ -1,9 +1,7 @@
"""Helper methods for Plex tests.""" """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.""" """Call the websocket callback method."""
server_id = plex_server.machineIdentifier callback = mock_websocket.call_args[0][1]
websocket = hass.data[DOMAIN][WEBSOCKETS][server_id] callback()
websocket.callback()

View file

@ -367,13 +367,11 @@ async def test_option_flow(hass):
with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_listen.called
assert len(hass.config_entries.async_entries(DOMAIN)) == 1 assert len(hass.config_entries.async_entries(DOMAIN)) == 1
assert entry.state == ENTRY_STATE_LOADED 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_listen.called
assert len(hass.config_entries.async_entries(DOMAIN)) == 1 assert len(hass.config_entries.async_entries(DOMAIN)) == 1
assert entry.state == ENTRY_STATE_LOADED 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
trigger_plex_update(mock_websocket)
await hass.async_block_till_done()
server_id = mock_plex_server.machineIdentifier 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 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] 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" assert result["errors"]["base"] == "ssl_error"
with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( 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 = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input=MANUAL_SERVER 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( with patch("plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount()), patch(
"plexapi.server.PlexServer", return_value=mock_plex_server "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 = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={CONF_TOKEN: MOCK_TOKEN} 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( ) as mock_accounts, patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount()
), patch( ), patch(
"homeassistant.components.plex.PlexWebsocket.listen" "homeassistant.components.plex.PlexWebsocket", autospec=True
) as mock_listen: ):
entry.add_to_hass(hass) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_listen.called
assert mock_accounts.called assert mock_accounts.called
plex_server = hass.data[DOMAIN][SERVERS][mock_plex_server.machineIdentifier] plex_server = hass.data[DOMAIN][SERVERS][mock_plex_server.machineIdentifier]

View file

@ -163,7 +163,9 @@ async def test_setup_with_photo_session(hass):
with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() 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 len(hass.config_entries.async_entries(const.DOMAIN)) == 1
assert entry.state == ENTRY_STATE_LOADED assert entry.state == ENTRY_STATE_LOADED
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() await hass.async_block_till_done()
media_player = hass.states.get("media_player.plex_product_title") 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( 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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert entry.state == ENTRY_STATE_LOADED assert entry.state == ENTRY_STATE_LOADED
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", side_effect=plexapi.exceptions.Unauthorized "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert entry.state == ENTRY_STATE_LOADED assert entry.state == ENTRY_STATE_LOADED
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() await hass.async_block_till_done()

View file

@ -57,14 +57,16 @@ async def test_new_users_available(hass):
with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
server_id = mock_plex_server.machineIdentifier server_id = mock_plex_server.machineIdentifier
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() await hass.async_block_till_done()
monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
server_id = mock_plex_server.machineIdentifier server_id = mock_plex_server.machineIdentifier
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() await hass.async_block_till_done()
monitored_users = hass.data[DOMAIN][SERVERS][server_id].option_monitored_users 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() 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 server_id = mock_plex_server.machineIdentifier
loaded_server = hass.data[DOMAIN][SERVERS][server_id] 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() await hass.async_block_till_done()
sensor = hass.states.get("sensor.plex_plex_server_1") 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -183,7 +191,7 @@ async def test_mark_sessions_idle(hass):
server_id = mock_plex_server.machineIdentifier server_id = mock_plex_server.machineIdentifier
loaded_server = hass.data[DOMAIN][SERVERS][server_id] 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() await hass.async_block_till_done()
sensor = hass.states.get("sensor.plex_plex_server_1") 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount(players=0) "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() await hass.async_block_till_done()
sensor = hass.states.get("sensor.plex_plex_server_1") 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( with patch("plexapi.server.PlexServer", return_value=mock_plex_server), patch(
"plexapi.myplex.MyPlexAccount", return_value=MockPlexAccount() "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) entry.add_to_hass(hass)
assert await hass.config_entries.async_setup(entry.entry_id) assert await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
@ -255,7 +267,7 @@ async def test_media_lookups(hass):
loaded_server = hass.data[DOMAIN][SERVERS][server_id] loaded_server = hass.data[DOMAIN][SERVERS][server_id]
# Plex Key searches # Plex Key searches
trigger_plex_update(hass, mock_plex_server) trigger_plex_update(mock_websocket)
await hass.async_block_till_done() await hass.async_block_till_done()
media_player_id = hass.states.async_entity_ids("media_player")[0] media_player_id = hass.states.async_entity_ids("media_player")[0]