1 package com.android.systemui.biometrics.domain.interactor
2 
3 import com.android.internal.widget.LockscreenCredential
4 import com.android.systemui.biometrics.domain.model.BiometricPromptRequest
5 import kotlinx.coroutines.flow.Flow
6 import kotlinx.coroutines.flow.flowOf
7 
8 /** Fake implementation of [CredentialInteractor] for tests. */
9 class FakeCredentialInteractor : CredentialInteractor {
10 
11     /** Sets return value for [isStealthModeActive]. */
12     var stealthMode: Boolean = false
13 
14     /** Sets return value for [getCredentialOwnerOrSelfId]. */
15     var credentialOwnerId: Int? = null
16 
17     override fun isStealthModeActive(userId: Int): Boolean = stealthMode
18 
19     override fun getCredentialOwnerOrSelfId(userId: Int): Int = credentialOwnerId ?: userId
20 
21     override fun verifyCredential(
22         request: BiometricPromptRequest.Credential,
23         credential: LockscreenCredential,
24     ): Flow<CredentialStatus> = verifyCredentialResponse(credential)
25 
26     /** Sets the result value for [verifyCredential]. */
27     var verifyCredentialResponse: (credential: LockscreenCredential) -> Flow<CredentialStatus> =
28         { _ ->
29             flowOf(CredentialStatus.Fail.Error("invalid"))
30         }
31 }
32