mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-25 11:20:47 +01:00
Revamp restore decisions state and flesh out post registration restore options.
This commit is contained in:
committed by
Greyson Parrelli
parent
b78747fda2
commit
fe44789d88
@@ -12,10 +12,9 @@ import assertk.assertions.extracting
|
||||
import assertk.assertions.hasSize
|
||||
import assertk.assertions.isEmpty
|
||||
import assertk.assertions.isEqualTo
|
||||
import io.mockk.Runs
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockkObject
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.unmockkAll
|
||||
import io.mockk.verify
|
||||
import org.junit.After
|
||||
@@ -26,7 +25,10 @@ import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.signal.core.util.logging.Log.initialize
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.RestoreDecisionState
|
||||
import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues
|
||||
import org.thoughtcrime.securesms.keyvalue.Skipped
|
||||
import org.thoughtcrime.securesms.keyvalue.Start
|
||||
import org.thoughtcrime.securesms.profiles.ProfileName
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.testutil.LogRecorder
|
||||
@@ -48,8 +50,7 @@ class RegistrationUtilTest {
|
||||
@Before
|
||||
fun setup() {
|
||||
mockkObject(Recipient)
|
||||
mockkObject(RemoteConfig)
|
||||
every { RemoteConfig.init() } just Runs
|
||||
mockkStatic(RemoteConfig::class)
|
||||
|
||||
logRecorder = LogRecorder()
|
||||
initialize(logRecorder)
|
||||
@@ -94,7 +95,7 @@ class RegistrationUtilTest {
|
||||
every { Recipient.self() } returns Recipient(profileName = ProfileName.fromParts("Dark", "Helmet"))
|
||||
every { signalStore.svr.hasOptedInWithAccess() } returns true
|
||||
every { RemoteConfig.restoreAfterRegistration } returns true
|
||||
every { signalStore.registration.hasSkippedTransferOrRestore() } returns true
|
||||
every { signalStore.registration.restoreDecisionState } returns RestoreDecisionState.Skipped
|
||||
|
||||
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||
|
||||
@@ -121,8 +122,7 @@ class RegistrationUtilTest {
|
||||
|
||||
every { signalStore.svr.hasOptedInWithAccess() } returns true
|
||||
every { RemoteConfig.restoreAfterRegistration } returns true
|
||||
every { signalStore.registration.hasSkippedTransferOrRestore() } returns false
|
||||
every { signalStore.registration.hasCompletedRestore() } returns false
|
||||
every { signalStore.registration.restoreDecisionState } returns RestoreDecisionState.Start
|
||||
|
||||
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package org.thoughtcrime.securesms.registrationv3.ui.restore
|
||||
|
||||
import assertk.assertThat
|
||||
import assertk.assertions.isEqualTo
|
||||
import assertk.assertions.isFalse
|
||||
import assertk.assertions.isTrue
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.Parameterized
|
||||
import org.thoughtcrime.securesms.registrationv3.ui.restore.AccountEntropyPoolVerification.AEPValidationError
|
||||
|
||||
@RunWith(Parameterized::class)
|
||||
class AccountEntropyPoolVerificationTest(
|
||||
private val inputBackupKey: String,
|
||||
private val inputChanged: Boolean,
|
||||
private val inputPreviousError: AEPValidationError?,
|
||||
private val expectedIsValid: Boolean,
|
||||
private val expectedError: AEPValidationError?
|
||||
) {
|
||||
|
||||
@Test
|
||||
fun verifyAEPValid() {
|
||||
val (valid, error) = AccountEntropyPoolVerification.verifyAEP(inputBackupKey, inputChanged, inputPreviousError)
|
||||
|
||||
assertThat(valid).apply { if (expectedIsValid) isTrue() else isFalse() }
|
||||
assertThat(error).isEqualTo(expectedError)
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@Parameterized.Parameters(name = "data[{index}]: verify(\"{0}\", {1}, {2}) = ({3}, {4})")
|
||||
fun data(): Iterable<Array<Any?>> = listOf(
|
||||
TestData(inputBackupKey = "", inputChanged = false, inputPreviousError = null, expectedIsValid = false, expectedError = null),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = false, inputPreviousError = null, expectedIsValid = true, expectedError = null),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda", inputChanged = true, inputPreviousError = null, expectedIsValid = false, expectedError = AEPValidationError.TooLong(65, 64)),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = true, inputPreviousError = AEPValidationError.TooLong(65, 64), expectedIsValid = true, expectedError = null),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = false, inputPreviousError = AEPValidationError.Incorrect, expectedIsValid = true, expectedError = AEPValidationError.Incorrect),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = true, inputPreviousError = AEPValidationError.Incorrect, expectedIsValid = true, expectedError = null),
|
||||
TestData(inputBackupKey = "!@#$!@#!@#!@#%asdf#$@#$@#asdf++dabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = true, inputPreviousError = null, expectedIsValid = false, expectedError = AEPValidationError.Invalid),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = true, inputPreviousError = AEPValidationError.Invalid, expectedIsValid = true, expectedError = null),
|
||||
TestData(inputBackupKey = "!@#$!@#!@#!@#%asdf#$@#$@#asdf++dabcdabcdabcdabcdabcdabcdabcdabcd", inputChanged = true, inputPreviousError = AEPValidationError.Invalid, expectedIsValid = false, expectedError = AEPValidationError.Invalid),
|
||||
TestData(inputBackupKey = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdab", inputChanged = true, inputPreviousError = AEPValidationError.TooLong(65, 64), expectedIsValid = false, expectedError = AEPValidationError.TooLong(66, 64))
|
||||
|
||||
).map { it.toArray() }
|
||||
}
|
||||
|
||||
class TestData(
|
||||
private val inputBackupKey: String,
|
||||
private val inputChanged: Boolean,
|
||||
private val inputPreviousError: AEPValidationError?,
|
||||
private val expectedIsValid: Boolean,
|
||||
private val expectedError: AEPValidationError?
|
||||
) {
|
||||
fun toArray(): Array<Any?> {
|
||||
return arrayOf(inputBackupKey, inputChanged, inputPreviousError, expectedIsValid, expectedError)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user