forked from MirrorHub/synapse
Fix bug where synapse was sending AS user queries incorrectly.
Bug introduced in 92b20713d7
which reversed the comparison when checking if a user existed
in the users table. Added UTs to prevent this happening again.
This commit is contained in:
parent
9a3cd1c00d
commit
d88e20cdb9
2 changed files with 44 additions and 1 deletions
|
@ -177,7 +177,7 @@ class ApplicationServicesHandler(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
user_info = yield self.store.get_user_by_id(user_id)
|
user_info = yield self.store.get_user_by_id(user_id)
|
||||||
if not user_info:
|
if user_info:
|
||||||
defer.returnValue(False)
|
defer.returnValue(False)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,49 @@ class AppServiceHandlerTestCase(unittest.TestCase):
|
||||||
interested_service, event
|
interested_service, event
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def test_query_user_exists_unknown_user(self):
|
||||||
|
user_id = "@someone:anywhere"
|
||||||
|
services = [self._mkservice(is_interested=True)]
|
||||||
|
services[0].is_interested_in_user = Mock(return_value=True)
|
||||||
|
self.mock_store.get_app_services = Mock(return_value=services)
|
||||||
|
self.mock_store.get_user_by_id = Mock(return_value=None)
|
||||||
|
|
||||||
|
event = Mock(
|
||||||
|
sender=user_id,
|
||||||
|
type="m.room.message",
|
||||||
|
room_id="!foo:bar"
|
||||||
|
)
|
||||||
|
self.mock_as_api.push = Mock()
|
||||||
|
self.mock_as_api.query_user = Mock()
|
||||||
|
yield self.handler.notify_interested_services(event)
|
||||||
|
self.mock_as_api.query_user.assert_called_once_with(
|
||||||
|
services[0], user_id
|
||||||
|
)
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def test_query_user_exists_known_user(self):
|
||||||
|
user_id = "@someone:anywhere"
|
||||||
|
services = [self._mkservice(is_interested=True)]
|
||||||
|
services[0].is_interested_in_user = Mock(return_value=True)
|
||||||
|
self.mock_store.get_app_services = Mock(return_value=services)
|
||||||
|
self.mock_store.get_user_by_id = Mock(return_value={
|
||||||
|
"name": user_id
|
||||||
|
})
|
||||||
|
|
||||||
|
event = Mock(
|
||||||
|
sender=user_id,
|
||||||
|
type="m.room.message",
|
||||||
|
room_id="!foo:bar"
|
||||||
|
)
|
||||||
|
self.mock_as_api.push = Mock()
|
||||||
|
self.mock_as_api.query_user = Mock()
|
||||||
|
yield self.handler.notify_interested_services(event)
|
||||||
|
self.assertFalse(
|
||||||
|
self.mock_as_api.query_user.called,
|
||||||
|
"query_user called when it shouldn't have been."
|
||||||
|
)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def test_query_room_alias_exists(self):
|
def test_query_room_alias_exists(self):
|
||||||
room_alias_str = "#foo:bar"
|
room_alias_str = "#foo:bar"
|
||||||
|
|
Loading…
Reference in a new issue