mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +00:00
Fix Plex showing removed shared users (#46971)
This commit is contained in:
parent
c9847920af
commit
425d56d024
@ -213,21 +213,27 @@ class PlexServer:
|
||||
|
||||
try:
|
||||
system_accounts = self._plex_server.systemAccounts()
|
||||
shared_users = self.account.users() if self.account else []
|
||||
except Unauthorized:
|
||||
_LOGGER.warning(
|
||||
"Plex account has limited permissions, shared account filtering will not be available"
|
||||
)
|
||||
else:
|
||||
self._accounts = [
|
||||
account.name for account in system_accounts if account.name
|
||||
]
|
||||
self._accounts = []
|
||||
for user in shared_users:
|
||||
for shared_server in user.servers:
|
||||
if shared_server.machineIdentifier == self.machine_identifier:
|
||||
self._accounts.append(user.title)
|
||||
|
||||
_LOGGER.debug("Linked accounts: %s", self.accounts)
|
||||
|
||||
owner_account = [
|
||||
account.name for account in system_accounts if account.accountID == 1
|
||||
]
|
||||
owner_account = next(
|
||||
(account.name for account in system_accounts if account.accountID == 1),
|
||||
None,
|
||||
)
|
||||
if owner_account:
|
||||
self._owner_username = owner_account[0]
|
||||
self._owner_username = owner_account
|
||||
self._accounts.append(owner_account)
|
||||
_LOGGER.debug("Server owner found: '%s'", self._owner_username)
|
||||
|
||||
self._version = self._plex_server.version
|
||||
|
@ -218,6 +218,12 @@ def plextv_resources_fixture(plextv_resources_base):
|
||||
return plextv_resources_base.format(second_server_enabled=0)
|
||||
|
||||
|
||||
@pytest.fixture(name="plextv_shared_users", scope="session")
|
||||
def plextv_shared_users_fixture(plextv_resources_base):
|
||||
"""Load payload for plex.tv shared users and return it."""
|
||||
return load_fixture("plex/plextv_shared_users.xml")
|
||||
|
||||
|
||||
@pytest.fixture(name="session_base", scope="session")
|
||||
def session_base_fixture():
|
||||
"""Load the base session payload and return it."""
|
||||
@ -293,6 +299,7 @@ def mock_plex_calls(
|
||||
children_200,
|
||||
children_300,
|
||||
empty_library,
|
||||
empty_payload,
|
||||
grandchildren_300,
|
||||
library,
|
||||
library_sections,
|
||||
@ -310,12 +317,15 @@ def mock_plex_calls(
|
||||
playlist_500,
|
||||
plextv_account,
|
||||
plextv_resources,
|
||||
plextv_shared_users,
|
||||
plex_server_accounts,
|
||||
plex_server_clients,
|
||||
plex_server_default,
|
||||
security_token,
|
||||
):
|
||||
"""Mock Plex API calls."""
|
||||
requests_mock.get("https://plex.tv/api/users/", text=plextv_shared_users)
|
||||
requests_mock.get("https://plex.tv/api/invites/requested", text=empty_payload)
|
||||
requests_mock.get("https://plex.tv/users/account", text=plextv_account)
|
||||
requests_mock.get("https://plex.tv/api/resources", text=plextv_resources)
|
||||
|
||||
|
@ -116,6 +116,7 @@ async def test_setup_when_certificate_changed(
|
||||
plex_server_default,
|
||||
plextv_account,
|
||||
plextv_resources,
|
||||
plextv_shared_users,
|
||||
):
|
||||
"""Test setup component when the Plex certificate has changed."""
|
||||
await async_setup_component(hass, "persistent_notification", {})
|
||||
@ -141,6 +142,9 @@ async def test_setup_when_certificate_changed(
|
||||
unique_id=DEFAULT_DATA["server_id"],
|
||||
)
|
||||
|
||||
requests_mock.get("https://plex.tv/api/users/", text=plextv_shared_users)
|
||||
requests_mock.get("https://plex.tv/api/invites/requested", text=empty_payload)
|
||||
|
||||
requests_mock.get("https://plex.tv/users/account", text=plextv_account)
|
||||
requests_mock.get("https://plex.tv/api/resources", text=plextv_resources)
|
||||
requests_mock.get(old_url, exc=WrongCertHostnameException)
|
||||
|
9
tests/fixtures/plex/plextv_shared_users.xml
vendored
Normal file
9
tests/fixtures/plex/plextv_shared_users.xml
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MediaContainer friendlyName="myPlex" identifier="com.plexapp.plugins.myplex" machineIdentifier="85a28b6ea2b35c1a10cbdd967b74117a45e8694f" totalSize="3" size="3">
|
||||
<User id="1000" title="User 1000" username="User 1000" email="user_1000@email.com" recommendationsPlaylistId="" thumb="https://plex.tv/users/0000000000000000/avatar?c=1467656888" protected="0" home="0" allowTuners="0" allowSync="0" allowCameraUpload="0" allowChannels="0" allowSubtitleAdmin="0" filterAll="" filterMovies="" filterMusic="" filterPhotos="" filterTelevision="" restricted="0">
|
||||
<Server id="7654321" serverId="000001" machineIdentifier="unique_id_123" name="plex" lastSeenAt="1614072646" numLibraries="4" allLibraries="0" owned="1" pending="0"/>
|
||||
</User>
|
||||
<User id="1001" title="User 1001" username="User 1001" email="user_1001@email.com" recommendationsPlaylistId="" thumb="https://plex.tv/users/0000000000000001/avatar?c=1599008193" protected="0" home="0" allowTuners="0" allowSync="0" allowCameraUpload="0" allowChannels="0" allowSubtitleAdmin="0" filterAll="" filterMovies="" filterMusic="" filterPhotos="" filterTelevision="" restricted="0">
|
||||
<Server id="1234567" serverId="000001" machineIdentifier="unique_id_123" name="plex" lastSeenAt="1614072646" numLibraries="5" allLibraries="0" owned="1" pending="0"/>
|
||||
</User>
|
||||
</MediaContainer>
|
Loading…
x
Reference in New Issue
Block a user