mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-28 22:18:46 +03:00
Fix test helper not working
This commit is contained in:
parent
b9fdc14e18
commit
9bf5059631
3 changed files with 16 additions and 46 deletions
|
@ -88,7 +88,10 @@ class CommonTestHelper(context: Context) {
|
||||||
fun syncSession(session: Session) {
|
fun syncSession(session: Session) {
|
||||||
val lock = CountDownLatch(1)
|
val lock = CountDownLatch(1)
|
||||||
|
|
||||||
GlobalScope.launch(Dispatchers.Main) { session.open() }
|
val job = GlobalScope.launch(Dispatchers.Main) {
|
||||||
|
session.open()
|
||||||
|
}
|
||||||
|
runBlocking { job.join() }
|
||||||
|
|
||||||
session.startSync(true)
|
session.startSync(true)
|
||||||
|
|
||||||
|
@ -341,7 +344,7 @@ class CommonTestHelper(context: Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transform a method with a MatrixCallback to a synchronous method
|
// Transform a method with a MatrixCallback to a synchronous method
|
||||||
inline fun <reified T> doSync(block: (MatrixCallback<T>) -> Unit): T {
|
inline fun <reified T> doSync(timeout: Long? = TestConstants.timeOutMillis, block: (MatrixCallback<T>) -> Unit): T {
|
||||||
val lock = CountDownLatch(1)
|
val lock = CountDownLatch(1)
|
||||||
var result: T? = null
|
var result: T? = null
|
||||||
|
|
||||||
|
@ -354,7 +357,7 @@ class CommonTestHelper(context: Context) {
|
||||||
|
|
||||||
block.invoke(callback)
|
block.invoke(callback)
|
||||||
|
|
||||||
await(lock)
|
await(lock, timeout)
|
||||||
|
|
||||||
assertNotNull(result)
|
assertNotNull(result)
|
||||||
return result!!
|
return result!!
|
||||||
|
@ -366,8 +369,9 @@ class CommonTestHelper(context: Context) {
|
||||||
fun Iterable<Session>.signOutAndClose() = forEach { signOutAndClose(it) }
|
fun Iterable<Session>.signOutAndClose() = forEach { signOutAndClose(it) }
|
||||||
|
|
||||||
fun signOutAndClose(session: Session) {
|
fun signOutAndClose(session: Session) {
|
||||||
doSync<Unit> { session.signOut(true, it) }
|
doSync<Unit>(60_000) { session.signOut(true, it) }
|
||||||
session.close()
|
// no need signout will close
|
||||||
|
// session.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,9 +32,6 @@ import org.matrix.android.sdk.api.session.room.model.Membership
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams
|
import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams
|
||||||
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
|
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
|
||||||
import org.matrix.android.sdk.api.session.room.timeline.Timeline
|
|
||||||
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
|
||||||
import org.matrix.android.sdk.api.session.room.timeline.TimelineSettings
|
|
||||||
import org.matrix.android.sdk.internal.crypto.MXCRYPTO_ALGORITHM_MEGOLM
|
import org.matrix.android.sdk.internal.crypto.MXCRYPTO_ALGORITHM_MEGOLM
|
||||||
import org.matrix.android.sdk.internal.crypto.MXCRYPTO_ALGORITHM_MEGOLM_BACKUP
|
import org.matrix.android.sdk.internal.crypto.MXCRYPTO_ALGORITHM_MEGOLM_BACKUP
|
||||||
import org.matrix.android.sdk.internal.crypto.keysbackup.model.MegolmBackupAuthData
|
import org.matrix.android.sdk.internal.crypto.keysbackup.model.MegolmBackupAuthData
|
||||||
|
@ -197,47 +194,16 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) {
|
||||||
val roomFromBobPOV = bobSession.getRoom(aliceRoomId)!!
|
val roomFromBobPOV = bobSession.getRoom(aliceRoomId)!!
|
||||||
val roomFromAlicePOV = aliceSession.getRoom(aliceRoomId)!!
|
val roomFromAlicePOV = aliceSession.getRoom(aliceRoomId)!!
|
||||||
|
|
||||||
val lock = CountDownLatch(1)
|
|
||||||
|
|
||||||
val bobEventsListener = object : Timeline.Listener {
|
|
||||||
override fun onTimelineFailure(throwable: Throwable) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onNewTimelineEvents(eventIds: List<String>) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onTimelineUpdated(snapshot: List<TimelineEvent>) {
|
|
||||||
val messages = snapshot.filter { it.root.getClearType() == EventType.MESSAGE }
|
|
||||||
.groupBy { it.root.senderId!! }
|
|
||||||
|
|
||||||
// Alice has sent 2 messages and Bob has sent 3 messages
|
|
||||||
if (messages[aliceSession.myUserId]?.size == 2 && messages[bobSession.myUserId]?.size == 3) {
|
|
||||||
lock.countDown()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val bobTimeline = roomFromBobPOV.createTimeline(null, TimelineSettings(20))
|
|
||||||
bobTimeline.start()
|
|
||||||
bobTimeline.addListener(bobEventsListener)
|
|
||||||
|
|
||||||
// Alice sends a message
|
// Alice sends a message
|
||||||
roomFromAlicePOV.sendTextMessage(messagesFromAlice[0])
|
mTestHelper.sendTextMessage(roomFromAlicePOV, messagesFromAlice[0], 1)
|
||||||
|
// roomFromAlicePOV.sendTextMessage(messagesFromAlice[0])
|
||||||
|
|
||||||
// Bob send 3 messages
|
// Bob send 3 messages
|
||||||
roomFromBobPOV.sendTextMessage(messagesFromBob[0])
|
mTestHelper.sendTextMessage(roomFromBobPOV, messagesFromBob[0], 1)
|
||||||
roomFromBobPOV.sendTextMessage(messagesFromBob[1])
|
mTestHelper.sendTextMessage(roomFromBobPOV, messagesFromBob[1], 1)
|
||||||
roomFromBobPOV.sendTextMessage(messagesFromBob[2])
|
mTestHelper.sendTextMessage(roomFromBobPOV, messagesFromBob[2], 1)
|
||||||
|
|
||||||
// Alice sends a message
|
// Alice sends a message
|
||||||
roomFromAlicePOV.sendTextMessage(messagesFromAlice[1])
|
mTestHelper.sendTextMessage(roomFromAlicePOV, messagesFromAlice[1], 1)
|
||||||
|
|
||||||
mTestHelper.await(lock)
|
|
||||||
|
|
||||||
bobTimeline.removeListener(bobEventsListener)
|
|
||||||
bobTimeline.dispose()
|
|
||||||
|
|
||||||
return cryptoTestData
|
return cryptoTestData
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ import javax.inject.Inject
|
||||||
* in the session DB, this class encapsulate this functionality
|
* in the session DB, this class encapsulate this functionality
|
||||||
*/
|
*/
|
||||||
internal class CryptoSessionInfoProvider @Inject constructor(
|
internal class CryptoSessionInfoProvider @Inject constructor(
|
||||||
@SessionDatabase private val monarchy: Monarchy,
|
@SessionDatabase private val monarchy: Monarchy
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun isRoomEncrypted(roomId: String): Boolean {
|
fun isRoomEncrypted(roomId: String): Boolean {
|
||||||
|
|
Loading…
Reference in a new issue