@@ -2,10 +2,9 @@ package org.xmtp.android.library
2
2
3
3
import androidx.test.ext.junit.runners.AndroidJUnit4
4
4
import androidx.test.platform.app.InstrumentationRegistry
5
- import app.cash.turbine.test
6
- import kotlinx.coroutines.ExperimentalCoroutinesApi
7
5
import kotlinx.coroutines.runBlocking
8
6
import org.junit.Assert.assertEquals
7
+ import org.junit.Assert.assertThrows
9
8
import org.junit.Before
10
9
import org.junit.Test
11
10
import org.junit.runner.RunWith
@@ -18,7 +17,6 @@ import org.xmtp.android.library.messages.PrivateKey
18
17
import org.xmtp.android.library.messages.PrivateKeyBuilder
19
18
import org.xmtp.android.library.messages.walletAddress
20
19
21
- @OptIn(ExperimentalCoroutinesApi ::class )
22
20
@RunWith(AndroidJUnit4 ::class )
23
21
class GroupTest {
24
22
lateinit var fakeApiClient: FakeApiClient
@@ -59,16 +57,16 @@ class GroupTest {
59
57
60
58
@Test
61
59
fun testCanCreateAGroup () {
62
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase() ))
60
+ val group = boClient.conversations.newGroup(listOf (alix.walletAddress))
63
61
assert (group.id.isNotEmpty())
64
62
}
65
63
66
64
@Test
67
65
fun testCanListGroupMembers () {
68
66
val group = boClient.conversations.newGroup(
69
67
listOf (
70
- alix.walletAddress.lowercase() ,
71
- caro.walletAddress.lowercase()
68
+ alix.walletAddress,
69
+ caro.walletAddress
72
70
)
73
71
)
74
72
assertEquals(
@@ -83,8 +81,8 @@ class GroupTest {
83
81
84
82
@Test
85
83
fun testCanAddGroupMembers () {
86
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase() ))
87
- group.addMembers(listOf (caro.walletAddress.lowercase() ))
84
+ val group = boClient.conversations.newGroup(listOf (alix.walletAddress))
85
+ group.addMembers(listOf (caro.walletAddress))
88
86
assertEquals(
89
87
group.memberAddresses().sorted(),
90
88
listOf (
@@ -99,11 +97,11 @@ class GroupTest {
99
97
fun testCanRemoveGroupMembers () {
100
98
val group = boClient.conversations.newGroup(
101
99
listOf (
102
- alix.walletAddress.lowercase() ,
103
- caro.walletAddress.lowercase()
100
+ alix.walletAddress,
101
+ caro.walletAddress
104
102
)
105
103
)
106
- group.removeMembers(listOf (caro.walletAddress.lowercase() ))
104
+ group.removeMembers(listOf (caro.walletAddress))
107
105
assertEquals(
108
106
group.memberAddresses().sorted(),
109
107
listOf (
@@ -115,28 +113,50 @@ class GroupTest {
115
113
116
114
@Test
117
115
fun testCanListGroups () {
118
- boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase() ))
119
- boClient.conversations.newGroup(listOf (caro.walletAddress.lowercase() ))
116
+ boClient.conversations.newGroup(listOf (alix.walletAddress))
117
+ boClient.conversations.newGroup(listOf (caro.walletAddress))
120
118
val groups = boClient.conversations.listGroups()
121
119
assertEquals(groups.size, 2 )
122
120
}
123
121
124
122
@Test
125
123
fun testCanListGroupsAndConversations () {
126
- boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
127
- boClient.conversations.newGroup(listOf (caro.walletAddress.lowercase()))
128
- try {
129
- boClient.conversations.newConversation(alix.walletAddress)
130
- } catch (e: Exception ) {
131
- boClient.conversations.newConversation(alix.walletAddress.lowercase())
132
- }
124
+ boClient.conversations.newGroup(listOf (alix.walletAddress))
125
+ boClient.conversations.newGroup(listOf (caro.walletAddress))
126
+ boClient.conversations.newConversation(alix.walletAddress)
133
127
val convos = boClient.conversations.list(includeGroups = true )
134
128
assertEquals(convos.size, 3 )
135
129
}
136
130
131
+ @Test
132
+ fun testCannotSendMessageToGroupMemberNotOnV3 () {
133
+ var fakeApiClient = FakeApiClient ()
134
+ val chuxAccount = PrivateKeyBuilder ()
135
+ val chux: PrivateKey = chuxAccount.getPrivateKey()
136
+ val chuxClient: Client = Client ().create(account = chuxAccount, apiClient = fakeApiClient)
137
+
138
+ assertThrows(" Recipient not on network" , XMTPException ::class .java) {
139
+ boClient.conversations.newGroup(listOf (chux.walletAddress))
140
+ }
141
+ }
142
+
143
+ @Test
144
+ fun testCannotStartGroupWithSelf () {
145
+ assertThrows(" Recipient is sender" , XMTPException ::class .java) {
146
+ boClient.conversations.newGroup(listOf (bo.walletAddress))
147
+ }
148
+ }
149
+
150
+ @Test
151
+ fun testCannotStartEmptyGroupChat () {
152
+ assertThrows(" Cannot start an empty group chat." , XMTPException ::class .java) {
153
+ boClient.conversations.newGroup(listOf ())
154
+ }
155
+ }
156
+
137
157
@Test
138
158
fun testCanSendMessageToGroup () {
139
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase() ))
159
+ val group = boClient.conversations.newGroup(listOf (alix.walletAddress))
140
160
group.send(" howdy" )
141
161
group.send(" gm" )
142
162
runBlocking { group.sync() }
@@ -154,7 +174,7 @@ class GroupTest {
154
174
fun testCanSendContentTypesToGroup () {
155
175
Client .register(codec = ReactionCodec ())
156
176
157
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase() ))
177
+ val group = boClient.conversations.newGroup(listOf (alix.walletAddress))
158
178
group.send(" gm" )
159
179
runBlocking { group.sync() }
160
180
val messageToReact = group.messages()[0 ]
0 commit comments