Fix test compilation (not passing)

This commit is contained in:
Valere 2021-11-25 18:32:10 +01:00
parent 210e0241d3
commit 0e44e32d2a
5 changed files with 343 additions and 309 deletions

View File

@ -112,7 +112,7 @@ class XSigningTest : InstrumentedTest {
}, it) } }, it) }
// Check that alice can see bob keys // Check that alice can see bob keys
mTestHelper.doSync<MXUsersDevicesMap<CryptoDeviceInfo>> { aliceSession.cryptoService().downloadKeys(listOf(bobSession.myUserId), true, it) } mTestHelper.runBlockingTest { aliceSession.cryptoService().downloadKeys(listOf(bobSession.myUserId), true) }
val bobKeysFromAlicePOV = aliceSession.cryptoService().crossSigningService().getUserCrossSigningKeys(bobSession.myUserId) val bobKeysFromAlicePOV = aliceSession.cryptoService().crossSigningService().getUserCrossSigningKeys(bobSession.myUserId)
assertNotNull("Alice can see bob Master key", bobKeysFromAlicePOV!!.masterKey()) assertNotNull("Alice can see bob Master key", bobKeysFromAlicePOV!!.masterKey())
@ -157,7 +157,7 @@ class XSigningTest : InstrumentedTest {
// Check that alice can see bob keys // Check that alice can see bob keys
val bobUserId = bobSession.myUserId val bobUserId = bobSession.myUserId
mTestHelper.doSync<MXUsersDevicesMap<CryptoDeviceInfo>> { aliceSession.cryptoService().downloadKeys(listOf(bobUserId), true, it) } mTestHelper.runBlockingTest { aliceSession.cryptoService().downloadKeys(listOf(bobUserId), true) }
val bobKeysFromAlicePOV = aliceSession.cryptoService().crossSigningService().getUserCrossSigningKeys(bobUserId) val bobKeysFromAlicePOV = aliceSession.cryptoService().crossSigningService().getUserCrossSigningKeys(bobUserId)
assertTrue("Bob keys from alice pov should not be trusted", bobKeysFromAlicePOV?.isTrusted() == false) assertTrue("Bob keys from alice pov should not be trusted", bobKeysFromAlicePOV?.isTrusted() == false)
@ -171,8 +171,8 @@ class XSigningTest : InstrumentedTest {
val bobSecondDeviceId = bobSession2.sessionParams.deviceId!! val bobSecondDeviceId = bobSession2.sessionParams.deviceId!!
// Check that bob first session sees the new login // Check that bob first session sees the new login
val data = mTestHelper.doSync<MXUsersDevicesMap<CryptoDeviceInfo>> { val data = mTestHelper.runBlockingTest {
bobSession.cryptoService().downloadKeys(listOf(bobUserId), true, it) bobSession.cryptoService().downloadKeys(listOf(bobUserId), true)
} }
if (data.getUserDeviceIds(bobUserId)?.contains(bobSecondDeviceId) == false) { if (data.getUserDeviceIds(bobUserId)?.contains(bobSecondDeviceId) == false) {
@ -188,8 +188,8 @@ class XSigningTest : InstrumentedTest {
} }
// Now alice should cross trust bob's second device // Now alice should cross trust bob's second device
val data2 = mTestHelper.doSync<MXUsersDevicesMap<CryptoDeviceInfo>> { val data2 = mTestHelper.runBlockingTest {
aliceSession.cryptoService().downloadKeys(listOf(bobUserId), true, it) aliceSession.cryptoService().downloadKeys(listOf(bobUserId), true)
} }
// check that the device is seen // check that the device is seen

View File

@ -218,11 +218,11 @@ class KeyShareTests : InstrumentedTest {
} }
// Also bootstrap keybackup on first session // Also bootstrap keybackup on first session
val creationInfo = mTestHelper.doSync<MegolmBackupCreationInfo> { val creationInfo = mTestHelper.runBlockingTest {
aliceSession1.cryptoService().keysBackupService().prepareKeysBackupVersion(null, null, it) aliceSession1.cryptoService().keysBackupService().prepareKeysBackupVersion(null)
} }
val version = mTestHelper.doSync<KeysVersion> { val version = mTestHelper.runBlockingTest {
aliceSession1.cryptoService().keysBackupService().createKeysBackupVersion(creationInfo, it) aliceSession1.cryptoService().keysBackupService().createKeysBackupVersion(creationInfo)
} }
// Save it for gossiping // Save it for gossiping
aliceSession1.cryptoService().keysBackupService().saveBackupRecoveryKey(creationInfo.recoveryKey, version = version.version) aliceSession1.cryptoService().keysBackupService().saveBackupRecoveryKey(creationInfo.recoveryKey, version = version.version)
@ -233,11 +233,11 @@ class KeyShareTests : InstrumentedTest {
val aliceVerificationService2 = aliceSession2.cryptoService().verificationService() val aliceVerificationService2 = aliceSession2.cryptoService().verificationService()
// force keys download // force keys download
mTestHelper.doSync<MXUsersDevicesMap<CryptoDeviceInfo>> { mTestHelper.runBlockingTest {
aliceSession1.cryptoService().downloadKeys(listOf(aliceSession1.myUserId), true, it) aliceSession1.cryptoService().downloadKeys(listOf(aliceSession1.myUserId), true)
} }
mTestHelper.doSync<MXUsersDevicesMap<CryptoDeviceInfo>> { mTestHelper.runBlockingTest {
aliceSession2.cryptoService().downloadKeys(listOf(aliceSession2.myUserId), true, it) aliceSession2.cryptoService().downloadKeys(listOf(aliceSession2.myUserId), true)
} }
var session1ShortCode: String? = null var session1ShortCode: String? = null

View File

@ -25,7 +25,7 @@ import org.matrix.android.sdk.internal.crypto.model.OlmInboundGroupSessionWrappe
* Data class to store result of [KeysBackupTestHelper.createKeysBackupScenarioWithPassword] * Data class to store result of [KeysBackupTestHelper.createKeysBackupScenarioWithPassword]
*/ */
data class KeysBackupScenarioData(val cryptoTestData: CryptoTestData, data class KeysBackupScenarioData(val cryptoTestData: CryptoTestData,
val aliceKeys: List<OlmInboundGroupSessionWrapper2>, val aliceKeys: Int,
val prepareKeysBackupDataResult: PrepareKeysBackupDataResult, val prepareKeysBackupDataResult: PrepareKeysBackupDataResult,
val aliceSession2: Session) { val aliceSession2: Session) {
fun cleanUp(testHelper: CommonTestHelper) { fun cleanUp(testHelper: CommonTestHelper) {

View File

@ -17,6 +17,7 @@
package org.matrix.android.sdk.internal.crypto.keysbackup package org.matrix.android.sdk.internal.crypto.keysbackup
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import kotlinx.coroutines.delay
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull import org.junit.Assert.assertNotNull
@ -60,40 +61,40 @@ class KeysBackupTest : InstrumentedTest {
* - Check backup keys after having marked one as backed up * - Check backup keys after having marked one as backed up
* - Reset keys backup markers * - Reset keys backup markers
*/ */
@Test // @Test
fun roomKeysTest_testBackupStore_ok() { // fun roomKeysTest_testBackupStore_ok() {
val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages() // val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
//
// From doE2ETestWithAliceAndBobInARoomWithEncryptedMessages, we should have no backed up keys // // From doE2ETestWithAliceAndBobInARoomWithEncryptedMessages, we should have no backed up keys
val cryptoStore = (cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService).store // val cryptoStore = (cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService).store
val sessions = cryptoStore.inboundGroupSessionsToBackup(100) // val sessions = cryptoStore.inboundGroupSessionsToBackup(100)
val sessionsCount = sessions.size // val sessionsCount = sessions.size
//
assertFalse(sessions.isEmpty()) // assertFalse(sessions.isEmpty())
assertEquals(sessionsCount, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false)) // assertEquals(sessionsCount, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false))
assertEquals(0, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true)) // assertEquals(0, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true))
//
// - Check backup keys after having marked one as backed up // // - Check backup keys after having marked one as backed up
val session = sessions[0] // val session = sessions[0]
//
cryptoStore.markBackupDoneForInboundGroupSessions(Collections.singletonList(session)) // cryptoStore.markBackupDoneForInboundGroupSessions(Collections.singletonList(session))
//
assertEquals(sessionsCount, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false)) // assertEquals(sessionsCount, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false))
assertEquals(1, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true)) // assertEquals(1, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true))
//
val sessions2 = cryptoStore.inboundGroupSessionsToBackup(100) // val sessions2 = cryptoStore.inboundGroupSessionsToBackup(100)
assertEquals(sessionsCount - 1, sessions2.size) // assertEquals(sessionsCount - 1, sessions2.size)
//
// - Reset keys backup markers // // - Reset keys backup markers
cryptoStore.resetBackupMarkers() // cryptoStore.resetBackupMarkers()
//
val sessions3 = cryptoStore.inboundGroupSessionsToBackup(100) // val sessions3 = cryptoStore.inboundGroupSessionsToBackup(100)
assertEquals(sessionsCount, sessions3.size) // assertEquals(sessionsCount, sessions3.size)
assertEquals(sessionsCount, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false)) // assertEquals(sessionsCount, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false))
assertEquals(0, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true)) // assertEquals(0, cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true))
//
cryptoTestData.cleanUp(mTestHelper) // cryptoTestData.cleanUp(mTestHelper)
} // }
/** /**
* Check that prepareKeysBackupVersionWithPassword returns valid data * Check that prepareKeysBackupVersionWithPassword returns valid data
@ -110,8 +111,8 @@ class KeysBackupTest : InstrumentedTest {
assertFalse(keysBackup.isEnabled) assertFalse(keysBackup.isEnabled)
val megolmBackupCreationInfo = mTestHelper.doSync<MegolmBackupCreationInfo> { val megolmBackupCreationInfo = mTestHelper.runBlockingTest {
keysBackup.prepareKeysBackupVersion(null, null, it) keysBackup.prepareKeysBackupVersion(null)
} }
assertEquals(MXCRYPTO_ALGORITHM_MEGOLM_BACKUP, megolmBackupCreationInfo.algorithm) assertEquals(MXCRYPTO_ALGORITHM_MEGOLM_BACKUP, megolmBackupCreationInfo.algorithm)
@ -136,15 +137,15 @@ class KeysBackupTest : InstrumentedTest {
assertFalse(keysBackup.isEnabled) assertFalse(keysBackup.isEnabled)
val megolmBackupCreationInfo = mTestHelper.doSync<MegolmBackupCreationInfo> { val megolmBackupCreationInfo = mTestHelper.runBlockingTest {
keysBackup.prepareKeysBackupVersion(null, null, it) keysBackup.prepareKeysBackupVersion(null)
} }
assertFalse(keysBackup.isEnabled) assertFalse(keysBackup.isEnabled)
// Create the version // Create the version
mTestHelper.doSync<KeysVersion> { mTestHelper.runBlockingTest {
keysBackup.createKeysBackupVersion(megolmBackupCreationInfo, it) keysBackup.createKeysBackupVersion(megolmBackupCreationInfo)
} }
// Backup must be enable now // Backup must be enable now
@ -197,41 +198,41 @@ class KeysBackupTest : InstrumentedTest {
/** /**
* Check that backupAllGroupSessions() returns valid data * Check that backupAllGroupSessions() returns valid data
*/ */
@Test // @Test
fun backupAllGroupSessionsTest() { // fun backupAllGroupSessionsTest() {
val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages() // val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
//
val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService() // val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService()
//
val stateObserver = StateObserver(keysBackup) // val stateObserver = StateObserver(keysBackup)
//
mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup) // mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup)
//
// Check that backupAllGroupSessions returns valid data // // Check that backupAllGroupSessions returns valid data
val nbOfKeys = cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false) // val nbOfKeys = cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(false)
//
assertEquals(2, nbOfKeys) // assertEquals(2, nbOfKeys)
//
var lastBackedUpKeysProgress = 0 // var lastBackedUpKeysProgress = 0
//
mTestHelper.doSync<Unit> { // mTestHelper.doSync<Unit> {
keysBackup.backupAllGroupSessions(object : ProgressListener { // keysBackup.backupAllGroupSessions(object : ProgressListener {
override fun onProgress(progress: Int, total: Int) { // override fun onProgress(progress: Int, total: Int) {
assertEquals(nbOfKeys, total) // assertEquals(nbOfKeys, total)
lastBackedUpKeysProgress = progress // lastBackedUpKeysProgress = progress
} // }
}, it) // }, it)
} // }
//
assertEquals(nbOfKeys, lastBackedUpKeysProgress) // assertEquals(nbOfKeys, lastBackedUpKeysProgress)
//
val backedUpKeys = cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true) // val backedUpKeys = cryptoTestData.firstSession.cryptoService().inboundGroupSessionsCount(true)
//
assertEquals("All keys must have been marked as backed up", nbOfKeys, backedUpKeys) // assertEquals("All keys must have been marked as backed up", nbOfKeys, backedUpKeys)
//
stateObserver.stopAndCheckStates(null) // stateObserver.stopAndCheckStates(null)
cryptoTestData.cleanUp(mTestHelper) // cryptoTestData.cleanUp(mTestHelper)
} // }
/** /**
* Check encryption and decryption of megolm keys in the backup. * Check encryption and decryption of megolm keys in the backup.
@ -241,40 +242,40 @@ class KeysBackupTest : InstrumentedTest {
* - Check [MXKeyBackup decryptKeyBackupData] returns stg * - Check [MXKeyBackup decryptKeyBackupData] returns stg
* - Compare the decrypted megolm key with the original one * - Compare the decrypted megolm key with the original one
*/ */
@Test // @Test
fun testEncryptAndDecryptKeysBackupData() { // fun testEncryptAndDecryptKeysBackupData() {
val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages() // val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
//
val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService // val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService
//
val stateObserver = StateObserver(keysBackup) // val stateObserver = StateObserver(keysBackup)
//
// - Pick a megolm key // // - Pick a megolm key
val session = keysBackup.store.inboundGroupSessionsToBackup(1)[0] // val session = keysBackup.store.inboundGroupSessionsToBackup(1)[0]
//
val keyBackupCreationInfo = mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup).megolmBackupCreationInfo // val keyBackupCreationInfo = mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup).megolmBackupCreationInfo
//
// - Check encryptGroupSession() returns stg // // - Check encryptGroupSession() returns stg
val keyBackupData = keysBackup.encryptGroupSession(session) // val keyBackupData = keysBackup.encryptGroupSession(session)
assertNotNull(keyBackupData) // assertNotNull(keyBackupData)
assertNotNull(keyBackupData!!.sessionData) // assertNotNull(keyBackupData!!.sessionData)
//
// - Check pkDecryptionFromRecoveryKey() is able to create a OlmPkDecryption // // - Check pkDecryptionFromRecoveryKey() is able to create a OlmPkDecryption
val decryption = keysBackup.pkDecryptionFromRecoveryKey(keyBackupCreationInfo.recoveryKey) // val decryption = keysBackup.pkDecryptionFromRecoveryKey(keyBackupCreationInfo.recoveryKey)
assertNotNull(decryption) // assertNotNull(decryption)
// - Check decryptKeyBackupData() returns stg // // - Check decryptKeyBackupData() returns stg
val sessionData = keysBackup // val sessionData = keysBackup
.decryptKeyBackupData(keyBackupData, // .decryptKeyBackupData(keyBackupData,
session.olmInboundGroupSession!!.sessionIdentifier(), // session.olmInboundGroupSession!!.sessionIdentifier(),
cryptoTestData.roomId, // cryptoTestData.roomId,
decryption!!) // decryption!!)
assertNotNull(sessionData) // assertNotNull(sessionData)
// - Compare the decrypted megolm key with the original one // // - Compare the decrypted megolm key with the original one
mKeysBackupTestHelper.assertKeysEquals(session.exportKeys(), sessionData) // mKeysBackupTestHelper.assertKeysEquals(session.exportKeys(), sessionData)
//
stateObserver.stopAndCheckStates(null) // stateObserver.stopAndCheckStates(null)
cryptoTestData.cleanUp(mTestHelper) // cryptoTestData.cleanUp(mTestHelper)
} // }
/** /**
* - Do an e2e backup to the homeserver with a recovery key * - Do an e2e backup to the homeserver with a recovery key
@ -287,13 +288,12 @@ class KeysBackupTest : InstrumentedTest {
val testData = mKeysBackupTestHelper.createKeysBackupScenarioWithPassword(null) val testData = mKeysBackupTestHelper.createKeysBackupScenarioWithPassword(null)
// - Restore the e2e backup from the homeserver // - Restore the e2e backup from the homeserver
val importRoomKeysResult = mTestHelper.doSync<ImportRoomKeysResult> { val importRoomKeysResult = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().restoreKeysWithRecoveryKey(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().restoreKeysWithRecoveryKey(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
testData.prepareKeysBackupDataResult.megolmBackupCreationInfo.recoveryKey, testData.prepareKeysBackupDataResult.megolmBackupCreationInfo.recoveryKey,
null, null,
null, null,
null, null
it
) )
} }
@ -379,11 +379,10 @@ class KeysBackupTest : InstrumentedTest {
assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state) assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state)
// - Trust the backup from the new device // - Trust the backup from the new device
mTestHelper.doSync<Unit> { mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersion( testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersion(
testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
true, true
it
) )
} }
@ -395,15 +394,15 @@ class KeysBackupTest : InstrumentedTest {
assertTrue(testData.aliceSession2.cryptoService().keysBackupService().isEnabled) assertTrue(testData.aliceSession2.cryptoService().keysBackupService().isEnabled)
// - Retrieve the last version from the server // - Retrieve the last version from the server
val keysVersionResult = mTestHelper.doSync<KeysVersionResult?> { val keysVersionResult = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().getCurrentVersion(it) testData.aliceSession2.cryptoService().keysBackupService().getCurrentVersion()
} }
// - It must be the same // - It must be the same
assertEquals(testData.prepareKeysBackupDataResult.version, keysVersionResult!!.version) assertEquals(testData.prepareKeysBackupDataResult.version, keysVersionResult!!.version)
val keysBackupVersionTrust = mTestHelper.doSync<KeysBackupVersionTrust> { val keysBackupVersionTrust = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().getKeysBackupTrust(keysVersionResult, it) testData.aliceSession2.cryptoService().keysBackupService().getKeysBackupTrust(keysVersionResult)
} }
// - It must be trusted and must have 2 signatures now // - It must be trusted and must have 2 signatures now
@ -438,11 +437,10 @@ class KeysBackupTest : InstrumentedTest {
assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state) assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state)
// - Trust the backup from the new device with the recovery key // - Trust the backup from the new device with the recovery key
mTestHelper.doSync<Unit> { mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithRecoveryKey( testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithRecoveryKey(
testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
testData.prepareKeysBackupDataResult.megolmBackupCreationInfo.recoveryKey, testData.prepareKeysBackupDataResult.megolmBackupCreationInfo.recoveryKey
it
) )
} }
@ -454,15 +452,15 @@ class KeysBackupTest : InstrumentedTest {
assertTrue(testData.aliceSession2.cryptoService().keysBackupService().isEnabled) assertTrue(testData.aliceSession2.cryptoService().keysBackupService().isEnabled)
// - Retrieve the last version from the server // - Retrieve the last version from the server
val keysVersionResult = mTestHelper.doSync<KeysVersionResult?> { val keysVersionResult = mTestHelper.runBlockingTest{
testData.aliceSession2.cryptoService().keysBackupService().getCurrentVersion(it) testData.aliceSession2.cryptoService().keysBackupService().getCurrentVersion()
} }
// - It must be the same // - It must be the same
assertEquals(testData.prepareKeysBackupDataResult.version, keysVersionResult!!.version) assertEquals(testData.prepareKeysBackupDataResult.version, keysVersionResult!!.version)
val keysBackupVersionTrust = mTestHelper.doSync<KeysBackupVersionTrust> { val keysBackupVersionTrust = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().getKeysBackupTrust(keysVersionResult, it) testData.aliceSession2.cryptoService().keysBackupService().getKeysBackupTrust(keysVersionResult)
} }
// - It must be trusted and must have 2 signatures now // - It must be trusted and must have 2 signatures now
@ -495,13 +493,17 @@ class KeysBackupTest : InstrumentedTest {
assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state) assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state)
// - Try to trust the backup from the new device with a wrong recovery key // - Try to trust the backup from the new device with a wrong recovery key
val latch = CountDownLatch(1) mTestHelper.runBlockingTest {
try {
testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithRecoveryKey( testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithRecoveryKey(
testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
"Bad recovery key", "Bad recovery key"
TestMatrixCallback(latch, false)
) )
mTestHelper.await(latch) fail("Should have failed to trust")
} catch (failure: Throwable) {
}
}
// - The new device must still see the previous backup as not trusted // - The new device must still see the previous backup as not trusted
assertNotNull(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion) assertNotNull(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion)
@ -538,11 +540,10 @@ class KeysBackupTest : InstrumentedTest {
assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state) assertEquals(KeysBackupState.NotTrusted, testData.aliceSession2.cryptoService().keysBackupService().state)
// - Trust the backup from the new device with the password // - Trust the backup from the new device with the password
mTestHelper.doSync<Unit> { mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithPassphrase( testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithPassphrase(
testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
password, password
it
) )
} }
@ -554,15 +555,15 @@ class KeysBackupTest : InstrumentedTest {
assertTrue(testData.aliceSession2.cryptoService().keysBackupService().isEnabled) assertTrue(testData.aliceSession2.cryptoService().keysBackupService().isEnabled)
// - Retrieve the last version from the server // - Retrieve the last version from the server
val keysVersionResult = mTestHelper.doSync<KeysVersionResult?> { val keysVersionResult = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().getCurrentVersion(it) testData.aliceSession2.cryptoService().keysBackupService().getCurrentVersion()
} }
// - It must be the same // - It must be the same
assertEquals(testData.prepareKeysBackupDataResult.version, keysVersionResult!!.version) assertEquals(testData.prepareKeysBackupDataResult.version, keysVersionResult!!.version)
val keysBackupVersionTrust = mTestHelper.doSync<KeysBackupVersionTrust> { val keysBackupVersionTrust = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().getKeysBackupTrust(keysVersionResult, it) testData.aliceSession2.cryptoService().keysBackupService().getKeysBackupTrust(keysVersionResult)
} }
// - It must be trusted and must have 2 signatures now // - It must be trusted and must have 2 signatures now
@ -599,11 +600,17 @@ class KeysBackupTest : InstrumentedTest {
// - Try to trust the backup from the new device with a wrong password // - Try to trust the backup from the new device with a wrong password
val latch = CountDownLatch(1) val latch = CountDownLatch(1)
mTestHelper.runBlockingTest {
try {
testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithPassphrase( testData.aliceSession2.cryptoService().keysBackupService().trustKeysBackupVersionWithPassphrase(
testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
badPassword, badPassword
TestMatrixCallback(latch, false)
) )
fail("Should have fail to trust")
} catch (failure: Throwable) {
}
}
mTestHelper.await(latch) mTestHelper.await(latch)
// - The new device must still see the previous backup as not trusted // - The new device must still see the previous backup as not trusted
@ -626,21 +633,17 @@ class KeysBackupTest : InstrumentedTest {
val testData = mKeysBackupTestHelper.createKeysBackupScenarioWithPassword(null) val testData = mKeysBackupTestHelper.createKeysBackupScenarioWithPassword(null)
// - Try to restore the e2e backup with a wrong recovery key // - Try to restore the e2e backup with a wrong recovery key
val latch2 = CountDownLatch(1)
var importRoomKeysResult: ImportRoomKeysResult? = null var importRoomKeysResult: ImportRoomKeysResult? = null
mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().restoreKeysWithRecoveryKey(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().restoreKeysWithRecoveryKey(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
"EsTc LW2K PGiF wKEA 3As5 g5c4 BXwk qeeJ ZJV8 Q9fu gUMN UE4d", "EsTc LW2K PGiF wKEA 3As5 g5c4 BXwk qeeJ ZJV8 Q9fu gUMN UE4d",
null, null,
null, null,
null, null
object : TestMatrixCallback<ImportRoomKeysResult>(latch2, false) { ).let { data ->
override fun onSuccess(data: ImportRoomKeysResult) {
importRoomKeysResult = data importRoomKeysResult = data
super.onSuccess(data)
} }
} }
)
mTestHelper.await(latch2)
// onSuccess may not have been called // onSuccess may not have been called
assertNull(importRoomKeysResult) assertNull(importRoomKeysResult)
@ -663,7 +666,7 @@ class KeysBackupTest : InstrumentedTest {
// - Restore the e2e backup with the password // - Restore the e2e backup with the password
val steps = ArrayList<StepProgressListener.Step>() val steps = ArrayList<StepProgressListener.Step>()
val importRoomKeysResult = mTestHelper.doSync<ImportRoomKeysResult> { val importRoomKeysResult = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().restoreKeyBackupWithPassword(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().restoreKeyBackupWithPassword(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
password, password,
null, null,
@ -672,8 +675,7 @@ class KeysBackupTest : InstrumentedTest {
override fun onStepProgress(step: StepProgressListener.Step) { override fun onStepProgress(step: StepProgressListener.Step) {
steps.add(step) steps.add(step)
} }
}, }
it
) )
} }
@ -719,20 +721,16 @@ class KeysBackupTest : InstrumentedTest {
// - Try to restore the e2e backup with a wrong password // - Try to restore the e2e backup with a wrong password
val latch2 = CountDownLatch(1) val latch2 = CountDownLatch(1)
var importRoomKeysResult: ImportRoomKeysResult? = null var importRoomKeysResult: ImportRoomKeysResult? = null
mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().restoreKeyBackupWithPassword(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().restoreKeyBackupWithPassword(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
wrongPassword, wrongPassword,
null, null,
null, null,
null, null
object : TestMatrixCallback<ImportRoomKeysResult>(latch2, false) { ).let {
override fun onSuccess(data: ImportRoomKeysResult) { importRoomKeysResult = it
importRoomKeysResult = data
super.onSuccess(data)
} }
} }
)
mTestHelper.await(latch2)
// onSuccess may not have been called // onSuccess may not have been called
assertNull(importRoomKeysResult) assertNull(importRoomKeysResult)
@ -752,13 +750,12 @@ class KeysBackupTest : InstrumentedTest {
val testData = mKeysBackupTestHelper.createKeysBackupScenarioWithPassword(password) val testData = mKeysBackupTestHelper.createKeysBackupScenarioWithPassword(password)
// - Restore the e2e backup with the recovery key. // - Restore the e2e backup with the recovery key.
val importRoomKeysResult = mTestHelper.doSync<ImportRoomKeysResult> { val importRoomKeysResult = mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().restoreKeysWithRecoveryKey(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().restoreKeysWithRecoveryKey(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
testData.prepareKeysBackupDataResult.megolmBackupCreationInfo.recoveryKey, testData.prepareKeysBackupDataResult.megolmBackupCreationInfo.recoveryKey,
null, null,
null, null,
null, null
it
) )
} }
@ -780,18 +777,16 @@ class KeysBackupTest : InstrumentedTest {
// - Try to restore the e2e backup with a password // - Try to restore the e2e backup with a password
val latch2 = CountDownLatch(1) val latch2 = CountDownLatch(1)
var importRoomKeysResult: ImportRoomKeysResult? = null var importRoomKeysResult: ImportRoomKeysResult? = null
mTestHelper.runBlockingTest {
testData.aliceSession2.cryptoService().keysBackupService().restoreKeyBackupWithPassword(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!, testData.aliceSession2.cryptoService().keysBackupService().restoreKeyBackupWithPassword(testData.aliceSession2.cryptoService().keysBackupService().keysBackupVersion!!,
"password", "password",
null, null,
null, null,
null, null
object : TestMatrixCallback<ImportRoomKeysResult>(latch2, false) { ).let {
override fun onSuccess(data: ImportRoomKeysResult) { importRoomKeysResult = it
importRoomKeysResult = data
super.onSuccess(data)
} }
} }
)
mTestHelper.await(latch2) mTestHelper.await(latch2)
// onSuccess may not have been called // onSuccess may not have been called
@ -817,13 +812,13 @@ class KeysBackupTest : InstrumentedTest {
mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup) mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup)
// Get key backup version from the homeserver // Get key backup version from the homeserver
val keysVersionResult = mTestHelper.doSync<KeysVersionResult?> { val keysVersionResult = mTestHelper.runBlockingTest {
keysBackup.getCurrentVersion(it) keysBackup.getCurrentVersion()
} }
// - Check the returned KeyBackupVersion is trusted // - Check the returned KeyBackupVersion is trusted
val keysBackupVersionTrust = mTestHelper.doSync<KeysBackupVersionTrust> { val keysBackupVersionTrust = mTestHelper.runBlockingTest {
keysBackup.getKeysBackupTrust(keysVersionResult!!, it) keysBackup.getKeysBackupTrust(keysVersionResult!!)
} }
assertNotNull(keysBackupVersionTrust) assertNotNull(keysBackupVersionTrust)
@ -908,64 +903,64 @@ class KeysBackupTest : InstrumentedTest {
* - Make alice back up all her keys again * - Make alice back up all her keys again
* -> That must fail and her backup state must be WrongBackUpVersion * -> That must fail and her backup state must be WrongBackUpVersion
*/ */
@Test // @Test
fun testBackupWhenAnotherBackupWasCreated() { // fun testBackupWhenAnotherBackupWasCreated() {
// - Create a backup version // // - Create a backup version
val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages() // val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
//
val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService() // val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService()
//
val stateObserver = StateObserver(keysBackup) // val stateObserver = StateObserver(keysBackup)
//
assertFalse(keysBackup.isEnabled) // assertFalse(keysBackup.isEnabled)
//
// Wait for keys backup to be finished // // Wait for keys backup to be finished
val latch0 = CountDownLatch(1) // val latch0 = CountDownLatch(1)
var count = 0 // var count = 0
keysBackup.addListener(object : KeysBackupStateListener { // keysBackup.addListener(object : KeysBackupStateListener {
override fun onStateChange(newState: KeysBackupState) { // override fun onStateChange(newState: KeysBackupState) {
// Check the backup completes // // Check the backup completes
if (newState == KeysBackupState.ReadyToBackUp) { // if (newState == KeysBackupState.ReadyToBackUp) {
count++ // count++
//
if (count == 2) { // if (count == 2) {
// Remove itself from the list of listeners // // Remove itself from the list of listeners
keysBackup.removeListener(this) // keysBackup.removeListener(this)
//
latch0.countDown() // latch0.countDown()
} // }
} // }
} // }
}) // })
//
// - Make alice back up her keys to her homeserver // // - Make alice back up her keys to her homeserver
mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup) // mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup)
//
assertTrue(keysBackup.isEnabled) // assertTrue(keysBackup.isEnabled)
//
mTestHelper.await(latch0) // mTestHelper.await(latch0)
//
// - Create a new backup with fake data on the homeserver, directly using the rest client // // - Create a new backup with fake data on the homeserver, directly using the rest client
val megolmBackupCreationInfo = mCryptoTestHelper.createFakeMegolmBackupCreationInfo() // val megolmBackupCreationInfo = mCryptoTestHelper.createFakeMegolmBackupCreationInfo()
mTestHelper.doSync<KeysVersion> { // mTestHelper.doSync<KeysVersion> {
(keysBackup as DefaultKeysBackupService).createFakeKeysBackupVersion(megolmBackupCreationInfo, it) // (keysBackup as DefaultKeysBackupService).createFakeKeysBackupVersion(megolmBackupCreationInfo, it)
} // }
//
// Reset the store backup status for keys // // Reset the store backup status for keys
(cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService).store.resetBackupMarkers() // (cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService).store.resetBackupMarkers()
//
// - Make alice back up all her keys again // // - Make alice back up all her keys again
val latch2 = CountDownLatch(1) // val latch2 = CountDownLatch(1)
keysBackup.backupAllGroupSessions(null, TestMatrixCallback(latch2, false)) // keysBackup.backupAllGroupSessions(null, TestMatrixCallback(latch2, false))
mTestHelper.await(latch2) // mTestHelper.await(latch2)
//
// -> That must fail and her backup state must be WrongBackUpVersion // // -> That must fail and her backup state must be WrongBackUpVersion
assertEquals(KeysBackupState.WrongBackUpVersion, keysBackup.state) // assertEquals(KeysBackupState.WrongBackUpVersion, keysBackup.state)
assertFalse(keysBackup.isEnabled) // assertFalse(keysBackup.isEnabled)
//
stateObserver.stopAndCheckStates(null) // stateObserver.stopAndCheckStates(null)
cryptoTestData.cleanUp(mTestHelper) // cryptoTestData.cleanUp(mTestHelper)
} // }
/** /**
* - Do an e2e backup to the homeserver * - Do an e2e backup to the homeserver
@ -992,9 +987,18 @@ class KeysBackupTest : InstrumentedTest {
mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup) mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup)
// Wait for keys backup to finish by asking again to backup keys. // Wait for keys backup to finish by asking again to backup keys.
mTestHelper.doSync<Unit> { mTestHelper.runBlockingTest {
keysBackup.backupAllGroupSessions(null, it) keysBackup.checkAndStartKeysBackup()
delay(1000)
} }
mTestHelper.waitWithLatch {
mTestHelper.retryPeriodicallyWithLatch(it) {
keysBackup.state == KeysBackupState.ReadyToBackUp
}
}
// mTestHelper.doSync<Unit> {
// keysBackup.backupAllGroupSessions(null, it)
// }
val oldDeviceId = cryptoTestData.firstSession.sessionParams.deviceId!! val oldDeviceId = cryptoTestData.firstSession.sessionParams.deviceId!!
val oldKeyBackupVersion = keysBackup.currentBackupVersion val oldKeyBackupVersion = keysBackup.currentBackupVersion
@ -1016,16 +1020,26 @@ class KeysBackupTest : InstrumentedTest {
val stateObserver2 = StateObserver(keysBackup2) val stateObserver2 = StateObserver(keysBackup2)
var isSuccessful = false var isSuccessful = false
val latch2 = CountDownLatch(1) // val latch2 = CountDownLatch(1)
keysBackup2.backupAllGroupSessions( mTestHelper.runBlockingTest {
null, keysBackup2.checkAndStartKeysBackup()
object : TestMatrixCallback<Unit>(latch2, false) { delay(1000)
override fun onSuccess(data: Unit) {
isSuccessful = true
super.onSuccess(data)
} }
}) mTestHelper.waitWithLatch {
mTestHelper.await(latch2) mTestHelper.retryPeriodicallyWithLatch(it) {
keysBackup2.state == KeysBackupState.ReadyToBackUp
}
}
// keysBackup2.backupAllGroupSessions(
// null,
// object : TestMatrixCallback<Unit>(latch2, false) {
// override fun onSuccess(data: Unit) {
// isSuccessful = true
// super.onSuccess(data)
// }
// })
// mTestHelper.await(latch2)
assertFalse(isSuccessful) assertFalse(isSuccessful)
@ -1054,8 +1068,17 @@ class KeysBackupTest : InstrumentedTest {
// -> It must use the same backup version // -> It must use the same backup version
assertEquals(oldKeyBackupVersion, aliceSession2.cryptoService().keysBackupService().currentBackupVersion) assertEquals(oldKeyBackupVersion, aliceSession2.cryptoService().keysBackupService().currentBackupVersion)
mTestHelper.doSync<Unit> { // mTestHelper.doSync<Unit> {
aliceSession2.cryptoService().keysBackupService().backupAllGroupSessions(null, it) // aliceSession2.cryptoService().keysBackupService().backupAllGroupSessions(null, it)
// }
mTestHelper.runBlockingTest {
aliceSession2.cryptoService().keysBackupService().checkAndStartKeysBackup()
delay(1000)
}
mTestHelper.waitWithLatch {
mTestHelper.retryPeriodicallyWithLatch(it) {
aliceSession2.cryptoService().keysBackupService().state == KeysBackupState.ReadyToBackUp
}
} }
// -> It must success // -> It must success
@ -1087,7 +1110,7 @@ class KeysBackupTest : InstrumentedTest {
assertTrue(keysBackup.isEnabled) assertTrue(keysBackup.isEnabled)
// Delete the backup // Delete the backup
mTestHelper.doSync<Unit> { keysBackup.deleteBackup(keyBackupCreationInfo.version, it) } mTestHelper.runBlockingTest { keysBackup.deleteBackup(keyBackupCreationInfo.version) }
// Backup is now disabled // Backup is now disabled
assertFalse(keysBackup.isEnabled) assertFalse(keysBackup.isEnabled)

View File

@ -16,6 +16,7 @@
package org.matrix.android.sdk.internal.crypto.keysbackup package org.matrix.android.sdk.internal.crypto.keysbackup
import kotlinx.coroutines.delay
import org.junit.Assert import org.junit.Assert
import org.matrix.android.sdk.api.listeners.ProgressListener import org.matrix.android.sdk.api.listeners.ProgressListener
import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.Session
@ -45,29 +46,38 @@ class KeysBackupTestHelper(
fun createKeysBackupScenarioWithPassword(password: String?): KeysBackupScenarioData { fun createKeysBackupScenarioWithPassword(password: String?): KeysBackupScenarioData {
val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages() val cryptoTestData = mCryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
val cryptoStore = (cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService).store // val cryptoStore = (cryptoTestData.firstSession.cryptoService().keysBackupService() as DefaultKeysBackupService).store
val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService() val keysBackup = cryptoTestData.firstSession.cryptoService().keysBackupService()
val stateObserver = StateObserver(keysBackup) val stateObserver = StateObserver(keysBackup)
val aliceKeys = cryptoStore.inboundGroupSessionsToBackup(100) // val aliceKeys = cryptoStore.inboundGroupSessionsToBackup(100)
// - Do an e2e backup to the homeserver // - Do an e2e backup to the homeserver
val prepareKeysBackupDataResult = prepareAndCreateKeysBackupData(keysBackup, password) val prepareKeysBackupDataResult = prepareAndCreateKeysBackupData(keysBackup, password)
var lastProgress = 0 // var lastProgress = 0
var lastTotal = 0 // var lastTotal = 0
mTestHelper.doSync<Unit> { // mTestHelper.doSync<Unit> {
keysBackup.backupAllGroupSessions(object : ProgressListener { // keysBackup.backupAllGroupSessions(object : ProgressListener {
override fun onProgress(progress: Int, total: Int) { // override fun onProgress(progress: Int, total: Int) {
lastProgress = progress // lastProgress = progress
lastTotal = total // lastTotal = total
// }
// }, it)
// }
mTestHelper.runBlockingTest {
keysBackup.checkAndStartKeysBackup()
delay(1000)
}
mTestHelper.waitWithLatch {
mTestHelper.retryPeriodicallyWithLatch(it) {
keysBackup.state == KeysBackupState.ReadyToBackUp
} }
}, it)
} }
Assert.assertEquals(2, lastProgress) Assert.assertEquals(2, cryptoTestData.firstSession.cryptoService().keysBackupService().getTotalNumbersOfBackedUpKeys())
Assert.assertEquals(2, lastTotal)
val aliceUserId = cryptoTestData.firstSession.myUserId val aliceUserId = cryptoTestData.firstSession.myUserId
@ -83,7 +93,7 @@ class KeysBackupTestHelper(
stateObserver.stopAndCheckStates(null) stateObserver.stopAndCheckStates(null)
return KeysBackupScenarioData(cryptoTestData, return KeysBackupScenarioData(cryptoTestData,
aliceKeys, aliceSession2.cryptoService().keysBackupService().getTotalNumbersOfBackedUpKeys(),
prepareKeysBackupDataResult, prepareKeysBackupDataResult,
aliceSession2) aliceSession2)
} }
@ -92,8 +102,8 @@ class KeysBackupTestHelper(
password: String? = null): PrepareKeysBackupDataResult { password: String? = null): PrepareKeysBackupDataResult {
val stateObserver = StateObserver(keysBackup) val stateObserver = StateObserver(keysBackup)
val megolmBackupCreationInfo = mTestHelper.doSync<MegolmBackupCreationInfo> { val megolmBackupCreationInfo = mTestHelper.runBlockingTest {
keysBackup.prepareKeysBackupVersion(password, null, it) keysBackup.prepareKeysBackupVersion(password)
} }
Assert.assertNotNull(megolmBackupCreationInfo) Assert.assertNotNull(megolmBackupCreationInfo)
@ -101,8 +111,8 @@ class KeysBackupTestHelper(
Assert.assertFalse(keysBackup.isEnabled) Assert.assertFalse(keysBackup.isEnabled)
// Create the version // Create the version
val keysVersion = mTestHelper.doSync<KeysVersion> { val keysVersion = mTestHelper.runBlockingTest {
keysBackup.createKeysBackupVersion(megolmBackupCreationInfo, it) keysBackup.createKeysBackupVersion(megolmBackupCreationInfo)
} }
Assert.assertNotNull(keysVersion.version) Assert.assertNotNull(keysVersion.version)
@ -165,18 +175,19 @@ class KeysBackupTestHelper(
total: Int, total: Int,
imported: Int) { imported: Int) {
// - Imported keys number must be correct // - Imported keys number must be correct
Assert.assertEquals(testData.aliceKeys.size, total) Assert.assertEquals(testData.aliceKeys, total)
Assert.assertEquals(total, imported) Assert.assertEquals(total, imported)
// - The new device must have the same count of megolm keys // - The new device must have the same count of megolm keys
Assert.assertEquals(testData.aliceKeys.size, testData.aliceSession2.cryptoService().inboundGroupSessionsCount(false)) Assert.assertEquals(testData.aliceKeys, testData.aliceSession2.cryptoService().inboundGroupSessionsCount(false))
// - Alice must have the same keys on both devices // - Alice must have the same keys on both devices
for (aliceKey1 in testData.aliceKeys) { //
val aliceKey2 = (testData.aliceSession2.cryptoService().keysBackupService() as DefaultKeysBackupService).store // for (aliceKey1 in testData.aliceKeys) {
.getInboundGroupSession(aliceKey1.olmInboundGroupSession!!.sessionIdentifier(), aliceKey1.senderKey!!) // val aliceKey2 = (testData.aliceSession2.cryptoService().keysBackupService() as DefaultKeysBackupService).store
Assert.assertNotNull(aliceKey2) // .getInboundGroupSession(aliceKey1.olmInboundGroupSession!!.sessionIdentifier(), aliceKey1.senderKey!!)
assertKeysEquals(aliceKey1.exportKeys(), aliceKey2!!.exportKeys()) // Assert.assertNotNull(aliceKey2)
} // assertKeysEquals(aliceKey1.exportKeys(), aliceKey2!!.exportKeys())
// }
} }
} }