@@ -17,6 +17,7 @@ import org.xmtp.android.library.codecs.ReactionSchema
17
17
import org.xmtp.android.library.messages.PrivateKey
18
18
import org.xmtp.android.library.messages.PrivateKeyBuilder
19
19
import org.xmtp.android.library.messages.walletAddress
20
+ import uniffi.xmtpv3.GroupPermissions
20
21
21
22
@RunWith(AndroidJUnit4 ::class )
22
23
class GroupTest {
@@ -57,9 +58,63 @@ class GroupTest {
57
58
}
58
59
59
60
@Test
60
- fun testCanCreateAGroup () {
61
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress))
62
- assert (group.id.isNotEmpty())
61
+ fun testCanCreateAGroupWithDefaultPermissions () {
62
+ val boGroup = boClient.conversations.newGroup(listOf (alix.walletAddress))
63
+ runBlocking { alixClient.conversations.syncGroups() }
64
+ val alixGroup = alixClient.conversations.listGroups().first()
65
+ assert (boGroup.id.isNotEmpty())
66
+ assert (alixGroup.id.isNotEmpty())
67
+
68
+ alixGroup.addMembers(listOf (caro.walletAddress))
69
+ runBlocking { boGroup.sync() }
70
+ assertEquals(alixGroup.memberAddresses().size, 3 )
71
+ assertEquals(boGroup.memberAddresses().size, 3 )
72
+
73
+ alixGroup.removeMembers(listOf (caro.walletAddress))
74
+ runBlocking { boGroup.sync() }
75
+ assertEquals(alixGroup.memberAddresses().size, 2 )
76
+ assertEquals(boGroup.memberAddresses().size, 2 )
77
+
78
+ boGroup.addMembers(listOf (caro.walletAddress))
79
+ runBlocking { alixGroup.sync() }
80
+ assertEquals(alixGroup.memberAddresses().size, 3 )
81
+ assertEquals(boGroup.memberAddresses().size, 3 )
82
+ }
83
+
84
+ @Test
85
+ fun testCanCreateAGroupWithAdminPermissions () {
86
+ val boGroup = boClient.conversations.newGroup(
87
+ listOf (alix.walletAddress),
88
+ permissions = GroupPermissions .GROUP_CREATOR_IS_ADMIN
89
+ )
90
+ runBlocking { alixClient.conversations.syncGroups() }
91
+ val alixGroup = alixClient.conversations.listGroups().first()
92
+ assert (boGroup.id.isNotEmpty())
93
+ assert (alixGroup.id.isNotEmpty())
94
+
95
+ boGroup.addMembers(listOf (caro.walletAddress))
96
+ runBlocking { alixGroup.sync() }
97
+ assertEquals(alixGroup.memberAddresses().size, 3 )
98
+ assertEquals(boGroup.memberAddresses().size, 3 )
99
+
100
+ assertThrows(XMTPException ::class .java) {
101
+ alixGroup.removeMembers(listOf (caro.walletAddress))
102
+ }
103
+ runBlocking { boGroup.sync() }
104
+ assertEquals(alixGroup.memberAddresses().size, 3 )
105
+ assertEquals(boGroup.memberAddresses().size, 3 )
106
+
107
+ boGroup.removeMembers(listOf (caro.walletAddress))
108
+ runBlocking { alixGroup.sync() }
109
+ assertEquals(alixGroup.memberAddresses().size, 2 )
110
+ assertEquals(boGroup.memberAddresses().size, 2 )
111
+
112
+ assertThrows(XMTPException ::class .java) {
113
+ alixGroup.addMembers(listOf (caro.walletAddress))
114
+ }
115
+ runBlocking { boGroup.sync() }
116
+ assertEquals(alixGroup.memberAddresses().size, 2 )
117
+ assertEquals(boGroup.memberAddresses().size, 2 )
63
118
}
64
119
65
120
@Test
@@ -241,22 +296,25 @@ class GroupTest {
241
296
@Test
242
297
fun testCanStreamGroupMessages () = kotlinx.coroutines.test.runTest {
243
298
val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
299
+ alixClient.conversations.syncGroups()
300
+ val alixGroup = alixClient.conversations.listGroups().first()
244
301
group.streamMessages().test {
245
- group .send(" hi" )
302
+ alixGroup .send(" hi" )
246
303
assertEquals(" hi" , awaitItem().body)
247
- group .send(" hi again" )
304
+ alixGroup .send(" hi again" )
248
305
assertEquals(" hi again" , awaitItem().body)
249
306
}
250
307
}
251
308
252
309
@Test
253
310
fun testCanStreamDecryptedGroupMessages () = kotlinx.coroutines.test.runTest {
254
311
val group = boClient.conversations.newGroup(listOf (alix.walletAddress))
255
-
312
+ alixClient.conversations.syncGroups()
313
+ val alixGroup = alixClient.conversations.listGroups().first()
256
314
group.streamDecryptedMessages().test {
257
- group .send(" hi" )
315
+ alixGroup .send(" hi" )
258
316
assertEquals(" hi" , awaitItem().encodedContent.content.toStringUtf8())
259
- group .send(" hi again" )
317
+ alixGroup .send(" hi again" )
260
318
assertEquals(" hi again" , awaitItem().encodedContent.content.toStringUtf8())
261
319
}
262
320
}
0 commit comments