From 515c098a8d75f6b74c62082e3a89f65b3f8224c8 Mon Sep 17 00:00:00 2001 From: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri, 13 Aug 2021 15:54:00 +0100 Subject: [PATCH] Don't rely on device list being updated on invite/join for x-signing federation tests --- tests/41end-to-end-keys/08-cross-signing.pl | 60 +++++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/tests/41end-to-end-keys/08-cross-signing.pl b/tests/41end-to-end-keys/08-cross-signing.pl index 6368dca6d..5933b5422 100644 --- a/tests/41end-to-end-keys/08-cross-signing.pl +++ b/tests/41end-to-end-keys/08-cross-signing.pl @@ -527,11 +527,37 @@ })->then( sub { matrix_invite_user_to_room( $user1, $user2, $room_id ) })->then( sub { - sync_until_user_in_device_list( $user1, $user2 ); + await_sync_timeline_contains( $user1, $room_id, check => sub { + my ( $event ) = @_; + + assert_json_keys( $event, qw( type content sender state_key )); + return unless $event->{type} eq "m.room.member"; + return unless $event->{sender} eq $user1->user_id; + return unless $event->{state_key} eq $user2->user_id; + + assert_json_keys( my $content = $event->{content}, qw( membership )); + $content->{membership} eq "invite" or + die "Expected invite membership"; + + return 1; + }); })->then( sub { matrix_join_room( $user2, $room_id ); })->then( sub { - sync_until_user_in_device_list( $user1, $user2 ); + await_sync_timeline_contains( $user1, $room_id, check => sub { + my ( $event ) = @_; + + assert_json_keys( $event, qw( type content sender state_key )); + return unless $event->{type} eq "m.room.member"; + return unless $event->{sender} eq $user2->user_id; + return unless $event->{state_key} eq $user2->user_id; + + assert_json_keys( my $content = $event->{content}, qw( membership )); + $content->{membership} eq "join" or + die "Expected join membership"; + + return 1; + }); })->then( sub { matrix_set_cross_signing_key( $user2, { "auth" => { @@ -647,11 +673,37 @@ })->then( sub { matrix_invite_user_to_room( $user1, $user2, $room_id ) })->then( sub { - sync_until_user_in_device_list( $user1, $user2 ); + await_sync_timeline_contains( $user1, $room_id, check => sub { + my ( $event ) = @_; + + assert_json_keys( $event, qw( type content sender state_key )); + return unless $event->{type} eq "m.room.member"; + return unless $event->{sender} eq $user1->user_id; + return unless $event->{state_key} eq $user2->user_id; + + assert_json_keys( my $content = $event->{content}, qw( membership )); + $content->{membership} eq "invite" or + die "Expected ${\$user2->user_id} to have been invited"; + + return 1; + }); })->then( sub { matrix_join_room( $user2, $room_id ); })->then( sub { - sync_until_user_in_device_list( $user1, $user2 ); + await_sync_timeline_contains( $user1, $room_id, check => sub { + my ( $event ) = @_; + + assert_json_keys( $event, qw( type content sender state_key )); + return unless $event->{type} eq "m.room.member"; + return unless $event->{sender} eq $user2->user_id; + return unless $event->{state_key} eq $user2->user_id; + + assert_json_keys( my $content = $event->{content}, qw( membership )); + $content->{membership} eq "join" or + die "Expected ${\$user2->user_id} to have joined"; + + return 1; + }); })->then( sub { sign_json( $device, secret_key => $self_signing_secret_key,