• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016, 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.managedprovisioning.task;
18 
19 import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE;
20 import static com.android.managedprovisioning.task.ManagedProfileSettingsTask.DEFAULT_CONTACT_REMOTE_SEARCH;
21 import static org.mockito.Matchers.anyInt;
22 import static org.mockito.Matchers.eq;
23 import static org.mockito.Mockito.never;
24 import static org.mockito.Mockito.verify;
25 import static org.mockito.Mockito.verifyNoMoreInteractions;
26 import static org.mockito.Mockito.when;
27 
28 import android.app.admin.DevicePolicyManager;
29 import android.content.ComponentName;
30 import android.content.Context;
31 import android.content.pm.PackageManager;
32 import android.graphics.Color;
33 import android.os.UserManager;
34 import android.support.test.filters.SmallTest;
35 
36 import com.android.managedprovisioning.common.SettingsFacade;
37 import com.android.managedprovisioning.model.ProvisioningParams;
38 
39 import org.junit.Before;
40 import org.junit.Test;
41 import org.mockito.Mock;
42 import org.mockito.MockitoAnnotations;
43 
44 /**
45  * Unit-tests for {@link ManagedProfileSettingsTask}.
46  */
47 @SmallTest
48 public class ManagedProfileSettingsTaskTest {
49 
50     private static final int TEST_USER_ID = 123;
51     private static final ComponentName ADMIN = new ComponentName("com.test.admin", ".Receiver");
52     private static final ProvisioningParams NO_COLOR_PARAMS = new ProvisioningParams.Builder()
53             .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE)
54             .setDeviceAdminComponentName(ADMIN)
55             .build();
56     private static final ProvisioningParams COLOR_PARAMS = new ProvisioningParams.Builder()
57             .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE)
58             .setDeviceAdminComponentName(ADMIN)
59             .setMainColor(Color.GREEN)
60             .build();
61 
62 
63     @Mock private Context mContext;
64     @Mock private UserManager mUserManager;
65     @Mock private DevicePolicyManager mDevicePolicyManager;
66     @Mock private PackageManager mPackageManager;
67     @Mock private AbstractProvisioningTask.Callback mCallback;
68     @Mock private SettingsFacade mSettingsFacade;
69     @Mock private CrossProfileIntentFiltersSetter mCrossProfileIntentFiltersSetter;
70     private ManagedProfileSettingsTask mTask;
71 
72     @Before
setUp()73     public void setUp() {
74         MockitoAnnotations.initMocks(this);
75 
76         when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
77         when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
78                 .thenReturn(mDevicePolicyManager);
79         when(mContext.getPackageManager()).thenReturn(mPackageManager);
80 
81     }
82 
83     @Test
testNoMainColor()84     public void testNoMainColor() {
85         // GIVEN that no main color was passed in the parameter
86         mTask = new ManagedProfileSettingsTask(mSettingsFacade, mCrossProfileIntentFiltersSetter,
87                 mContext, NO_COLOR_PARAMS, mCallback);
88 
89         // WHEN running the task
90         mTask.run(TEST_USER_ID);
91 
92         // THEN success should be called
93         verify(mCallback).onSuccess(mTask);
94         verifyNoMoreInteractions(mCallback);
95 
96         // THEN no color should be stored in dpm
97         verify(mDevicePolicyManager, never())
98                 .setOrganizationColorForUser(anyInt(), eq(TEST_USER_ID));
99 
100         // THEN user setup complete and contacts remote search should be set
101         verify(mSettingsFacade).setUserSetupCompleted(mContext, TEST_USER_ID);
102         verify(mSettingsFacade).setProfileContactRemoteSearch(mContext,
103                 DEFAULT_CONTACT_REMOTE_SEARCH, TEST_USER_ID);
104 
105         // THEN cross profile intent filters are set
106         verify(mCrossProfileIntentFiltersSetter).setFilters(anyInt(), eq(TEST_USER_ID));
107     }
108 
109     @Test
testMainColor()110     public void testMainColor() {
111         // GIVEN that a main color was passed in the parameter
112         mTask = new ManagedProfileSettingsTask(mSettingsFacade, mCrossProfileIntentFiltersSetter,
113                 mContext, COLOR_PARAMS, mCallback);
114 
115         // WHEN running the task
116         mTask.run(TEST_USER_ID);
117 
118         // THEN success should be called
119         verify(mCallback).onSuccess(mTask);
120         verifyNoMoreInteractions(mCallback);
121 
122         // THEN the main color should be stored in dpm
123         verify(mDevicePolicyManager).setOrganizationColorForUser(Color.GREEN, TEST_USER_ID);
124 
125         // THEN user setup complete and contacts remote search should be set
126         verify(mSettingsFacade).setUserSetupCompleted(mContext, TEST_USER_ID);
127         verify(mSettingsFacade).setProfileContactRemoteSearch(mContext,
128                 DEFAULT_CONTACT_REMOTE_SEARCH, TEST_USER_ID);
129 
130         // THEN cross profile intent filters are set
131         verify(mCrossProfileIntentFiltersSetter).setFilters(anyInt(), eq(TEST_USER_ID));
132     }
133 }
134