@@ -33,6 +33,7 @@ import org.matrix.android.sdk.api.crypto.MXCRYPTO_ALGORITHM_CURVE_25519_BACKUP
33
33
import org.matrix.android.sdk.api.listeners.ProgressListener
34
34
import org.matrix.android.sdk.api.listeners.StepProgressListener
35
35
import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel
36
+ import org.matrix.android.sdk.api.session.crypto.keysbackup.KeyBackupConfig
36
37
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupLastVersionResult
37
38
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupState
38
39
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupStateListener
@@ -46,9 +47,12 @@ import org.matrix.android.sdk.api.session.crypto.keysbackup.extractCurveKeyFromR
46
47
import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult
47
48
import org.matrix.android.sdk.api.session.crypto.model.ImportRoomKeysResult
48
49
import org.matrix.android.sdk.api.session.getRoom
50
+ import org.matrix.android.sdk.common.CommonTestHelper
49
51
import org.matrix.android.sdk.common.CommonTestHelper.Companion.runCryptoTest
50
52
import org.matrix.android.sdk.common.CommonTestHelper.Companion.runSessionTest
53
+ import org.matrix.android.sdk.common.CryptoTestHelper
51
54
import org.matrix.android.sdk.common.RetryTestRule
55
+ import org.matrix.android.sdk.common.SessionTestParams
52
56
import org.matrix.android.sdk.common.TestConstants
53
57
import org.matrix.android.sdk.common.waitFor
54
58
import org.matrix.android.sdk.internal.crypto.keysbackup.algorithm.KeysBackupAlgorithmFactory
@@ -63,10 +67,21 @@ import kotlin.coroutines.resume
63
67
@RunWith(AndroidJUnit4 ::class )
64
68
@FixMethodOrder(MethodSorters .JVM )
65
69
@LargeTest
66
- class KeysBackupTest : InstrumentedTest {
70
+ open class KeysBackupTest : InstrumentedTest {
67
71
68
72
@get:Rule val rule = RetryTestRule (3 )
69
73
74
+ @Test
75
+ fun default_config_should_be_assymetric_only () = runSessionTest(context()) { testHelper ->
76
+ val session = testHelper.createAccount(TestConstants .USER_ALICE , SessionTestParams (true ))
77
+
78
+ val defaultConfig = session.cryptoService().keysBackupService().keyBackupConfig
79
+
80
+ assertEquals(MXCRYPTO_ALGORITHM_CURVE_25519_BACKUP , defaultConfig.defaultAlgorithm)
81
+ assertEquals(1 , defaultConfig.supportedAlgorithms.size)
82
+ assertTrue(defaultConfig.supportedAlgorithms.contains(MXCRYPTO_ALGORITHM_CURVE_25519_BACKUP ))
83
+ }
84
+
70
85
/* *
71
86
* - From doE2ETestWithAliceAndBobInARoomWithEncryptedMessages, we should have no backed up keys
72
87
* - Check backup keys after having marked one as backed up
@@ -207,7 +222,7 @@ class KeysBackupTest : InstrumentedTest {
207
222
*/
208
223
@Test
209
224
fun backupAfterCreateKeysBackupVersionTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
210
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
225
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
211
226
212
227
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
213
228
@@ -248,7 +263,7 @@ class KeysBackupTest : InstrumentedTest {
248
263
*/
249
264
@Test
250
265
fun backupAllGroupSessionsTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
251
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
266
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
252
267
253
268
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
254
269
@@ -293,7 +308,7 @@ class KeysBackupTest : InstrumentedTest {
293
308
*/
294
309
@Test
295
310
fun testEncryptAndDecryptKeysBackupData () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
296
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
311
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
297
312
298
313
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
299
314
@@ -342,7 +357,7 @@ class KeysBackupTest : InstrumentedTest {
342
357
*/
343
358
@Test
344
359
fun restoreKeysBackupTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
345
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
360
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
346
361
347
362
val testData = keysBackupTestHelper.createKeysBackupScenarioWithPassword(null )
348
363
@@ -428,7 +443,7 @@ class KeysBackupTest : InstrumentedTest {
428
443
*/
429
444
@Test
430
445
fun trustKeyBackupVersionTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
431
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
446
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
432
447
433
448
// - Do an e2e backup to the homeserver with a recovery key
434
449
// - And log Alice on a new device
@@ -488,7 +503,7 @@ class KeysBackupTest : InstrumentedTest {
488
503
*/
489
504
@Test
490
505
fun trustKeyBackupVersionWithRecoveryKeyTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
491
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
506
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
492
507
493
508
// - Do an e2e backup to the homeserver with a recovery key
494
509
// - And log Alice on a new device
@@ -546,7 +561,7 @@ class KeysBackupTest : InstrumentedTest {
546
561
*/
547
562
@Test
548
563
fun trustKeyBackupVersionWithWrongRecoveryKeyTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
549
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
564
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
550
565
551
566
// - Do an e2e backup to the homeserver with a recovery key
552
567
// - And log Alice on a new device
@@ -588,7 +603,7 @@ class KeysBackupTest : InstrumentedTest {
588
603
*/
589
604
@Test
590
605
fun trustKeyBackupVersionWithPasswordTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
591
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
606
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
592
607
593
608
val password = " Password"
594
609
@@ -648,7 +663,7 @@ class KeysBackupTest : InstrumentedTest {
648
663
*/
649
664
@Test
650
665
fun trustKeyBackupVersionWithWrongPasswordTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
651
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
666
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
652
667
653
668
val password = " Password"
654
669
val badPassword = " Bad Password"
@@ -689,7 +704,7 @@ class KeysBackupTest : InstrumentedTest {
689
704
*/
690
705
@Test
691
706
fun restoreKeysBackupWithAWrongRecoveryKeyTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
692
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
707
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
693
708
694
709
val testData = keysBackupTestHelper.createKeysBackupScenarioWithPassword(null )
695
710
val keysBackupService = testData.aliceSession2.cryptoService().keysBackupService()
@@ -717,7 +732,7 @@ class KeysBackupTest : InstrumentedTest {
717
732
*/
718
733
@Test
719
734
fun testBackupWithPassword () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
720
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
735
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
721
736
722
737
val password = " password"
723
738
@@ -773,7 +788,7 @@ class KeysBackupTest : InstrumentedTest {
773
788
*/
774
789
@Test
775
790
fun restoreKeysBackupWithAWrongPasswordTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
776
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
791
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
777
792
778
793
val password = " password"
779
794
val wrongPassword = " passw0rd"
@@ -804,7 +819,7 @@ class KeysBackupTest : InstrumentedTest {
804
819
*/
805
820
@Test
806
821
fun testUseRecoveryKeyToRestoreAPasswordBasedKeysBackup () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
807
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
822
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
808
823
809
824
val password = " password"
810
825
@@ -833,7 +848,7 @@ class KeysBackupTest : InstrumentedTest {
833
848
*/
834
849
@Test
835
850
fun testUsePasswordToRestoreARecoveryKeyBasedKeysBackup () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
836
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
851
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
837
852
838
853
val testData = keysBackupTestHelper.createKeysBackupScenarioWithPassword(null )
839
854
val keysBackupService = testData.aliceSession2.cryptoService().keysBackupService()
@@ -859,7 +874,7 @@ class KeysBackupTest : InstrumentedTest {
859
874
*/
860
875
@Test
861
876
fun testIsKeysBackupTrusted () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
862
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
877
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
863
878
864
879
// - Create a backup version
865
880
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
@@ -904,7 +919,7 @@ class KeysBackupTest : InstrumentedTest {
904
919
*/
905
920
@Test
906
921
fun testBackupWhenAnotherBackupWasCreated () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
907
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
922
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
908
923
909
924
// - Create a backup version
910
925
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
@@ -979,7 +994,7 @@ class KeysBackupTest : InstrumentedTest {
979
994
*/
980
995
@Test
981
996
fun testBackupAfterVerifyingADevice () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
982
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
997
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
983
998
984
999
// - Create a backup version
985
1000
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
@@ -1066,7 +1081,7 @@ class KeysBackupTest : InstrumentedTest {
1066
1081
*/
1067
1082
@Test
1068
1083
fun deleteKeysBackupTest () = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
1069
- val keysBackupTestHelper = KeysBackupTestHelper (testHelper, cryptoTestHelper)
1084
+ val keysBackupTestHelper = createKeysBackupTestHelper (testHelper, cryptoTestHelper)
1070
1085
1071
1086
// - Create a backup version
1072
1087
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoomWithEncryptedMessages()
@@ -1089,4 +1104,9 @@ class KeysBackupTest : InstrumentedTest {
1089
1104
1090
1105
stateObserver.stopAndCheckStates(null )
1091
1106
}
1107
+
1108
+ open var keyBackupConfig: KeyBackupConfig ? = null
1109
+
1110
+ private fun createKeysBackupTestHelper (testHelper : CommonTestHelper , cryptoTestHelper : CryptoTestHelper ) =
1111
+ KeysBackupTestHelper (testHelper, cryptoTestHelper, keyBackupConfig)
1092
1112
}
0 commit comments