Refine FingerprintEnrollmentActivity
1. Add missing test cases for DeviceFoldedViewModel, DeviceRotationViewModel, and FingerprintEnrollFindSensorViewModel 2. Move most of init value of ViewModels into getDefaultViewModelCreationExtras 3. Fix FindSfpsFragment lottie because of incorrect rotation value. 4. Feed configuration change into DeviceFoldedViewModel Bug: 260957195 Test: atest CredentialModelTest AutoCredentialViewModelTest DeviceFoldedViewModelTest DeviceRotationViewModelTest FingerprintEnrollFindSensorViewModelTest FingerprintEnrollIntroViewModelTest FingerprintEnrollProgressViewModelTest FingerprintEnrollmentViewModelTest FingerprintEnrollmentActivityTest Change-Id: Ied55a895bc1774af5bdd256eccd806aaaa1680ef
This commit is contained in:
@@ -29,6 +29,7 @@ import android.annotation.NonNull;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.os.UserHandle;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
@@ -145,7 +146,14 @@ public class CredentialModelTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sameValueFromBundle() {
|
||||
public void testNullBundle() {
|
||||
final CredentialModel credentialModel = new CredentialModel(null, mClock);
|
||||
|
||||
assertThat(credentialModel.getUserId()).isEqualTo(UserHandle.myUserId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSameValueFromBundle() {
|
||||
final Bundle bundle = newCredentialModelIntentExtras(1234, 6677L, 1,
|
||||
new byte[] { 33, 44, 55 }, 987654321);
|
||||
|
||||
@@ -156,7 +164,7 @@ public class CredentialModelTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sameValueFromBundle_nullToken() {
|
||||
public void testSameValueFromBundle_nullToken() {
|
||||
final Bundle bundle = newCredentialModelIntentExtras(22, 33L, 1, null, 21L);
|
||||
|
||||
final CredentialModel model1 = new CredentialModel(bundle, mClock);
|
||||
|
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.biometrics2.ui.viewmodel;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.res.Configuration;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||
import com.android.systemui.unfold.compat.ScreenSizeFoldProvider;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class DeviceFoldedViewModelTest {
|
||||
|
||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||
|
||||
private DeviceFoldedViewModel mViewModel;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
final Application application = ApplicationProvider.getApplicationContext();
|
||||
mViewModel = new DeviceFoldedViewModel(new ScreenSizeFoldProvider(application),
|
||||
application.getMainExecutor());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveData() {
|
||||
final Configuration config1 = new Configuration();
|
||||
config1.smallestScreenWidthDp = 601;
|
||||
mViewModel.onConfigurationChanged(config1);
|
||||
assertThat(mViewModel.getLiveData().getValue()).isFalse();
|
||||
|
||||
final Configuration config2 = new Configuration();
|
||||
config2.smallestScreenWidthDp = 599;
|
||||
mViewModel.onConfigurationChanged(config2);
|
||||
assertThat(mViewModel.getLiveData().getValue()).isTrue();
|
||||
}
|
||||
}
|
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.biometrics2.ui.viewmodel;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.app.Application;
|
||||
import android.view.Surface;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class DeviceRotationViewModelTest {
|
||||
|
||||
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||
|
||||
private TestDeviceRotationViewModel mViewModel;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
TestDeviceRotationViewModel.sTestRotation = 3;
|
||||
mViewModel = new TestDeviceRotationViewModel(ApplicationProvider.getApplicationContext());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultLiveDataNotNull() {
|
||||
assertThat(mViewModel.getLiveData().getValue()).isEqualTo(mViewModel.sTestRotation);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnDisplayChange() {
|
||||
mViewModel.sTestRotation = 3;
|
||||
mViewModel.triggerOnDisplayChanged();
|
||||
assertThat(mViewModel.getLiveData().getValue()).isEqualTo(mViewModel.sTestRotation);
|
||||
}
|
||||
|
||||
public static class TestDeviceRotationViewModel extends DeviceRotationViewModel {
|
||||
|
||||
@Surface.Rotation static int sTestRotation = 0;
|
||||
|
||||
public TestDeviceRotationViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
}
|
||||
|
||||
void triggerOnDisplayChanged() {
|
||||
mDisplayListener.onDisplayChanged(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getRotation() {
|
||||
return sTestRotation;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (C) 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.biometrics2.ui.viewmodel;
|
||||
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel.FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_DIALOG;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel.FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_SKIP;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel.FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_START;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class FingerprintEnrollFindSensorViewModelTest {
|
||||
|
||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||
|
||||
private Application mApplication;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mApplication = ApplicationProvider.getApplicationContext();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClickStartButton() {
|
||||
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||
new FingerprintEnrollFindSensorViewModel(mApplication, false);
|
||||
|
||||
viewModel.onStartButtonClick();
|
||||
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_START);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClickSkipButton() {
|
||||
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||
new FingerprintEnrollFindSensorViewModel(mApplication, false);
|
||||
|
||||
viewModel.onSkipButtonClick();
|
||||
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_SKIP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClickSkipButtonInSuw() {
|
||||
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||
new FingerprintEnrollFindSensorViewModel(mApplication, true);
|
||||
|
||||
viewModel.onSkipButtonClick();
|
||||
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_DIALOG);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClickSkipDialogButton() {
|
||||
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||
new FingerprintEnrollFindSensorViewModel(mApplication, true);
|
||||
|
||||
viewModel.onSkipDialogButtonClick();
|
||||
assertThat(viewModel.getActionLiveData().getValue()).isEqualTo(
|
||||
FINGERPRINT_ENROLL_FIND_SENSOR_ACTION_SKIP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClearActionLiveData() {
|
||||
final FingerprintEnrollFindSensorViewModel viewModel =
|
||||
new FingerprintEnrollFindSensorViewModel(mApplication, false);
|
||||
|
||||
viewModel.onStartButtonClick();
|
||||
assertThat(viewModel.getActionLiveData().getValue()).isNotNull();
|
||||
|
||||
viewModel.clearActionLiveData();
|
||||
assertThat(viewModel.getActionLiveData().getValue()).isNull();
|
||||
}
|
||||
}
|
@@ -22,7 +22,6 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFP
|
||||
|
||||
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX;
|
||||
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_OK;
|
||||
import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroStatus.FINGERPRINT_ENROLLABLE_UNKNOWN;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_CONTINUE_ENROLL;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_DONE_AND_FINISH;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel.FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL;
|
||||
@@ -45,7 +44,6 @@ import android.content.res.Resources;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
@@ -66,19 +64,22 @@ import org.mockito.junit.MockitoRule;
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class FingerprintEnrollIntroViewModelTest {
|
||||
|
||||
private static final int TEST_USER_ID = 33;
|
||||
|
||||
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||
|
||||
@Mock private Resources mResources;
|
||||
@Mock private LifecycleOwner mLifecycleOwner;
|
||||
@Mock private FingerprintManager mFingerprintManager;
|
||||
|
||||
private Application mApplication;
|
||||
|
||||
private FingerprintEnrollIntroViewModel newFingerprintEnrollIntroViewModel(
|
||||
@NonNull FingerprintRepository fingerprintRepository) {
|
||||
@NonNull FingerprintRepository fingerprintRepository,
|
||||
@NonNull EnrollmentRequest enrollmentRequest) {
|
||||
final FingerprintEnrollIntroViewModel viewModel =
|
||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository,
|
||||
enrollmentRequest, TEST_USER_ID);
|
||||
// MediatorLiveData won't update itself unless observed
|
||||
viewModel.getPageStatusLiveData().observeForever(event -> {});
|
||||
return viewModel;
|
||||
@@ -92,16 +93,18 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
@Test
|
||||
public void testPageStatusLiveDataDefaultValue() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.hasScrollToBottom()).isFalse();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_UNKNOWN);
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClearActionLiveData() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
|
||||
final MutableLiveData<Integer> actionLiveData =
|
||||
(MutableLiveData<Integer>) viewModel.getActionLiveData();
|
||||
@@ -116,40 +119,32 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
@Test
|
||||
public void testGetEnrollmentRequest() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
final EnrollmentRequest request = newAllFalseRequest(mApplication);
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
|
||||
viewModel.setEnrollmentRequest(request);
|
||||
|
||||
assertThat(viewModel.getEnrollmentRequest()).isEqualTo(request);
|
||||
assertThat(viewModel.getRequest()).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnStartToUpdateEnrollableStatusOk_isSuw() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
final int userId = 44;
|
||||
viewModel.setUserId(userId);
|
||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 0);
|
||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||
|
||||
viewModel.onStart(mLifecycleOwner);
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newIsSuwRequest(mApplication));
|
||||
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnStartToUpdateEnrollableStatusReachMax_isSuw() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
final int userId = 44;
|
||||
viewModel.setUserId(userId);
|
||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 1);
|
||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||
|
||||
viewModel.onStart(mLifecycleOwner);
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newIsSuwRequest(mApplication));
|
||||
final FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||
}
|
||||
@@ -196,27 +191,21 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
}
|
||||
|
||||
private void testOnStartToUpdateEnrollableStatusOk(@NonNull EnrollmentRequest request) {
|
||||
final int userId = 45;
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
viewModel.setUserId(userId);
|
||||
viewModel.setEnrollmentRequest(request);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 0);
|
||||
|
||||
viewModel.onStart(mLifecycleOwner);
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
request);
|
||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||
}
|
||||
|
||||
private void testOnStartToUpdateEnrollableStatusReachMax(@NonNull EnrollmentRequest request) {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
final int userId = 45;
|
||||
viewModel.setUserId(userId);
|
||||
viewModel.setEnrollmentRequest(request);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 5);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 5);
|
||||
|
||||
viewModel.onStart(mLifecycleOwner);
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
request);
|
||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||
}
|
||||
@@ -224,7 +213,8 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
@Test
|
||||
public void textCanAssumeUdfps_forUdfpsUltrasonicSensor() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 5));
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_ULTRASONIC, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
|
||||
assertThat(viewModel.canAssumeUdfps()).isEqualTo(true);
|
||||
}
|
||||
@@ -232,7 +222,8 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
@Test
|
||||
public void textCanAssumeUdfps_forRearSensor() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_REAR, 5));
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_REAR, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
|
||||
assertThat(viewModel.canAssumeUdfps()).isEqualTo(false);
|
||||
}
|
||||
@@ -243,8 +234,9 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
// FingerprintRepository.isParentalConsentRequired() calls static method inside, we can't
|
||||
// mock static method
|
||||
final FingerprintRepository fingerprintRepository = mock(FingerprintRepository.class);
|
||||
final FingerprintEnrollIntroViewModel viewModel =
|
||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
||||
final FingerprintEnrollIntroViewModel viewModel = new FingerprintEnrollIntroViewModel(
|
||||
mApplication, fingerprintRepository, newAllFalseRequest(mApplication),
|
||||
TEST_USER_ID);
|
||||
|
||||
when(fingerprintRepository.isParentalConsentRequired(mApplication)).thenReturn(true);
|
||||
assertThat(viewModel.isParentalConsentRequired()).isEqualTo(true);
|
||||
@@ -259,23 +251,22 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
// FingerprintRepository.isDisabledByAdmin() calls static method inside, we can't mock
|
||||
// static method
|
||||
final FingerprintRepository fingerprintRepository = mock(FingerprintRepository.class);
|
||||
final FingerprintEnrollIntroViewModel viewModel =
|
||||
new FingerprintEnrollIntroViewModel(mApplication, fingerprintRepository);
|
||||
final FingerprintEnrollIntroViewModel viewModel = new FingerprintEnrollIntroViewModel(
|
||||
mApplication, fingerprintRepository, newAllFalseRequest(mApplication),
|
||||
TEST_USER_ID);
|
||||
|
||||
final int userId = 33;
|
||||
viewModel.setUserId(userId);
|
||||
|
||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(true);
|
||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, TEST_USER_ID)).thenReturn(true);
|
||||
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(true);
|
||||
|
||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, userId)).thenReturn(false);
|
||||
when(fingerprintRepository.isDisabledByAdmin(mApplication, TEST_USER_ID)).thenReturn(false);
|
||||
assertThat(viewModel.isBiometricUnlockDisabledByAdmin()).isEqualTo(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetHasScrolledToBottom() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
|
||||
viewModel.setHasScrolledToBottom(true);
|
||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
@@ -288,17 +279,13 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnNextButtonClick_enrollNext() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
final int userId = 46;
|
||||
viewModel.setUserId(userId);
|
||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||
|
||||
// Set latest status to FINGERPRINT_ENROLLABLE_OK
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 0);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 0);
|
||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||
|
||||
viewModel.onStart(mLifecycleOwner);
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newIsSuwRequest(mApplication));
|
||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_OK);
|
||||
|
||||
@@ -311,17 +298,13 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnNextButtonClick_doneAndFinish() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
final int userId = 46;
|
||||
viewModel.setUserId(userId);
|
||||
viewModel.setEnrollmentRequest(newIsSuwRequest(mApplication));
|
||||
|
||||
// Set latest status to FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, 1);
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, TEST_USER_ID, 1);
|
||||
setupSuwMaxFingerprintsEnrollable(mApplication, mResources, 1);
|
||||
|
||||
viewModel.onStart(mLifecycleOwner);
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newIsSuwRequest(mApplication));
|
||||
FingerprintEnrollIntroStatus status = viewModel.getPageStatusLiveData().getValue();
|
||||
assertThat(status.getEnrollableStatus()).isEqualTo(FINGERPRINT_ENROLLABLE_ERROR_REACH_MAX);
|
||||
|
||||
@@ -335,7 +318,8 @@ public class FingerprintEnrollIntroViewModelTest {
|
||||
@Test
|
||||
public void testOnSkipOrCancelButtonClick() {
|
||||
final FingerprintEnrollIntroViewModel viewModel = newFingerprintEnrollIntroViewModel(
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5));
|
||||
newFingerprintRepository(mFingerprintManager, TYPE_UDFPS_OPTICAL, 5),
|
||||
newAllFalseRequest(mApplication));
|
||||
|
||||
viewModel.onSkipOrCancelButtonClick();
|
||||
|
||||
|
@@ -56,6 +56,8 @@ import org.mockito.junit.MockitoRule;
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class FingerprintEnrollProgressViewModelTest {
|
||||
|
||||
private static final int TEST_USER_ID = 334;
|
||||
|
||||
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
|
||||
@Rule public final InstantTaskExecutorRule mTaskExecutorRule = new InstantTaskExecutorRule();
|
||||
|
||||
@@ -70,23 +72,22 @@ public class FingerprintEnrollProgressViewModelTest {
|
||||
when(mApplication.getResources()).thenReturn(mResources);
|
||||
when(mResources.getBoolean(R.bool.enrollment_message_display_controller_flag))
|
||||
.thenReturn(false);
|
||||
mViewModel = new FingerprintEnrollProgressViewModel(mApplication, mFingerprintUpdater);
|
||||
mViewModel = new FingerprintEnrollProgressViewModel(mApplication, mFingerprintUpdater,
|
||||
TEST_USER_ID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartEnrollment() {
|
||||
@EnrollReason final int enrollReason = ENROLL_FIND_SENSOR;
|
||||
final int userId = 334;
|
||||
final byte[] token = new byte[] { 1, 2, 3 };
|
||||
mViewModel.setToken(token);
|
||||
mViewModel.setUserId(userId);
|
||||
|
||||
// Start enrollment
|
||||
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
||||
|
||||
assertThat(ret).isTrue();
|
||||
verify(mFingerprintUpdater, only()).enroll(eq(token), any(CancellationSignal.class),
|
||||
eq(userId), any(EnrollmentCallback.class), eq(enrollReason));
|
||||
eq(TEST_USER_ID), any(EnrollmentCallback.class), eq(enrollReason));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -102,17 +103,15 @@ public class FingerprintEnrollProgressViewModelTest {
|
||||
@Test
|
||||
public void testCancelEnrollment() {
|
||||
@EnrollReason final int enrollReason = ENROLL_ENROLL;
|
||||
final int userId = 334;
|
||||
final byte[] token = new byte[] { 1, 2, 3 };
|
||||
mViewModel.setToken(token);
|
||||
mViewModel.setUserId(userId);
|
||||
|
||||
final TestWrapper<CancellationSignal> signalWrapper = new TestWrapper<>();
|
||||
doAnswer(invocation -> {
|
||||
signalWrapper.mValue = invocation.getArgument(1);
|
||||
return null;
|
||||
}).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
|
||||
eq(userId), any(EnrollmentCallback.class), anyInt());
|
||||
eq(TEST_USER_ID), any(EnrollmentCallback.class), anyInt());
|
||||
|
||||
// Start enrollment
|
||||
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
||||
@@ -128,17 +127,15 @@ public class FingerprintEnrollProgressViewModelTest {
|
||||
@Test
|
||||
public void testProgressUpdate() {
|
||||
@EnrollReason final int enrollReason = ENROLL_ENROLL;
|
||||
final int userId = 334;
|
||||
final byte[] token = new byte[] { 1, 2, 3 };
|
||||
mViewModel.setToken(token);
|
||||
mViewModel.setUserId(userId);
|
||||
|
||||
final TestWrapper<EnrollmentCallback> callbackWrapper = new TestWrapper<>();
|
||||
doAnswer(invocation -> {
|
||||
callbackWrapper.mValue = invocation.getArgument(3);
|
||||
return null;
|
||||
}).when(mFingerprintUpdater).enroll(any(byte[].class), any(CancellationSignal.class),
|
||||
eq(userId), any(EnrollmentCallback.class), anyInt());
|
||||
eq(TEST_USER_ID), any(EnrollmentCallback.class), anyInt());
|
||||
|
||||
// Start enrollment
|
||||
final boolean ret = mViewModel.startEnrollment(enrollReason);
|
||||
|
@@ -40,7 +40,6 @@ import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
||||
import com.android.settings.password.SetupSkipDialog;
|
||||
import com.android.settings.testutils.InstantTaskExecutorRule;
|
||||
|
||||
@@ -70,28 +69,21 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
mApplication = ApplicationProvider.getApplicationContext();
|
||||
mFingerprintRepository = new FingerprintRepository(mFingerprintManager);
|
||||
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
||||
mKeyguardManager);
|
||||
mKeyguardManager, newAllFalseRequest(mApplication));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetRequest() {
|
||||
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
||||
assertThat(mViewModel.getRequest()).isNull();
|
||||
|
||||
final EnrollmentRequest request = newAllFalseRequest(mApplication);
|
||||
mViewModel.setRequest(request);
|
||||
assertThat(mViewModel.getRequest()).isEqualTo(request);
|
||||
assertThat(mViewModel.getRequest()).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNextActivityBaseIntentExtras() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
assertThat(mViewModel.getNextActivityBaseIntentExtras()).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelaySkip1Result() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
final ActivityResult result = new ActivityResult(RESULT_SKIP, null);
|
||||
|
||||
// Run onContinueEnrollActivityResult
|
||||
@@ -102,7 +94,6 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelaySkip2Result() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
final ActivityResult result = new ActivityResult(SetupSkipDialog.RESULT_SKIP, null);
|
||||
|
||||
// Run onContinueEnrollActivityResult
|
||||
@@ -113,7 +104,6 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelayNullDataTimeoutResult() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
final ActivityResult result = new ActivityResult(RESULT_TIMEOUT, null);
|
||||
|
||||
// Run onContinueEnrollActivityResult
|
||||
@@ -127,7 +117,6 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelayWithDataTimeoutResult() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
final Intent intent = new Intent("testAction");
|
||||
intent.putExtra("testKey", "testValue");
|
||||
final ActivityResult result = new ActivityResult(RESULT_TIMEOUT, intent);
|
||||
@@ -143,7 +132,6 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelayNullDataFinishResult() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
final ActivityResult result = new ActivityResult(RESULT_FINISHED, null);
|
||||
|
||||
// Run onContinueEnrollActivityResult
|
||||
@@ -157,7 +145,6 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelayWithDataFinishResult() {
|
||||
mViewModel.setRequest(newAllFalseRequest(mApplication));
|
||||
final Intent intent = new Intent("testAction");
|
||||
intent.putExtra("testKey", "testValue");
|
||||
final ActivityResult result = new ActivityResult(RESULT_FINISHED, intent);
|
||||
@@ -173,11 +160,12 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelayNullDataFinishResultAsNewData() {
|
||||
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
||||
mKeyguardManager, newIsSuwRequest(mApplication));
|
||||
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
||||
final int userId = 111;
|
||||
final int numOfFp = 4;
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, numOfFp);
|
||||
mViewModel.setRequest(newIsSuwRequest(mApplication));
|
||||
final ActivityResult result = new ActivityResult(RESULT_FINISHED, null);
|
||||
|
||||
// Run onContinueEnrollActivityResult
|
||||
@@ -194,11 +182,12 @@ public class FingerprintEnrollmentViewModelTest {
|
||||
|
||||
@Test
|
||||
public void testOnContinueEnrollActivityResult_shouldRelayWithDataFinishResultAsNewData() {
|
||||
mViewModel = new FingerprintEnrollmentViewModel(mApplication, mFingerprintRepository,
|
||||
mKeyguardManager, newIsSuwRequest(mApplication));
|
||||
when(mKeyguardManager.isKeyguardSecure()).thenReturn(true);
|
||||
final int userId = 20;
|
||||
final int numOfFp = 9;
|
||||
setupFingerprintEnrolledFingerprints(mFingerprintManager, userId, numOfFp);
|
||||
mViewModel.setRequest(newIsSuwRequest(mApplication));
|
||||
final String action = "testAction";
|
||||
final String key = "testKey";
|
||||
final String value = "testValue";
|
||||
|
Reference in New Issue
Block a user