Skip to content

Commit

Permalink
Update logged in user on events
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewsayre committed Apr 8, 2019
1 parent 1a2687e commit 9eb8b89
Showing 5 changed files with 17 additions and 5 deletions.
3 changes: 3 additions & 0 deletions pyheos/heos.py
Original file line number Diff line number Diff line change
@@ -52,6 +52,9 @@ async def _handle_event(self, event: HeosResponse) -> bool:
if event.command == const.EVENT_SOURCES_CHANGED \
and self._music_sources_loaded:
await self.get_music_sources(refresh=True)
if event.command == const.EVENT_USER_CHANGED:
self._signed_in_username = event.get_message('un') \
if event.has_message("signed_in") else None
return True

async def sign_in(self, username: str, password: str):
1 change: 0 additions & 1 deletion tests/fixtures/event.user_changed.json

This file was deleted.

1 change: 1 addition & 0 deletions tests/fixtures/event.user_changed_signed_in.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"heos": {"command": "event/user_changed", "message": "signed_in&un=example@example.com"}}
1 change: 1 addition & 0 deletions tests/fixtures/event.user_changed_signed_out.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"heos": {"command": "event/user_changed", "message": "signed_out&un=Unknown"}}
16 changes: 12 additions & 4 deletions tests/test_heos.py
Original file line number Diff line number Diff line change
@@ -624,20 +624,28 @@ async def handler(group_id: int, event: str):

@pytest.mark.asyncio
async def test_user_changed_event(mock_device, heos):
"""Test user changed fires dispatcher."""
"""Test user changed fires dispatcher and updates logged in user."""
signal = asyncio.Event()

async def handler(event: str):
assert event == const.EVENT_USER_CHANGED
signal.set()
heos.dispatcher.connect(const.SIGNAL_CONTROLLER_EVENT, handler)

# Write event through mock device
event_to_raise = await get_fixture("event.user_changed")
# Test signed out event
event_to_raise = await get_fixture("event.user_changed_signed_out")
await mock_device.write_event(event_to_raise)
await signal.wait()
assert not heos.is_signed_in
assert not heos.signed_in_username

# Wait until the signal is set
# Test signed in event
signal.clear()
event_to_raise = await get_fixture("event.user_changed_signed_in")
await mock_device.write_event(event_to_raise)
await signal.wait()
assert heos.is_signed_in
assert heos.signed_in_username == "example@example.com"


@pytest.mark.asyncio

0 comments on commit 9eb8b89

Please sign in to comment.