Skip to content

Commit e1eec1d

Browse files
authored
group preference actions (#180)
1 parent 9f81f85 commit e1eec1d

File tree

8 files changed

+211
-79
lines changed

8 files changed

+211
-79
lines changed

library/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ dependencies {
8686
implementation 'org.web3j:crypto:5.0.0'
8787
implementation "net.java.dev.jna:jna:5.13.0@aar"
8888
api 'com.google.protobuf:protobuf-kotlin-lite:3.22.3'
89-
api 'org.xmtp:proto-kotlin:3.40.1'
89+
api 'org.xmtp:proto-kotlin:3.43.2'
9090

9191
testImplementation 'junit:junit:4.13.2'
9292
androidTestImplementation 'app.cash.turbine:turbine:0.12.1'

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

+3-3
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

@@ -54,7 +54,7 @@ class ContactsTest {
5454
}
5555

5656
@Test
57-
fun testBlockAddress() {
57+
fun testDenyAddress() {
5858
val fixtures = fixtures()
5959

6060
val contacts = fixtures.bobClient.contacts

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

+62-12
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ import uniffi.xmtpv3.GroupPermissions
2121

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

3636
@Before
3737
fun setUp() {
@@ -99,6 +99,9 @@ class GroupTest {
9999
assert(boGroup.id.isNotEmpty())
100100
assert(alixGroup.id.isNotEmpty())
101101

102+
assertEquals(boClient.contacts.consentList.groupState(boGroup.id), ConsentState.ALLOWED)
103+
assertEquals(alixClient.contacts.consentList.groupState(alixGroup.id), ConsentState.UNKNOWN)
104+
102105
boGroup.addMembers(listOf(caro.walletAddress))
103106
runBlocking { alixGroup.sync() }
104107
assertEquals(alixGroup.memberAddresses().size, 3)
@@ -239,7 +242,7 @@ class GroupTest {
239242

240243
@Test
241244
fun testCannotSendMessageToGroupMemberNotOnV3() {
242-
var fakeApiClient = FakeApiClient()
245+
val fakeApiClient = FakeApiClient()
243246
val chuxAccount = PrivateKeyBuilder()
244247
val chux: PrivateKey = chuxAccount.getPrivateKey()
245248
val chuxClient: Client = Client().create(account = chuxAccount, apiClient = fakeApiClient)
@@ -263,6 +266,16 @@ class GroupTest {
263266
}
264267
}
265268

269+
@Test
270+
fun testGroupStartsWithAllowedState() {
271+
val group = boClient.conversations.newGroup(listOf(alix.walletAddress))
272+
group.send("howdy")
273+
group.send("gm")
274+
runBlocking { group.sync() }
275+
assert(boClient.contacts.isGroupAllowed(group.id))
276+
assertEquals(boClient.contacts.consentList.groupState(group.id), ConsentState.ALLOWED)
277+
}
278+
266279
@Test
267280
fun testCanSendMessageToGroup() {
268281
val group = boClient.conversations.newGroup(listOf(alix.walletAddress))
@@ -406,4 +419,41 @@ class GroupTest {
406419
assertEquals(conversation.topic, awaitItem().topic)
407420
}
408421
}
422+
423+
@Test
424+
fun testCanAllowGroup() {
425+
val group = boClient.conversations.newGroup(
426+
listOf(
427+
alix.walletAddress,
428+
caro.walletAddress
429+
)
430+
)
431+
432+
var result = boClient.contacts.isGroupAllowed(group.id)
433+
434+
assert(!result)
435+
436+
boClient.contacts.allowGroup(listOf(group.id))
437+
438+
result = boClient.contacts.isGroupAllowed(group.id)
439+
assert(result)
440+
}
441+
442+
@Test
443+
fun testCanDenyGroup() {
444+
val group = boClient.conversations.newGroup(
445+
listOf(
446+
alix.walletAddress,
447+
caro.walletAddress
448+
)
449+
)
450+
var result = boClient.contacts.isGroupAllowed(group.id)
451+
452+
assert(!result)
453+
454+
boClient.contacts.denyGroup(listOf(group.id))
455+
456+
result = boClient.contacts.isGroupDenied(group.id)
457+
assert(result)
458+
}
409459
}

0 commit comments

Comments
 (0)