Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
12 changes: 9 additions & 3 deletions packages/local_auth/local_auth_android/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
## 1.0.1
## 1.0.2

* Fixes `getEnrolledBiometrics` to match documented behaviour:
* Fixes `getEnrolledBiometrics` to match documented behaviour:
Present biometrics that are not enrolled are no longer returned.
* `getEnrolledBiometrics` now only returns `weak` and `strong` biometric types.
* `getEnrolledBiometrics` now only returns `weak` and `strong` biometric types.
* `deviceSupportsBiometrics` now returns the correct value regardless of enrollment state.
* Adopts `Object.hash`.

## 1.0.1

* Adopts `Object.hash`.

## 1.0.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,11 +275,6 @@ private ArrayList<String> getEnrolledBiometrics() {
if (activity == null || activity.isFinishing()) {
return biometrics;
}
// If no hardware is present, or no biometrics are enrolled, an empty list is returned.
if (!canAuthenticateWithBiometrics()) {
return biometrics;
}
// If there are biometrics enrolled, the available ones are returned.
if (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_WEAK)
== BiometricManager.BIOMETRIC_SUCCESS) {
biometrics.add("weak");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -34,6 +35,50 @@ public void isDeviceSupportedReturnsFalse() {
verify(mockResult).success(false);
}

@Test
public void deviceSupportsBiometrics_returnsTrueForPresentNonEnrolledBiometrics() {
final LocalAuthPlugin plugin = new LocalAuthPlugin();
final MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
final BiometricManager mockBiometricManager = mock(BiometricManager.class);
when(mockBiometricManager.canAuthenticate())
.thenReturn(BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED);
plugin.setBiometricManager(mockBiometricManager);
plugin.onMethodCall(new MethodCall("deviceSupportsBiometrics", null), mockResult);
verify(mockResult).success(true);
}

@Test
public void deviceSupportsBiometrics_returnsTrueForPresentEnrolledBiometrics() {
final LocalAuthPlugin plugin = new LocalAuthPlugin();
final MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
final BiometricManager mockBiometricManager = mock(BiometricManager.class);
when(mockBiometricManager.canAuthenticate()).thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
plugin.setBiometricManager(mockBiometricManager);
plugin.onMethodCall(new MethodCall("deviceSupportsBiometrics", null), mockResult);
verify(mockResult).success(true);
}

@Test
public void deviceSupportsBiometrics_returnsFalseForNoBiometricHardware() {
final LocalAuthPlugin plugin = new LocalAuthPlugin();
final MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
final BiometricManager mockBiometricManager = mock(BiometricManager.class);
when(mockBiometricManager.canAuthenticate())
.thenReturn(BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE);
plugin.setBiometricManager(mockBiometricManager);
plugin.onMethodCall(new MethodCall("deviceSupportsBiometrics", null), mockResult);
verify(mockResult).success(false);
}

@Test
public void deviceSupportsBiometrics_returnsFalseForNullBiometricManager() {
final LocalAuthPlugin plugin = new LocalAuthPlugin();
final MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
plugin.setBiometricManager(null);
plugin.onMethodCall(new MethodCall("deviceSupportsBiometrics", null), mockResult);
verify(mockResult).success(false);
}

@Test
public void onDetachedFromActivity_ShouldReleaseActivity() {
final Activity mockActivity = mock(Activity.class);
Expand Down Expand Up @@ -94,7 +139,7 @@ public void getEnrolledBiometrics_shouldReturnEmptyList_withoutHardwarePresent()
setPluginActivity(plugin, buildMockActivity());
final MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
final BiometricManager mockBiometricManager = mock(BiometricManager.class);
when(mockBiometricManager.canAuthenticate())
when(mockBiometricManager.canAuthenticate(anyInt()))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE);
plugin.setBiometricManager(mockBiometricManager);

Expand All @@ -108,7 +153,7 @@ public void getEnrolledBiometrics_shouldReturnEmptyList_withNoMethodsEnrolled()
setPluginActivity(plugin, buildMockActivity());
final MethodChannel.Result mockResult = mock(MethodChannel.Result.class);
final BiometricManager mockBiometricManager = mock(BiometricManager.class);
when(mockBiometricManager.canAuthenticate())
when(mockBiometricManager.canAuthenticate(anyInt()))
.thenReturn(BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED);
plugin.setBiometricManager(mockBiometricManager);

Expand Down
2 changes: 1 addition & 1 deletion packages/local_auth/local_auth_android/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: local_auth_android
description: Android implementation of the local_auth plugin.
repository: https://github.com/flutter/plugins/tree/master/packages/local_auth/local_auth_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
version: 1.0.1
version: 1.0.2

environment:
sdk: ">=2.14.0 <3.0.0"
Expand Down