Skip to content

Commit d44ba7d

Browse files
committed
add more involved tests around permissions
1 parent f90494d commit d44ba7d

File tree

2 files changed

+61
-7
lines changed
  • library/src

2 files changed

+61
-7
lines changed

library/src/androidTest/java/org/xmtp/android/library/GroupTest.kt

+50-5
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,63 @@ class GroupTest {
5858
}
5959

6060
@Test
61-
fun testCanCreateAGroup() {
62-
val group = boClient.conversations.newGroup(listOf(alix.walletAddress))
63-
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)
6482
}
6583

6684
@Test
6785
fun testCanCreateAGroupWithAdminPermissions() {
68-
val group = boClient.conversations.newGroup(
86+
val boGroup = boClient.conversations.newGroup(
6987
listOf(alix.walletAddress),
7088
permissions = GroupPermissions.GROUP_CREATOR_IS_ADMIN
7189
)
72-
assert(group.id.isNotEmpty())
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)
73118
}
74119

75120
@Test

library/src/main/java/org/xmtp/android/library/Group.kt

+11-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import uniffi.xmtpv3.FfiGroup
1515
import uniffi.xmtpv3.FfiListMessagesOptions
1616
import uniffi.xmtpv3.FfiMessage
1717
import uniffi.xmtpv3.FfiMessageCallback
18+
import java.lang.Exception
1819
import java.util.Date
1920
import kotlin.time.Duration.Companion.nanoseconds
2021
import kotlin.time.DurationUnit
@@ -133,11 +134,19 @@ class Group(val client: Client, private val libXMTPGroup: FfiGroup) {
133134
}
134135

135136
fun addMembers(addresses: List<String>) {
136-
runBlocking { libXMTPGroup.addMembers(addresses) }
137+
try {
138+
runBlocking { libXMTPGroup.addMembers(addresses) }
139+
} catch (e: Exception) {
140+
throw XMTPException("User does not have permissions", e)
141+
}
137142
}
138143

139144
fun removeMembers(addresses: List<String>) {
140-
runBlocking { libXMTPGroup.removeMembers(addresses) }
145+
try {
146+
runBlocking { libXMTPGroup.removeMembers(addresses) }
147+
} catch (e: Exception) {
148+
throw XMTPException("User does not have permissions", e)
149+
}
141150
}
142151

143152
fun memberAddresses(): List<String> {

0 commit comments

Comments
 (0)