diff options
author | Andrew Morgan <andrew@amorgan.xyz> | 2021-05-13 17:51:03 +0100 |
---|---|---|
committer | Andrew Morgan <andrew@amorgan.xyz> | 2021-05-13 17:51:03 +0100 |
commit | 258bf0e722732ac53f10d65d4866bef0e69b2bfa (patch) | |
tree | f8f5c4b4a7e0d7905d3b19e9e9328448067974e5 /tests/handlers/test_presence.py | |
parent | Support fetching the spaces summary via GET over federation. (#9947) (diff) | |
download | synapse-anoa/test_update_presence.tar.xz |
Add a test for the update_presence storage function github/anoa/test_update_presence anoa/test_update_presence
Diffstat (limited to 'tests/handlers/test_presence.py')
-rw-r--r-- | tests/handlers/test_presence.py | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py index 1ffab709fc..285e7a10f7 100644 --- a/tests/handlers/test_presence.py +++ b/tests/handlers/test_presence.py @@ -32,13 +32,19 @@ from synapse.handlers.presence import ( handle_timeout, handle_update, ) +from synapse.rest import admin from synapse.rest.client.v1 import room from synapse.types import UserID, get_domain_from_id from tests import unittest -class PresenceUpdateTestCase(unittest.TestCase): +class PresenceUpdateTestCase(unittest.HomeserverTestCase): + servlets = [admin.register_servlets] + + def prepare(self, reactor, clock, homeserver): + self.store = homeserver.get_datastore() + def test_offline_to_online(self): wheel_timer = Mock() user_id = "@foo:bar" @@ -292,6 +298,39 @@ class PresenceUpdateTestCase(unittest.TestCase): any_order=True, ) + def test_persisting_presence_updates(self): + """Tests that the latest presence state for each user is persisted correctly""" + # Create some test users and presence states for them + presence_states = [] + for i in range(5): + user_id = self.register_user(f"user_{i}", "password") + + presence_state = UserPresenceState( + user_id=user_id, + state="online", + last_active_ts=1, + last_federation_update_ts=1, + last_user_sync_ts=1, + status_msg="I'm online!", + currently_active=True, + ) + presence_states.append(presence_state) + + # Persist these presence updates to the database + self.get_success(self.store.update_presence(presence_states)) + + # Check that each update is present in the database + db_presence_states = self.get_success( + self.store.get_all_presence_updates( + instance_name="master", + last_id=0, + current_id=len(presence_states) + 1, + limit=len(presence_states), + ) + ) + + self.assertEqual(presence_states, db_presence_states) + class PresenceTimeoutTestCase(unittest.TestCase): def test_idle_timer(self): |