diff --git a/tests/handlers/test_directory.py b/tests/handlers/test_directory.py
index 54d6e51f97..dd5d85dde6 100644
--- a/tests/handlers/test_directory.py
+++ b/tests/handlers/test_directory.py
@@ -24,6 +24,8 @@ from synapse.http.client import HttpClient
from synapse.handlers.directory import DirectoryHandler
from synapse.storage.directory import RoomAliasMapping
+from tests.utils import SQLiteMemoryDbPool
+
class DirectoryHandlers(object):
def __init__(self, hs):
@@ -33,6 +35,7 @@ class DirectoryHandlers(object):
class DirectoryTestCase(unittest.TestCase):
""" Tests the directory service. """
+ @defer.inlineCallbacks
def setUp(self):
self.mock_federation = Mock(spec=[
"make_query",
@@ -43,11 +46,11 @@ class DirectoryTestCase(unittest.TestCase):
self.query_handlers[query_type] = handler
self.mock_federation.register_query_handler = register_query_handler
+ db_pool = SQLiteMemoryDbPool()
+ yield db_pool.prepare()
+
hs = HomeServer("test",
- datastore=Mock(spec=[
- "get_association_from_room_alias",
- "get_joined_hosts_for_room",
- ]),
+ db_pool=db_pool,
http_client=None,
resource_for_federation=Mock(),
replication_layer=self.mock_federation,
@@ -56,20 +59,16 @@ class DirectoryTestCase(unittest.TestCase):
self.handler = hs.get_handlers().directory_handler
- self.datastore = hs.get_datastore()
-
- def hosts(room_id):
- return defer.succeed([])
- self.datastore.get_joined_hosts_for_room.side_effect = hosts
+ self.store = hs.get_datastore()
self.my_room = hs.parse_roomalias("#my-room:test")
+ self.your_room = hs.parse_roomalias("#your-room:test")
self.remote_room = hs.parse_roomalias("#another:remote")
@defer.inlineCallbacks
def test_get_local_association(self):
- mocked_get = self.datastore.get_association_from_room_alias
- mocked_get.return_value = defer.succeed(
- RoomAliasMapping("!8765qwer:test", "#my-room:test", ["test"])
+ yield self.store.create_room_alias_association(
+ self.my_room, "!8765qwer:test", ["test"]
)
result = yield self.handler.get_association(self.my_room)
@@ -102,9 +101,8 @@ class DirectoryTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_incoming_fed_query(self):
- mocked_get = self.datastore.get_association_from_room_alias
- mocked_get.return_value = defer.succeed(
- RoomAliasMapping("!8765asdf:test", "#your-room:test", ["test"])
+ yield self.store.create_room_alias_association(
+ self.your_room, "!8765asdf:test", ["test"]
)
response = yield self.query_handlers["directory"](
diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py
index 0cb4dfba39..765929d204 100644
--- a/tests/handlers/test_presence.py
+++ b/tests/handlers/test_presence.py
@@ -20,7 +20,9 @@ from twisted.internet import defer, reactor
from mock import Mock, call, ANY
import json
-from ..utils import MockHttpResource, MockClock, DeferredMockCallable
+from tests.utils import (
+ MockHttpResource, MockClock, DeferredMockCallable, SQLiteMemoryDbPool
+)
from synapse.server import HomeServer
from synapse.api.constants import PresenceState
@@ -60,30 +62,21 @@ class JustPresenceHandlers(object):
class PresenceStateTestCase(unittest.TestCase):
""" Tests presence management. """
+ @defer.inlineCallbacks
def setUp(self):
+ db_pool = SQLiteMemoryDbPool()
+ yield db_pool.prepare()
+
hs = HomeServer("test",
- clock=MockClock(),
- db_pool=None,
- datastore=Mock(spec=[
- "get_presence_state",
- "set_presence_state",
- "add_presence_list_pending",
- "set_presence_list_accepted",
- ]),
- handlers=None,
- resource_for_federation=Mock(),
- http_client=None,
- )
+ clock=MockClock(),
+ db_pool=db_pool,
+ handlers=None,
+ resource_for_federation=Mock(),
+ http_client=None,
+ )
hs.handlers = JustPresenceHandlers(hs)
- self.datastore = hs.get_datastore()
-
- def is_presence_visible(observed_localpart, observer_userid):
- allow = (observed_localpart == "apple" and
- observer_userid == "@banana:test"
- )
- return defer.succeed(allow)
- self.datastore.is_presence_visible = is_presence_visible
+ self.store = hs.get_datastore()
# Mock the RoomMemberHandler
room_member_handler = Mock(spec=[])
@@ -94,6 +87,11 @@ class PresenceStateTestCase(unittest.TestCase):
self.u_banana = hs.parse_userid("@banana:test")
self.u_clementine = hs.parse_userid("@clementine:test")
+ yield self.store.create_presence(self.u_apple.localpart)
+ yield self.store.set_presence_state(
+ self.u_apple.localpart, {"state": ONLINE, "status_msg": "Online"}
+ )
+
self.handler = hs.get_handlers().presence_handler
self.room_members = []
@@ -117,7 +115,7 @@ class PresenceStateTestCase(unittest.TestCase):
shared = all(map(lambda i: i in room_member_ids, userlist))
return defer.succeed(shared)
- self.datastore.user_rooms_intersect = user_rooms_intersect
+ self.store.user_rooms_intersect = user_rooms_intersect
self.mock_start = Mock()
self.mock_stop = Mock()
@@ -127,11 +125,6 @@ class PresenceStateTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_get_my_state(self):
- mocked_get = self.datastore.get_presence_state
- mocked_get.return_value = defer.succeed(
- {"state": ONLINE, "status_msg": "Online"}
- )
-
state = yield self.handler.get_state(
target_user=self.u_apple, auth_user=self.u_apple
)
@@ -140,13 +133,12 @@ class PresenceStateTestCase(unittest.TestCase):
{"presence": ONLINE, "status_msg": "Online"},
state
)
- mocked_get.assert_called_with("apple")
@defer.inlineCallbacks
def test_get_allowed_state(self):
- mocked_get = self.datastore.get_presence_state
- mocked_get.return_value = defer.succeed(
- {"state": ONLINE, "status_msg": "Online"}
+ yield self.store.allow_presence_visible(
+ observed_localpart=self.u_apple.localpart,
+ observer_userid=self.u_banana.to_string(),
)
state = yield self.handler.get_state(
@@ -157,15 +149,9 @@ class PresenceStateTestCase(unittest.TestCase):
{"presence": ONLINE, "status_msg": "Online"},
state
)
- mocked_get.assert_called_with("apple")
@defer.inlineCallbacks
def test_get_same_room_state(self):
- mocked_get = self.datastore.get_presence_state
- mocked_get.return_value = defer.succeed(
- {"state": ONLINE, "status_msg": "Online"}
- )
-
self.room_members = [self.u_apple, self.u_clementine]
state = yield self.handler.get_state(
@@ -179,11 +165,6 @@ class PresenceStateTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_get_disallowed_state(self):
- mocked_get = self.datastore.get_presence_state
- mocked_get.return_value = defer.succeed(
- {"state": ONLINE, "status_msg": "Online"}
- )
-
self.room_members = []
yield self.assertFailure(
@@ -195,16 +176,17 @@ class PresenceStateTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_set_my_state(self):
- mocked_set = self.datastore.set_presence_state
- mocked_set.return_value = defer.succeed({"state": OFFLINE})
-
yield self.handler.set_state(
target_user=self.u_apple, auth_user=self.u_apple,
state={"presence": UNAVAILABLE, "status_msg": "Away"})
- mocked_set.assert_called_with("apple",
- {"state": UNAVAILABLE, "status_msg": "Away"}
+ self.assertEquals(
+ {"state": UNAVAILABLE,
+ "status_msg": "Away",
+ "mtime": 1000000},
+ (yield self.store.get_presence_state(self.u_apple.localpart))
)
+
self.mock_start.assert_called_with(self.u_apple,
state={
"presence": UNAVAILABLE,
@@ -222,50 +204,34 @@ class PresenceStateTestCase(unittest.TestCase):
class PresenceInvitesTestCase(unittest.TestCase):
""" Tests presence management. """
+ @defer.inlineCallbacks
def setUp(self):
self.mock_http_client = Mock(spec=[])
self.mock_http_client.put_json = DeferredMockCallable()
self.mock_federation_resource = MockHttpResource()
- hs = HomeServer("test",
- clock=MockClock(),
- db_pool=None,
- datastore=Mock(spec=[
- "has_presence_state",
- "allow_presence_visible",
- "add_presence_list_pending",
- "set_presence_list_accepted",
- "get_presence_list",
- "del_presence_list",
+ db_pool = SQLiteMemoryDbPool()
+ yield db_pool.prepare()
- # Bits that Federation needs
- "prep_send_transaction",
- "delivered_txn",
- "get_received_txn_response",
- "set_received_txn_response",
- ]),
- handlers=None,
- resource_for_client=Mock(),
- resource_for_federation=self.mock_federation_resource,
- http_client=self.mock_http_client,
- )
+ hs = HomeServer("test",
+ clock=MockClock(),
+ db_pool=db_pool,
+ handlers=None,
+ resource_for_client=Mock(),
+ resource_for_federation=self.mock_federation_resource,
+ http_client=self.mock_http_client,
+ )
hs.handlers = JustPresenceHandlers(hs)
- self.datastore = hs.get_datastore()
-
- def has_presence_state(user_localpart):
- return defer.succeed(
- user_localpart in ("apple", "banana"))
- self.datastore.has_presence_state = has_presence_state
-
- def get_received_txn_response(*args):
- return defer.succeed(None)
- self.datastore.get_received_txn_response = get_received_txn_response
+ self.store = hs.get_datastore()
# Some local users to test with
self.u_apple = hs.parse_userid("@apple:test")
self.u_banana = hs.parse_userid("@banana:test")
+ yield self.store.create_presence(self.u_apple.localpart)
+ yield self.store.create_presence(self.u_banana.localpart)
+
# ID of a local user that does not exist
self.u_durian = hs.parse_userid("@durian:test")
@@ -288,12 +254,16 @@ class PresenceInvitesTestCase(unittest.TestCase):
yield self.handler.send_invite(
observer_user=self.u_apple, observed_user=self.u_banana)
- self.datastore.add_presence_list_pending.assert_called_with(
- "apple", "@banana:test")
- self.datastore.allow_presence_visible.assert_called_with(
- "banana", "@apple:test")
- self.datastore.set_presence_list_accepted.assert_called_with(
- "apple", "@banana:test")
+ self.assertEquals(
+ [{"observed_user_id": "@banana:test", "accepted": 1}],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
+ self.assertTrue(
+ (yield self.store.is_presence_visible(
+ observed_localpart=self.u_banana.localpart,
+ observer_userid=self.u_apple.to_string(),
+ ))
+ )
self.mock_start.assert_called_with(
self.u_apple, target_user=self.u_banana)
@@ -303,10 +273,10 @@ class PresenceInvitesTestCase(unittest.TestCase):
yield self.handler.send_invite(
observer_user=self.u_apple, observed_user=self.u_durian)
- self.datastore.add_presence_list_pending.assert_called_with(
- "apple", "@durian:test")
- self.datastore.del_presence_list.assert_called_with(
- "apple", "@durian:test")
+ self.assertEquals(
+ [],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
@defer.inlineCallbacks
def test_invite_remote(self):
@@ -328,8 +298,10 @@ class PresenceInvitesTestCase(unittest.TestCase):
yield self.handler.send_invite(
observer_user=self.u_apple, observed_user=self.u_cabbage)
- self.datastore.add_presence_list_pending.assert_called_with(
- "apple", "@cabbage:elsewhere")
+ self.assertEquals(
+ [{"observed_user_id": "@cabbage:elsewhere", "accepted": 0}],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
yield put_json.await_calls()
@@ -362,8 +334,12 @@ class PresenceInvitesTestCase(unittest.TestCase):
)
)
- self.datastore.allow_presence_visible.assert_called_with(
- "apple", "@cabbage:elsewhere")
+ self.assertTrue(
+ (yield self.store.is_presence_visible(
+ observed_localpart=self.u_apple.localpart,
+ observer_userid=self.u_cabbage.to_string(),
+ ))
+ )
yield put_json.await_calls()
@@ -398,6 +374,11 @@ class PresenceInvitesTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_accepted_remote(self):
+ yield self.store.add_presence_list_pending(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_cabbage.to_string(),
+ )
+
yield self.mock_federation_resource.trigger("PUT",
"/_matrix/federation/v1/send/1000000/",
_make_edu_json("elsewhere", "m.presence_accept",
@@ -408,14 +389,21 @@ class PresenceInvitesTestCase(unittest.TestCase):
)
)
- self.datastore.set_presence_list_accepted.assert_called_with(
- "apple", "@cabbage:elsewhere")
+ self.assertEquals(
+ [{"observed_user_id": "@cabbage:elsewhere", "accepted": 1}],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
self.mock_start.assert_called_with(
self.u_apple, target_user=self.u_cabbage)
@defer.inlineCallbacks
def test_denied_remote(self):
+ yield self.store.add_presence_list_pending(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid="@eggplant:elsewhere",
+ )
+
yield self.mock_federation_resource.trigger("PUT",
"/_matrix/federation/v1/send/1000000/",
_make_edu_json("elsewhere", "m.presence_deny",
@@ -426,62 +414,76 @@ class PresenceInvitesTestCase(unittest.TestCase):
)
)
- self.datastore.del_presence_list.assert_called_with(
- "apple", "@eggplant:elsewhere")
+ self.assertEquals(
+ [],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
@defer.inlineCallbacks
def test_drop_local(self):
+ yield self.store.add_presence_list_pending(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_banana.to_string(),
+ )
+ yield self.store.set_presence_list_accepted(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_banana.to_string(),
+ )
+
yield self.handler.drop(
- observer_user=self.u_apple, observed_user=self.u_banana)
+ observer_user=self.u_apple,
+ observed_user=self.u_banana,
+ )
- self.datastore.del_presence_list.assert_called_with(
- "apple", "@banana:test")
+ self.assertEquals(
+ [],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
self.mock_stop.assert_called_with(
self.u_apple, target_user=self.u_banana)
@defer.inlineCallbacks
def test_drop_remote(self):
+ yield self.store.add_presence_list_pending(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_cabbage.to_string(),
+ )
+ yield self.store.set_presence_list_accepted(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_cabbage.to_string(),
+ )
+
yield self.handler.drop(
- observer_user=self.u_apple, observed_user=self.u_cabbage)
+ observer_user=self.u_apple,
+ observed_user=self.u_cabbage,
+ )
- self.datastore.del_presence_list.assert_called_with(
- "apple", "@cabbage:elsewhere")
+ self.assertEquals(
+ [],
+ (yield self.store.get_presence_list(self.u_apple.localpart))
+ )
@defer.inlineCallbacks
def test_get_presence_list(self):
- self.datastore.get_presence_list.return_value = defer.succeed(
- [{"observed_user_id": "@banana:test"}]
- )
-
- presence = yield self.handler.get_presence_list(
- observer_user=self.u_apple)
-
- self.assertEquals([
- {"observed_user": self.u_banana,
- "presence": OFFLINE},
- ], presence)
-
- self.datastore.get_presence_list.assert_called_with("apple",
- accepted=None
+ yield self.store.add_presence_list_pending(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_banana.to_string(),
)
-
- self.datastore.get_presence_list.return_value = defer.succeed(
- [{"observed_user_id": "@banana:test"}]
+ yield self.store.set_presence_list_accepted(
+ observer_localpart=self.u_apple.localpart,
+ observed_userid=self.u_banana.to_string(),
)
presence = yield self.handler.get_presence_list(
- observer_user=self.u_apple, accepted=True
- )
+ observer_user=self.u_apple)
self.assertEquals([
{"observed_user": self.u_banana,
- "presence": OFFLINE},
+ "presence": OFFLINE,
+ "accepted": 1},
], presence)
- self.datastore.get_presence_list.assert_called_with("apple",
- accepted=True)
-
class PresencePushTestCase(unittest.TestCase):
""" Tests steady-state presence status updates.
diff --git a/tests/handlers/test_profile.py b/tests/handlers/test_profile.py
index ee2be9b6d5..5dc9b456e1 100644
--- a/tests/handlers/test_profile.py
+++ b/tests/handlers/test_profile.py
@@ -24,6 +24,8 @@ from synapse.server import HomeServer
from synapse.handlers.profile import ProfileHandler
from synapse.api.constants import Membership
+from tests.utils import SQLiteMemoryDbPool
+
class ProfileHandlers(object):
def __init__(self, hs):
@@ -33,6 +35,7 @@ class ProfileHandlers(object):
class ProfileTestCase(unittest.TestCase):
""" Tests profile management. """
+ @defer.inlineCallbacks
def setUp(self):
self.mock_federation = Mock(spec=[
"make_query",
@@ -43,63 +46,50 @@ class ProfileTestCase(unittest.TestCase):
self.query_handlers[query_type] = handler
self.mock_federation.register_query_handler = register_query_handler
+ db_pool = SQLiteMemoryDbPool()
+ yield db_pool.prepare()
+
hs = HomeServer("test",
- db_pool=None,
+ db_pool=db_pool,
http_client=None,
- datastore=Mock(spec=[
- "get_profile_displayname",
- "set_profile_displayname",
- "get_profile_avatar_url",
- "set_profile_avatar_url",
- "get_rooms_for_user_where_membership_is",
- ]),
handlers=None,
resource_for_federation=Mock(),
replication_layer=self.mock_federation,
)
hs.handlers = ProfileHandlers(hs)
- self.datastore = hs.get_datastore()
+ self.store = hs.get_datastore()
self.frank = hs.parse_userid("@1234ABCD:test")
self.bob = hs.parse_userid("@4567:test")
self.alice = hs.parse_userid("@alice:remote")
- self.handler = hs.get_handlers().profile_handler
+ yield self.store.create_profile(self.frank.localpart)
- self.mock_get_joined = (
- self.datastore.get_rooms_for_user_where_membership_is
- )
+ self.handler = hs.get_handlers().profile_handler
# TODO(paul): Icky signal declarings.. booo
hs.get_distributor().declare("changed_presencelike_data")
@defer.inlineCallbacks
def test_get_my_name(self):
- mocked_get = self.datastore.get_profile_displayname
- mocked_get.return_value = defer.succeed("Frank")
+ yield self.store.set_profile_displayname(
+ self.frank.localpart, "Frank"
+ )
displayname = yield self.handler.get_displayname(self.frank)
self.assertEquals("Frank", displayname)
- mocked_get.assert_called_with("1234ABCD")
@defer.inlineCallbacks
def test_set_my_name(self):
- mocked_set = self.datastore.set_profile_displayname
- mocked_set.return_value = defer.succeed(())
-
- self.mock_get_joined.return_value = defer.succeed([])
-
yield self.handler.set_displayname(self.frank, self.frank, "Frank Jr.")
- self.mock_get_joined.assert_called_once_with(
- self.frank.to_string(),
- [Membership.JOIN]
+ self.assertEquals(
+ (yield self.store.get_profile_displayname(self.frank.localpart)),
+ "Frank Jr."
)
- mocked_set.assert_called_with("1234ABCD", "Frank Jr.")
-
@defer.inlineCallbacks
def test_set_my_name_noauth(self):
d = self.handler.set_displayname(self.frank, self.bob, "Frank Jr.")
@@ -123,40 +113,31 @@ class ProfileTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_incoming_fed_query(self):
- mocked_get = self.datastore.get_profile_displayname
- mocked_get.return_value = defer.succeed("Caroline")
+ yield self.store.create_profile("caroline")
+ yield self.store.set_profile_displayname("caroline", "Caroline")
response = yield self.query_handlers["profile"](
{"user_id": "@caroline:test", "field": "displayname"}
)
self.assertEquals({"displayname": "Caroline"}, response)
- mocked_get.assert_called_with("caroline")
@defer.inlineCallbacks
def test_get_my_avatar(self):
- mocked_get = self.datastore.get_profile_avatar_url
- mocked_get.return_value = defer.succeed("http://my.server/me.png")
+ yield self.store.set_profile_avatar_url(
+ self.frank.localpart, "http://my.server/me.png"
+ )
avatar_url = yield self.handler.get_avatar_url(self.frank)
self.assertEquals("http://my.server/me.png", avatar_url)
- mocked_get.assert_called_with("1234ABCD")
@defer.inlineCallbacks
def test_set_my_avatar(self):
- mocked_set = self.datastore.set_profile_avatar_url
- mocked_set.return_value = defer.succeed(())
-
- self.mock_get_joined.return_value = defer.succeed([])
-
yield self.handler.set_avatar_url(self.frank, self.frank,
"http://my.server/pic.gif")
- self.mock_get_joined.assert_called_once_with(
- self.frank.to_string(),
- [Membership.JOIN]
+ self.assertEquals(
+ (yield self.store.get_profile_avatar_url(self.frank.localpart)),
+ "http://my.server/pic.gif"
)
-
-
- mocked_set.assert_called_with("1234ABCD", "http://my.server/pic.gif")
|