134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam/*
234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * Copyright (C) 2017 The Android Open Source Project
334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam *
434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * you may not use this file except in compliance with the License.
634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * You may obtain a copy of the License at
734a181aceb3e49397584c1f768a75593b15c55edMaurice Lam *
834a181aceb3e49397584c1f768a75593b15c55edMaurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
934a181aceb3e49397584c1f768a75593b15c55edMaurice Lam *
1034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * Unless required by applicable law or agreed to in writing, software
1134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
1234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * See the License for the specific language governing permissions and
1434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam * limitations under the License.
1534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam */
1634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
1734a181aceb3e49397584c1f768a75593b15c55edMaurice Lampackage com.android.settings.fingerprint;
1834a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
1934a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
2034a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport static com.google.common.truth.Truth.assertThat;
2134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
2234a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport static org.robolectric.RuntimeEnvironment.application;
2334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
2434a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport android.app.Activity;
2534a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport android.app.KeyguardManager;
2634a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport android.content.Intent;
2734a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport android.content.pm.UserInfo;
2834a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport android.view.View;
2934a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport android.widget.Button;
3034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
3134a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport com.android.settings.R;
3234a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport com.android.settings.TestConfig;
3334a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport com.android.settings.testutils.SettingsRobolectricTestRunner;
3434a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport com.android.settings.testutils.shadow.ShadowEventLogWriter;
3534a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport com.android.settings.testutils.shadow.ShadowLockPatternUtils;
3634a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport com.android.settings.testutils.shadow.ShadowUserManager;
3734a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
3834a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.junit.Before;
3934a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.junit.Test;
4034a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.junit.runner.RunWith;
4134a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.mockito.Mock;
4234a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.mockito.MockitoAnnotations;
4334a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.robolectric.Robolectric;
4434a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.robolectric.Shadows;
4534a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.robolectric.annotation.Config;
4634a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.robolectric.shadows.ShadowActivity;
4734a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.robolectric.shadows.ShadowKeyguardManager;
4834a181aceb3e49397584c1f768a75593b15c55edMaurice Lamimport org.robolectric.util.ActivityController;
4934a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
5034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam@RunWith(SettingsRobolectricTestRunner.class)
5134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam@Config(
5234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        manifest = TestConfig.MANIFEST_PATH,
5334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        sdk = TestConfig.SDK_VERSION,
5434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        shadows = {
5534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam                ShadowEventLogWriter.class,
5634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam                ShadowLockPatternUtils.class,
5734a181aceb3e49397584c1f768a75593b15c55edMaurice Lam                ShadowUserManager.class
5834a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        })
5934a181aceb3e49397584c1f768a75593b15c55edMaurice Lampublic class FingerprintSuggestionActivityTest {
6034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
6134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    @Mock
6234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    private UserInfo mUserInfo;
6334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
6434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    private ActivityController<FingerprintSuggestionActivity> mController;
6534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
6634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    @Before
6734a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    public void setUp() {
6834a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        MockitoAnnotations.initMocks(this);
6934a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
7034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        final Intent intent = new Intent();
7134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        mController = Robolectric.buildActivity(FingerprintSuggestionActivity.class, intent);
7234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
7334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        ShadowUserManager.getShadow().setUserInfo(0, mUserInfo);
7434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    }
7534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
7634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    @Test
7734a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    public void testKeyguardSecure_shouldFinishWithFingerprintResultSkip() {
7834a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        getShadowKeyguardManager().setIsKeyguardSecure(true);
7934a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
8034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        mController.create().resume();
8134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
8234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        final Button cancelButton = mController.get().findViewById(R.id.fingerprint_cancel_button);
8334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        assertThat(cancelButton.getText().toString()).isEqualTo("Cancel");
8434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        assertThat(cancelButton.getVisibility()).named("Cancel visible").isEqualTo(View.VISIBLE);
8534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        cancelButton.performClick();
8634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
8734a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        ShadowActivity shadowActivity = Shadows.shadowOf(mController.get());
8834a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        assertThat(mController.get().isFinishing()).named("Is finishing").isTrue();
8934a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        assertThat(shadowActivity.getResultCode()).named("Result code")
9034a181aceb3e49397584c1f768a75593b15c55edMaurice Lam                .isEqualTo(Activity.RESULT_CANCELED);
9134a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    }
9234a181aceb3e49397584c1f768a75593b15c55edMaurice Lam
9334a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    private ShadowKeyguardManager getShadowKeyguardManager() {
9434a181aceb3e49397584c1f768a75593b15c55edMaurice Lam        return Shadows.shadowOf(application.getSystemService(KeyguardManager.class));
9534a181aceb3e49397584c1f768a75593b15c55edMaurice Lam    }
9634a181aceb3e49397584c1f768a75593b15c55edMaurice Lam}
97