• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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.devicelockcontroller;
18 
19 import static org.mockito.Mockito.mock;
20 
21 import android.app.Application;
22 
23 import com.android.devicelockcontroller.policy.DevicePolicyController;
24 import com.android.devicelockcontroller.policy.DeviceStateController;
25 import com.android.devicelockcontroller.policy.PolicyObjectsInterface;
26 import com.android.devicelockcontroller.policy.SetupController;
27 import com.android.devicelockcontroller.storage.GlobalParametersClient;
28 import com.android.devicelockcontroller.storage.GlobalParametersService;
29 import com.android.devicelockcontroller.storage.SetupParametersClient;
30 import com.android.devicelockcontroller.storage.SetupParametersService;
31 
32 import com.google.common.util.concurrent.testing.TestingExecutors;
33 
34 import org.robolectric.Robolectric;
35 import org.robolectric.TestLifecycleApplication;
36 
37 import java.lang.reflect.Method;
38 
39 /**
40  * Application class that provides mock objects for tests.
41  */
42 public final class TestDeviceLockControllerApplication extends Application implements
43         PolicyObjectsInterface, TestLifecycleApplication {
44 
45     private DevicePolicyController mPolicyController;
46     private DeviceStateController mStateController;
47     private SetupController mSetupController;
48     private SetupParametersClient mSetupParametersClient;
49     private GlobalParametersClient mGlobalParametersClient;
50 
51     @Override
getStateController()52     public DeviceStateController getStateController() {
53         if (mStateController == null) {
54             mStateController = mock(DeviceStateController.class);
55         }
56         return mStateController;
57     }
58 
59     @Override
getPolicyController()60     public DevicePolicyController getPolicyController() {
61         if (mPolicyController == null) {
62             mPolicyController = mock(DevicePolicyController.class);
63         }
64         return mPolicyController;
65     }
66 
67     @Override
getSetupController()68     public SetupController getSetupController() {
69         if (mSetupController == null) {
70             mSetupController = mock(SetupController.class);
71         }
72         return mSetupController;
73     }
74 
75     @Override
destroyObjects()76     public void destroyObjects() {
77         mPolicyController = null;
78         mStateController = null;
79         mSetupController = null;
80     }
81 
82 
83     @Override
beforeTest(Method method)84     public void beforeTest(Method method) {
85         mSetupParametersClient = SetupParametersClient.getInstance(this,
86                 TestingExecutors.sameThreadScheduledExecutor());
87         mSetupParametersClient.setService(
88                 Robolectric.setupService(SetupParametersService.class).onBind(/* intent= */ null));
89 
90         mGlobalParametersClient = GlobalParametersClient.getInstance(
91                 this, TestingExecutors.sameThreadScheduledExecutor());
92         mGlobalParametersClient.setService(
93                 Robolectric.setupService(GlobalParametersService.class).onBind(/* intent= */ null));
94     }
95 
96     @Override
prepareTest(Object test)97     public void prepareTest(Object test) {
98     }
99 
100     @Override
afterTest(Method method)101     public void afterTest(Method method) {
102         GlobalParametersClient.reset();
103         SetupParametersClient.reset();
104     }
105 }
106