1
0

fix case where auto creation of rooms should never auto create for support user

This commit is contained in:
Neil Johnson
2018-11-07 22:29:17 +00:00
parent 06a3ec83e2
commit f217b5fd7a
2 changed files with 32 additions and 9 deletions
+9 -3
View File
@@ -221,11 +221,17 @@ class RegistrationHandler(BaseHandler):
# auto-join the user to any rooms we're supposed to dump them into
fake_requester = create_requester(user_id)
# try to create the room if we're the first user on the server
# try to create the room if we're the first real user on the server. Note
# there maybe a support user present that should autojoin rooms
should_auto_create_rooms = False
if self.hs.config.autocreate_auto_join_rooms:
if (self.hs.config.autocreate_auto_join_rooms and
self.hs.config.support_user_id != user_id):
count = yield self.store.count_all_users()
should_auto_create_rooms = count == 1
if self.hs.config.support_user_id is None:
should_auto_create_rooms = count == 1
elif self.hs.config.support_user_id != user_id:
# assume that support user has been created first
should_auto_create_rooms = count == 2
for r in self.hs.config.auto_join_rooms:
try:
+23 -6
View File
@@ -43,10 +43,7 @@ class RegistrationTestCase(unittest.TestCase):
self.addCleanup,
expire_access_token=True,
)
self.macaroon_generator = Mock(
generate_access_token=Mock(return_value='secret')
)
self.hs.get_macaroon_generator = Mock(return_value=self.macaroon_generator)
self.handler = self.hs.get_handlers().registration_handler
self.store = self.hs.get_datastore()
self.hs.config.max_mau_value = 50
@@ -64,7 +61,7 @@ class RegistrationTestCase(unittest.TestCase):
requester, frank.localpart, "Frankie"
)
self.assertEquals(result_user_id, user_id)
self.assertEquals(result_token, 'secret')
self.assertTrue(result_token is not None)
@defer.inlineCallbacks
def test_if_user_exists(self):
@@ -82,7 +79,8 @@ class RegistrationTestCase(unittest.TestCase):
requester, local_part, None
)
self.assertEquals(result_user_id, user_id)
self.assertEquals(result_token, 'secret')
print("result token is %s" % result_token)
self.assertTrue(result_token is not None)
@defer.inlineCallbacks
def test_mau_limits_when_disabled(self):
@@ -184,3 +182,22 @@ class RegistrationTestCase(unittest.TestCase):
res = yield self.handler.register(localpart='jeff')
rooms = yield self.store.get_rooms_for_user(res[0])
self.assertEqual(len(rooms), 0)
@defer.inlineCallbacks
def test_auto_create_auto_join_rooms_when_support_user_exists(self):
room_alias_str = "#room:test"
self.hs.config.auto_join_rooms = [room_alias_str]
self.hs.config.support_user_id = "@support:test"
res_support = yield self.handler.register(localpart='support')
rooms = yield self.store.get_rooms_for_user(res_support[0])
self.assertTrue(len(rooms) == 0)
res = yield self.handler.register(localpart='jeff')
rooms = yield self.store.get_rooms_for_user(res[0])
directory_handler = self.hs.get_handlers().directory_handler
room_alias = RoomAlias.from_string(room_alias_str)
room_id = yield directory_handler.get_association(room_alias)
self.assertTrue(room_id['room_id'] in rooms)
self.assertEqual(len(rooms), 1)