Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit f7acb95

Browse files
committed
Revert "Fix backfilled events being rejected for no state_groups (#10439)"
I'm unconvinced that this test is correct, and it is failing. This reverts commit db6e7f1.
1 parent 02ab637 commit f7acb95

File tree

1 file changed

+1
-139
lines changed

1 file changed

+1
-139
lines changed

tests/handlers/test_federation.py

+1-139
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414
import logging
15-
from typing import List, cast
15+
from typing import cast
1616
from unittest import TestCase
1717

1818
from twisted.test.proto_helpers import MemoryReactor
@@ -50,8 +50,6 @@ def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
5050
hs = self.setup_test_homeserver(federation_http_client=None)
5151
self.handler = hs.get_federation_handler()
5252
self.store = hs.get_datastores().main
53-
self.state_storage_controller = hs.get_storage_controllers().state
54-
self._event_auth_handler = hs.get_event_auth_handler()
5553
return hs
5654

5755
def test_exchange_revoked_invite(self) -> None:
@@ -314,142 +312,6 @@ def test_backfill_with_many_backward_extremities(self) -> None:
314312
)
315313
self.get_success(d)
316314

317-
def test_backfill_floating_outlier_membership_auth(self) -> None:
318-
"""
319-
As the local homeserver, check that we can properly process a federated
320-
event from the OTHER_SERVER with auth_events that include a floating
321-
membership event from the OTHER_SERVER.
322-
323-
Regression test, see #10439.
324-
"""
325-
OTHER_SERVER = "otherserver"
326-
OTHER_USER = "@otheruser:" + OTHER_SERVER
327-
328-
# create the room
329-
user_id = self.register_user("kermit", "test")
330-
tok = self.login("kermit", "test")
331-
room_id = self.helper.create_room_as(
332-
room_creator=user_id,
333-
is_public=True,
334-
tok=tok,
335-
extra_content={
336-
"preset": "public_chat",
337-
},
338-
)
339-
room_version = self.get_success(self.store.get_room_version(room_id))
340-
341-
prev_event_ids = self.get_success(self.store.get_prev_events_for_room(room_id))
342-
(
343-
most_recent_prev_event_id,
344-
most_recent_prev_event_depth,
345-
) = self.get_success(self.store.get_max_depth_of(prev_event_ids))
346-
# mapping from (type, state_key) -> state_event_id
347-
assert most_recent_prev_event_id is not None
348-
prev_state_map = self.get_success(
349-
self.state_storage_controller.get_state_ids_for_event(
350-
most_recent_prev_event_id
351-
)
352-
)
353-
# List of state event ID's
354-
prev_state_ids = list(prev_state_map.values())
355-
auth_event_ids = prev_state_ids
356-
auth_events = list(
357-
self.get_success(self.store.get_events(auth_event_ids)).values()
358-
)
359-
360-
# build a floating outlier member state event
361-
fake_prev_event_id = "$" + random_string(43)
362-
member_event_dict = {
363-
"type": EventTypes.Member,
364-
"content": {
365-
"membership": "join",
366-
},
367-
"state_key": OTHER_USER,
368-
"room_id": room_id,
369-
"sender": OTHER_USER,
370-
"depth": most_recent_prev_event_depth,
371-
"prev_events": [fake_prev_event_id],
372-
"origin_server_ts": self.clock.time_msec(),
373-
"signatures": {OTHER_SERVER: {"ed25519:key_version": "SomeSignatureHere"}},
374-
}
375-
builder = self.hs.get_event_builder_factory().for_room_version(
376-
room_version, member_event_dict
377-
)
378-
member_event = self.get_success(
379-
builder.build(
380-
prev_event_ids=member_event_dict["prev_events"],
381-
auth_event_ids=self._event_auth_handler.compute_auth_events(
382-
builder,
383-
prev_state_map,
384-
for_verification=False,
385-
),
386-
depth=member_event_dict["depth"],
387-
)
388-
)
389-
# Override the signature added from "test" homeserver that we created the event with
390-
member_event.signatures = member_event_dict["signatures"]
391-
392-
# Add the new member_event to the StateMap
393-
updated_state_map = dict(prev_state_map)
394-
updated_state_map[
395-
(member_event.type, member_event.state_key)
396-
] = member_event.event_id
397-
auth_events.append(member_event)
398-
399-
# build and send an event authed based on the member event
400-
message_event_dict = {
401-
"type": EventTypes.Message,
402-
"content": {},
403-
"room_id": room_id,
404-
"sender": OTHER_USER,
405-
"depth": most_recent_prev_event_depth,
406-
"prev_events": prev_event_ids.copy(),
407-
"origin_server_ts": self.clock.time_msec(),
408-
"signatures": {OTHER_SERVER: {"ed25519:key_version": "SomeSignatureHere"}},
409-
}
410-
builder = self.hs.get_event_builder_factory().for_room_version(
411-
room_version, message_event_dict
412-
)
413-
message_event = self.get_success(
414-
builder.build(
415-
prev_event_ids=message_event_dict["prev_events"],
416-
auth_event_ids=self._event_auth_handler.compute_auth_events(
417-
builder,
418-
updated_state_map,
419-
for_verification=False,
420-
),
421-
depth=message_event_dict["depth"],
422-
)
423-
)
424-
# Override the signature added from "test" homeserver that we created the event with
425-
message_event.signatures = message_event_dict["signatures"]
426-
427-
# Stub the /event_auth response from the OTHER_SERVER
428-
async def get_event_auth(
429-
destination: str, room_id: str, event_id: str
430-
) -> List[EventBase]:
431-
return [
432-
event_from_pdu_json(ae.get_pdu_json(), room_version=room_version)
433-
for ae in auth_events
434-
]
435-
436-
self.handler.federation_client.get_event_auth = get_event_auth # type: ignore[assignment]
437-
438-
with LoggingContext("receive_pdu"):
439-
# Fake the OTHER_SERVER federating the message event over to our local homeserver
440-
d = run_in_background(
441-
self.hs.get_federation_event_handler().on_receive_pdu,
442-
OTHER_SERVER,
443-
message_event,
444-
)
445-
self.get_success(d)
446-
447-
# Now try and get the events on our local homeserver
448-
stored_event = self.get_success(
449-
self.store.get_event(message_event.event_id, allow_none=True)
450-
)
451-
self.assertTrue(stored_event is not None)
452-
453315
@unittest.override_config(
454316
{"rc_invites": {"per_user": {"per_second": 0.5, "burst_count": 3}}}
455317
)

0 commit comments

Comments
 (0)