Skip to content

Commit

Permalink
Merge pull request #187 from matrix-org/erikj/presence
Browse files Browse the repository at this point in the history
Fix tests for new presence implementation.
  • Loading branch information
erikjohnston committed Feb 19, 2016
2 parents 4ab08b0 + 531b6fb commit b8ef824
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 180 deletions.
112 changes: 0 additions & 112 deletions tests/20profile-events.pl

This file was deleted.

2 changes: 2 additions & 0 deletions tests/21presence-events.pl
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@
invite => [ $friend->user_id ],
}
)->then( sub {
flush_events_for( $user )
})->then( sub {
matrix_set_presence_status( $friend, "online",
status_msg => $friend_status,
);
Expand Down
60 changes: 1 addition & 59 deletions tests/30rooms/02members-local.pl
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@

assert_json_keys( $presence{ $first_user->user_id }, qw( type content ));
assert_json_keys( $presence{ $first_user->user_id }{content},
qw( presence last_active_ago ));
qw( presence ));

# No status_msg or last_active_ago - see SYT-34

Expand Down Expand Up @@ -157,61 +157,3 @@
});
} @all_users );
};

test "New room members see first user's profile information in global initialSync",
requires => [ $creator_fixture, $local_user_fixture, $room_fixture,
qw( can_initial_sync can_set_displayname can_set_avatar_url )],

check => sub {
my ( $first_user, $local_user, $room_id ) = @_;

matrix_initialsync( $local_user )->then( sub {
my ( $body ) = @_;

assert_json_keys( $body, qw( presence ));
assert_json_list( $body->{presence} );

my %presence_by_userid = map { $_->{content}{user_id} => $_ } @{ $body->{presence} };

my $presence = $presence_by_userid{ $first_user->user_id } or
die "Failed to find presence of first user";

assert_json_keys( $presence, qw( content ));
assert_json_keys( my $content = $presence->{content},
qw( user_id displayname avatar_url ));

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

test "New room members see first user's profile information in per-room initialSync",
requires => [ $creator_fixture, $local_user_fixture, $room_fixture,
qw( can_room_initial_sync can_set_displayname can_set_avatar_url )],

check => sub {
my ( $first_user, $local_user, $room_id ) = @_;

matrix_initialsync_room ( $local_user, $room_id )
->then( sub {
my ( $body ) = @_;

assert_json_keys( $body, qw( state ));
assert_json_list( $body->{state} );

my $first_member = first {
$_->{type} eq "m.room.member" and $_->{state_key} eq $first_user->user_id
} @{ $body->{state} }
or die "Failed to find first user in m.room.member state";

assert_json_keys( $first_member, qw( user_id content ));
assert_json_keys( my $content = $first_member->{content},
qw( displayname avatar_url ));

length $content->{displayname} or
die "First user does not have profile displayname\n";
length $content->{avatar_url} or
die "First user does not have profile avatar_url\n";

Future->done(1);
});
};
2 changes: 1 addition & 1 deletion tests/30rooms/03members-remote.pl
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@

assert_json_keys( $presence, qw( content ));
assert_json_keys( my $content = $presence->{content},
qw( user_id displayname avatar_url ));
qw( user_id presence ));

Future->done(1);
});
Expand Down
103 changes: 103 additions & 0 deletions tests/31sync/03joined.pl
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,106 @@
Future->done(1);
});
};


test "Newly joined room includes presence in incremental sync",
requires => [ local_user_fixtures( 2, with_events => 0 ),
qw( can_sync )],

check => sub {
my ( $user_a, $user_b ) = @_;

my $room_id;

matrix_create_room( $user_a )
->then( sub {
( $room_id ) = @_;

matrix_sync( $user_b );
})->then( sub {
matrix_join_room( $user_b, $room_id );
})->then( sub {
matrix_sync_again( $user_b );
})->then( sub {
my ( $body ) = @_;

assert_json_keys( $body, qw( presence ));
assert_json_keys( $body->{presence}, qw( events ));
assert_json_list( $body->{presence}{events} );

my $presence = $body->{presence}{events};

assert_eq( scalar @$presence, 1, "number of presence events" );

my $presence_event = $presence->[0];

assert_json_keys( $presence_event, qw( type sender content ) );
assert_eq( $presence_event->{type}, "m.presence" );
assert_eq( $presence_event->{sender}, $user_a->user_id );

matrix_sync_again( $user_b );
})->then( sub {
my ( $body ) = @_;

assert_json_keys( $body, qw( presence ));
assert_json_keys( $body->{presence}, qw( events ));
assert_json_list( $body->{presence}{events} );

my $presence = $body->{presence}{events};

assert_eq( scalar @$presence, 0, "number of presence events" );

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

test "Get presence for newly joined members in incremental sync",
requires => [ local_user_fixtures( 2, with_events => 0 ),
qw( can_sync )],

check => sub {
my ( $user_a, $user_b ) = @_;

my $room_id;

matrix_create_room( $user_a )
->then( sub {
( $room_id ) = @_;

matrix_sync( $user_a );
})->then( sub {
matrix_join_room( $user_b, $room_id );
})->then( sub {
matrix_sync_again( $user_a );
})->then( sub {
my ( $body ) = @_;

assert_json_keys( $body, qw( presence ));
assert_json_keys( $body->{presence}, qw( events ));
assert_json_list( $body->{presence}{events} );

my $presence = $body->{presence}{events};

assert_eq( scalar @$presence, 1, "number of presence events" );

my $presence_event = $presence->[0];

assert_json_keys( $presence_event, qw( type sender content ) );
assert_eq( $presence_event->{type}, "m.presence" );
assert_eq( $presence_event->{sender}, $user_b->user_id );

matrix_sync_again( $user_a );
})->then( sub {
my ( $body ) = @_;

assert_json_keys( $body, qw( presence ));
assert_json_keys( $body->{presence}, qw( events ));
assert_json_list( $body->{presence}{events} );

my $presence = $body->{presence}{events};

assert_eq( scalar @$presence, 0, "number of presence events" );

Future->done(1);
});
};
3 changes: 3 additions & 0 deletions tests/31sync/05presence.pl
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@
});
})->then( sub {
matrix_sync( $user_a, filter => $filter_id_a );
})->then( sub {
# We sync again so that we get our own presence down.
matrix_sync_again( $user_a, filter => $filter_id_a );
})->then( sub {
# Set user B's presence to online by syncing.
matrix_sync( $user_b, filter => $filter_id_b );
Expand Down
13 changes: 5 additions & 8 deletions tests/40presence.pl
Original file line number Diff line number Diff line change
Expand Up @@ -69,21 +69,18 @@
# right one
$content->{user_id} eq $senduser->user_id or return;

$content->{status_msg} and $content->{status_msg} eq $status_msg
or return;

return 1;
});
};

test "Presence changes to OFFLINE are reported to local room members",
test "Presence changes to UNAVAILABLE are reported to local room members",
requires => [ $senduser_fixture, $local_user_fixture, $room_fixture,
qw( can_set_presence )],

do => sub {
my ( $senduser, $local_user, undef ) = @_;

matrix_set_presence_status( $senduser, "offline" )->then( sub {
matrix_set_presence_status( $senduser, "unavailable" )->then( sub {
Future->needs_all( map {
my $recvuser = $_;

Expand All @@ -94,15 +91,15 @@
my $content = $event->{content};
return unless $content->{user_id} eq $senduser->user_id;

return unless $content->{presence} eq "offline";
return unless $content->{presence} eq "unavailable";

return 1;
})
} $senduser, $local_user );
});
};

test "Presence changes to OFFLINE are reported to remote room members",
test "Presence changes to UNAVAILABLE are reported to remote room members",
requires => [ $senduser_fixture, $remote_user_fixture, $room_fixture,
qw( can_set_presence can_join_remote_room_by_alias )],

Expand All @@ -117,7 +114,7 @@
my $content = $event->{content};
return unless $content->{user_id} eq $senduser->user_id;

return unless $content->{presence} eq "offline";
return unless $content->{presence} eq "unavailable";

return 1;
});
Expand Down

0 comments on commit b8ef824

Please sign in to comment.