Add unit test on RustLinkDesktopHandler

Add unit test on RustLinkMobileHandler
Add unit test on DefaultLinkNewDeviceEntryPoint
This commit is contained in:
Benoit Marty 2025-12-16 18:04:26 +01:00 committed by Benoit Marty
parent 86cafb7c05
commit ec10a0bf87
10 changed files with 348 additions and 2 deletions

View file

@ -49,6 +49,7 @@ import io.element.android.libraries.matrix.impl.encryption.RustEncryptionService
import io.element.android.libraries.matrix.impl.exception.mapClientException
import io.element.android.libraries.matrix.impl.linknewdevice.RustLinkDesktopHandler
import io.element.android.libraries.matrix.impl.linknewdevice.RustLinkMobileHandler
import io.element.android.libraries.matrix.impl.linknewdevice.RustQrCodeDataParser
import io.element.android.libraries.matrix.impl.mapper.map
import io.element.android.libraries.matrix.impl.media.RustMediaLoader
import io.element.android.libraries.matrix.impl.media.RustMediaPreviewService
@ -754,6 +755,7 @@ class RustMatrixClient(
inner = handler,
sessionCoroutineScope = sessionCoroutineScope,
sessionDispatcher = sessionDispatcher,
qrCodeDataParser = RustQrCodeDataParser(),
)
}
}

View file

@ -0,0 +1,20 @@
/*
* 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 org.matrix.rustcomponents.sdk.QrCodeData
interface QrCodeDataParser {
fun parse(data: ByteArray): QrCodeData
}
class RustQrCodeDataParser : QrCodeDataParser {
override fun parse(data: ByteArray): QrCodeData {
return QrCodeData.fromBytes(data)
}
}

View file

@ -23,7 +23,6 @@ import org.matrix.rustcomponents.sdk.GrantLoginWithQrCodeHandler
import org.matrix.rustcomponents.sdk.GrantQrLoginProgress
import org.matrix.rustcomponents.sdk.GrantQrLoginProgressListener
import org.matrix.rustcomponents.sdk.HumanQrGrantLoginException
import org.matrix.rustcomponents.sdk.QrCodeData
import org.matrix.rustcomponents.sdk.QrCodeDecodeException
import timber.log.Timber
@ -33,6 +32,7 @@ class RustLinkDesktopHandler(
private val inner: GrantLoginWithQrCodeHandler,
private val sessionCoroutineScope: CoroutineScope,
private val sessionDispatcher: CoroutineDispatcher,
private val qrCodeDataParser: QrCodeDataParser,
) : LinkDesktopHandler {
private val _linkDesktopStep = MutableStateFlow<LinkDesktopStep>(LinkDesktopStep.Uninitialized)
override val linkDesktopStep: StateFlow<LinkDesktopStep> = _linkDesktopStep.asStateFlow()
@ -41,7 +41,7 @@ class RustLinkDesktopHandler(
Timber.tag(tag.value).d("Emit Uninitialized")
_linkDesktopStep.emit(LinkDesktopStep.Uninitialized)
try {
val qrCodeData = QrCodeData.fromBytes(data)
val qrCodeData = qrCodeDataParser.parse(data)
inner.scan(
qrCodeData = qrCodeData,
progressListener = object : GrantQrLoginProgressListener {