Add quick fix in notification troubleshot test to perform a Firebase token rotation
This commit is contained in:
parent
4aa1afec5a
commit
6bde224695
12 changed files with 243 additions and 33 deletions
|
|
@ -52,9 +52,10 @@ class PushLoopbackTest @Inject constructor(
|
|||
val testPushResult = try {
|
||||
pushService.testPush()
|
||||
} catch (pusherRejected: PushGatewayFailure.PusherRejected) {
|
||||
val hasQuickFix = pushService.getCurrentPushProvider()?.canRotateToken() == true
|
||||
delegate.updateState(
|
||||
description = stringProvider.getString(R.string.troubleshoot_notifications_test_push_loop_back_failure_1),
|
||||
status = NotificationTroubleshootTestState.Status.Failure(false)
|
||||
status = NotificationTroubleshootTestState.Status.Failure(hasQuickFix)
|
||||
)
|
||||
job.cancel()
|
||||
return
|
||||
|
|
@ -96,5 +97,11 @@ class PushLoopbackTest @Inject constructor(
|
|||
)
|
||||
}
|
||||
|
||||
override suspend fun quickFix(coroutineScope: CoroutineScope) {
|
||||
delegate.start()
|
||||
pushService.getCurrentPushProvider()?.rotateToken()
|
||||
run(coroutineScope)
|
||||
}
|
||||
|
||||
override suspend fun reset() = delegate.reset()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,9 +13,11 @@ import io.element.android.libraries.matrix.test.AN_EXCEPTION
|
|||
import io.element.android.libraries.matrix.test.A_FAILURE_REASON
|
||||
import io.element.android.libraries.push.api.gateway.PushGatewayFailure
|
||||
import io.element.android.libraries.push.test.FakePushService
|
||||
import io.element.android.libraries.pushproviders.test.FakePushProvider
|
||||
import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestState
|
||||
import io.element.android.services.toolbox.test.strings.FakeStringProvider
|
||||
import io.element.android.services.toolbox.test.systemclock.FakeSystemClock
|
||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Test
|
||||
|
|
@ -67,6 +69,41 @@ class PushLoopbackTestTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test PushLoopbackTest PusherRejected error with quick fix`() = runTest {
|
||||
val diagnosticPushHandler = DiagnosticPushHandler()
|
||||
val rotateTokenLambda = lambdaRecorder<Result<Unit>> { Result.success(Unit) }
|
||||
val sut = PushLoopbackTest(
|
||||
pushService = FakePushService(
|
||||
testPushBlock = {
|
||||
throw PushGatewayFailure.PusherRejected()
|
||||
},
|
||||
currentPushProvider = {
|
||||
FakePushProvider(
|
||||
canRotateTokenResult = { true },
|
||||
rotateTokenLambda = rotateTokenLambda,
|
||||
)
|
||||
}
|
||||
),
|
||||
diagnosticPushHandler = diagnosticPushHandler,
|
||||
clock = FakeSystemClock(),
|
||||
stringProvider = FakeStringProvider(),
|
||||
)
|
||||
launch {
|
||||
sut.run(this)
|
||||
}
|
||||
sut.state.test {
|
||||
assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true))
|
||||
assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.InProgress)
|
||||
val lastItem = awaitItem()
|
||||
assertThat(lastItem.status).isEqualTo(NotificationTroubleshootTestState.Status.Failure(true))
|
||||
sut.quickFix(this)
|
||||
assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.InProgress)
|
||||
assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Failure(true))
|
||||
rotateTokenLambda.assertions().isCalledOnce()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test PushLoopbackTest setup error`() = runTest {
|
||||
val diagnosticPushHandler = DiagnosticPushHandler()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue