mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 16:49:40 +01:00
Update Groups.proto to match shared spec.
This commit is contained in:
@@ -7,9 +7,9 @@ import assertk.assertions.isNull
|
||||
import okio.ByteString
|
||||
import org.junit.Test
|
||||
import org.signal.core.models.ServiceId
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMember
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMemberRemoval
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMember
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMemberRemoval
|
||||
import org.whispersystems.signalservice.internal.util.Util
|
||||
import java.util.UUID
|
||||
|
||||
|
||||
@@ -2,20 +2,20 @@ package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.Member;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedModifyMemberRole;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMemberRemoval;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.Member;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedModifyMemberRole;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMemberRemoval;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -2,12 +2,12 @@ package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.signal.storageservice.protos.groups.GroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.GroupChange;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -69,7 +69,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_add_pending_members_field_7() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.addPendingMembers(List.of(new GroupChange.Actions.AddPendingMemberAction()))
|
||||
.addMembersPendingProfileKey(List.of(new GroupChange.Actions.AddMemberPendingProfileKeyAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -78,7 +78,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_delete_pending_members_field_8() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.deletePendingMembers(List.of(new GroupChange.Actions.DeletePendingMemberAction()))
|
||||
.deleteMembersPendingProfileKey(List.of(new GroupChange.Actions.DeleteMemberPendingProfileKeyAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -87,7 +87,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_promote_delete_pending_members_field_9() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.promotePendingMembers(List.of(new GroupChange.Actions.PromotePendingMemberAction()))
|
||||
.promoteMembersPendingProfileKey(List.of(new GroupChange.Actions.PromoteMemberPendingProfileKeyAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -114,7 +114,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_modify_disappearing_message_timer_field_12() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.modifyDisappearingMessagesTimer(new GroupChange.Actions.ModifyDisappearingMessagesTimerAction())
|
||||
.modifyDisappearingMessageTimer(new GroupChange.Actions.ModifyDisappearingMessageTimerAction())
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -150,7 +150,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_add_requesting_members_field_16() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.addRequestingMembers(List.of(new GroupChange.Actions.AddRequestingMemberAction()))
|
||||
.addMembersPendingAdminApproval(List.of(new GroupChange.Actions.AddMemberPendingAdminApprovalAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -159,7 +159,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_delete_requesting_members_field_17() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.deleteRequestingMembers(List.of(new GroupChange.Actions.DeleteRequestingMemberAction()))
|
||||
.deleteMembersPendingAdminApproval(List.of(new GroupChange.Actions.DeleteMemberPendingAdminApprovalAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -168,7 +168,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_promote_requesting_members_field_18() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.promoteRequestingMembers(List.of(new GroupChange.Actions.PromoteRequestingMemberAction()))
|
||||
.promoteMembersPendingAdminApproval(List.of(new GroupChange.Actions.PromoteMemberPendingAdminApprovalAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -195,7 +195,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_modify_description_field_21() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.modifyAnnouncementsOnly(new GroupChange.Actions.ModifyAnnouncementsOnlyAction())
|
||||
.modify_announcements_only(new GroupChange.Actions.ModifyAnnouncementsOnlyAction())
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -204,7 +204,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_add_banned_member_field_22() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.addBannedMembers(List.of(new GroupChange.Actions.AddBannedMemberAction()))
|
||||
.add_members_banned(List.of(new GroupChange.Actions.AddMemberBannedAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -213,7 +213,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_delete_banned_member_field_23() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.deleteBannedMembers(List.of(new GroupChange.Actions.DeleteBannedMemberAction()))
|
||||
.delete_members_banned(List.of(new GroupChange.Actions.DeleteMemberBannedAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
@@ -222,7 +222,7 @@ public final class GroupChangeUtil_changeIsEmpty_Test {
|
||||
@Test
|
||||
public void not_empty_with_promote_pending_pni_aci_members_field_24() {
|
||||
GroupChange.Actions actions = new GroupChange.Actions.Builder()
|
||||
.promotePendingPniAciMembers(List.of(new GroupChange.Actions.PromotePendingPniAciMemberProfileKeyAction()))
|
||||
.promote_members_pending_pni_aci_profile_key(List.of(new GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction()))
|
||||
.build();
|
||||
|
||||
assertFalse(GroupChangeUtil.changeIsEmpty(actions));
|
||||
|
||||
@@ -2,17 +2,17 @@ package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.BannedMember;
|
||||
import org.signal.storageservice.protos.groups.GroupChange;
|
||||
import org.signal.storageservice.protos.groups.Member;
|
||||
import org.signal.storageservice.protos.groups.PendingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.MemberBanned;
|
||||
import org.signal.storageservice.storage.protos.groups.GroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.Member;
|
||||
import org.signal.storageservice.storage.protos.groups.MemberPendingProfileKey;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
|
||||
@@ -250,15 +250,15 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.addPendingMembers(List.of(new GroupChange.Actions.AddPendingMemberAction.Builder().added(new PendingMember.Builder().member(encryptedMember(member1, randomProfileKey())).build()).build(),
|
||||
new GroupChange.Actions.AddPendingMemberAction.Builder().added(new PendingMember.Builder().member(encryptedMember(member2, profileKey2)).build()).build(),
|
||||
new GroupChange.Actions.AddPendingMemberAction.Builder().added(new PendingMember.Builder().member(encryptedMember(member3, randomProfileKey())).build()).build()))
|
||||
.addMembersPendingProfileKey(List.of(new GroupChange.Actions.AddMemberPendingProfileKeyAction.Builder().added(new MemberPendingProfileKey.Builder().member(encryptedMember(member1, randomProfileKey())).build()).build(),
|
||||
new GroupChange.Actions.AddMemberPendingProfileKeyAction.Builder().added(new MemberPendingProfileKey.Builder().member(encryptedMember(member2, profileKey2)).build()).build(),
|
||||
new GroupChange.Actions.AddMemberPendingProfileKeyAction.Builder().added(new MemberPendingProfileKey.Builder().member(encryptedMember(member3, randomProfileKey())).build()).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.addPendingMembers(List.of(new GroupChange.Actions.AddPendingMemberAction.Builder().added(new PendingMember.Builder().member(encryptedMember(member2, profileKey2)).build()).build()))
|
||||
.addMembersPendingProfileKey(List.of(new GroupChange.Actions.AddMemberPendingProfileKeyAction.Builder().added(new MemberPendingProfileKey.Builder().member(encryptedMember(member2, profileKey2)).build()).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -280,15 +280,15 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.deletePendingMembers(List.of(new GroupChange.Actions.DeletePendingMemberAction.Builder().deletedUserId(encrypt(member1)).build(),
|
||||
new GroupChange.Actions.DeletePendingMemberAction.Builder().deletedUserId(encrypt(member2)).build(),
|
||||
new GroupChange.Actions.DeletePendingMemberAction.Builder().deletedUserId(encrypt(member3)).build()))
|
||||
.deleteMembersPendingProfileKey(List.of(new GroupChange.Actions.DeleteMemberPendingProfileKeyAction.Builder().deletedUserId(encrypt(member1)).build(),
|
||||
new GroupChange.Actions.DeleteMemberPendingProfileKeyAction.Builder().deletedUserId(encrypt(member2)).build(),
|
||||
new GroupChange.Actions.DeleteMemberPendingProfileKeyAction.Builder().deletedUserId(encrypt(member3)).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.deletePendingMembers(List.of(new GroupChange.Actions.DeletePendingMemberAction.Builder().deletedUserId(encrypt(member2)).build()))
|
||||
.deleteMembersPendingProfileKey(List.of(new GroupChange.Actions.DeleteMemberPendingProfileKeyAction.Builder().deletedUserId(encrypt(member2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -311,16 +311,16 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.promotePendingMembers(List.of(new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member1, randomProfileKey())).build(),
|
||||
new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member2, profileKey2)).build(),
|
||||
new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member3, randomProfileKey())).build()))
|
||||
.promoteMembersPendingProfileKey(List.of(new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member1, randomProfileKey())).build(),
|
||||
new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member2, profileKey2)).build(),
|
||||
new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member3, randomProfileKey())).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.promotePendingMembers(List.of(new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member2, profileKey2)).build()))
|
||||
.promoteMembersPendingProfileKey(List.of(new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member2, profileKey2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -346,7 +346,7 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.promotePendingMembers(List.of(new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member1, profileKey1)).build()))
|
||||
.promoteMembersPendingProfileKey(List.of(new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member1, profileKey1)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -439,7 +439,7 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.modifyDisappearingMessagesTimer(new GroupChange.Actions.ModifyDisappearingMessagesTimerAction.Builder().timer(ByteString.EMPTY).build())
|
||||
.modifyDisappearingMessageTimer(new GroupChange.Actions.ModifyDisappearingMessageTimerAction.Builder().timer(ByteString.EMPTY).build())
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
@@ -458,7 +458,7 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.modifyDisappearingMessagesTimer(new GroupChange.Actions.ModifyDisappearingMessagesTimerAction.Builder().timer(ByteString.EMPTY).build())
|
||||
.modifyDisappearingMessageTimer(new GroupChange.Actions.ModifyDisappearingMessageTimerAction.Builder().timer(ByteString.EMPTY).build())
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
@@ -567,15 +567,15 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.addRequestingMembers(List.of(new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member1, randomProfileKey())).build(),
|
||||
new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build(),
|
||||
new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member3, randomProfileKey())).build()))
|
||||
.addMembersPendingAdminApproval(List.of(new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member1, randomProfileKey())).build(),
|
||||
new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build(),
|
||||
new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member3, randomProfileKey())).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.addRequestingMembers(List.of(new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build()))
|
||||
.addMembersPendingAdminApproval(List.of(new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -599,17 +599,17 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.addRequestingMembers(List.of(new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member1, profileKey1)).build(),
|
||||
new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build(),
|
||||
new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member3, profileKey3)).build()))
|
||||
.addMembersPendingAdminApproval(List.of(new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member1, profileKey1)).build(),
|
||||
new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build(),
|
||||
new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member3, profileKey3)).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.promotePendingMembers(List.of(new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member3, profileKey3)).build(),
|
||||
new GroupChange.Actions.PromotePendingMemberAction.Builder().presentation(presentation(member1, profileKey1)).build()))
|
||||
.addRequestingMembers(List.of(new GroupChange.Actions.AddRequestingMemberAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build()))
|
||||
.promoteMembersPendingProfileKey(List.of(new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member3, profileKey3)).build(),
|
||||
new GroupChange.Actions.PromoteMemberPendingProfileKeyAction.Builder().presentation(presentation(member1, profileKey1)).build()))
|
||||
.addMembersPendingAdminApproval(List.of(new GroupChange.Actions.AddMemberPendingAdminApprovalAction.Builder().added(encryptedRequestingMember(member2, profileKey2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -630,15 +630,15 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.deleteRequestingMembers(List.of(new GroupChange.Actions.DeleteRequestingMemberAction.Builder().deletedUserId(encrypt(member1)).build(),
|
||||
new GroupChange.Actions.DeleteRequestingMemberAction.Builder().deletedUserId(encrypt(member2)).build(),
|
||||
new GroupChange.Actions.DeleteRequestingMemberAction.Builder().deletedUserId(encrypt(member3)).build()))
|
||||
.deleteMembersPendingAdminApproval(List.of(new GroupChange.Actions.DeleteMemberPendingAdminApprovalAction.Builder().deletedUserId(encrypt(member1)).build(),
|
||||
new GroupChange.Actions.DeleteMemberPendingAdminApprovalAction.Builder().deletedUserId(encrypt(member2)).build(),
|
||||
new GroupChange.Actions.DeleteMemberPendingAdminApprovalAction.Builder().deletedUserId(encrypt(member3)).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.deleteRequestingMembers(List.of(new GroupChange.Actions.DeleteRequestingMemberAction.Builder().deletedUserId(encrypt(member2)).build()))
|
||||
.deleteMembersPendingAdminApproval(List.of(new GroupChange.Actions.DeleteMemberPendingAdminApprovalAction.Builder().deletedUserId(encrypt(member2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -660,15 +660,15 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.promoteRequestingMembers(List.of(new GroupChange.Actions.PromoteRequestingMemberAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member1)).build(),
|
||||
new GroupChange.Actions.PromoteRequestingMemberAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member2)).build(),
|
||||
new GroupChange.Actions.PromoteRequestingMemberAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member3)).build()))
|
||||
.promoteMembersPendingAdminApproval(List.of(new GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member1)).build(),
|
||||
new GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member2)).build(),
|
||||
new GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member3)).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.promoteRequestingMembers(List.of(new GroupChange.Actions.PromoteRequestingMemberAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member2)).build()))
|
||||
.promoteMembersPendingAdminApproval(List.of(new GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.Builder().role(Member.Role.DEFAULT).userId(UuidUtil.toByteString(member2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -741,7 +741,7 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.newIsAnnouncementGroup(EnabledState.ENABLED)
|
||||
.build();
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.modifyAnnouncementsOnly(new GroupChange.Actions.ModifyAnnouncementsOnlyAction.Builder().announcementsOnly(true).build())
|
||||
.modify_announcements_only(new GroupChange.Actions.ModifyAnnouncementsOnlyAction.Builder().announcements_only(true).build())
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
@@ -758,7 +758,7 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.newIsAnnouncementGroup(EnabledState.ENABLED)
|
||||
.build();
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.modifyAnnouncementsOnly(new GroupChange.Actions.ModifyAnnouncementsOnlyAction.Builder().announcementsOnly(true).build())
|
||||
.modify_announcements_only(new GroupChange.Actions.ModifyAnnouncementsOnlyAction.Builder().announcements_only(true).build())
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
@@ -783,16 +783,16 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.addBannedMembers(List.of(new GroupChange.Actions.AddBannedMemberAction.Builder().added(new BannedMember.Builder().userId(encrypt(member1)).build()).build(),
|
||||
new GroupChange.Actions.AddBannedMemberAction.Builder().added(new BannedMember.Builder().userId(encrypt(member2)).build()).build(),
|
||||
new GroupChange.Actions.AddBannedMemberAction.Builder().added(new BannedMember.Builder().userId(encrypt(member3)).build()).build()))
|
||||
.add_members_banned(List.of(new GroupChange.Actions.AddMemberBannedAction.Builder().added(new MemberBanned.Builder().userId(encrypt(member1)).build()).build(),
|
||||
new GroupChange.Actions.AddMemberBannedAction.Builder().added(new MemberBanned.Builder().userId(encrypt(member2)).build()).build(),
|
||||
new GroupChange.Actions.AddMemberBannedAction.Builder().added(new MemberBanned.Builder().userId(encrypt(member3)).build()).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.addBannedMembers(List.of(new GroupChange.Actions.AddBannedMemberAction.Builder().added(new BannedMember.Builder().userId(encrypt(member1)).build()).build(),
|
||||
new GroupChange.Actions.AddBannedMemberAction.Builder().added(new BannedMember.Builder().userId(encrypt(member2)).build()).build()))
|
||||
.add_members_banned(List.of(new GroupChange.Actions.AddMemberBannedAction.Builder().added(new MemberBanned.Builder().userId(encrypt(member1)).build()).build(),
|
||||
new GroupChange.Actions.AddMemberBannedAction.Builder().added(new MemberBanned.Builder().userId(encrypt(member2)).build()).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -814,15 +814,15 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.deleteBannedMembers(List.of(new GroupChange.Actions.DeleteBannedMemberAction.Builder().deletedUserId(encrypt(member1)).build(),
|
||||
new GroupChange.Actions.DeleteBannedMemberAction.Builder().deletedUserId(encrypt(member2)).build(),
|
||||
new GroupChange.Actions.DeleteBannedMemberAction.Builder().deletedUserId(encrypt(member3)).build()))
|
||||
.delete_members_banned(List.of(new GroupChange.Actions.DeleteMemberBannedAction.Builder().deletedUserId(encrypt(member1)).build(),
|
||||
new GroupChange.Actions.DeleteMemberBannedAction.Builder().deletedUserId(encrypt(member2)).build(),
|
||||
new GroupChange.Actions.DeleteMemberBannedAction.Builder().deletedUserId(encrypt(member3)).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.deleteBannedMembers(List.of(new GroupChange.Actions.DeleteBannedMemberAction.Builder().deletedUserId(encrypt(member2)).build()))
|
||||
.delete_members_banned(List.of(new GroupChange.Actions.DeleteMemberBannedAction.Builder().deletedUserId(encrypt(member2)).build()))
|
||||
.build();
|
||||
|
||||
assertEquals(expected, resolvedActions);
|
||||
@@ -843,14 +843,14 @@ public final class GroupChangeUtil_resolveConflict_Test {
|
||||
.build();
|
||||
|
||||
GroupChange.Actions change = new GroupChange.Actions.Builder()
|
||||
.promotePendingPniAciMembers(List.of(new GroupChange.Actions.PromotePendingPniAciMemberProfileKeyAction.Builder().presentation(presentation(member1.pniBytes, member1.profileKey)).build(),
|
||||
new GroupChange.Actions.PromotePendingPniAciMemberProfileKeyAction.Builder().presentation(presentation(member2.pniBytes, member2.profileKey)).build()))
|
||||
.promote_members_pending_pni_aci_profile_key(List.of(new GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction.Builder().presentation(presentation(member1.pniBytes, member1.profileKey)).build(),
|
||||
new GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction.Builder().presentation(presentation(member2.pniBytes, member2.profileKey)).build()))
|
||||
.build();
|
||||
|
||||
GroupChange.Actions resolvedActions = GroupChangeUtil.resolveConflict(groupState, decryptedChange, change).build();
|
||||
|
||||
GroupChange.Actions expected = new GroupChange.Actions.Builder()
|
||||
.promotePendingPniAciMembers(List.of(new GroupChange.Actions.PromotePendingPniAciMemberProfileKeyAction.Builder().presentation(presentation(member2.pniBytes, member2.profileKey)).build()))
|
||||
.promote_members_pending_pni_aci_profile_key(List.of(new GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction.Builder().presentation(presentation(member2.pniBytes, member2.profileKey)).build()))
|
||||
.build();
|
||||
assertEquals(expected, resolvedActions);
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@ package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class GroupsV2Operations_ban_Test {
|
||||
emptyList()
|
||||
)
|
||||
|
||||
assertThat(banUuidsChange.addBannedMembers)
|
||||
assertThat(banUuidsChange.add_members_banned)
|
||||
.single()
|
||||
.transform { it.added?.userId }
|
||||
.isEqualTo(groupOperations.encryptServiceId(ban))
|
||||
@@ -62,7 +62,7 @@ class GroupsV2Operations_ban_Test {
|
||||
alreadyBanned
|
||||
)
|
||||
|
||||
assertThat(banUuidsChange.addBannedMembers)
|
||||
assertThat(banUuidsChange.add_members_banned)
|
||||
.single()
|
||||
.transform { it.added?.userId }
|
||||
.isEqualTo(groupOperations.encryptServiceId(toBan))
|
||||
@@ -89,12 +89,12 @@ class GroupsV2Operations_ban_Test {
|
||||
)
|
||||
|
||||
val oldest = alreadyBanned.minBy { it.timestamp }
|
||||
assertThat(banUuidsChange.deleteBannedMembers)
|
||||
assertThat(banUuidsChange.delete_members_banned)
|
||||
.single()
|
||||
.transform { it.deletedUserId }
|
||||
.isEqualTo(groupOperations.encryptServiceId(ServiceId.parseOrThrow(oldest.serviceIdBytes)))
|
||||
|
||||
assertThat(banUuidsChange.addBannedMembers)
|
||||
assertThat(banUuidsChange.add_members_banned)
|
||||
.single()
|
||||
.transform { it.added?.userId }
|
||||
.isEqualTo(groupOperations.encryptServiceId(toBan))
|
||||
@@ -125,7 +125,7 @@ class GroupsV2Operations_ban_Test {
|
||||
.subList(0, 2)
|
||||
.map { groupOperations.encryptServiceId(ServiceId.parseOrThrow(it.serviceIdBytes)) }
|
||||
.toTypedArray()
|
||||
assertThat(banUuidsChange.deleteBannedMembers)
|
||||
assertThat(banUuidsChange.delete_members_banned)
|
||||
.transform { members ->
|
||||
members.map { member ->
|
||||
member.deletedUserId
|
||||
@@ -136,7 +136,7 @@ class GroupsV2Operations_ban_Test {
|
||||
val newBans = (0..1).map { i ->
|
||||
groupOperations.encryptServiceId(toBan[i])
|
||||
}.toTypedArray()
|
||||
assertThat(banUuidsChange.addBannedMembers)
|
||||
assertThat(banUuidsChange.add_members_banned)
|
||||
.transform { members ->
|
||||
members.map { member ->
|
||||
member.added?.userId
|
||||
|
||||
@@ -16,20 +16,20 @@ import org.signal.libsignal.zkgroup.profiles.ProfileKeyCommitment;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKeyCredentialPresentation;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKeyCredentialRequest;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKeyCredentialRequestContext;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.GroupChange;
|
||||
import org.signal.storageservice.protos.groups.Member;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedModifyMemberRole;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMemberRemoval;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.GroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.Member;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedModifyMemberRole;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMemberRemoval;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedString;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedTimer;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.models.ServiceId.ACI;
|
||||
import org.signal.core.models.ServiceId.PNI;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
@@ -90,7 +90,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
@Test
|
||||
public void can_pass_revision_through_encrypt_and_decrypt_methods() {
|
||||
assertDecryption(new GroupChange.Actions.Builder()
|
||||
.revision(1),
|
||||
.version(1),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(1));
|
||||
}
|
||||
@@ -103,7 +103,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
GroupCandidate groupCandidate = groupCandidate(newMember, profileKey);
|
||||
|
||||
assertDecryption(groupOperations.createModifyGroupMembershipChange(Collections.singleton(groupCandidate), Collections.emptySet(), self)
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.newMembers(List.of(new DecryptedMember.Builder()
|
||||
@@ -121,7 +121,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
GroupCandidate groupCandidate = groupCandidate(newMember, profileKey);
|
||||
|
||||
assertDecryption(groupOperations.createGroupJoinDirect(groupCandidate.getExpiringProfileKeyCredential().get())
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.newMembers(List.of(new DecryptedMember.Builder()
|
||||
@@ -140,7 +140,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
GroupCandidate groupCandidate = groupCandidate(newMember, profileKey);
|
||||
|
||||
assertDecryption(groupOperations.createModifyGroupMembershipChange(Collections.singleton(groupCandidate), Collections.emptySet(), self)
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.newMembers(List.of(new DecryptedMember.Builder()
|
||||
@@ -167,7 +167,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
ACI oldMember = ACI.from(UUID.randomUUID());
|
||||
|
||||
assertDecryption(groupOperations.createRemoveMembersChange(Collections.singleton(oldMember), false, Collections.emptyList())
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.deleteMembers(List.of(oldMember.toByteString())));
|
||||
@@ -213,7 +213,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
GroupCandidate groupCandidate = groupCandidate(self, profileKey);
|
||||
|
||||
assertDecryption(groupOperations.createUpdateProfileKeyCredentialChange(groupCandidate.getExpiringProfileKeyCredential().get())
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.modifiedProfileKeys(List.of(new DecryptedMember.Builder()
|
||||
@@ -231,7 +231,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
GroupCandidate groupCandidate = new GroupCandidate(newMember, Optional.empty());
|
||||
|
||||
assertDecryption(groupOperations.createModifyGroupMembershipChange(Collections.singleton(groupCandidate), Collections.emptySet(), self)
|
||||
.revision(13),
|
||||
.version(13),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(13)
|
||||
.newPendingMembers(List.of(new DecryptedPendingMember.Builder()
|
||||
@@ -260,7 +260,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
byte[] uuidCiphertext = Util.getSecretBytes(60);
|
||||
|
||||
assertDecryption(new GroupChange.Actions.Builder()
|
||||
.deletePendingMembers(List.of(new GroupChange.Actions.DeletePendingMemberAction.Builder()
|
||||
.deleteMembersPendingProfileKey(List.of(new GroupChange.Actions.DeleteMemberPendingProfileKeyAction.Builder()
|
||||
.deletedUserId(ByteString.of(uuidCiphertext)).build())),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.deletePendingMembers(List.of(new DecryptedPendingMemberRemoval.Builder()
|
||||
@@ -342,7 +342,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
GroupCandidate groupCandidate = groupCandidate(newRequestingMember, profileKey);
|
||||
|
||||
assertDecryption(groupOperations.createGroupJoinRequest(groupCandidate.getExpiringProfileKeyCredential().get())
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.newRequestingMembers(List.of(new DecryptedRequestingMember.Builder()
|
||||
@@ -356,7 +356,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
ACI newRequestingMember = ACI.from(UUID.randomUUID());
|
||||
|
||||
assertDecryption(groupOperations.createRefuseGroupJoinRequest(Collections.singleton(newRequestingMember), true, Collections.emptyList())
|
||||
.revision(10),
|
||||
.version(10),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(10)
|
||||
.deleteRequestingMembers(List.of(newRequestingMember.toByteString()))
|
||||
@@ -368,7 +368,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
UUID newRequestingMember = UUID.randomUUID();
|
||||
|
||||
assertDecryption(groupOperations.createApproveGroupJoinRequest(Collections.singleton(newRequestingMember))
|
||||
.revision(15),
|
||||
.version(15),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(15)
|
||||
.promoteRequestingMembers(List.of(new DecryptedApproveMember.Builder()
|
||||
@@ -399,8 +399,8 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
@Test
|
||||
public void can_pass_through_new_announcment_only_field21() {
|
||||
assertDecryption(new GroupChange.Actions.Builder()
|
||||
.modifyAnnouncementsOnly(new GroupChange.Actions.ModifyAnnouncementsOnlyAction.Builder()
|
||||
.announcementsOnly(true)
|
||||
.modify_announcements_only(new GroupChange.Actions.ModifyAnnouncementsOnlyAction.Builder()
|
||||
.announcements_only(true)
|
||||
.build()),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.newIsAnnouncementGroup(EnabledState.ENABLED));
|
||||
@@ -411,7 +411,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
ACI ban = ACI.from(UUID.randomUUID());
|
||||
|
||||
assertDecryption(groupOperations.createBanServiceIdsChange(Collections.singleton(ban), false, Collections.emptyList())
|
||||
.revision(13),
|
||||
.version(13),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(13)
|
||||
.newBannedMembers(List.of(new DecryptedBannedMember.Builder()
|
||||
@@ -424,7 +424,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
ACI ban = ACI.from(UUID.randomUUID());
|
||||
|
||||
assertDecryption(groupOperations.createUnbanServiceIdsChange(Collections.singleton(ban))
|
||||
.revision(13),
|
||||
.version(13),
|
||||
new DecryptedGroupChange.Builder()
|
||||
.revision(13)
|
||||
.deleteBannedMembers(List.of(new DecryptedBannedMember.Builder()
|
||||
@@ -438,12 +438,12 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
ProfileKey profileKey = newProfileKey();
|
||||
|
||||
GroupChange.Actions.Builder builder = new GroupChange.Actions.Builder()
|
||||
.sourceServiceId(groupOperations.encryptServiceId(memberPni))
|
||||
.revision(5)
|
||||
.promotePendingPniAciMembers(List.of(new GroupChange.Actions.PromotePendingPniAciMemberProfileKeyAction.Builder()
|
||||
.userId(groupOperations.encryptServiceId(memberAci))
|
||||
.sourceUserId(groupOperations.encryptServiceId(memberPni))
|
||||
.version(5)
|
||||
.promote_members_pending_pni_aci_profile_key(List.of(new GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction.Builder()
|
||||
.user_id(groupOperations.encryptServiceId(memberAci))
|
||||
.pni(groupOperations.encryptServiceId(memberPni))
|
||||
.profileKey(encryptProfileKey(memberAci, profileKey))
|
||||
.profile_key(encryptProfileKey(memberAci, profileKey))
|
||||
.build()));
|
||||
|
||||
assertDecryptionWithEditorSet(builder,
|
||||
@@ -498,7 +498,7 @@ public final class GroupsV2Operations_decrypt_change_Test {
|
||||
DecryptedGroupChange.Builder expectedDecrypted)
|
||||
{
|
||||
ACI editor = ACI.from(UUID.randomUUID());
|
||||
assertDecryptionWithEditorSet(inputChange.sourceServiceId(groupOperations.encryptServiceId(editor)), expectedDecrypted.editorServiceIdBytes(editor.toByteString()));
|
||||
assertDecryptionWithEditorSet(inputChange.sourceUserId(groupOperations.encryptServiceId(editor)), expectedDecrypted.editorServiceIdBytes(editor.toByteString()));
|
||||
}
|
||||
|
||||
void assertDecryptionWithEditorSet(GroupChange.Actions.Builder inputChange,
|
||||
|
||||
@@ -5,9 +5,9 @@ import org.junit.Test;
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException;
|
||||
import org.signal.libsignal.zkgroup.groups.GroupMasterKey;
|
||||
import org.signal.libsignal.zkgroup.groups.GroupSecretParams;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.GroupJoinInfo;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupJoinInfo;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.GroupJoinInfo;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupJoinInfo;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
import org.whispersystems.signalservice.testutil.LibSignalLibraryUtil;
|
||||
|
||||
@@ -102,7 +102,7 @@ public final class GroupsV2Operations_decrypt_groupJoinInfo_Test {
|
||||
@Test
|
||||
public void revision_passed_though_6() {
|
||||
GroupJoinInfo groupJoinInfo = new GroupJoinInfo.Builder()
|
||||
.revision(11)
|
||||
.version(11)
|
||||
.build();
|
||||
|
||||
DecryptedGroupJoinInfo decryptedGroupJoinInfo = groupOperations.decryptGroupJoinInfo(groupJoinInfo);
|
||||
|
||||
@@ -8,18 +8,18 @@ import org.signal.libsignal.zkgroup.groups.ClientZkGroupCipher;
|
||||
import org.signal.libsignal.zkgroup.groups.GroupMasterKey;
|
||||
import org.signal.libsignal.zkgroup.groups.GroupSecretParams;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
import org.signal.storageservice.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.protos.groups.BannedMember;
|
||||
import org.signal.storageservice.protos.groups.Group;
|
||||
import org.signal.storageservice.protos.groups.Member;
|
||||
import org.signal.storageservice.protos.groups.PendingMember;
|
||||
import org.signal.storageservice.protos.groups.RequestingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.protos.groups.local.EnabledState;
|
||||
import org.signal.storageservice.storage.protos.groups.AccessControl;
|
||||
import org.signal.storageservice.storage.protos.groups.MemberBanned;
|
||||
import org.signal.storageservice.storage.protos.groups.Group;
|
||||
import org.signal.storageservice.storage.protos.groups.Member;
|
||||
import org.signal.storageservice.storage.protos.groups.MemberPendingProfileKey;
|
||||
import org.signal.storageservice.storage.protos.groups.MemberPendingAdminApproval;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
|
||||
import org.signal.core.models.ServiceId.ACI;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
import org.whispersystems.signalservice.testutil.LibSignalLibraryUtil;
|
||||
@@ -75,7 +75,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
@Test
|
||||
public void avatar_field_passed_through_3() throws VerificationFailedException, InvalidGroupStateException {
|
||||
Group group = new Group.Builder()
|
||||
.avatar("AvatarCdnKey")
|
||||
.avatarUrl("AvatarCdnKey")
|
||||
.build();
|
||||
|
||||
DecryptedGroup decryptedGroup = groupOperations.decryptGroup(group);
|
||||
@@ -113,7 +113,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
@Test
|
||||
public void set_revision_field_6() throws VerificationFailedException, InvalidGroupStateException {
|
||||
Group group = new Group.Builder()
|
||||
.revision(99)
|
||||
.version(99)
|
||||
.build();
|
||||
|
||||
DecryptedGroup decryptedGroup = groupOperations.decryptGroup(group);
|
||||
@@ -132,13 +132,13 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
.members(List.of(new Member.Builder()
|
||||
.role(Member.Role.ADMINISTRATOR)
|
||||
.userId(groupOperations.encryptServiceId(admin1))
|
||||
.joinedAtRevision(4)
|
||||
.joinedAtVersion(4)
|
||||
.profileKey(encryptProfileKey(admin1, adminProfileKey))
|
||||
.build(),
|
||||
new Member.Builder()
|
||||
.role(Member.Role.DEFAULT)
|
||||
.userId(groupOperations.encryptServiceId(member1))
|
||||
.joinedAtRevision(7)
|
||||
.joinedAtVersion(7)
|
||||
.profileKey(encryptProfileKey(member1, memberProfileKey))
|
||||
.build()))
|
||||
.build();
|
||||
@@ -171,7 +171,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
ACI inviter2 = ACI.from(UUID.randomUUID());
|
||||
|
||||
Group group = new Group.Builder()
|
||||
.pendingMembers(List.of(new PendingMember.Builder()
|
||||
.membersPendingProfileKey(List.of(new MemberPendingProfileKey.Builder()
|
||||
.addedByUserId(groupOperations.encryptServiceId(inviter1))
|
||||
.timestamp(100)
|
||||
.member(new Member.Builder()
|
||||
@@ -179,7 +179,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
.userId(groupOperations.encryptServiceId(admin1))
|
||||
.build())
|
||||
.build(),
|
||||
new PendingMember.Builder()
|
||||
new MemberPendingProfileKey.Builder()
|
||||
.addedByUserId(groupOperations.encryptServiceId(inviter1))
|
||||
.timestamp(200)
|
||||
.member(new Member.Builder()
|
||||
@@ -187,7 +187,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
.userId(groupOperations.encryptServiceId(member1))
|
||||
.build())
|
||||
.build(),
|
||||
new PendingMember.Builder()
|
||||
new MemberPendingProfileKey.Builder()
|
||||
.addedByUserId(groupOperations.encryptServiceId(inviter2))
|
||||
.timestamp(1500)
|
||||
.member(new Member.Builder()
|
||||
@@ -232,12 +232,12 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
ProfileKey memberProfileKey = newProfileKey();
|
||||
|
||||
Group group = new Group.Builder()
|
||||
.requestingMembers(List.of(new RequestingMember.Builder()
|
||||
.membersPendingAdminApproval(List.of(new MemberPendingAdminApproval.Builder()
|
||||
.userId(groupOperations.encryptServiceId(admin1))
|
||||
.profileKey(encryptProfileKey(admin1, adminProfileKey))
|
||||
.timestamp(5000)
|
||||
.build(),
|
||||
new RequestingMember.Builder()
|
||||
new MemberPendingAdminApproval.Builder()
|
||||
.userId(groupOperations.encryptServiceId(member1))
|
||||
.profileKey(encryptProfileKey(member1, memberProfileKey))
|
||||
.timestamp(15000)
|
||||
@@ -288,7 +288,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
@Test
|
||||
public void decrypt_announcements_field_12() throws VerificationFailedException, InvalidGroupStateException {
|
||||
Group group = new Group.Builder()
|
||||
.announcementsOnly(true)
|
||||
.announcements_only(true)
|
||||
.build();
|
||||
|
||||
DecryptedGroup decryptedGroup = groupOperations.decryptGroup(group);
|
||||
@@ -301,7 +301,7 @@ public final class GroupsV2Operations_decrypt_group_Test {
|
||||
ACI member1 = ACI.from(UUID.randomUUID());
|
||||
|
||||
Group group = new Group.Builder()
|
||||
.bannedMembers(List.of(new BannedMember.Builder().userId(groupOperations.encryptServiceId(member1)).build()))
|
||||
.members_banned(List.of(new MemberBanned.Builder().userId(groupOperations.encryptServiceId(member1)).build()))
|
||||
.build();
|
||||
|
||||
DecryptedGroup decryptedGroup = groupOperations.decryptGroup(group);
|
||||
|
||||
@@ -2,15 +2,15 @@ package org.whispersystems.signalservice.api.groupsv2;
|
||||
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
import org.signal.storageservice.protos.groups.Member;
|
||||
import org.signal.storageservice.protos.groups.RequestingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedModifyMemberRole;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedPendingMemberRemoval;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.Member;
|
||||
import org.signal.storageservice.storage.protos.groups.MemberPendingAdminApproval;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedApproveMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedBannedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedModifyMemberRole;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMember;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMemberRemoval;
|
||||
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember;
|
||||
import org.signal.core.util.UuidUtil;
|
||||
import org.whispersystems.signalservice.internal.util.Util;
|
||||
|
||||
@@ -88,8 +88,8 @@ final class ProtoTestUtils {
|
||||
.build();
|
||||
}
|
||||
|
||||
static RequestingMember encryptedRequestingMember(UUID uuid, ProfileKey profileKey) {
|
||||
return new RequestingMember.Builder()
|
||||
static MemberPendingAdminApproval encryptedRequestingMember(UUID uuid, ProfileKey profileKey) {
|
||||
return new MemberPendingAdminApproval.Builder()
|
||||
.presentation(presentation(uuid, profileKey))
|
||||
.build();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user