That fuck shit the fascists are using
at master 55 lines 2.1 kB view raw
1package org.tm.archive.testing 2 3import okio.ByteString.Companion.toByteString 4import org.signal.libsignal.zkgroup.groups.GroupMasterKey 5import org.signal.storageservice.protos.groups.Member 6import org.signal.storageservice.protos.groups.local.DecryptedGroup 7import org.signal.storageservice.protos.groups.local.DecryptedMember 8import org.tm.archive.database.SignalDatabase 9import org.tm.archive.groups.GroupId 10import org.tm.archive.recipients.Recipient 11import org.tm.archive.recipients.RecipientId 12import org.whispersystems.signalservice.api.push.ServiceId.ACI 13import org.whispersystems.signalservice.internal.push.GroupContextV2 14import kotlin.random.Random 15 16/** 17 * Helper methods for creating groups for message processing tests et al. 18 */ 19object GroupTestingUtils { 20 fun member(aci: ACI, revision: Int = 0, role: Member.Role = Member.Role.ADMINISTRATOR): DecryptedMember { 21 return DecryptedMember.Builder() 22 .aciBytes(aci.toByteString()) 23 .joinedAtRevision(revision) 24 .role(role) 25 .build() 26 } 27 28 fun insertGroup(revision: Int = 0, vararg members: DecryptedMember): TestGroupInfo { 29 val groupMasterKey = GroupMasterKey(Random.nextBytes(GroupMasterKey.SIZE)) 30 val decryptedGroupState = DecryptedGroup.Builder() 31 .members(members.toList()) 32 .revision(revision) 33 .title(MessageContentFuzzer.string()) 34 .build() 35 36 val groupId = SignalDatabase.groups.create(groupMasterKey, decryptedGroupState)!! 37 val groupRecipientId = SignalDatabase.recipients.getOrInsertFromGroupId(groupId) 38 SignalDatabase.recipients.setProfileSharing(groupRecipientId, true) 39 40 return TestGroupInfo(groupId, groupMasterKey, groupRecipientId) 41 } 42 43 fun RecipientId.asMember(): DecryptedMember { 44 return Recipient.resolved(this).asMember() 45 } 46 47 fun Recipient.asMember(): DecryptedMember { 48 return member(aci = requireAci()) 49 } 50 51 data class TestGroupInfo(val groupId: GroupId.V2, val masterKey: GroupMasterKey, val recipientId: RecipientId) { 52 val groupV2Context: GroupContextV2 53 get() = GroupContextV2(masterKey = masterKey.serialize().toByteString(), revision = 0) 54 } 55}