1
0

Compare commits

...

1 Commits

Author SHA1 Message Date
Olivier Wilkinson (reivilibre) 1f66b8e3d6 STASH 2022-03-25 10:37:26 +00:00
+70 -2
View File
@@ -1,5 +1,6 @@
import logging
from typing import List, Tuple
import pprint
from typing import List, Tuple, Optional, Set
from unittest.mock import Mock, patch
from twisted.test.proto_helpers import MemoryReactor
@@ -7,7 +8,7 @@ from twisted.test.proto_helpers import MemoryReactor
from synapse.api.constants import EventContentFields, EventTypes
from synapse.appservice import ApplicationService
from synapse.rest import admin
from synapse.rest.client import login, register, room, room_batch
from synapse.rest.client import login, register, room, room_batch, sync
from synapse.server import HomeServer
from synapse.types import JsonDict
from synapse.util import Clock
@@ -63,6 +64,7 @@ class RoomBatchTestCase(unittest.HomeserverTestCase):
room.register_servlets,
register.register_servlets,
login.register_servlets,
sync.register_servlets
]
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
@@ -178,3 +180,69 @@ class RoomBatchTestCase(unittest.HomeserverTestCase):
"Expected a single state_group to be returned by saw state_groups=%s"
% (state_group_map.keys(),),
)
def _dirty_sync_helper(self, tok: str, since: Optional[str] = None) -> Tuple[str, JsonDict]:
"""
Returns:
- sync token
- full body
"""
since = f"?since={since}" if since else ""
channel = self.make_request(
"GET",
f"/_matrix/client/v3/sync{since}",
access_token=tok,
)
self.assertEqual(channel.code, 200, channel.result)
return channel.json_body["next_batch"], channel.json_body
@unittest.override_config({"experimental_features": {"msc2716_enabled": True}})
def test_reproduce_12281(self) -> None:
"""
Reproduces issue 12281, where state doesn't come down sync...
"""
# Create a user
self.register_user("kristina", "secret")
tok_kristina = self.login("kristina", "secret")
# Start kristina syncing...
next_sync, _ = self._dirty_sync_helper(tok_kristina)
# A room gets created by the appservice
room_id = self.helper.create_room_as(
self.appservice.sender, tok=self.appservice.token
)
# 6 state events come in to configure the room
for i in range(6):
self.helper.send_event(
room_id=room_id,
type=f"com.example.state.{i}",
content={
"blah": "Blah"
},
tok=self.appservice.token,
)
# Invite
self.helper.invite(
room=room_id,
targ="@someone:test",
tok=self.appservice.token
)
# Invite kristina
self.helper.invite(
room=room_id,
targ="@kristina:test",
tok=self.appservice.token
)
next_sync, kristina_inv_sync = self._dirty_sync_helper(tok_kristina, next_sync)
pprint.pprint(kristina_inv_sync)
self.assertIn(room_id, kristina_inv_sync["rooms"]["invite"])