Skip to content

Commit 92e50ac

Browse files
committed
fix: fixes group consent tests, typo and ordering
1 parent 7f85026 commit 92e50ac

File tree

5 files changed

+73
-90
lines changed

5 files changed

+73
-90
lines changed

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

+2-32
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class ContactsTest {
1212
fun testNormalizesAddresses() {
1313
val fixtures = fixtures()
1414
fixtures.bobClient.ensureUserContactPublished()
15-
val bobAddressLowercased = fixtures.bobClient.address?.lowercase()
16-
val bobContact = fixtures.aliceClient.getUserContact(peerAddress = bobAddressLowercased!!)
15+
val bobAddressLowerCased = fixtures.bobClient.address.lowercase()
16+
val bobContact = fixtures.aliceClient.getUserContact(peerAddress = bobAddressLowerCased)
1717
assert(bobContact != null)
1818
}
1919

@@ -67,34 +67,4 @@ class ContactsTest {
6767
result = contacts.isDenied(fixtures.alice.walletAddress)
6868
assert(result)
6969
}
70-
71-
@Test
72-
fun testAllowGroup() {
73-
val groupFixtures = groupFixtures()
74-
75-
val groups = groupFixtures.bobClient.groups
76-
var result = contacts.isGroupAllowed(groupFixtures.<GROUP_ID_HERE>)
77-
78-
assert(!result)
79-
80-
contacts.allowGroup(listOf(groupFixtures.<GROUP_ID_HERE>))
81-
82-
result = contacts.isGroupAllowed(groupFixtures.<GROUP_ID_HERE>)
83-
assert(result)
84-
}
85-
86-
@Test
87-
fun testDenyGroup() {
88-
val groupFixtures = groupFixtures()
89-
90-
val groups = groupFixtures.bobClient.groups
91-
var result = contacts.isGroupAllowed(groupFixtures.<GROUP_ID_HERE>)
92-
93-
assert(!result)
94-
95-
contacts.denyGroup(listOf(groupFixtures.<GROUP_ID_HERE>))
96-
97-
result = contacts.isGroupDenied(groupFixtures.<GROUP_ID_HERE>)
98-
assert(result)
99-
}
10070
}

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

+49-12
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@ import org.xmtp.android.library.messages.walletAddress
2020

2121
@RunWith(AndroidJUnit4::class)
2222
class GroupTest {
23-
lateinit var fakeApiClient: FakeApiClient
24-
lateinit var alixWallet: PrivateKeyBuilder
25-
lateinit var boWallet: PrivateKeyBuilder
26-
lateinit var alix: PrivateKey
27-
lateinit var alixClient: Client
28-
lateinit var bo: PrivateKey
29-
lateinit var boClient: Client
30-
lateinit var caroWallet: PrivateKeyBuilder
31-
lateinit var caro: PrivateKey
32-
lateinit var caroClient: Client
33-
lateinit var fixtures: Fixtures
23+
private lateinit var fakeApiClient: FakeApiClient
24+
private lateinit var alixWallet: PrivateKeyBuilder
25+
private lateinit var boWallet: PrivateKeyBuilder
26+
private lateinit var alix: PrivateKey
27+
private lateinit var alixClient: Client
28+
private lateinit var bo: PrivateKey
29+
private lateinit var boClient: Client
30+
private lateinit var caroWallet: PrivateKeyBuilder
31+
private lateinit var caro: PrivateKey
32+
private lateinit var caroClient: Client
33+
private lateinit var fixtures: Fixtures
3434

3535
@Before
3636
fun setUp() {
@@ -150,7 +150,7 @@ class GroupTest {
150150

151151
@Test
152152
fun testCannotSendMessageToGroupMemberNotOnV3() {
153-
var fakeApiClient = FakeApiClient()
153+
val fakeApiClient = FakeApiClient()
154154
val chuxAccount = PrivateKeyBuilder()
155155
val chux: PrivateKey = chuxAccount.getPrivateKey()
156156
val chuxClient: Client = Client().create(account = chuxAccount, apiClient = fakeApiClient)
@@ -264,4 +264,41 @@ class GroupTest {
264264
assertEquals(conversation.topic, awaitItem().topic)
265265
}
266266
}
267+
268+
@Test
269+
fun testCanAllowGroup() {
270+
val group = boClient.conversations.newGroup(
271+
listOf(
272+
alix.walletAddress,
273+
caro.walletAddress
274+
)
275+
)
276+
277+
var result = boClient.contacts.isGroupAllowed(group.id)
278+
279+
assert(!result)
280+
281+
boClient.contacts.allowGroup(listOf(group.id))
282+
283+
result = boClient.contacts.isGroupAllowed(group.id)
284+
assert(result)
285+
}
286+
287+
@Test
288+
fun testCanDenyGroup() {
289+
val group = boClient.conversations.newGroup(
290+
listOf(
291+
alix.walletAddress,
292+
caro.walletAddress
293+
)
294+
)
295+
var result = boClient.contacts.isGroupAllowed(group.id)
296+
297+
assert(!result)
298+
299+
boClient.contacts.denyGroup(listOf(group.id))
300+
301+
result = boClient.contacts.isGroupDenied(group.id)
302+
assert(result)
303+
}
267304
}

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

+16-18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.xmtp.android.library
22

3-
import com.google.protobuf.ByteString
43
import com.google.protobuf.kotlin.toByteStringUtf8
54
import kotlinx.coroutines.runBlocking
65
import org.xmtp.android.library.messages.ContactBundle
@@ -11,7 +10,6 @@ import org.xmtp.android.library.messages.Topic
1110
import org.xmtp.android.library.messages.walletAddress
1211
import org.xmtp.proto.message.api.v1.MessageApiOuterClass
1312
import org.xmtp.proto.message.contents.PrivatePreferences.PrivatePreferencesAction
14-
import java.security.KeyStore.Entry
1513
import java.util.Date
1614

1715
enum class ConsentState {
@@ -203,14 +201,6 @@ data class Contacts(
203201
return consentList
204202
}
205203

206-
fun isAllowed(address: String): Boolean {
207-
return consentList.state(address) == ConsentState.ALLOWED
208-
}
209-
210-
fun isDenied(address: String): Boolean {
211-
return consentList.state(address) == ConsentState.DENIED
212-
}
213-
214204
fun allow(addresses: List<String>) {
215205
for (address in addresses) {
216206
ConsentList(client).publish(consentList.allow(address))
@@ -223,14 +213,6 @@ data class Contacts(
223213
}
224214
}
225215

226-
fun isGroupAllowed(groupId: ByteArray): Boolean {
227-
return consentList.groupState(groupId) == ConsentState.ALLOWED
228-
}
229-
230-
fun isGroupDenied(groupId: ByteArray): Boolean {
231-
return consentList.groupState(groupId) == ConsentState.DENIED
232-
}
233-
234216
fun allowGroup(groupIds: List<ByteArray>) {
235217
for (id in groupIds) {
236218
ConsentList(client).publish(consentList.allowGroup(id))
@@ -243,6 +225,22 @@ data class Contacts(
243225
}
244226
}
245227

228+
fun isAllowed(address: String): Boolean {
229+
return consentList.state(address) == ConsentState.ALLOWED
230+
}
231+
232+
fun isDenied(address: String): Boolean {
233+
return consentList.state(address) == ConsentState.DENIED
234+
}
235+
236+
fun isGroupAllowed(groupId: ByteArray): Boolean {
237+
return consentList.groupState(groupId) == ConsentState.ALLOWED
238+
}
239+
240+
fun isGroupDenied(groupId: ByteArray): Boolean {
241+
return consentList.groupState(groupId) == ConsentState.DENIED
242+
}
243+
246244
fun has(peerAddress: String): Boolean =
247245
knownBundles[peerAddress] != null
248246

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ sealed class Conversation {
214214
return client.address
215215
}
216216

217-
// Is the topic of the conversation depending of the version
217+
// Is the topic of the conversation depending on the version
218218
val topic: String
219219
get() {
220220
return when (this) {

library/src/test/java/org/xmtp/android/library/TestHelpers.kt

+5-27
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,11 @@ class FakeWallet : SigningKey {
4343
}
4444

4545
override suspend fun sign(data: ByteArray): Signature {
46-
val signature = privateKeyBuilder.sign(data)
47-
return signature
46+
return privateKeyBuilder.sign(data)
4847
}
4948

5049
override suspend fun sign(message: String): Signature {
51-
val signature = privateKeyBuilder.sign(message)
52-
return signature
50+
return privateKeyBuilder.sign(message)
5351
}
5452

5553
override val address: String
@@ -66,8 +64,8 @@ class FakeApiClient : ApiClient {
6664
override val environment: XMTPEnvironment = XMTPEnvironment.LOCAL
6765
private var authToken: String? = null
6866
private val responses: MutableMap<String, List<Envelope>> = mutableMapOf()
69-
val published: MutableList<Envelope> = mutableListOf()
70-
var forbiddingQueries = false
67+
private val published: MutableList<Envelope> = mutableListOf()
68+
private var forbiddingQueries = false
7169
private var stream = FakeStreamHolder()
7270

7371
fun assertNoPublish(callback: () -> Unit) {
@@ -233,24 +231,4 @@ data class Fixtures(val aliceAccount: PrivateKeyBuilder, val bobAccount: Private
233231
}
234232

235233
fun fixtures(): Fixtures =
236-
Fixtures()
237-
238-
data class GroupFixtures() {
239-
var fakeApiClient: FakeApiClient = FakeApiClient()
240-
var alice: PrivateKey = aliceAccount.getPrivateKey()
241-
var aliceClient: Client = Client().create(account = aliceAccount, apiClient = fakeApiClient)
242-
var bob: PrivateKey = bobAccount.getPrivateKey()
243-
var bobClient: Client = Client().create(account = bobAccount, apiClient = fakeApiClient)
244-
var charlie: PrivateKey = bobAccount.getPrivateKey()
245-
var charlieClient: Client = Client().create(account = charlieAccount, apiClient = fakeApiClient)
246-
247-
constructor() : this(aliceAccount = PrivateKeyBuilder(), bobAccount = PrivateKeyBuilder(), charlieAccount = PrivateKeyBuilder())
248-
249-
// TODO: Insert necessary group creation/publish functions
250-
251-
}
252-
253-
fun groupFixtures(): GroupFixtures =
254-
GroupFixtures()
255-
256-
234+
Fixtures()

0 commit comments

Comments
 (0)