From cd6fad57057c33b961a661926329b0c3ecffd62b Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 14 Feb 2019 13:47:49 +0000 Subject: [PATCH 1/6] Add test for bans transferring over on room upgrade --- tests/30rooms/60version_upgrade.pl | 52 ++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/30rooms/60version_upgrade.pl b/tests/30rooms/60version_upgrade.pl index 212199257..bdadb23c6 100644 --- a/tests/30rooms/60version_upgrade.pl +++ b/tests/30rooms/60version_upgrade.pl @@ -408,6 +408,58 @@ sub upgrade_room_synced { }; +test "/upgrade copies ban events to the new room", + requires => [ + local_user_and_room_fixtures(), + qw( can_upgrade_room_version ), + ], + + do => sub { + my ( $creator, $room_id ) = @_; + my ( $new_room_id ); + + my $content => { + membership => "ban", + }; + + matrix_put_room_state( + $creator, $room_id, + type => "m.room.member", + content => $content, + state_key => "@bob:matrix.org", + )->then( sub { + matrix_sync( $creator ); + })->then( sub { + upgrade_room_synced( + $creator, $room_id, + new_version => $TEST_NEW_VERSION, + ); + })->then( sub { + ( $new_room_id, ) = @_; + + matrix_sync_again( $creator ); + })->then( sub { + my ( $sync_body ) = @_; + + log_if_fail "sync body", $sync_body; + + my $room = $sync_body->{rooms}{join}{$new_room_id}; + + my $event = first { + $_->{type} eq "m.room.member" && $_->{state_key} eq "@bob:matrix.org", + } @{ $room->{timeline}->{events} }; + + log_if_fail "Content", $event->{content}; + assert_deeply_eq( + $event->{content}, + $content, + "ban in replacement room", + ); + Future->done(1); + }); + }; + + test "/upgrade moves aliases to the new room", requires => [ $main::HOMESERVER_INFO[0], From 956ea4a80277417364e146110e55231155a918f8 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 14 Feb 2019 13:53:01 +0000 Subject: [PATCH 2/6] Fix string --- tests/30rooms/60version_upgrade.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/30rooms/60version_upgrade.pl b/tests/30rooms/60version_upgrade.pl index bdadb23c6..7d3cedd9a 100644 --- a/tests/30rooms/60version_upgrade.pl +++ b/tests/30rooms/60version_upgrade.pl @@ -426,7 +426,7 @@ sub upgrade_room_synced { $creator, $room_id, type => "m.room.member", content => $content, - state_key => "@bob:matrix.org", + state_key => '@bob:matrix.org', )->then( sub { matrix_sync( $creator ); })->then( sub { @@ -446,7 +446,7 @@ sub upgrade_room_synced { my $room = $sync_body->{rooms}{join}{$new_room_id}; my $event = first { - $_->{type} eq "m.room.member" && $_->{state_key} eq "@bob:matrix.org", + $_->{type} eq "m.room.member" && $_->{state_key} eq '@bob:matrix.org', } @{ $room->{timeline}->{events} }; log_if_fail "Content", $event->{content}; From 02dcfdb5519422f2f7d9820e5e7ea5c9cdcebbc3 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 14 Feb 2019 14:15:35 +0000 Subject: [PATCH 3/6] fix content --- tests/30rooms/60version_upgrade.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/30rooms/60version_upgrade.pl b/tests/30rooms/60version_upgrade.pl index 7d3cedd9a..38d6b5a1e 100644 --- a/tests/30rooms/60version_upgrade.pl +++ b/tests/30rooms/60version_upgrade.pl @@ -418,7 +418,7 @@ sub upgrade_room_synced { my ( $creator, $room_id ) = @_; my ( $new_room_id ); - my $content => { + my $content = { membership => "ban", }; From 61bafe92d03027835236ab9a602962da6067974f Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 7 Mar 2019 14:50:10 +0000 Subject: [PATCH 4/6] Use await_sync method instead --- tests/10apidoc/09synced.pl | 25 +++++++++++++++++++++++++ tests/30rooms/60version_upgrade.pl | 25 +++++++++++-------------- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/tests/10apidoc/09synced.pl b/tests/10apidoc/09synced.pl index df1add021..dcfe8131b 100644 --- a/tests/10apidoc/09synced.pl +++ b/tests/10apidoc/09synced.pl @@ -6,6 +6,7 @@ sync_timeline_contains await_sync await_sync_timeline_contains + await_sync_timeline_or_state_contains await_sync_presence_contains ); @@ -181,6 +182,30 @@ sub await_sync_timeline_contains { ) } +=head2 await_sync_timeline_or_state_contains + +Waits for something to appear in a the timeline or the state of a particular +room, see await_sync for details. + +The C function gets given individual events. + +=cut + +sub await_sync_timeline_or_state_contains { + my ( $user, $room_id, %params ) = @_; + + my $check = delete $params{check} or die "Must supply a 'check' param"; + + await_sync( $user, + check => sub { + my ( $body ) = @_; + + sync_timeline_contains( $body, $room_id, $check ) or sync_room_contains( $body, $room_id, "state", $check ) + }, + %params, + ) +} + =head2 await_sync_presence_contains Waits for presence events to come down sync, see await_sync for details. diff --git a/tests/30rooms/60version_upgrade.pl b/tests/30rooms/60version_upgrade.pl index 38d6b5a1e..13384a860 100644 --- a/tests/30rooms/60version_upgrade.pl +++ b/tests/30rooms/60version_upgrade.pl @@ -437,24 +437,21 @@ sub upgrade_room_synced { })->then( sub { ( $new_room_id, ) = @_; - matrix_sync_again( $creator ); - })->then( sub { - my ( $sync_body ) = @_; + await_sync_timeline_or_state_contains( $creator, $new_room_id, check => sub { + my ( $event ) = @_; - log_if_fail "sync body", $sync_body; + return unless $event->{type} eq "m.room.member"; + return unless $event->{state_key} eq "\@bob:matrix.org"; - my $room = $sync_body->{rooms}{join}{$new_room_id}; + assert_deeply_eq( + $event->{content}, + $content, + "no ban in replacement room", + ); - my $event = first { - $_->{type} eq "m.room.member" && $_->{state_key} eq '@bob:matrix.org', - } @{ $room->{timeline}->{events} }; + return 1; + }); - log_if_fail "Content", $event->{content}; - assert_deeply_eq( - $event->{content}, - $content, - "ban in replacement room", - ); Future->done(1); }); }; From 8d71a741c3657eea9cceea124b708c4570da60ec Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 7 Mar 2019 14:51:06 +0000 Subject: [PATCH 5/6] use || instead of or --- tests/10apidoc/09synced.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/10apidoc/09synced.pl b/tests/10apidoc/09synced.pl index dcfe8131b..c35df4935 100644 --- a/tests/10apidoc/09synced.pl +++ b/tests/10apidoc/09synced.pl @@ -200,7 +200,7 @@ sub await_sync_timeline_or_state_contains { check => sub { my ( $body ) = @_; - sync_timeline_contains( $body, $room_id, $check ) or sync_room_contains( $body, $room_id, "state", $check ) + sync_timeline_contains( $body, $room_id, $check ) || sync_room_contains( $body, $room_id, "state", $check ) }, %params, ) From 65b81916c432ef01c1708be62250c8cdcf0d4b70 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 7 Mar 2019 15:40:41 +0000 Subject: [PATCH 6/6] Don't pass regardless --- tests/30rooms/60version_upgrade.pl | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/30rooms/60version_upgrade.pl b/tests/30rooms/60version_upgrade.pl index 13384a860..520ad0521 100644 --- a/tests/30rooms/60version_upgrade.pl +++ b/tests/30rooms/60version_upgrade.pl @@ -451,8 +451,6 @@ sub upgrade_room_synced { return 1; }); - - Future->done(1); }); };