|
12 | 12 | # See the License for the specific language governing permissions and
|
13 | 13 | # limitations under the License.
|
14 | 14 | import logging
|
15 |
| -from typing import List, cast |
| 15 | +from typing import cast |
16 | 16 | from unittest import TestCase
|
17 | 17 |
|
18 | 18 | from twisted.test.proto_helpers import MemoryReactor
|
@@ -50,8 +50,6 @@ def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
|
50 | 50 | hs = self.setup_test_homeserver(federation_http_client=None)
|
51 | 51 | self.handler = hs.get_federation_handler()
|
52 | 52 | 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() |
55 | 53 | return hs
|
56 | 54 |
|
57 | 55 | def test_exchange_revoked_invite(self) -> None:
|
@@ -314,142 +312,6 @@ def test_backfill_with_many_backward_extremities(self) -> None:
|
314 | 312 | )
|
315 | 313 | self.get_success(d)
|
316 | 314 |
|
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 |
| - |
453 | 315 | @unittest.override_config(
|
454 | 316 | {"rc_invites": {"per_user": {"per_second": 0.5, "burst_count": 3}}}
|
455 | 317 | )
|
|
0 commit comments