1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.keyguard
18 
19 import android.os.PowerManager
20 import android.testing.AndroidTestingRunner
21 import androidx.test.filters.SmallTest
22 import com.android.systemui.SysuiTestCase
23 import com.android.systemui.dump.DumpManager
24 import com.android.systemui.util.settings.GlobalSettings
25 import org.junit.Assert.assertFalse
26 import org.junit.Assert.assertTrue
27 import org.junit.Before
28 import org.junit.Test
29 import org.junit.runner.RunWith
30 import org.mockito.Mock
31 import org.mockito.MockitoAnnotations
32 
33 @RunWith(AndroidTestingRunner::class)
34 @SmallTest
35 class FaceWakeUpTriggersConfigTest : SysuiTestCase() {
36     @Mock lateinit var globalSettings: GlobalSettings
37     @Mock lateinit var dumpManager: DumpManager
38 
39     @Before
40     fun setUp() {
41         MockitoAnnotations.initMocks(this)
42     }
43 
44     @Test
45     fun testShouldTriggerFaceAuthOnWakeUpFrom_inConfig_returnsTrue() {
46         val faceWakeUpTriggersConfig =
47             createFaceWakeUpTriggersConfig(
48                 intArrayOf(PowerManager.WAKE_REASON_POWER_BUTTON, PowerManager.WAKE_REASON_GESTURE)
49             )
50 
51         assertTrue(
52             faceWakeUpTriggersConfig.shouldTriggerFaceAuthOnWakeUpFrom(
53                 PowerManager.WAKE_REASON_POWER_BUTTON
54             )
55         )
56         assertTrue(
57             faceWakeUpTriggersConfig.shouldTriggerFaceAuthOnWakeUpFrom(
58                 PowerManager.WAKE_REASON_GESTURE
59             )
60         )
61         assertFalse(
62             faceWakeUpTriggersConfig.shouldTriggerFaceAuthOnWakeUpFrom(
63                 PowerManager.WAKE_REASON_APPLICATION
64             )
65         )
66     }
67 
68     private fun createFaceWakeUpTriggersConfig(wakeUpTriggers: IntArray): FaceWakeUpTriggersConfig {
69         overrideResource(
70             com.android.systemui.R.array.config_face_auth_wake_up_triggers,
71             wakeUpTriggers
72         )
73 
74         return FaceWakeUpTriggersConfig(mContext.getResources(), globalSettings, dumpManager)
75     }
76 }
77