Update Groups.proto to match shared spec.

This commit is contained in:
Greyson Parrelli
2026-01-13 14:01:35 -05:00
parent 2e4665e5c4
commit bd38c4f5d2
75 changed files with 779 additions and 757 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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));

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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,

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();
}