Put room state in room initialSync output - I guess this is right; I really can't find any other tests similar...

This commit is contained in:
Paul "LeoNerd" Evans 2014-11-10 19:29:58 +00:00
parent 269f80bf8e
commit 1fd8139138
2 changed files with 40 additions and 2 deletions

View File

@ -336,10 +336,13 @@ class MessageHandler(BaseHandler):
feedback=False): feedback=False):
yield self.auth.check_joined_room(room_id, user_id) yield self.auth.check_joined_room(room_id, user_id)
state_tuples = yield self.store.get_current_state(room_id)
state = [self.hs.serialize_event(x) for x in state_tuples]
defer.returnValue({ defer.returnValue({
#"membership": membership, #"membership": membership,
"room_id": room_id, "room_id": room_id,
#"messages": messages, #"messages": messages,
#"state": state, "state": state,
#"presence": presence, #"presence": presence
}) })

View File

@ -984,6 +984,29 @@ class RoomInitialSyncTestCase(RestTestCase):
synapse.rest.room.register_servlets(hs, self.mock_resource) synapse.rest.room.register_servlets(hs, self.mock_resource)
# MemoryDataStore's get_current_state() isn't even approximately
# right. Longterm we'll be killing it in favour of a real
# SQLite :memory:-based test. For now lets patch it
efact = hs.get_event_factory()
def get_current_state(room_id):
"""
TODO: these probably need content
('!WxMBxqtWbMMdMEkRqY:red', 'm.room.send_event_level', ''),
('!WxMBxqtWbMMdMEkRqY:red', 'm.room.power_levels', ''),
('!WxMBxqtWbMMdMEkRqY:red', 'm.room.ops_levels', ''),
('!WxMBxqtWbMMdMEkRqY:red', 'm.room.member', '@sid1:red'),
('!WxMBxqtWbMMdMEkRqY:red', 'm.room.add_state_level', '')]
"""
return [
efact.create_event(etype="m.room.create", room_id=room_id,
content={},
),
efact.create_event(etype="m.room.join_rules", room_id=room_id,
content={},
),
]
hs.datastore.get_current_state = get_current_state
# create the room # create the room
self.room_id = yield self.create_room_as(self.user_id) self.room_id = yield self.create_room_as(self.user_id)
@ -995,6 +1018,18 @@ class RoomInitialSyncTestCase(RestTestCase):
self.assertEquals(self.room_id, response["room_id"]) self.assertEquals(self.room_id, response["room_id"])
# Room state is easier to assert on if we unpack it into a dict
state = {}
for event in response["state"]:
if "state_key" not in event:
continue
t = event["type"]
if t not in state:
state[t] = []
state[t].append(event)
self.assertTrue("m.room.create" in state)
# (code, response) = yield self.mock_resource.trigger("GET", path, None) # (code, response) = yield self.mock_resource.trigger("GET", path, None)
# self.assertEquals(200, code, msg=str(response)) # self.assertEquals(200, code, msg=str(response))
# self.assert_dict(json.loads(content), response) # self.assert_dict(json.loads(content), response)