diff options
author | Paul "LeoNerd" Evans <paul@matrix.org> | 2014-08-13 19:18:55 +0100 |
---|---|---|
committer | Paul "LeoNerd" Evans <paul@matrix.org> | 2014-08-13 19:19:15 +0100 |
commit | d05aa651f80b604428c003a13a03c4f6f61c317d (patch) | |
tree | 655502cdd01fe89c0ab56a3b0d27cc9faf95b2e9 /tests | |
parent | Allow advancing the MockClock's time (diff) | |
download | synapse-d05aa651f80b604428c003a13a03c4f6f61c317d.tar.xz |
An initial hack at storing presence state-change mtimes in database and presenting age durations to clients/federation events
Diffstat (limited to 'tests')
-rw-r--r-- | tests/handlers/test_presence.py | 36 | ||||
-rw-r--r-- | tests/handlers/test_presencelike.py | 34 | ||||
-rw-r--r-- | tests/rest/test_presence.py | 12 |
3 files changed, 62 insertions, 20 deletions
diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py index 2299a2a7ba..b365741d99 100644 --- a/tests/handlers/test_presence.py +++ b/tests/handlers/test_presence.py @@ -20,6 +20,8 @@ from twisted.internet import defer from mock import Mock, call, ANY import logging +from ..utils import MockClock + from synapse.server import HomeServer from synapse.api.constants import PresenceState from synapse.api.errors import SynapseError @@ -55,6 +57,7 @@ class PresenceStateTestCase(unittest.TestCase): def setUp(self): hs = HomeServer("test", + clock=MockClock(), db_pool=None, datastore=Mock(spec=[ "get_presence_state", @@ -154,7 +157,11 @@ class PresenceStateTestCase(unittest.TestCase): mocked_set.assert_called_with("apple", {"state": UNAVAILABLE, "status_msg": "Away"}) self.mock_start.assert_called_with(self.u_apple, - state={"state": UNAVAILABLE, "status_msg": "Away"}) + state={ + "state": UNAVAILABLE, + "status_msg": "Away", + "mtime": 1000000, # MockClock + }) yield self.handler.set_state( target_user=self.u_apple, auth_user=self.u_apple, @@ -386,7 +393,10 @@ class PresencePushTestCase(unittest.TestCase): self.replication.send_edu = Mock() self.replication.send_edu.return_value = defer.succeed((200, "OK")) + self.clock = MockClock() + hs = HomeServer("test", + clock=self.clock, db_pool=None, datastore=Mock(spec=[ "set_presence_state", @@ -519,13 +529,18 @@ class PresencePushTestCase(unittest.TestCase): yield self.handler.set_state(self.u_banana, self.u_banana, {"state": ONLINE}) + self.clock.advance_time(2) + presence = yield self.handler.get_presence_list( observer_user=self.u_apple, accepted=True) self.assertEquals([ - {"observed_user": self.u_banana, "state": ONLINE}, - {"observed_user": self.u_clementine, "state": OFFLINE}], - presence) + {"observed_user": self.u_banana, + "state": ONLINE, + "mtime_age": 2000}, + {"observed_user": self.u_clementine, + "state": OFFLINE}, + ], presence) self.mock_update_client.assert_has_calls([ call(observer_user=self.u_banana, @@ -555,7 +570,8 @@ class PresencePushTestCase(unittest.TestCase): content={ "push": [ {"user_id": "@apple:test", - "state": "online"}, + "state": "online", + "mtime_age": 0}, ], }), call( @@ -564,7 +580,8 @@ class PresencePushTestCase(unittest.TestCase): content={ "push": [ {"user_id": "@apple:test", - "state": "online"}, + "state": "online", + "mtime_age": 0}, ], }) ], any_order=True) @@ -582,7 +599,8 @@ class PresencePushTestCase(unittest.TestCase): "remote", "m.presence", { "push": [ {"user_id": "@potato:remote", - "state": "online"}, + "state": "online", + "mtime_age": 1000}, ], } ) @@ -596,9 +614,11 @@ class PresencePushTestCase(unittest.TestCase): statuscache=ANY), ], any_order=True) + self.clock.advance_time(2) + state = yield self.handler.get_state(self.u_potato, self.u_apple) - self.assertEquals({"state": ONLINE}, state) + self.assertEquals({"state": ONLINE, "mtime_age": 3000}, state) @defer.inlineCallbacks def test_join_room_local(self): diff --git a/tests/handlers/test_presencelike.py b/tests/handlers/test_presencelike.py index 54b92ba8e2..6eeb1bb522 100644 --- a/tests/handlers/test_presencelike.py +++ b/tests/handlers/test_presencelike.py @@ -22,6 +22,8 @@ from twisted.internet import defer from mock import Mock, call, ANY import logging +from ..utils import MockClock + from synapse.server import HomeServer from synapse.api.constants import PresenceState from synapse.handlers.presence import PresenceHandler @@ -60,6 +62,7 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase): def setUp(self): hs = HomeServer("test", + clock=MockClock(), db_pool=None, datastore=Mock(spec=[ "set_presence_state", @@ -156,10 +159,14 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase): observer_user=self.u_apple, accepted=True) self.assertEquals([ - {"observed_user": self.u_banana, "state": ONLINE, - "displayname": "Frank", "avatar_url": "http://foo"}, - {"observed_user": self.u_clementine, "state": OFFLINE}], - presence) + {"observed_user": self.u_banana, + "state": ONLINE, + "mtime_age": 0, + "displayname": "Frank", + "avatar_url": "http://foo"}, + {"observed_user": self.u_clementine, + "state": OFFLINE}], + presence) self.mock_update_client.assert_has_calls([ call(observer_user=self.u_apple, @@ -171,9 +178,12 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase): ], any_order=True) statuscache = self.mock_update_client.call_args[1]["statuscache"] - self.assertEquals({"state": ONLINE, - "displayname": "Frank", - "avatar_url": "http://foo"}, statuscache.state) + self.assertEquals({ + "state": ONLINE, + "mtime": 1000000, # MockClock + "displayname": "Frank", + "avatar_url": "http://foo", + }, statuscache.state) self.mock_update_client.reset_mock() @@ -193,9 +203,12 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase): ], any_order=True) statuscache = self.mock_update_client.call_args[1]["statuscache"] - self.assertEquals({"state": ONLINE, - "displayname": "I am an Apple", - "avatar_url": "http://foo"}, statuscache.state) + self.assertEquals({ + "state": ONLINE, + "mtime": 1000000, # MockClock + "displayname": "I am an Apple", + "avatar_url": "http://foo", + }, statuscache.state) @defer.inlineCallbacks def test_push_remote(self): @@ -220,6 +233,7 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase): "push": [ {"user_id": "@apple:test", "state": "online", + "mtime_age": 0, "displayname": "Frank", "avatar_url": "http://foo"}, ], diff --git a/tests/rest/test_presence.py b/tests/rest/test_presence.py index 7c54e067c9..f013abbee4 100644 --- a/tests/rest/test_presence.py +++ b/tests/rest/test_presence.py @@ -234,7 +234,11 @@ class PresenceEventStreamTestCase(unittest.TestCase): # I'll already get my own presence state change self.assertEquals({"start": "0", "end": "1", "chunk": [ {"type": "m.presence", - "content": {"user_id": "@apple:test", "state": ONLINE}}, + "content": { + "user_id": "@apple:test", + "state": ONLINE, + "mtime_age": 0, + }}, ]}, response) self.mock_datastore.set_presence_state.return_value = defer.succeed( @@ -251,5 +255,9 @@ class PresenceEventStreamTestCase(unittest.TestCase): self.assertEquals(200, code) self.assertEquals({"start": "1", "end": "2", "chunk": [ {"type": "m.presence", - "content": {"user_id": "@banana:test", "state": ONLINE}}, + "content": { + "user_id": "@banana:test", + "state": ONLINE, + "mtime_age": 0, + }}, ]}, response) |