2020-06-17 14:04:47 -05:00
|
|
|
"""Tests for Plex media_players."""
|
2021-01-01 22:31:56 +01:00
|
|
|
from unittest.mock import patch
|
|
|
|
|
2020-06-17 14:04:47 -05:00
|
|
|
from plexapi.exceptions import NotFound
|
|
|
|
|
|
|
|
from homeassistant.components.plex.const import DOMAIN, SERVERS
|
|
|
|
|
|
|
|
|
2020-09-22 22:14:41 -05:00
|
|
|
async def test_plex_tv_clients(hass, entry, mock_plex_account, setup_plex_server):
|
2020-06-17 14:04:47 -05:00
|
|
|
"""Test getting Plex clients from plex.tv."""
|
|
|
|
resource = next(
|
|
|
|
x
|
|
|
|
for x in mock_plex_account.resources()
|
|
|
|
if x.name.startswith("plex.tv Resource Player")
|
|
|
|
)
|
2020-06-25 20:10:40 -04:00
|
|
|
with patch.object(resource, "connect", side_effect=NotFound):
|
2020-12-02 12:00:13 -06:00
|
|
|
mock_plex_server = await setup_plex_server()
|
2020-06-17 14:04:47 -05:00
|
|
|
await hass.async_block_till_done()
|
|
|
|
|
2020-12-02 12:00:13 -06:00
|
|
|
server_id = mock_plex_server.machineIdentifier
|
|
|
|
plex_server = hass.data[DOMAIN][SERVERS][server_id]
|
2020-06-17 14:04:47 -05:00
|
|
|
media_players_before = len(hass.states.async_entity_ids("media_player"))
|
|
|
|
|
|
|
|
# Ensure one more client is discovered
|
|
|
|
await hass.config_entries.async_unload(entry.entry_id)
|
2020-10-14 08:46:52 -05:00
|
|
|
mock_plex_server = await setup_plex_server()
|
2020-06-17 14:04:47 -05:00
|
|
|
plex_server = hass.data[DOMAIN][SERVERS][server_id]
|
|
|
|
media_players_after = len(hass.states.async_entity_ids("media_player"))
|
|
|
|
assert media_players_after == media_players_before + 1
|
|
|
|
|
|
|
|
# Ensure only plex.tv resource client is found
|
|
|
|
await hass.config_entries.async_unload(entry.entry_id)
|
2020-12-02 12:00:13 -06:00
|
|
|
mock_plex_server = await setup_plex_server(num_users=0)
|
2020-06-17 14:04:47 -05:00
|
|
|
plex_server = hass.data[DOMAIN][SERVERS][server_id]
|
|
|
|
assert len(hass.states.async_entity_ids("media_player")) == 1
|
|
|
|
|
|
|
|
# Ensure cache gets called
|
2020-06-25 20:10:40 -04:00
|
|
|
await plex_server._async_update_platforms()
|
|
|
|
await hass.async_block_till_done()
|
2020-06-17 14:04:47 -05:00
|
|
|
|
|
|
|
assert len(hass.states.async_entity_ids("media_player")) == 1
|