Skip to content

Commit

Permalink
Merge branch 'release-v1.15.0' of github.com:matrix-org/sytest into d…
Browse files Browse the repository at this point in the history
…insic-release-v1.15.x

* 'release-v1.15.0' of github.com:matrix-org/sytest:
  Use the standardized form for SSO login via user interactive auth. (#884)
  Add tests for room version 6. (#869)
  Add a retry_until_success around room join (#882)
  Have frontend proxy persist events when using redis (#870)
  Squashed commit of the following:
  Fix link to Synapse's contributing docs. (#879)
  • Loading branch information
anoadragon453 committed Jun 24, 2020
2 parents 2da8293 + 1284057 commit 52a4818
Show file tree
Hide file tree
Showing 30 changed files with 811 additions and 142 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Contributing code to SyTest
===========================

sytest follows the same pattern as https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.rst
sytest follows the same pattern as https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md
3 changes: 1 addition & 2 deletions lib/SyTest/Federation/Client.pm
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ use SyTest::Assertions qw( :all );
use URI::Escape qw( uri_escape );

use constant SUPPORTED_ROOM_VERSIONS => [qw(
1 2 3 4 5
org.matrix.msc2260
1 2 3 4 5 6
)];

sub configure
Expand Down
5 changes: 4 additions & 1 deletion lib/SyTest/Federation/Datastore.pm
Original file line number Diff line number Diff line change
Expand Up @@ -268,10 +268,13 @@ sub get_backfill_events
my $event = eval { $self->get_event( $id ) }
or next;

my $room = $self->get_room( $event->{room_id} ) or
croak "Unknown room $event->{room_id}";

push @events, $event;

push @event_ids, grep { !$exclude{$_} }
map { $_->[0] } @{ $event->{prev_events} };
@{ $room->event_ids_from_refs( $event->{prev_events} ) };

# Don't include this event if we encounter it again
$exclude{$id} = 1;
Expand Down
4 changes: 2 additions & 2 deletions lib/SyTest/Homeserver/Dendrite.pm
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ sub _get_config
output_room_event => 'roomserverOutput',
output_client_data => 'clientapiOutput',
user_updates => 'userUpdates',
output_typing_event => 'typingServerOutput',
user_updates => 'userUpdates',
output_typing_event => 'eduServerTypingOutput',
output_send_to_device_event => 'eduServerSendToDeviceOutput',
},
},

Expand Down
14 changes: 13 additions & 1 deletion lib/SyTest/Homeserver/Synapse.pm
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,17 @@ sub start
},
) : (),

instance_map => {
"frontend_proxy1" => {
host => "$bind_host",
port => $self->{ports}{frontend_proxy},
},
},

stream_writers => {
events => $self->{redis_host} ne '' ? "frontend_proxy1" : "master",
},

# We use a high limit so the limit is never reached, but enabling the
# limit ensures that the code paths get hit. This helps testing the
# feature with worker mode.
Expand Down Expand Up @@ -997,6 +1008,7 @@ sub wrap_synapse_command
{
my $frontend_proxy_config_path = $self->write_yaml_file( "frontend_proxy.yaml" => {
"worker_app" => "synapse.app.frontend_proxy",
"worker_name" => "frontend_proxy1",
"worker_pid_file" => "$hsdir/frontend_proxy.pid",
"worker_log_config" => $self->configure_logger("frontend_proxy"),
"worker_replication_host" => "$bind_host",
Expand All @@ -1006,7 +1018,7 @@ sub wrap_synapse_command
"worker_listeners" => [
{
type => "http",
resources => [{ names => ["client"] }],
resources => [{ names => ["client", "replication"] }],
port => $self->{ports}{frontend_proxy},
bind_address => $bind_host,
},
Expand Down
10 changes: 10 additions & 0 deletions tests/00expect_http_fail.pl
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,13 @@ sub expect_m_not_found
);
}
push @EXPORT, qw( expect_m_not_found );


sub expect_m_bad_json
{
my $f = shift;
return expect_matrix_error(
$f, 400, 'M_BAD_JSON',
);
}
push @EXPORT, qw( expect_m_bad_json );
4 changes: 2 additions & 2 deletions tests/10apidoc/13ui-auth.pl
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ sub make_ticket_request
assert_json_list $body->{flows};

# Note that this uses the unstable value.
die "org.matrix.login.sso was not listed" unless
any { $_->{stages}[0] eq "org.matrix.login.sso" } @{ $body->{flows} };
die "m.login.sso was not listed" unless
any { $_->{stages}[0] eq "m.login.sso" } @{ $body->{flows} };

Future->done( 1 );
});
Expand Down
4 changes: 3 additions & 1 deletion tests/10apidoc/33room-members.pl
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,8 @@ sub matrix_create_and_join_room
} @local_members,
)
})->then( sub {
log_if_fail "Created room_id=$room_id";

Future->done( $room_id,
( $with_alias ? ( $room_alias_fullname ) : () )
);
Expand Down Expand Up @@ -660,7 +662,7 @@ sub matrix_join_room_synced

matrix_do_and_wait_for_sync( $user,
do => sub {
matrix_join_room( $user, $room_id_or_alias, %params );
retry_until_success { matrix_join_room( $user, $room_id_or_alias, %params ) }
},
check => sub { exists $_[0]->{rooms}{join}{$_[1]} },
);
Expand Down
2 changes: 1 addition & 1 deletion tests/10apidoc/36room-levels.pl
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ sub matrix_change_room_power_levels
my ( $levels ) = @_;
$func->( $levels );

matrix_put_room_state( $user, $room_id, type => "m.room.power_levels",
matrix_put_room_state_synced( $user, $room_id, type => "m.room.power_levels",
content => $levels,
);
});
Expand Down
36 changes: 21 additions & 15 deletions tests/30rooms/05aliases.pl
Original file line number Diff line number Diff line change
Expand Up @@ -219,15 +219,19 @@
$_[0]->{events}->{'m.room.aliases'} = 50;
},
)->then( sub {
matrix_get_room_state( $creator, $room_id,
type => "m.room.power_levels",
);
})->then( sub {
my ( $body ) = @_;
log_if_fail "power levels", $body;
retry_until_success {
matrix_get_room_state( $creator, $room_id,
type => "m.room.power_levels",
)->then( sub {
my ( $body ) = @_;
log_if_fail "power levels", $body;

assert_eq( $body->{events}->{'m.room.aliases'}, 50 );
assert_eq( $body->{events}->{'m.room.aliases'}, 50 );

Future->done( 1 )
})
}
})->then( sub {
do_request_json_for( $other_user,
method => "PUT",
uri => "/r0/directory/room/$alias",
Expand Down Expand Up @@ -364,7 +368,7 @@ sub _test_can_create_and_delete_alias {
content => { room_id => $room_id },
)
})->then( sub {
matrix_put_room_state( $creator, $room_id,
matrix_put_room_state_synced( $creator, $room_id,
type => "m.room.canonical_alias",
content => { alias => $room_alias }
)
Expand All @@ -376,15 +380,17 @@ sub _test_can_create_and_delete_alias {
content => {},
)
})->then( sub {
matrix_get_room_state( $creator, $room_id,
type => "m.room.canonical_alias",
)
})->then( sub {
my ( $body ) = @_;
retry_until_success {
matrix_get_room_state( $creator, $room_id,
type => "m.room.canonical_alias",
)->then( sub {
my ( $body ) = @_;

not defined $body->{alias} or die "Expected canonical alias to be empty";
not defined $body->{alias} or die "Expected canonical alias to be empty";

Future->done( 1 );
Future->done( 1 );
})
}
})
};

Expand Down
2 changes: 1 addition & 1 deletion tests/30rooms/06invite.pl
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ sub invited_user_can_reject_invite

matrix_invite_user_to_room( $creator, $invitee, $room_id )
->then( sub {
matrix_leave_room( $invitee, $room_id )
matrix_leave_room_synced( $invitee, $room_id )
})->then( sub {
matrix_get_room_state( $creator, $room_id,
type => "m.room.member",
Expand Down
40 changes: 24 additions & 16 deletions tests/30rooms/07ban.pl
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,19 @@

content => { user_id => $banned_user->user_id, reason => "testing" },
)->then( sub {
matrix_get_room_state( $creator, $room_id,
type => "m.room.member",
state_key => $banned_user->user_id,
)
retry_until_success {
matrix_get_room_state( $creator, $room_id,
type => "m.room.member",
state_key => $banned_user->user_id,
)->then( sub {
my ( $body ) = @_;
$body->{membership} eq "ban" or
die "Expected banned user membership to be 'ban'";

Future->done( 1 )
})
}
})->then( sub {
my ( $body ) = @_;
$body->{membership} eq "ban" or
die "Expected banned user membership to be 'ban'";

matrix_join_room( $banned_user, $room_id )
->main::expect_http_403; # Must be unbanned first
})->then( sub {
Expand Down Expand Up @@ -75,15 +79,19 @@

content => { user_id => $banned_user->user_id, reason => "testing" },
)->then( sub {
matrix_get_room_state( $creator, $room_id,
type => "m.room.member",
state_key => $banned_user->user_id,
)
retry_until_success {
matrix_get_room_state( $creator, $room_id,
type => "m.room.member",
state_key => $banned_user->user_id,
)->then( sub {
my ( $body ) = @_;
$body->{membership} eq "ban" or
die "Expected banned user membership to be 'ban'";

Future->done( 1 )
})
}
})->then( sub {
my ( $body ) = @_;
$body->{membership} eq "ban" or
die "Expected banned user membership to be 'ban'";

repeat_until_true {
matrix_get_room_state( $banned_user, $room_id,
type => "m.room.member",
Expand Down
27 changes: 25 additions & 2 deletions tests/30rooms/08levels.pl
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@

sub lockeddown_room_fixture
{
my ( %options ) = @_;

fixture(
requires => [ $creator_fixture, $user_fixture,
qw( can_change_power_levels ) ],

setup => sub {
my ( $creator, $test_user ) = @_;

matrix_create_and_join_room( [ $creator, $test_user ] )
matrix_create_and_join_room( [ $creator, $test_user ], %options )
->then( sub {
my ( $room_id ) = @_;

Expand Down Expand Up @@ -154,6 +156,27 @@ sub test_powerlevel

$levels->{$levelname} = 10000000;
})->main::expect_http_403
})->SyTest::pass_on_done( "Fails at setting 75" );
})->SyTest::pass_on_done( "Fails at setting 10000000" );
};
}

multi_test "Users cannot set notifications powerlevel higher than their own",
requires => [ $creator_fixture, $user_fixture, lockeddown_room_fixture( room_version => "6" ),
qw( can_change_power_levels )],

do => sub {
my ( $user, undef, $room_id ) = @_;

matrix_change_room_power_levels( $user, $room_id, sub {
my ( $levels ) = @_;

$levels->{notifications}{room} = 25;
})->SyTest::pass_on_done( "Succeeds at setting 25" )
->then( sub {
matrix_change_room_power_levels( $user, $room_id, sub {
my ( $levels ) = @_;

$levels->{notifications}{room} = 10000000;
})->main::expect_http_403
})->SyTest::pass_on_done( "Fails at setting 10000000" );
};
54 changes: 32 additions & 22 deletions tests/30rooms/12thirdpartyinvite.pl
Original file line number Diff line number Diff line change
Expand Up @@ -78,16 +78,18 @@
},
);
})->then( sub {
matrix_get_room_state( $inviter, $room_id,
type => "m.room.member",
state_key => $invitee_mxid,
);
})->on_done( sub {
my ( $body ) = @_;

log_if_fail "Body", $body;
assert_eq( $body->{membership}, "invite",
'invited user membership' );
retry_until_success {
matrix_get_room_state( $inviter, $room_id,
type => "m.room.member",
state_key => $invitee_mxid,
)->on_done( sub {
my ( $body ) = @_;

log_if_fail "Body", $body;
assert_eq( $body->{membership}, "invite",
'invited user membership' );
})
}
});
};

Expand Down Expand Up @@ -236,13 +238,17 @@ sub can_invite_unbound_3pid
log_if_fail "m.room.member invite", $body;
assert_eq( $body->{third_party_invite}{display_name}, 'Bob', 'invite display name' );

matrix_join_room( $invitee, $room_id )
retry_until_success {
matrix_join_room( $invitee, $room_id )
}
})->then( sub {
matrix_get_room_state( $inviter, $room_id,
type => "m.room.member",
state_key => $invitee->user_id,
)
})->followed_by( assert_membership( "join" ) );
retry_until_success {
matrix_get_room_state( $inviter, $room_id,
type => "m.room.member",
state_key => $invitee->user_id,
)->followed_by( assert_membership( "join" ) )
}
})
}

test "Can invite unbound 3pid over federation with users from both servers",
Expand Down Expand Up @@ -289,7 +295,9 @@ sub can_invite_unbound_3pid
log_if_fail "m.room.member invite", $body;
assert_eq( $body->{third_party_invite}{display_name}, 'Bob', 'invite display name' );

matrix_join_room( $invitee, $room_id )
retry_until_success {
matrix_join_room( $invitee, $room_id )
}
})->then( sub {
await_event_for( $inviter, filter => sub {
my ( $event ) = @_;
Expand All @@ -301,11 +309,13 @@ sub can_invite_unbound_3pid
return 1;
})
})->then( sub {
matrix_get_room_state( $inviter, $room_id,
type => "m.room.member",
state_key => $invitee->user_id,
)
})->followed_by( assert_membership( "join" ) );
retry_until_success {
matrix_get_room_state( $inviter, $room_id,
type => "m.room.member",
state_key => $invitee->user_id,
)->followed_by( assert_membership( "join" ) )
}
});
};

test "Can accept unbound 3pid invite after inviter leaves",
Expand Down
Loading

0 comments on commit 52a4818

Please sign in to comment.