Group invite link epoch support.

This commit is contained in:
Alan Evans
2020-08-18 14:26:09 -03:00
committed by Greyson Parrelli
parent e006306036
commit 477bb45df7
31 changed files with 2366 additions and 205 deletions

View File

@@ -143,7 +143,7 @@ public final class GroupsV2UpdateMessageProducerTest {
.addMember(you)
.build();
assertThat(describeChange(change), is(singletonList("You joined the group.")));
assertThat(describeChange(change), is(singletonList("You joined the group via the sharable group link.")));
}
@Test
@@ -152,7 +152,7 @@ public final class GroupsV2UpdateMessageProducerTest {
.addMember(bob)
.build();
assertThat(describeChange(change), is(singletonList("Bob joined the group.")));
assertThat(describeChange(change), is(singletonList("Bob joined the group via the sharable group link.")));
}
@Test
@@ -209,7 +209,7 @@ public final class GroupsV2UpdateMessageProducerTest {
.addMember(you)
.build();
assertThat(describeChange(change), is(Arrays.asList("You joined the group.", "You added Alice.")));
assertThat(describeChange(change), is(Arrays.asList("You joined the group via the sharable group link.", "You added Alice.")));
}
// Member removals
@@ -838,6 +838,257 @@ public final class GroupsV2UpdateMessageProducerTest {
assertThat(describeChange(change), is(singletonList("Who can edit group membership has been changed to \"Only admins\".")));
}
// Group link access change
@Test
public void you_changed_group_link_access_to_any() {
DecryptedGroupChange change = changeBy(you)
.inviteLinkAccess(AccessControl.AccessRequired.ANY)
.build();
assertThat(describeChange(change), is(singletonList("You turned on the sharable group link.")));
}
@Test
public void you_changed_group_link_access_to_administrator_approval() {
DecryptedGroupChange change = changeBy(you)
.inviteLinkAccess(AccessControl.AccessRequired.ADMINISTRATOR)
.build();
assertThat(describeChange(change), is(singletonList("You turned on the sharable group link with admin approval.")));
}
@Test
public void you_turned_off_group_link_access() {
DecryptedGroupChange change = changeBy(you)
.inviteLinkAccess(AccessControl.AccessRequired.UNSATISFIABLE)
.build();
assertThat(describeChange(change), is(singletonList("You turned off the sharable group link.")));
}
@Test
public void member_changed_group_link_access_to_any() {
DecryptedGroupChange change = changeBy(alice)
.inviteLinkAccess(AccessControl.AccessRequired.ANY)
.build();
assertThat(describeChange(change), is(singletonList("Alice turned on the sharable group link.")));
}
@Test
public void member_changed_group_link_access_to_administrator_approval() {
DecryptedGroupChange change = changeBy(bob)
.inviteLinkAccess(AccessControl.AccessRequired.ADMINISTRATOR)
.build();
assertThat(describeChange(change), is(singletonList("Bob turned on the sharable group link with admin approval.")));
}
@Test
public void member_turned_off_group_link_access() {
DecryptedGroupChange change = changeBy(alice)
.inviteLinkAccess(AccessControl.AccessRequired.UNSATISFIABLE)
.build();
assertThat(describeChange(change), is(singletonList("Alice turned off the sharable group link.")));
}
@Test
public void unknown_changed_group_link_access_to_any() {
DecryptedGroupChange change = changeByUnknown()
.inviteLinkAccess(AccessControl.AccessRequired.ANY)
.build();
assertThat(describeChange(change), is(singletonList("The sharable group link has been turned on.")));
}
@Test
public void unknown_changed_group_link_access_to_administrator_approval() {
DecryptedGroupChange change = changeByUnknown()
.inviteLinkAccess(AccessControl.AccessRequired.ADMINISTRATOR)
.build();
assertThat(describeChange(change), is(singletonList("The sharable group link has been turned on with admin approval.")));
}
@Test
public void unknown_turned_off_group_link_access() {
DecryptedGroupChange change = changeByUnknown()
.inviteLinkAccess(AccessControl.AccessRequired.UNSATISFIABLE)
.build();
assertThat(describeChange(change), is(singletonList("The sharable group link has been turned off.")));
}
// Group link reset
@Test
public void you_reset_group_link() {
DecryptedGroupChange change = changeBy(you)
.resetGroupLink()
.build();
assertThat(describeChange(change), is(singletonList("You reset the sharable group link.")));
}
@Test
public void member_reset_group_link() {
DecryptedGroupChange change = changeBy(alice)
.resetGroupLink()
.build();
assertThat(describeChange(change), is(singletonList("Alice reset the sharable group link.")));
}
@Test
public void unknown_reset_group_link() {
DecryptedGroupChange change = changeByUnknown()
.resetGroupLink()
.build();
assertThat(describeChange(change), is(singletonList("The sharable group link has been reset.")));
}
/**
* When the group link is turned on and reset in the same change, assume this is the first time
* the link password it being set and do not show reset message.
*/
@Test
public void member_changed_group_link_access_to_on_and_reset() {
DecryptedGroupChange change = changeBy(alice)
.inviteLinkAccess(AccessControl.AccessRequired.ANY)
.resetGroupLink()
.build();
assertThat(describeChange(change), is(singletonList("Alice turned on the sharable group link.")));
}
/**
* When the group link is turned on and reset in the same change, assume this is the first time
* the link password it being set and do not show reset message.
*/
@Test
public void you_changed_group_link_access_to_on_and_reset() {
DecryptedGroupChange change = changeBy(you)
.inviteLinkAccess(AccessControl.AccessRequired.ADMINISTRATOR)
.resetGroupLink()
.build();
assertThat(describeChange(change), is(singletonList("You turned on the sharable group link with admin approval.")));
}
@Test
public void you_changed_group_link_access_to_off_and_reset() {
DecryptedGroupChange change = changeBy(you)
.inviteLinkAccess(AccessControl.AccessRequired.UNSATISFIABLE)
.resetGroupLink()
.build();
assertThat(describeChange(change), is(Arrays.asList("You turned off the sharable group link.", "You reset the sharable group link.")));
}
// Group link request
@Test
public void you_requested_to_join_the_group() {
DecryptedGroupChange change = changeBy(you)
.requestJoin()
.build();
assertThat(describeChange(change), is(singletonList("You sent a request to join the group.")));
}
@Test
public void member_requested_to_join_the_group() {
DecryptedGroupChange change = changeBy(bob)
.requestJoin()
.build();
assertThat(describeChange(change), is(singletonList("Bob requested to join via the sharable group link.")));
}
@Test
public void unknown_requested_to_join_the_group() {
DecryptedGroupChange change = changeByUnknown()
.requestJoin(alice)
.build();
assertThat(describeChange(change), is(singletonList("Alice requested to join via the sharable group link.")));
}
@Test
public void member_approved_your_join_request() {
DecryptedGroupChange change = changeBy(bob)
.approveRequest(you)
.build();
assertThat(describeChange(change), is(singletonList("Bob approved your request to join the group.")));
}
@Test
public void member_approved_another_join_request() {
DecryptedGroupChange change = changeBy(alice)
.approveRequest(bob)
.build();
assertThat(describeChange(change), is(singletonList("Alice approved a request to join the group from Bob.")));
}
@Test
public void unknown_approved_your_join_request() {
DecryptedGroupChange change = changeByUnknown()
.approveRequest(you)
.build();
assertThat(describeChange(change), is(singletonList("Your request to join the group has been approved.")));
}
@Test
public void unknown_approved_another_join_request() {
DecryptedGroupChange change = changeByUnknown()
.approveRequest(bob)
.build();
assertThat(describeChange(change), is(singletonList("A request to join the group from Bob has been approved.")));
}
@Test
public void member_denied_another_join_request() {
DecryptedGroupChange change = changeBy(alice)
.denyRequest(bob)
.build();
assertThat(describeChange(change), is(singletonList("Alice denied a request to join the group from Bob.")));
}
@Test
public void member_denied_your_join_request() {
DecryptedGroupChange change = changeBy(alice)
.denyRequest(you)
.build();
assertThat(describeChange(change), is(singletonList("Your request to join the group has been denied by an admin.")));
}
@Test
public void unknown_denied_your_join_request() {
DecryptedGroupChange change = changeByUnknown()
.denyRequest(you)
.build();
assertThat(describeChange(change), is(singletonList("Your request to join the group has been denied by an admin.")));
}
@Test
public void unknown_denied_another_join_request() {
DecryptedGroupChange change = changeByUnknown()
.denyRequest(bob)
.build();
assertThat(describeChange(change), is(singletonList("A request to join the group from Bob has been denied.")));
}
// Multiple changes
@Test