Add test on RustCheckCodeSender

This commit is contained in:
Benoit Marty
2025-12-16 20:03:33 +01:00
parent b5fdc179c7
commit 086229f5dc
4 changed files with 53 additions and 1 deletions

View File

@@ -38,6 +38,8 @@
<string name="screen_qr_code_login_error_cancelled_title">"Sign in request cancelled"</string>
<string name="screen_qr_code_login_error_declined_subtitle">"The sign in was declined on the other device."</string>
<string name="screen_qr_code_login_error_declined_title">"Sign in declined"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_subtitle">"You dont need to do anything else."</string>
<string name="screen_qr_code_login_error_device_already_signed_in_title">"Your other device is already signed in"</string>
<string name="screen_qr_code_login_error_expired_subtitle">"Sign in expired. Please try again."</string>
<string name="screen_qr_code_login_error_expired_title">"The sign in was not completed in time"</string>
<string name="screen_qr_code_login_error_linking_not_suported_subtitle">"Your other device does not support signing in to %s with a QR code.

View File

@@ -60,6 +60,8 @@
<string name="screen_qr_code_login_error_cancelled_title">"Sign in request cancelled"</string>
<string name="screen_qr_code_login_error_declined_subtitle">"The sign in was declined on the other device."</string>
<string name="screen_qr_code_login_error_declined_title">"Sign in declined"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_subtitle">"You dont need to do anything else."</string>
<string name="screen_qr_code_login_error_device_already_signed_in_title">"Your other device is already signed in"</string>
<string name="screen_qr_code_login_error_expired_subtitle">"Sign in expired. Please try again."</string>
<string name="screen_qr_code_login_error_expired_title">"The sign in was not completed in time"</string>
<string name="screen_qr_code_login_error_linking_not_suported_subtitle">"Your other device does not support signing in to %s with a QR code.

View File

@@ -7,7 +7,14 @@
package io.element.android.libraries.matrix.impl.fixtures.fakes
import io.element.android.tests.testutils.lambda.lambdaError
import org.matrix.rustcomponents.sdk.CheckCodeSender
import org.matrix.rustcomponents.sdk.NoHandle
class FakeFfiCheckCodeSender : CheckCodeSender(NoHandle)
class FakeFfiCheckCodeSender(
private val sendResult: (UByte) -> Unit = { _ -> lambdaError() }
) : CheckCodeSender(NoHandle) {
override suspend fun send(code: UByte) {
sendResult(code)
}
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright (c) 2025 Element Creations Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
* Please see LICENSE files in the repository root for full details.
*/
package io.element.android.libraries.matrix.impl.linknewdevice
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiCheckCodeSender
import io.element.android.tests.testutils.lambda.lambdaRecorder
import io.element.android.tests.testutils.lambda.value
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Test
class RustCheckCodeSenderTest {
@Test
fun `send invokes the Ffi object`() = runTest {
val sendResult = lambdaRecorder<UByte, Unit> { }
val sut = RustCheckCodeSender(
inner = FakeFfiCheckCodeSender(
sendResult = sendResult,
),
sessionDispatcher = StandardTestDispatcher(testScheduler),
)
sut.send(1.toUByte())
sendResult.assertions().isCalledOnce().with(value(1.toUByte()))
}
@Test
fun `validate always returns true for now`() = runTest {
val sut = RustCheckCodeSender(
inner = FakeFfiCheckCodeSender(),
sessionDispatcher = StandardTestDispatcher(testScheduler),
)
val result = sut.validate(1.toUByte())
assertThat(result).isTrue()
}
}