Skip to content
This repository was archived by the owner on Dec 17, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ enum class OneWelcomeWrapperErrors(val code: Int, val message: String) {
NOT_IN_PROGRESS_AUTHENTICATION(8052, "Authentication is currently not in progress"),
NOT_IN_PROGRESS_OTP_AUTHENTICATION(8053, "OTP Authentication is currently not in progress"),
NOT_IN_PROGRESS_PIN_CREATION(8054, "Pin Creation is currently not in progress"),
NOT_IN_PROGRESS_FINGERPRINT_AUTHENTICATION(8055, "Fingerprint Authentication is currently not in progress"),
ACTION_NOT_ALLOWED_CUSTOM_REGISTRATION_CANCEL(
8057,
"Canceling the Custom registration right now is not allowed." +
Expand All @@ -31,7 +30,6 @@ enum class OneWelcomeWrapperErrors(val code: Int, val message: String) {
CONFIG_ERROR(8059, "Something went wrong while setting the configuration"), // Android only
BIOMETRIC_AUTHENTICATION_NOT_AVAILABLE(8060, "Biometric authentication is not supported on this device"),
ID_TOKEN_NOT_AVAILABLE(8061, "Id Token not available"),

BIOMETRIC_AUTHENTICATION_NOT_IN_PROGRESS(8062, "Biometric Authentication is currently not in progress"), // Android only

// Only used for internal testing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import com.onegini.mobile.sdk.flutter.OneWelcomeWrapperErrors.ONEWELCOME_SDK_NOT
import com.onegini.mobile.sdk.flutter.OneWelcomeWrapperErrors.NOT_FOUND_SECURITY_CONTROLLER
import com.onegini.mobile.sdk.flutter.errors.FlutterPluginException
import com.onegini.mobile.sdk.flutter.handlers.BrowserRegistrationRequestHandler
import com.onegini.mobile.sdk.flutter.handlers.FingerprintAuthenticationRequestHandler
import com.onegini.mobile.sdk.flutter.handlers.BiometricAuthenticationRequestHandler
import com.onegini.mobile.sdk.flutter.handlers.MobileAuthOtpRequestHandler
import com.onegini.mobile.sdk.flutter.handlers.PinAuthenticationRequestHandler
Expand All @@ -29,7 +28,6 @@ import javax.inject.Singleton
class OneginiSDK @Inject constructor(
private val applicationContext: Context,
private val browserRegistrationRequestHandler: BrowserRegistrationRequestHandler,
private val fingerprintRequestHandler: FingerprintAuthenticationRequestHandler,
private val biometricRequestHandler: BiometricAuthenticationRequestHandler,
private val pinAuthenticationRequestHandler: PinAuthenticationRequestHandler,
private val createPinRequestHandler: PinRequestHandler,
Expand Down Expand Up @@ -57,7 +55,6 @@ class OneginiSDK @Inject constructor(
pinAuthenticationRequestHandler
) // handlers for optional functionalities
.setBrowserRegistrationRequestHandler(browserRegistrationRequestHandler)
//.setFingerprintAuthenticationRequestHandler(fingerprintRequestHandler)
.setBiometricAuthenticationRequestHandler(biometricRequestHandler)
.setMobileAuthWithOtpRequestHandler(mobileAuthWithOtpRequestHandler)
initProviders(clientBuilder, customIdentityProviderConfigs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@ import com.onegini.mobile.sdk.flutter.useCases.ChangePinUseCase
import com.onegini.mobile.sdk.flutter.useCases.DeregisterBiometricAuthenticatorUseCase
import com.onegini.mobile.sdk.flutter.useCases.DeregisterUserUseCase
import com.onegini.mobile.sdk.flutter.useCases.EnrollMobileAuthenticationUseCase
import com.onegini.mobile.sdk.flutter.useCases.FingerprintAuthenticationRequestAcceptUseCase
import com.onegini.mobile.sdk.flutter.useCases.FingerprintAuthenticationRequestDenyUseCase
import com.onegini.mobile.sdk.flutter.useCases.FingerprintFallbackToPinUseCase
import com.onegini.mobile.sdk.flutter.useCases.GetAccessTokenUseCase
import com.onegini.mobile.sdk.flutter.useCases.GetAppToWebSingleSignOnUseCase
import com.onegini.mobile.sdk.flutter.useCases.GetAuthenticatedUserProfileUseCase
Expand Down Expand Up @@ -143,15 +140,6 @@ open class PigeonInterface : UserClientApi, ResourceMethodApi {
@Inject
lateinit var pinRegistrationRequestDenyUseCase: PinRegistrationRequestDenyUseCase

@Inject
lateinit var fingerprintAuthenticationRequestDenyUseCase: FingerprintAuthenticationRequestDenyUseCase

@Inject
lateinit var fingerprintAuthenticationRequestAcceptUseCase: FingerprintAuthenticationRequestAcceptUseCase

@Inject
lateinit var fingerprintFallbackToPinUseCase: FingerprintFallbackToPinUseCase

@Inject
lateinit var getBiometricAuthenticatorUseCase: GetBiometricAuthenticatorUseCase

Expand Down Expand Up @@ -313,18 +301,6 @@ open class PigeonInterface : UserClientApi, ResourceMethodApi {
callback(cancelCustomRegistrationActionUseCase(error))
}

override fun fingerprintFallbackToPin(callback: (Result<Unit>) -> Unit) {
callback(fingerprintFallbackToPinUseCase())
}

override fun fingerprintDenyAuthenticationRequest(callback: (Result<Unit>) -> Unit) {
callback(fingerprintAuthenticationRequestDenyUseCase())
}

override fun fingerprintAcceptAuthenticationRequest(callback: (Result<Unit>) -> Unit) {
callback(fingerprintAuthenticationRequestAcceptUseCase())
}

override fun otpDenyAuthenticationRequest(callback: (Result<Unit>) -> Unit) {
callback(otpDenyAuthenticationRequestUseCase())
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -497,10 +497,6 @@ interface UserClientApi {
/** Custom Registration Callbacks */
fun submitCustomRegistrationAction(data: String?, callback: (Result<Unit>) -> Unit)
fun cancelCustomRegistrationAction(error: String, callback: (Result<Unit>) -> Unit)
/** Fingerprint Callbacks */
fun fingerprintFallbackToPin(callback: (Result<Unit>) -> Unit)
fun fingerprintDenyAuthenticationRequest(callback: (Result<Unit>) -> Unit)
fun fingerprintAcceptAuthenticationRequest(callback: (Result<Unit>) -> Unit)
/** Biometric Callbacks */
fun showBiometricPrompt(messages: OWBiometricMessages, callback: (Result<Unit>) -> Unit)
fun biometricFallbackToPin(callback: (Result<Unit>) -> Unit)
Expand Down Expand Up @@ -1041,57 +1037,6 @@ interface UserClientApi {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.UserClientApi.fingerprintFallbackToPin", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
api.fingerprintFallbackToPin() { result: Result<Unit> ->
val error = result.exceptionOrNull()
if (error != null) {
reply.reply(wrapError(error))
} else {
reply.reply(wrapResult(null))
}
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.UserClientApi.fingerprintDenyAuthenticationRequest", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
api.fingerprintDenyAuthenticationRequest() { result: Result<Unit> ->
val error = result.exceptionOrNull()
if (error != null) {
reply.reply(wrapError(error))
} else {
reply.reply(wrapResult(null))
}
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.UserClientApi.fingerprintAcceptAuthenticationRequest", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
api.fingerprintAcceptAuthenticationRequest() { result: Result<Unit> ->
val error = result.exceptionOrNull()
if (error != null) {
reply.reply(wrapError(error))
} else {
reply.reply(wrapResult(null))
}
}
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.UserClientApi.showBiometricPrompt", codec)
if (api != null) {
Expand Down Expand Up @@ -1474,34 +1419,6 @@ class NativeCallFlutterApi(private val binaryMessenger: BinaryMessenger) {
callback()
}
}
/** Called to open fingerprint screen. */
fun n2fOpenFingerprintScreen(callback: () -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.NativeCallFlutterApi.n2fOpenFingerprintScreen", codec)
channel.send(null) {
callback()
}
}
/** Called to close fingerprint screen. */
fun n2fCloseFingerprintScreen(callback: () -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.NativeCallFlutterApi.n2fCloseFingerprintScreen", codec)
channel.send(null) {
callback()
}
}
/** Called to scan fingerprint. */
fun n2fShowScanningFingerprint(callback: () -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.NativeCallFlutterApi.n2fShowScanningFingerprint", codec)
channel.send(null) {
callback()
}
}
/** Called when fingerprint was received. */
fun n2fNextFingerprintAuthenticationAttempt(callback: () -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.NativeCallFlutterApi.n2fNextFingerprintAuthenticationAttempt", codec)
channel.send(null) {
callback()
}
}
/** Called when new biometric authentication request is made. */
fun n2fStartBiometricAuthentication(callback: () -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.NativeCallFlutterApi.n2fStartBiometricAuthentication", codec)
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package com.onegini.mobile.sdk

import android.app.Activity
import com.onegini.mobile.sdk.android.handlers.request.callback.OneginiBiometricCallback
import com.onegini.mobile.sdk.flutter.OneWelcomeWrapperErrors.BIOMETRIC_AUTHENTICATION_NOT_IN_PROGRESS
import com.onegini.mobile.sdk.flutter.SdkErrorAssert
import com.onegini.mobile.sdk.flutter.handlers.BiometricAuthenticationRequestHandler
import com.onegini.mobile.sdk.flutter.pigeonPlugin.NativeCallFlutterApi
import com.onegini.mobile.sdk.flutter.useCases.BiometricDenyAuthenticationRequestUseCase
import com.onegini.mobile.sdk.flutter.facade.BiometricPromptFacade
import androidx.biometric.BiometricPrompt
import com.onegini.mobile.sdk.android.model.entity.UserProfile
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.junit.MockitoJUnitRunner
import org.mockito.kotlin.verify
import org.mockito.kotlin.*

@RunWith(MockitoJUnitRunner::class)
class BiometricDenyAuthenticationRequestUseCaseTest {
@Mock
lateinit var oneginiBiometricCallbackMock: OneginiBiometricCallback

@Mock
lateinit var cryptoObject: BiometricPrompt.CryptoObject

@Mock
lateinit var nativeApi: NativeCallFlutterApi

@Mock
lateinit var callbackMock: (Result<Unit>) -> Unit

@Mock
private lateinit var biometricPromptFacade: BiometricPromptFacade

private lateinit var biometricDenyAuthenticationRequestUseCase: BiometricDenyAuthenticationRequestUseCase

private lateinit var biometricAuthenticationRequestHandler: BiometricAuthenticationRequestHandler

@Before
fun attach() {
biometricAuthenticationRequestHandler = BiometricAuthenticationRequestHandler(nativeApi)
biometricDenyAuthenticationRequestUseCase = BiometricDenyAuthenticationRequestUseCase(biometricAuthenticationRequestHandler, biometricPromptFacade)
}

@Test
fun `When no biometric authentication callback is set, Then it should resolve with an error`() {
biometricDenyAuthenticationRequestUseCase(callbackMock)

argumentCaptor<Result<Unit>>().apply {
verify(callbackMock).invoke(capture())
SdkErrorAssert.assertEquals(BIOMETRIC_AUTHENTICATION_NOT_IN_PROGRESS, firstValue.exceptionOrNull())
}
}

@Test
fun `When biometric authentication callback is set, Then it should resolve successfully`() {
whenBiometricHasStarted()

biometricDenyAuthenticationRequestUseCase(callbackMock)

argumentCaptor<Result<Unit>>().apply {
verify(callbackMock).invoke(capture())
Assert.assertEquals(firstValue.getOrNull(), Unit)
}
}

@Test
fun `When biometric authentication callback is set, Then it should call denyAuthenticationRequest on the sdk callback`() {
whenBiometricHasStarted()

biometricDenyAuthenticationRequestUseCase(callbackMock)

verify(oneginiBiometricCallbackMock).denyAuthenticationRequest()
}

private fun whenBiometricHasStarted() {
biometricAuthenticationRequestHandler.startAuthentication(UserProfile("123456"), cryptoObject, oneginiBiometricCallbackMock)
}

}
Loading
Loading