Fix verify with passphrase test

This commit is contained in:
valere 2023-01-04 09:51:51 +01:00
parent 419673675c
commit 8606ac92e1

View File

@ -20,7 +20,6 @@ import android.view.View
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.action.ViewActions.closeSoftKeyboard
import androidx.test.espresso.action.ViewActions.typeText import androidx.test.espresso.action.ViewActions.typeText
import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem
@ -33,18 +32,19 @@ import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest import androidx.test.filters.LargeTest
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import com.adevinta.android.barista.internal.viewaction.SleepViewAction
import im.vector.app.core.resources.StringProvider import im.vector.app.core.resources.StringProvider
import im.vector.app.core.utils.getMatrixInstance import im.vector.app.core.utils.getMatrixInstance
import im.vector.app.espresso.tools.waitUntilActivityVisible
import im.vector.app.espresso.tools.waitUntilViewVisible
import im.vector.app.features.MainActivity import im.vector.app.features.MainActivity
import im.vector.app.features.crypto.quads.SharedSecureStorageActivity import im.vector.app.features.crypto.quads.SharedSecureStorageActivity
import im.vector.app.features.crypto.recover.BootstrapCrossSigningTask import im.vector.app.features.crypto.recover.BootstrapCrossSigningTask
import im.vector.app.features.crypto.recover.Params import im.vector.app.features.crypto.recover.Params
import im.vector.app.features.crypto.recover.SetupMode import im.vector.app.features.crypto.recover.SetupMode
import im.vector.app.features.home.HomeActivity import im.vector.app.features.home.HomeActivity
import im.vector.app.ui.robot.AnalyticsRobot
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import org.junit.Before import org.junit.Before
import org.junit.Ignore
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@ -59,7 +59,6 @@ import kotlin.random.Random
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
@LargeTest @LargeTest
@Ignore
class VerifySessionPassphraseTest : VerificationTestBase() { class VerifySessionPassphraseTest : VerificationTestBase() {
var existingSession: Session? = null var existingSession: Session? = null
@ -120,40 +119,39 @@ class VerifySessionPassphraseTest : VerificationTestBase() {
uiTestBase.login(userId = userId, password = password, homeServerUrl = homeServerUrl) uiTestBase.login(userId = userId, password = password, homeServerUrl = homeServerUrl)
// Thread.sleep(6000) val analyticsRobot = AnalyticsRobot()
withIdlingResource(activityIdlingResource(HomeActivity::class.java)) { analyticsRobot.optOut()
onView(withId(R.id.roomListContainer))
.check(matches(isDisplayed())) waitUntilActivityVisible<HomeActivity> {
.perform(closeSoftKeyboard()) waitUntilViewVisible(withId(R.id.roomListContainer))
} }
val activity = EspressoHelper.getCurrentActivity()!! val activity = EspressoHelper.getCurrentActivity()!!
val uiSession = (activity as HomeActivity).activeSessionHolder.getActiveSession() val uiSession = (activity as HomeActivity).activeSessionHolder.getActiveSession()
withIdlingResource(initialSyncIdlingResource(uiSession)) { withIdlingResource(initialSyncIdlingResource(uiSession)) {
onView(withId(R.id.roomListContainer)) waitUntilViewVisible(withId(R.id.roomListContainer))
.check(matches(isDisplayed()))
} }
// THIS IS THE ONLY WAY I FOUND TO CLICK ON ALERTERS... :( // THIS IS THE ONLY WAY I FOUND TO CLICK ON ALERTERS... :(
// Cannot wait for view because of alerter animation? ... // Cannot wait for view because of alerter animation? ...
Thread.sleep(6000) onView(isRoot())
.perform(waitForView(withId(com.tapadoo.alerter.R.id.llAlertBackground)))
Thread.sleep(1000)
val popup = activity.findViewById<View>(com.tapadoo.alerter.R.id.llAlertBackground) val popup = activity.findViewById<View>(com.tapadoo.alerter.R.id.llAlertBackground)
activity.runOnUiThread { activity.runOnUiThread {
popup.performClick() popup.performClick()
} }
onView(withId(R.id.bottomSheetFragmentContainer)) onView(isRoot())
.perform(waitForView(withId(R.id.bottomSheetFragmentContainer)))
onView(withText(R.string.verification_verify_identity))
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
onView(isRoot()).perform(SleepViewAction.sleep(2000)) // 4S is setup so passphrase option should be visible
onView(withId(R.id.bottomSheetVerificationRecyclerView))
onView(withText(R.string.use_latest_app)) .check(matches((hasDescendant(withText(R.string.verification_cannot_access_other_session)))))
.check(matches(isDisplayed()))
// 4S is not setup so passphrase option should be hidden
onView(withId(R.id.bottomSheetFragmentContainer))
.check(matches(hasDescendant(withText(R.string.verification_cannot_access_other_session))))
onView(withId(R.id.bottomSheetVerificationRecyclerView)) onView(withId(R.id.bottomSheetVerificationRecyclerView))
.perform( .perform(
@ -178,11 +176,18 @@ class VerifySessionPassphraseTest : VerificationTestBase() {
withIdlingResource(activityIdlingResource(HomeActivity::class.java)) { withIdlingResource(activityIdlingResource(HomeActivity::class.java)) {
System.out.println("*** passphrase 1.1") System.out.println("*** passphrase 1.1")
onView(withId(R.id.bottomSheetVerificationRecyclerView)) onView(withId(R.id.bottomSheetVerificationRecyclerView))
.check( .perform(waitForView(hasDescendant(withText(R.string.verification_conclusion_ok_notice))))
matches(hasDescendant(withText(R.string.verification_conclusion_ok_self_notice)))
)
} }
// click on done
onView(withId(R.id.bottomSheetVerificationRecyclerView))
.perform(
actionOnItem<RecyclerView.ViewHolder>(
hasDescendant(withText(R.string.done)),
click()
)
)
System.out.println("*** passphrase 2") System.out.println("*** passphrase 2")
// check that all secrets are known? // check that all secrets are known?
assert(uiSession.cryptoService().crossSigningService().canCrossSign()) assert(uiSession.cryptoService().crossSigningService().canCrossSign())