From fcd73d838997294dc2d27b536cd1112ab33c4ee0 Mon Sep 17 00:00:00 2001 From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> Date: Sat, 16 Nov 2024 13:33:00 -0800 Subject: [PATCH] Use a separate generator for batch group updates. --- src/main/kotlin/Main.kt | 3 +- ...emGroupChangeChatMultipleUpdateTestCase.kt | 305 ++++++++++++++++++ .../ChatItemGroupChangeChatUpdateTestCase.kt | 6 +- ...p_change_chat_multiple_update_00.binproto} | Bin 941 -> 990 bytes ...p_change_chat_multiple_update_00.txtproto} | 12 +- ...p_change_chat_multiple_update_01.binproto} | Bin 1028 -> 1032 bytes ...p_change_chat_multiple_update_01.txtproto} | 16 +- ...p_change_chat_multiple_update_02.binproto} | Bin 993 -> 992 bytes ...p_change_chat_multiple_update_02.txtproto} | 13 +- ...p_change_chat_multiple_update_03.binproto} | Bin 1054 -> 1100 bytes ...p_change_chat_multiple_update_03.txtproto} | 18 +- ...p_change_chat_multiple_update_04.binproto} | Bin 995 -> 996 bytes ...p_change_chat_multiple_update_04.txtproto} | 16 +- ...p_change_chat_multiple_update_05.binproto} | Bin 993 -> 996 bytes ...p_change_chat_multiple_update_05.txtproto} | 18 +- ...p_change_chat_multiple_update_06.binproto} | Bin 993 -> 1012 bytes ...p_change_chat_multiple_update_06.txtproto} | 15 +- ...p_change_chat_multiple_update_07.binproto} | Bin 1031 -> 1046 bytes ...p_change_chat_multiple_update_07.txtproto} | 15 +- ...p_change_chat_multiple_update_08.binproto} | Bin 995 -> 996 bytes ...p_change_chat_multiple_update_08.txtproto} | 14 +- ..._item_group_change_chat_update_35.binproto | Bin 1029 -> 0 bytes ..._item_group_change_chat_update_35.txtproto | 233 ------------- ..._item_group_change_chat_update_36.txtproto | 236 -------------- ..._item_group_change_chat_update_39.binproto | Bin 1031 -> 0 bytes 25 files changed, 384 insertions(+), 536 deletions(-) create mode 100644 src/main/kotlin/tests/ChatItemGroupChangeChatMultipleUpdateTestCase.kt rename test-cases/{chat_item_group_change_chat_update_44.binproto => chat_item_group_change_chat_multiple_update_00.binproto} (91%) rename test-cases/{chat_item_group_change_chat_update_44.txtproto => chat_item_group_change_chat_multiple_update_00.txtproto} (93%) rename test-cases/{chat_item_group_change_chat_update_34.binproto => chat_item_group_change_chat_multiple_update_01.binproto} (87%) rename test-cases/{chat_item_group_change_chat_update_41.txtproto => chat_item_group_change_chat_multiple_update_01.txtproto} (92%) rename test-cases/{chat_item_group_change_chat_update_43.binproto => chat_item_group_change_chat_multiple_update_02.binproto} (90%) rename test-cases/{chat_item_group_change_chat_update_38.txtproto => chat_item_group_change_chat_multiple_update_02.txtproto} (93%) rename test-cases/{chat_item_group_change_chat_update_36.binproto => chat_item_group_change_chat_multiple_update_03.binproto} (82%) rename test-cases/{chat_item_group_change_chat_update_39.txtproto => chat_item_group_change_chat_multiple_update_03.txtproto} (90%) rename test-cases/{chat_item_group_change_chat_update_42.binproto => chat_item_group_change_chat_multiple_update_04.binproto} (90%) rename test-cases/{chat_item_group_change_chat_update_42.txtproto => chat_item_group_change_chat_multiple_update_04.txtproto} (89%) rename test-cases/{chat_item_group_change_chat_update_38.binproto => chat_item_group_change_chat_multiple_update_05.binproto} (90%) rename test-cases/{chat_item_group_change_chat_update_37.txtproto => chat_item_group_change_chat_multiple_update_05.txtproto} (89%) rename test-cases/{chat_item_group_change_chat_update_40.binproto => chat_item_group_change_chat_multiple_update_06.binproto} (89%) rename test-cases/{chat_item_group_change_chat_update_40.txtproto => chat_item_group_change_chat_multiple_update_06.txtproto} (90%) rename test-cases/{chat_item_group_change_chat_update_37.binproto => chat_item_group_change_chat_multiple_update_07.binproto} (87%) rename test-cases/{chat_item_group_change_chat_update_43.txtproto => chat_item_group_change_chat_multiple_update_07.txtproto} (90%) rename test-cases/{chat_item_group_change_chat_update_41.binproto => chat_item_group_change_chat_multiple_update_08.binproto} (90%) rename test-cases/{chat_item_group_change_chat_update_34.txtproto => chat_item_group_change_chat_multiple_update_08.txtproto} (92%) delete mode 100644 test-cases/chat_item_group_change_chat_update_35.binproto delete mode 100644 test-cases/chat_item_group_change_chat_update_35.txtproto delete mode 100644 test-cases/chat_item_group_change_chat_update_36.txtproto delete mode 100644 test-cases/chat_item_group_change_chat_update_39.binproto diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index 9cc1d6b..701e6b6 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -47,7 +47,8 @@ val ALL_TEST_CASES = listOf( ChatItemStickerMessageTestCase, ChatItemRemoteDeleteTestCase, ChatItemViewOnceTestCase, - ChatItemGroupChangeChatUpdateTestCase + ChatItemGroupChangeChatUpdateTestCase, + ChatItemGroupChangeChatMultipleUpdateTestCase ) fun main(args: Array) { diff --git a/src/main/kotlin/tests/ChatItemGroupChangeChatMultipleUpdateTestCase.kt b/src/main/kotlin/tests/ChatItemGroupChangeChatMultipleUpdateTestCase.kt new file mode 100644 index 0000000..b585c74 --- /dev/null +++ b/src/main/kotlin/tests/ChatItemGroupChangeChatMultipleUpdateTestCase.kt @@ -0,0 +1,305 @@ +@file:Suppress("UNCHECKED_CAST") + +package tests + +import Generators +import PermutationScope +import StandardFrames +import TestCase +import aci +import asList +import nullable +import okio.ByteString.Companion.toByteString +import oneOf +import org.thoughtcrime.securesms.backup.v2.proto.* +import toByteString +import kotlin.time.Duration.Companion.days +import kotlin.time.Duration.Companion.minutes +import kotlin.time.Duration.Companion.seconds + +/** + * Reasonable permutations of [GroupChangeChatMultipleUpdate] objects. + */ +object ChatItemGroupChangeChatMultipleUpdateTestCase : TestCase("chat_item_group_change_chat_multiple_update") { + override fun PermutationScope.execute() { + frames += StandardFrames.MANDATORY_FRAMES + + frames += StandardFrames.recipientAlice + frames += StandardFrames.recipientBob + frames += StandardFrames.recipientCarol + frames += StandardFrames.recipientDan + frames += StandardFrames.recipientGroupAB + frames += StandardFrames.chatGroupAB + + val groupMembersExcludingSelfGenerator = { Generators.list(StandardFrames.recipientAlice.aci, StandardFrames.recipientBob.aci) } + val peopleNotInGroupGenerator = { Generators.list(StandardFrames.recipientCarol.aci, StandardFrames.recipientDan.aci) } + + var updaterAci = StandardFrames.SELF_ACI.toByteString() + + val listOfGenerators = oneOf( + // genericGroupUpdateGenerator, + Generators.permutation { + frames += GenericGroupUpdate( + updaterAci + ) + }, + // groupCreationUpdateGenerator, + Generators.permutation { + frames += GroupCreationUpdate( + updaterAci + ) + }, + // groupNameUpdateGenerator, + Generators.permutation { + frames += GroupNameUpdate( + updaterAci, + newGroupName = some(Generators.titles().nullable()) + ) + }, + // groupAvatarUpdateGenerator, + Generators.permutation { + frames += GroupAvatarUpdate( + updaterAci, + wasRemoved = someBoolean() + ) + }, + // groupDescriptionUpdateGenerator, + Generators.permutation { + frames += GroupDescriptionUpdate( + updaterAci, + newDescription = some(Generators.textBody().nullable()) + ) + }, + // groupMembershipAccessLevelChangeUpdateGenerator, + Generators.permutation { + frames += GroupMembershipAccessLevelChangeUpdate( + updaterAci, + accessLevel = someEnum(GroupV2AccessLevel::class.java, excluding = listOf(GroupV2AccessLevel.UNKNOWN, GroupV2AccessLevel.UNSATISFIABLE)) + ) + }, + // groupAttributesAccessLevelChangeUpdateGenerator, + Generators.permutation { + frames += GroupAttributesAccessLevelChangeUpdate( + updaterAci, + accessLevel = someEnum(GroupV2AccessLevel::class.java, listOf(GroupV2AccessLevel.UNKNOWN, GroupV2AccessLevel.UNSATISFIABLE)) + ) + }, + // groupAnnouncementOnlyChangeUpdateGenerator, + Generators.permutation { + frames += GroupAnnouncementOnlyChangeUpdate( + updaterAci, + isAnnouncementOnly = someBoolean() + ) + }, + // groupAdminStatusUpdateGenerator, + Generators.permutation { + frames += GroupAdminStatusUpdate( + updaterAci, + memberAci = some(groupMembersExcludingSelfGenerator()), + wasAdminStatusGranted = someBoolean() + ) + }, + // groupMemberRemovedUpdateGenerator, + Generators.permutation { + frames += GroupMemberRemovedUpdate( + removerAci = updaterAci, + removedAci = some(groupMembersExcludingSelfGenerator()) + ) + }, + // groupUnknownInviteeUpdateGenerator, + Generators.permutation { + frames += GroupUnknownInviteeUpdate( + inviterAci = updaterAci, + inviteeCount = some(Generators.ints(1, 3)) + ) + }, + // groupMemberJoinedUpdateGenerator, + Generators.permutation { + frames += GroupMemberJoinedUpdate( + newMemberAci = some(peopleNotInGroupGenerator()) + ) + }, + // groupMemberAddedUpdateGenerator, + Generators.permutation { + val inviter = some(groupMembersExcludingSelfGenerator().nullable()) + val hadOpenInvitation = someBoolean() + frames += GroupMemberAddedUpdate( + updaterAci, + newMemberAci = some(peopleNotInGroupGenerator()), + hadOpenInvitation = if (inviter != null) true else hadOpenInvitation, + inviterAci = inviter + ) + }, + // groupSelfInvitationRevokedUpdateGenerator, + Generators.permutation { + frames += GroupSelfInvitationRevokedUpdate( + revokerAci = some(groupMembersExcludingSelfGenerator()) + ) + }, + // groupInvitationRevokedUpdateGenerator, + Generators.permutation { + frames += GroupInvitationRevokedUpdate( + updaterAci + ) + }, + // groupJoinRequestUpdateGenerator, + Generators.permutation { + frames += GroupJoinRequestUpdate( + requestorAci = some(peopleNotInGroupGenerator()) + ) + }, + // groupJoinRequestApprovalUpdateGenerator, + Generators.permutation { + frames += GroupJoinRequestApprovalUpdate( + requestorAci = some(peopleNotInGroupGenerator()), + updaterAci, + wasApproved = someBoolean() + ) + }, + // groupJoinRequestCanceledUpdateGenerator, + Generators.permutation { + frames += GroupJoinRequestCanceledUpdate( + requestorAci = some(peopleNotInGroupGenerator()) + ) + }, + // groupInviteLinkResetUpdateGenerator, + Generators.permutation { + frames += GroupInviteLinkResetUpdate( + updaterAci + ) + }, + // groupInviteLinkEnabledUpdateGenerator, + Generators.permutation { + frames += GroupInviteLinkEnabledUpdate( + updaterAci, + linkRequiresAdminApproval = someBoolean() + ) + }, + // groupInviteLinkAdminApprovalUpdateGenerator, + Generators.permutation { + frames += GroupInviteLinkAdminApprovalUpdate( + updaterAci, + linkRequiresAdminApproval = someBoolean() + ) + }, + // groupInviteLinkDisabledUpdateGenerator, + Generators.permutation { + frames += GroupInviteLinkDisabledUpdate( + updaterAci + ) + }, + // groupMemberJoinedByLinkUpdateGenerator, + Generators.permutation { + frames += GroupMemberJoinedByLinkUpdate( + newMemberAci = some(Generators.list(StandardFrames.recipientCarol.aci, StandardFrames.recipientDan.aci)) + ) + }, + // groupV2MigrationUpdateGenerator, + Generators.single(GroupV2MigrationUpdate()), + // groupV2MigrationSelfInvitedUpdateGenerator, + Generators.single(GroupV2MigrationSelfInvitedUpdate()), + // groupV2MigrationInvitedMembersUpdateGenerator, + Generators.permutation { + frames += GroupV2MigrationInvitedMembersUpdate( + invitedMembersCount = some(Generators.ints(1, 5)) + ) + }, + // groupV2MigrationDroppedMembersUpdateGenerator, + Generators.permutation { + frames += GroupV2MigrationDroppedMembersUpdate( + droppedMembersCount = some(Generators.ints(1, 5)) + ) + }, + // groupSequenceOfRequestsAndCancelsUpdateGenerator, + Generators.permutation { + frames += GroupSequenceOfRequestsAndCancelsUpdate( + requestorAci = some(groupMembersExcludingSelfGenerator()), + count = some(Generators.ints(1, 5)) + ) + }, + // groupExpirationTimerUpdateGenerator + Generators.permutation { + frames += GroupExpirationTimerUpdate( + updaterAci = updaterAci, + expiresInMs = some(Generators.longs(lower = 5.minutes.inWholeSeconds, upper = 28.days.inWholeSeconds)).seconds.inWholeMilliseconds + ) + } + ) + + val genericGroupUpdateGenerator = listOfGenerators[0] + val groupCreationUpdateGenerator = listOfGenerators[1] + val groupNameUpdateGenerator = listOfGenerators[2] + val groupAvatarUpdateGenerator = listOfGenerators[3] + val groupDescriptionUpdateGenerator = listOfGenerators[4] + val groupMembershipAccessLevelChangeUpdateGenerator = listOfGenerators[5] + val groupAttributesAccessLevelChangeUpdateGenerator = listOfGenerators[6] + val groupAnnouncementOnlyChangeUpdateGenerator = listOfGenerators[7] + val groupAdminStatusUpdateGenerator = listOfGenerators[8] + val groupMemberRemovedUpdateGenerator = listOfGenerators[9] + val groupUnknownInviteeUpdateGenerator = listOfGenerators[10] + val groupMemberJoinedUpdateGenerator = listOfGenerators[11] + val groupMemberAddedUpdateGenerator = listOfGenerators[12] + val groupSelfInvitationRevokedUpdateGenerator = listOfGenerators[13] + val groupInvitationRevokedUpdateGenerator = listOfGenerators[14] + val groupJoinRequestUpdateGenerator = listOfGenerators[15] + val groupJoinRequestApprovalUpdateGenerator = listOfGenerators[16] + val groupJoinRequestCanceledUpdateGenerator = listOfGenerators[17] + val groupInviteLinkResetUpdateGenerator = listOfGenerators[18] + val groupInviteLinkEnabledUpdateGenerator = listOfGenerators[19] + val groupInviteLinkAdminApprovalUpdateGenerator = listOfGenerators[20] + val groupInviteLinkDisabledUpdateGenerator = listOfGenerators[21] + val groupMemberJoinedByLinkUpdateGenerator = listOfGenerators[22] + val groupV2MigrationUpdateGenerator = listOfGenerators[23] + val groupV2MigrationSelfInvitedUpdateGenerator = listOfGenerators[24] + val groupV2MigrationInvitedMembersUpdateGenerator = listOfGenerators[25] + val groupV2MigrationDroppedMembersUpdateGenerator = listOfGenerators[26] + val groupSequenceOfRequestsAndCancelsUpdateGenerator = listOfGenerators[27] + val groupExpirationTimerUpdateGenerator = listOfGenerators[28] + + frames += Frame( + chatItem = ChatItem( + chatId = StandardFrames.chatGroupAB.chat!!.id, + authorId = StandardFrames.recipientSelf.recipient!!.id, + dateSent = someNonZeroTimestamp(), + directionless = ChatItem.DirectionlessMessageDetails(), + updateMessage = ChatUpdateMessage( + groupChange = GroupChangeChatUpdate( + updates = Generators.permutation { + frames += GroupChangeChatUpdate.Update( + genericGroupUpdate = someOneOf(genericGroupUpdateGenerator), + groupCreationUpdate = someOneOf(groupCreationUpdateGenerator), + groupNameUpdate = someOneOf(groupNameUpdateGenerator), + groupAvatarUpdate = someOneOf(groupAvatarUpdateGenerator), + groupDescriptionUpdate = someOneOf(groupDescriptionUpdateGenerator), + groupMembershipAccessLevelChangeUpdate = someOneOf(groupMembershipAccessLevelChangeUpdateGenerator), + groupAttributesAccessLevelChangeUpdate = someOneOf(groupAttributesAccessLevelChangeUpdateGenerator), + groupAnnouncementOnlyChangeUpdate = someOneOf(groupAnnouncementOnlyChangeUpdateGenerator), + groupAdminStatusUpdate = someOneOf(groupAdminStatusUpdateGenerator), + groupMemberRemovedUpdate = someOneOf(groupMemberRemovedUpdateGenerator), + groupUnknownInviteeUpdate = someOneOf(groupUnknownInviteeUpdateGenerator), + groupMemberJoinedUpdate = someOneOf(groupMemberJoinedUpdateGenerator), + groupMemberAddedUpdate = someOneOf(groupMemberAddedUpdateGenerator), + groupSelfInvitationRevokedUpdate = someOneOf(groupSelfInvitationRevokedUpdateGenerator), + groupInvitationRevokedUpdate = someOneOf(groupInvitationRevokedUpdateGenerator), + groupJoinRequestUpdate = someOneOf(groupJoinRequestUpdateGenerator), + groupJoinRequestApprovalUpdate = someOneOf(groupJoinRequestApprovalUpdateGenerator), + groupJoinRequestCanceledUpdate = someOneOf(groupJoinRequestCanceledUpdateGenerator), + groupInviteLinkResetUpdate = someOneOf(groupInviteLinkResetUpdateGenerator), + groupInviteLinkEnabledUpdate = someOneOf(groupInviteLinkEnabledUpdateGenerator), + groupInviteLinkAdminApprovalUpdate = someOneOf(groupInviteLinkAdminApprovalUpdateGenerator), + groupInviteLinkDisabledUpdate = someOneOf(groupInviteLinkDisabledUpdateGenerator), + groupMemberJoinedByLinkUpdate = someOneOf(groupMemberJoinedByLinkUpdateGenerator), + groupV2MigrationUpdate = someOneOf(groupV2MigrationUpdateGenerator), + groupV2MigrationSelfInvitedUpdate = someOneOf(groupV2MigrationSelfInvitedUpdateGenerator), + groupV2MigrationInvitedMembersUpdate = someOneOf(groupV2MigrationInvitedMembersUpdateGenerator), + groupV2MigrationDroppedMembersUpdate = someOneOf(groupV2MigrationDroppedMembersUpdateGenerator), + groupSequenceOfRequestsAndCancelsUpdate = someOneOf(groupSequenceOfRequestsAndCancelsUpdateGenerator), + groupExpirationTimerUpdate = someOneOf(groupExpirationTimerUpdateGenerator) + ) + }.asList(*List(listOfGenerators.size / 3) { 3 }.toIntArray()).let { some(it) } + ) + ) + ) + ) + } +} diff --git a/src/main/kotlin/tests/ChatItemGroupChangeChatUpdateTestCase.kt b/src/main/kotlin/tests/ChatItemGroupChangeChatUpdateTestCase.kt index 7bdd384..6c24826 100644 --- a/src/main/kotlin/tests/ChatItemGroupChangeChatUpdateTestCase.kt +++ b/src/main/kotlin/tests/ChatItemGroupChangeChatUpdateTestCase.kt @@ -291,10 +291,6 @@ object ChatItemGroupChangeChatUpdateTestCase : TestCase("chat_item_group_change_ val groupSequenceOfRequestsAndCancelsUpdateGenerator = listOfGenerators[32] val groupExpirationTimerUpdateGenerator = listOfGenerators[33] - val clusters = mutableListOf() - clusters += List(listOfGenerators.size) { 1 } - clusters += List(listOfGenerators.size / 3) { 3 } - frames += Frame( chatItem = ChatItem( chatId = StandardFrames.chatGroupAB.chat!!.id, @@ -340,7 +336,7 @@ object ChatItemGroupChangeChatUpdateTestCase : TestCase("chat_item_group_change_ groupSequenceOfRequestsAndCancelsUpdate = someOneOf(groupSequenceOfRequestsAndCancelsUpdateGenerator), groupExpirationTimerUpdate = someOneOf(groupExpirationTimerUpdateGenerator) ) - }.asList(*clusters.toIntArray()).let { some(it) } + }.asList(*List(listOfGenerators.size) { 1 }.toIntArray()).let { some(it) } ) ) ) diff --git a/test-cases/chat_item_group_change_chat_update_44.binproto b/test-cases/chat_item_group_change_chat_multiple_update_00.binproto similarity index 91% rename from test-cases/chat_item_group_change_chat_update_44.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_00.binproto index 97767129517b0a92254d848cafc6a52a81448562..00841df3c9e50e53afbe329cd9f5a83275860806 100644 GIT binary patch delta 94 zcmZ3>evf@a2Xk1cQZNUz0HZ|vyV<9&n*}jcxd=INiEs&V2{3?x149FZ!N?^dgjG}u GizonW=M2mM delta 45 zcmcb|zLtGM2eYb*k`f2A0HZ|vyV<9&n*}jc2@45wF~4GD;9~v+Bv^kjGI1~g050VV AjsO4v diff --git a/test-cases/chat_item_group_change_chat_update_44.txtproto b/test-cases/chat_item_group_change_chat_multiple_update_00.txtproto similarity index 93% rename from test-cases/chat_item_group_change_chat_update_44.txtproto rename to test-cases/chat_item_group_change_chat_multiple_update_00.txtproto index 4c30b1f..4e49871 100644 --- a/test-cases/chat_item_group_change_chat_update_44.txtproto +++ b/test-cases/chat_item_group_change_chat_multiple_update_00.txtproto @@ -210,14 +210,18 @@ Frame { groupChange = GroupChangeChatUpdate { updates = [ Update { - groupV2MigrationUpdate = GroupV2MigrationUpdate {} + genericGroupUpdate = GenericGroupUpdate { + updaterAci = <00000000000040008000000000000001> + } }, Update { - groupV2MigrationSelfInvitedUpdate = GroupV2MigrationSelfInvitedUpdate {} + groupCreationUpdate = GroupCreationUpdate { + updaterAci = <00000000000040008000000000000001> + } }, Update { - groupV2MigrationInvitedMembersUpdate = GroupV2MigrationInvitedMembersUpdate { - invitedMembersCount = 2 + groupNameUpdate = GroupNameUpdate { + updaterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_34.binproto b/test-cases/chat_item_group_change_chat_multiple_update_01.binproto similarity index 87% rename from test-cases/chat_item_group_change_chat_update_34.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_01.binproto index 22f0c110327d5a72f077d6e3b3f51f76d79ab32d..0e750d5343e25803d511de2e927cf2059fa3afd4 100644 GIT binary patch delta 137 zcmZqS=-}AU!CYUjRLj9Ez$kIJ`OW1&CP55Uc|ti{3Q}@h0t{f_z|a6;FbZ*nmMA!v zCS~SiCUU7tDPvK=@0_2PUYe@lmRMYpnUa~wr6?tjMH#nmeo<1Uf=gy{B4Y^v66PC% delta 82 zcmeC+XyMq + groupNameUpdate = GroupNameUpdate { + newGroupName = "Ut Cubilia" + updaterAci = <00000000000040008000000000000001> } }, Update { - groupInviteLinkEnabledUpdate = GroupInviteLinkEnabledUpdate { - linkRequiresAdminApproval = true - updaterAci = <000a11ce000040008000000000000001> + groupNameUpdate = GroupNameUpdate { + newGroupName = "Congue Fastidii" + updaterAci = <00000000000040008000000000000001> } }, Update { - groupInviteLinkEnabledUpdate = GroupInviteLinkEnabledUpdate { - updaterAci = <00000b0b000040008000000000000001> + groupNameUpdate = GroupNameUpdate { + newGroupName = "Morbi Dicat" + updaterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_43.binproto b/test-cases/chat_item_group_change_chat_multiple_update_02.binproto similarity index 90% rename from test-cases/chat_item_group_change_chat_update_43.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_02.binproto index 9c2eccc450530cbf9fcb0508bdf7e8aa74eadd07..534337a0efe71ea6ab2dbec3e6869a7ddda21651 100644 GIT binary patch delta 96 zcmaFJ{(yZ$2XjQYQYZ(r0HZ|vyV<9&n*}jcxe2*&i7AP22{3?x149FZ!6?AUC88vR LDb6LLg+&wqr-BVx delta 97 zcmaFB{*Zk`2XkbEQWyub0Heg=<~NuBm;^CYxeK{+iQZxq;u2tB;O1svaA0U)00TxY R(MJ&BQ;b-J8Ezp90{~YI5r+T( diff --git a/test-cases/chat_item_group_change_chat_update_38.txtproto b/test-cases/chat_item_group_change_chat_multiple_update_02.txtproto similarity index 93% rename from test-cases/chat_item_group_change_chat_update_38.txtproto rename to test-cases/chat_item_group_change_chat_multiple_update_02.txtproto index 6782ddf..cbcc746 100644 --- a/test-cases/chat_item_group_change_chat_update_38.txtproto +++ b/test-cases/chat_item_group_change_chat_multiple_update_02.txtproto @@ -210,18 +210,19 @@ Frame { groupChange = GroupChangeChatUpdate { updates = [ Update { - groupInvitationRevokedUpdate = GroupInvitationRevokedUpdate { - updaterAci = <000a11ce000040008000000000000001> + groupAvatarUpdate = GroupAvatarUpdate { + updaterAci = <00000000000040008000000000000001> + wasRemoved = true } }, Update { - groupInvitationRevokedUpdate = GroupInvitationRevokedUpdate { - updaterAci = <00000b0b000040008000000000000001> + groupAvatarUpdate = GroupAvatarUpdate { + updaterAci = <00000000000040008000000000000001> } }, Update { - groupJoinRequestUpdate = GroupJoinRequestUpdate { - requestorAci = <0000ca01000040008000000000000001> + groupDescriptionUpdate = GroupDescriptionUpdate { + updaterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_36.binproto b/test-cases/chat_item_group_change_chat_multiple_update_03.binproto similarity index 82% rename from test-cases/chat_item_group_change_chat_update_36.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_03.binproto index b2b1c7da1dfbefbb1f35d17f9d355cf5380d8042..113929678174271075bb45037c7ebd87486ef293 100644 GIT binary patch delta 205 zcmbQoafV|<2Xp-)My36X9LxfY5{H}LT>fJc#89=KQD_Y#myebgmjDA8I50Fo7>q(@ z$@zI@i8(o$#R|oVIjIV{nR%JH3I#=psl};zB?>8t1(`{u#R{nv3MrY%C5gofr6q~E zrA1suS_W85lgV{WtjNp-YA8xgE=escO$9OvN>efu^HLI1xiqxYuxJv>%P%e|D$P~M O%}+@!N-W7NEd~HB@Hh|v delta 108 zcmX@ZF^^+I2eaiAMx}|29LxfY67BD1pT2Gu#8B19C{)iS+QlfuCBVSIaEpP#fuRA& v00KrX%}I=EKw&PybCV^QWH}fm7`dz`F + groupDescriptionUpdate = GroupDescriptionUpdate { + newDescription = "convallis sale minim praesent dapibus ex dictas utamur" + updaterAci = <00000000000040008000000000000001> } }, Update { - groupJoinRequestApprovalUpdate = GroupJoinRequestApprovalUpdate { - requestorAci = <0000ca01000040008000000000000001> - updaterAci = <000a11ce000040008000000000000001> - wasApproved = true + groupDescriptionUpdate = GroupDescriptionUpdate { + newDescription = "maximus recteque repudiandae" + updaterAci = <00000000000040008000000000000001> } }, Update { - groupJoinRequestApprovalUpdate = GroupJoinRequestApprovalUpdate { - requestorAci = <000000da000040008000000000000001> - updaterAci = <00000b0b000040008000000000000001> + groupDescriptionUpdate = GroupDescriptionUpdate { + newDescription = "nostrum moderatius" + updaterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_42.binproto b/test-cases/chat_item_group_change_chat_multiple_update_04.binproto similarity index 90% rename from test-cases/chat_item_group_change_chat_update_42.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_04.binproto index e67c43cae0622af4378bbf06f09b6237b3fc396f..e851a0a01022abf7454e6527f62a56544b68eabf 100644 GIT binary patch delta 100 zcmaFN{)Bx)2XjocQX~hn0HZ|vyV<9&n*}jcc?o%Ni5ZD-2{3?x149FZ!6?9pL!1eR GI5Pn5T@A

+ groupMembershipAccessLevelChangeUpdate = GroupMembershipAccessLevelChangeUpdate { + accessLevel = GroupV2AccessLevel.ANY + updaterAci = <00000000000040008000000000000001> } }, Update { - groupInviteLinkAdminApprovalUpdate = GroupInviteLinkAdminApprovalUpdate { - updaterAci = <00000b0b000040008000000000000001> + groupMembershipAccessLevelChangeUpdate = GroupMembershipAccessLevelChangeUpdate { + accessLevel = GroupV2AccessLevel.MEMBER + updaterAci = <00000000000040008000000000000001> } }, Update { - groupInviteLinkDisabledUpdate = GroupInviteLinkDisabledUpdate { - updaterAci = <000a11ce000040008000000000000001> + groupMembershipAccessLevelChangeUpdate = GroupMembershipAccessLevelChangeUpdate { + accessLevel = GroupV2AccessLevel.ADMINISTRATOR + updaterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_38.binproto b/test-cases/chat_item_group_change_chat_multiple_update_05.binproto similarity index 90% rename from test-cases/chat_item_group_change_chat_update_38.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_05.binproto index 4a4b2f175ad6c0904b073114081592bc073ca273..c0de83647931a1f146b443adb3e89736586fe258 100644 GIT binary patch delta 100 zcmaFJ{)Bx)2XjocQX~hn0Heg=<~NuBm;^CYc?o%NiCKwo2{3?x149FZ!6?9pL!1eR GI5PkWUk)n( delta 97 zcmaFD{*Zk`2XkbEQWyub0HZ|vyV<9&n*}jcxeK{+i7sLk;u2us5 - newMemberAci = <0000ca01000040008000000000000001> - updaterAci = <000a11ce000040008000000000000001> + groupAttributesAccessLevelChangeUpdate = GroupAttributesAccessLevelChangeUpdate { + accessLevel = GroupV2AccessLevel.ANY + updaterAci = <00000000000040008000000000000001> } }, Update { - groupSelfInvitationRevokedUpdate = GroupSelfInvitationRevokedUpdate { - revokerAci = <000a11ce000040008000000000000001> + groupAttributesAccessLevelChangeUpdate = GroupAttributesAccessLevelChangeUpdate { + accessLevel = GroupV2AccessLevel.MEMBER + updaterAci = <00000000000040008000000000000001> } }, Update { - groupSelfInvitationRevokedUpdate = GroupSelfInvitationRevokedUpdate { - revokerAci = <00000b0b000040008000000000000001> + groupAttributesAccessLevelChangeUpdate = GroupAttributesAccessLevelChangeUpdate { + accessLevel = GroupV2AccessLevel.ADMINISTRATOR + updaterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_40.binproto b/test-cases/chat_item_group_change_chat_multiple_update_06.binproto similarity index 89% rename from test-cases/chat_item_group_change_chat_update_40.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_06.binproto index 37a01d20fa98937188848638d0c287b8bf483e4f..9613d1688a21873dabda4c5f390f3b42d911726d 100644 GIT binary patch delta 116 zcmaFJ{)K%*2XjugQYHtp0HZ|vyV<9&n*}jcMF~Z4i8+aI2{3?x149FZ!6?AUCE_H6 YDbA(grG_agB*4HWc#eSqpE diff --git a/test-cases/chat_item_group_change_chat_update_40.txtproto b/test-cases/chat_item_group_change_chat_multiple_update_06.txtproto similarity index 90% rename from test-cases/chat_item_group_change_chat_update_40.txtproto rename to test-cases/chat_item_group_change_chat_multiple_update_06.txtproto index d4be7bb..5683783 100644 --- a/test-cases/chat_item_group_change_chat_update_40.txtproto +++ b/test-cases/chat_item_group_change_chat_multiple_update_06.txtproto @@ -210,18 +210,21 @@ Frame { groupChange = GroupChangeChatUpdate { updates = [ Update { - groupJoinRequestCanceledUpdate = GroupJoinRequestCanceledUpdate { - requestorAci = <0000ca01000040008000000000000001> + groupAnnouncementOnlyChangeUpdate = GroupAnnouncementOnlyChangeUpdate { + isAnnouncementOnly = true + updaterAci = <00000000000040008000000000000001> } }, Update { - groupJoinRequestCanceledUpdate = GroupJoinRequestCanceledUpdate { - requestorAci = <000000da000040008000000000000001> + groupAnnouncementOnlyChangeUpdate = GroupAnnouncementOnlyChangeUpdate { + updaterAci = <00000000000040008000000000000001> } }, Update { - groupInviteLinkResetUpdate = GroupInviteLinkResetUpdate { - updaterAci = <000a11ce000040008000000000000001> + groupAdminStatusUpdate = GroupAdminStatusUpdate { + memberAci = <000a11ce000040008000000000000001> + updaterAci = <00000000000040008000000000000001> + wasAdminStatusGranted = true } } ] diff --git a/test-cases/chat_item_group_change_chat_update_37.binproto b/test-cases/chat_item_group_change_chat_multiple_update_07.binproto similarity index 87% rename from test-cases/chat_item_group_change_chat_update_37.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_07.binproto index 8df453307018a6becd1b8e7e27899fcc43a9daac..e9a76f2174b64c54a7eecb67ff054431d2a1de3b 100644 GIT binary patch delta 102 zcmZqYn8vZ8gIS@6QK^%WgIR!4;&Ahu%YRIQ7^o&G diff --git a/test-cases/chat_item_group_change_chat_update_43.txtproto b/test-cases/chat_item_group_change_chat_multiple_update_07.txtproto similarity index 90% rename from test-cases/chat_item_group_change_chat_update_43.txtproto rename to test-cases/chat_item_group_change_chat_multiple_update_07.txtproto index 003093d..7f4e70c 100644 --- a/test-cases/chat_item_group_change_chat_update_43.txtproto +++ b/test-cases/chat_item_group_change_chat_multiple_update_07.txtproto @@ -210,18 +210,21 @@ Frame { groupChange = GroupChangeChatUpdate { updates = [ Update { - groupInviteLinkDisabledUpdate = GroupInviteLinkDisabledUpdate { - updaterAci = <00000b0b000040008000000000000001> + groupAdminStatusUpdate = GroupAdminStatusUpdate { + memberAci = <00000b0b000040008000000000000001> + updaterAci = <00000000000040008000000000000001> } }, Update { - groupMemberJoinedByLinkUpdate = GroupMemberJoinedByLinkUpdate { - newMemberAci = <0000ca01000040008000000000000001> + groupMemberRemovedUpdate = GroupMemberRemovedUpdate { + removedAci = <000a11ce000040008000000000000001> + removerAci = <00000000000040008000000000000001> } }, Update { - groupMemberJoinedByLinkUpdate = GroupMemberJoinedByLinkUpdate { - newMemberAci = <000000da000040008000000000000001> + groupMemberRemovedUpdate = GroupMemberRemovedUpdate { + removedAci = <00000b0b000040008000000000000001> + removerAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_41.binproto b/test-cases/chat_item_group_change_chat_multiple_update_08.binproto similarity index 90% rename from test-cases/chat_item_group_change_chat_update_41.binproto rename to test-cases/chat_item_group_change_chat_multiple_update_08.binproto index 09a6ddee53d3a86b239e78e024c11370138a90c3..17578455f714b783046c584313857c4562fdf9bf 100644 GIT binary patch delta 100 zcmaFN{)Bx)2XjocQX~hn0HZ|vyV<9&n*}jcc?o%Ni4}=(2{3?x149FZ!6?9lL!1$Z GI1>O70}h7( delta 99 zcmaFD{+NA32Xl0kQUnLH0Heg=<~NuBm;^CYc?!96i5_AU;u2tB;O1svaA0U)00TxY X@l%W + inviterAci = <00000000000040008000000000000001> } }, Update { - groupInvitationAcceptedUpdate = GroupInvitationAcceptedUpdate { - inviterAci = <000a11ce000040008000000000000001> - newMemberAci = <0000ca01000040008000000000000001> + groupUnknownInviteeUpdate = GroupUnknownInviteeUpdate { + inviteeCount = 1 + inviterAci = <00000000000040008000000000000001> } }, Update { - groupInvitationAcceptedUpdate = GroupInvitationAcceptedUpdate { - inviterAci = <00000b0b000040008000000000000001> - newMemberAci = <000000da000040008000000000000001> + groupUnknownInviteeUpdate = GroupUnknownInviteeUpdate { + inviteeCount = 2 + inviterAci = <00000000000040008000000000000001> } } ] diff --git a/test-cases/chat_item_group_change_chat_update_35.binproto b/test-cases/chat_item_group_change_chat_update_35.binproto deleted file mode 100644 index e6c3fc3975f1d481f07a46c8d5f32a72af1fe768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1029 zcmdPqU=+CVYr*{QhEfXsyKEj#$*x#(ig%Lc-3q44 z*Nj{WiA)n$zdh{a=`nZlEW?va&(1u1DgSG`(W8vV;qMqqZ{85%Ny<-3j897~DbX`C zlQQE{NKKC^zQDIZfc5e28ZY-x(@v*`eD7>j?ht(`dPC)}-ee(x#Dk2B7_K^rcOGJu zxZzp#L4rkz#R+JN7Kc#a0X{LP;EKLUAAq zPBEfefFi=AFdbq6he8ux6vgVCSd^cW#O{@!kyo6b2k`|v#1{;=&@Dj`VN#d@v4qFq zFkTeJ?2?$5#OhR(Uk9OH6S8ffC(&$ zmJ9@-YEffOfRRIrje}W$D}b>^sS3zolsMe{=JFqtAcm@Jp-e9ICPo#kNeV53U - version = 1 -} - -Frame { - account = AccountData { - accountSettings = AccountSettings { - customChatColors = [ - CustomChatColor { - id = 1 - solid = -16777216 - }, - CustomChatColor { - id = 2 - solid = -65536 - }, - CustomChatColor { - id = 3 - solid = -16711936 - } - ] - displayBadgesOnProfile = true - hasCompletedUsernameOnboarding = true - hasSeenGroupStoryEducationSheet = true - hasSetMyStoriesPrivacy = true - hasViewedOnboardingStory = true - keepMutedChatsArchived = true - linkPreviews = true - notDiscoverableByPhoneNumber = true - phoneNumberSharingMode = PhoneNumberSharingMode.NOBODY - preferContactAvatars = true - preferredReactionEmoji = [ - "a", - "b", - "c" - ] - readReceipts = true - sealedSenderIndicators = true - storiesDisabled = true - storyViewReceiptsEnabled = true - typingIndicators = true - universalExpireTimerSeconds = 3600 - } - avatarUrlPath = "" - donationSubscriberData = SubscriberData { - currencyCode = "USD" - manuallyCancelled = true - subscriberId = - } - familyName = "Fett" - givenName = "Boba" - profileKey = <610291abedc34249489da39a31c9a5cd99cdd26ff58732e268e357ee0075d9d8> - username = "boba_fett.66" - usernameLink = UsernameLink { - color = Color.OLIVE - entropy = <65675c73d00eb01005e3bb7c4a47f296cb6554f78981238815e915d824fd2e93> - serverId = <61c101a200d5421789c20518d8497af0> - } - } -} - -Frame { - recipient = Recipient { - id = 1 - self = Self {} - } -} - -Frame { - recipient = Recipient { - id = 2 - releaseNotes = ReleaseNotes {} - } -} - -Frame { - recipient = Recipient { - distributionList = DistributionListItem { - distributionId = <00000000000000000000000000000000> - distributionList = DistributionList { - name = "" - privacyMode = PrivacyMode.ALL - } - } - id = 3 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <000a11ce000040008000000000000001> - e164 = 16105550101 - pni = <000a11ce000040008000000000000002> - profileFamilyName = "Smith" - profileGivenName = "Alice" - profileKey = - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 4 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <00000b0b000040008000000000000001> - e164 = 16105550102 - pni = <00000b0b000040008000000000000002> - profileFamilyName = "Jones" - profileGivenName = "Bob" - profileKey = <0410410410410410410410410410410410410410410410410410410410410410> - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 5 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <0000ca01000040008000000000000001> - e164 = 16105550103 - pni = <0000ca01000040008000000000000002> - profileFamilyName = "Johnson" - profileGivenName = "Carol" - profileKey = <0820820820820820820820820820820820820820820820820820820820820820> - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 6 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <000000da000040008000000000000001> - e164 = 16105550104 - pni = <000000da000040008000000000000002> - profileFamilyName = "Brown" - profileGivenName = "Dan" - profileKey = <0c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30> - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 7 - } -} - -Frame { - recipient = Recipient { - group = Group { - masterKey = <0000000000000000000000000000000000000000000000000000000000000000> - snapshot = GroupSnapshot { - accessControl = AccessControl { - addFromInviteLink = AccessRequired.UNSATISFIABLE - attributes = AccessRequired.MEMBER - members = AccessRequired.MEMBER - } - avatarUrl = "https://example.com/avatar.jpg" - inviteLinkPassword = <> - members = [ - Member { - role = Role.ADMINISTRATOR - userId = <00000000000040008000000000000001> - }, - Member { - role = Role.DEFAULT - userId = <000a11ce000040008000000000000001> - }, - Member { - role = Role.DEFAULT - userId = <00000b0b000040008000000000000001> - } - ] - title = GroupAttributeBlob { - title = "Me, Alice, Bob" - } - version = 1 - } - storySendMode = StorySendMode.DEFAULT - whitelisted = true - } - id = 10 - } -} - -Frame { - chat = Chat { - expireTimerVersion = 1 - id = 3 - recipientId = 10 - } -} - -Frame { - chatItem = ChatItem { - authorId = 1 - chatId = 3 - dateSent = 1820168225219 - directionless = DirectionlessMessageDetails {} - updateMessage = ChatUpdateMessage { - groupChange = GroupChangeChatUpdate { - updates = [ - Update { - groupInvitationDeclinedUpdate = GroupInvitationDeclinedUpdate { - inviteeAci = <0000ca01000040008000000000000001> - inviterAci = <000a11ce000040008000000000000001> - } - }, - Update { - groupInvitationDeclinedUpdate = GroupInvitationDeclinedUpdate { - inviteeAci = <000000da000040008000000000000001> - inviterAci = <00000b0b000040008000000000000001> - } - }, - Update { - groupMemberJoinedUpdate = GroupMemberJoinedUpdate { - newMemberAci = <0000ca01000040008000000000000001> - } - } - ] - } - } - } -} \ No newline at end of file diff --git a/test-cases/chat_item_group_change_chat_update_36.txtproto b/test-cases/chat_item_group_change_chat_update_36.txtproto deleted file mode 100644 index cc5092f..0000000 --- a/test-cases/chat_item_group_change_chat_update_36.txtproto +++ /dev/null @@ -1,236 +0,0 @@ -// This file was auto-generated! It's only meant to show you what's in the .binproto. Do not edit! - -BackupInfo { - backupTimeMs = 1715636551000 - mediaRootBackupKey = <8fba3ce1946b78a4ca0d9229ddb050a12702072309d6574ae12451269e5fdbb2> - version = 1 -} - -Frame { - account = AccountData { - accountSettings = AccountSettings { - customChatColors = [ - CustomChatColor { - id = 1 - solid = -16777216 - }, - CustomChatColor { - id = 2 - solid = -65536 - }, - CustomChatColor { - id = 3 - solid = -16711936 - } - ] - displayBadgesOnProfile = true - hasCompletedUsernameOnboarding = true - hasSeenGroupStoryEducationSheet = true - hasSetMyStoriesPrivacy = true - hasViewedOnboardingStory = true - keepMutedChatsArchived = true - linkPreviews = true - notDiscoverableByPhoneNumber = true - phoneNumberSharingMode = PhoneNumberSharingMode.NOBODY - preferContactAvatars = true - preferredReactionEmoji = [ - "a", - "b", - "c" - ] - readReceipts = true - sealedSenderIndicators = true - storiesDisabled = true - storyViewReceiptsEnabled = true - typingIndicators = true - universalExpireTimerSeconds = 3600 - } - avatarUrlPath = "" - donationSubscriberData = SubscriberData { - currencyCode = "USD" - manuallyCancelled = true - subscriberId = - } - familyName = "Fett" - givenName = "Boba" - profileKey = <610291abedc34249489da39a31c9a5cd99cdd26ff58732e268e357ee0075d9d8> - username = "boba_fett.66" - usernameLink = UsernameLink { - color = Color.OLIVE - entropy = <65675c73d00eb01005e3bb7c4a47f296cb6554f78981238815e915d824fd2e93> - serverId = <61c101a200d5421789c20518d8497af0> - } - } -} - -Frame { - recipient = Recipient { - id = 1 - self = Self {} - } -} - -Frame { - recipient = Recipient { - id = 2 - releaseNotes = ReleaseNotes {} - } -} - -Frame { - recipient = Recipient { - distributionList = DistributionListItem { - distributionId = <00000000000000000000000000000000> - distributionList = DistributionList { - name = "" - privacyMode = PrivacyMode.ALL - } - } - id = 3 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <000a11ce000040008000000000000001> - e164 = 16105550101 - pni = <000a11ce000040008000000000000002> - profileFamilyName = "Smith" - profileGivenName = "Alice" - profileKey = - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 4 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <00000b0b000040008000000000000001> - e164 = 16105550102 - pni = <00000b0b000040008000000000000002> - profileFamilyName = "Jones" - profileGivenName = "Bob" - profileKey = <0410410410410410410410410410410410410410410410410410410410410410> - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 5 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <0000ca01000040008000000000000001> - e164 = 16105550103 - pni = <0000ca01000040008000000000000002> - profileFamilyName = "Johnson" - profileGivenName = "Carol" - profileKey = <0820820820820820820820820820820820820820820820820820820820820820> - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 6 - } -} - -Frame { - recipient = Recipient { - contact = Contact { - aci = <000000da000040008000000000000001> - e164 = 16105550104 - pni = <000000da000040008000000000000002> - profileFamilyName = "Brown" - profileGivenName = "Dan" - profileKey = <0c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30> - registered = Registered {} - visibility = Visibility.VISIBLE - } - id = 7 - } -} - -Frame { - recipient = Recipient { - group = Group { - masterKey = <0000000000000000000000000000000000000000000000000000000000000000> - snapshot = GroupSnapshot { - accessControl = AccessControl { - addFromInviteLink = AccessRequired.UNSATISFIABLE - attributes = AccessRequired.MEMBER - members = AccessRequired.MEMBER - } - avatarUrl = "https://example.com/avatar.jpg" - inviteLinkPassword = <> - members = [ - Member { - role = Role.ADMINISTRATOR - userId = <00000000000040008000000000000001> - }, - Member { - role = Role.DEFAULT - userId = <000a11ce000040008000000000000001> - }, - Member { - role = Role.DEFAULT - userId = <00000b0b000040008000000000000001> - } - ] - title = GroupAttributeBlob { - title = "Me, Alice, Bob" - } - version = 1 - } - storySendMode = StorySendMode.DEFAULT - whitelisted = true - } - id = 10 - } -} - -Frame { - chat = Chat { - expireTimerVersion = 1 - id = 3 - recipientId = 10 - } -} - -Frame { - chatItem = ChatItem { - authorId = 1 - chatId = 3 - dateSent = 1878937499399 - directionless = DirectionlessMessageDetails {} - updateMessage = ChatUpdateMessage { - groupChange = GroupChangeChatUpdate { - updates = [ - Update { - groupMemberJoinedUpdate = GroupMemberJoinedUpdate { - newMemberAci = <000000da000040008000000000000001> - } - }, - Update { - groupMemberAddedUpdate = GroupMemberAddedUpdate { - hadOpenInvitation = true - newMemberAci = <0000ca01000040008000000000000001> - updaterAci = <000a11ce000040008000000000000001> - } - }, - Update { - groupMemberAddedUpdate = GroupMemberAddedUpdate { - hadOpenInvitation = true - inviterAci = <000a11ce000040008000000000000001> - newMemberAci = <000000da000040008000000000000001> - updaterAci = <00000b0b000040008000000000000001> - } - } - ] - } - } - } -} \ No newline at end of file diff --git a/test-cases/chat_item_group_change_chat_update_39.binproto b/test-cases/chat_item_group_change_chat_update_39.binproto deleted file mode 100644 index ca051b44db4ded9efb6b803c6bce9f2111f044f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmdPqU=+CVYr*{QhEfXsyKEj#$*x#(ig%Lc-3q44 z*Nj{WiA)n$zdh{a=`nZlEW?va&(1u1DgSG`(W8vV;qMqqZ{85%Ny<-3j897~DbX`C zlQQE{NKKC^zQDIZfc5e28ZY-x(@v*`eD7>j?ht(`dPC)}-ee(x#Dk2B7_K^rcOGJu zxZzp#L4rkz#R+JN7Kc#a0X{LP;EKLUAAq zPBEfefFi=AFdbq6he8ux6vgVCSd^cW#O{@!kyo6b2k`|v#1{;=&@Dj`VN#d@v4qFq zFkTeJ?2?$5#OhR(Uk9OH6S8ffC(&$ zmJ9@-YEffOfRRIrje}W$D}b?1sRqbklsMe{=JFqtAcm@3p=>VERg6Ml8&E=uOLG&W Z8rE1svs8kSOMMfg3Z@CbM2VVW7y-(R?N