ManagedProfileSettingsTaskTest.java revision 47a23e3a089354bfbc71610f6ef3c59366b20f3a
147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz/* 247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * Copyright 2016, The Android Open Source Project 347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * 447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * Licensed under the Apache License, Version 2.0 (the "License"); 547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * you may not use this file except in compliance with the License. 647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * You may obtain a copy of the License at 747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * 847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * http://www.apache.org/licenses/LICENSE-2.0 947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * 1047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * Unless required by applicable law or agreed to in writing, software 1147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * distributed under the License is distributed on an "AS IS" BASIS, 1247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * See the License for the specific language governing permissions and 1447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * limitations under the License. 1547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz */ 1647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 1747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzpackage com.android.managedprovisioning.task; 1847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 1947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; 2047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static com.android.managedprovisioning.task.ManagedProfileSettingsTask.DEFAULT_CONTACT_REMOTE_SEARCH; 2147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Matchers.any; 2247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Matchers.anyInt; 2347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Matchers.eq; 2447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Mockito.atLeastOnce; 2547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Mockito.never; 2647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Mockito.verify; 2747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Mockito.verifyNoMoreInteractions; 2847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport static org.mockito.Mockito.when; 2947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 3047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.app.admin.DevicePolicyManager; 3147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.content.ComponentName; 3247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.content.Context; 3347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.content.IntentFilter; 3447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.content.pm.PackageManager; 3547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.graphics.Color; 3647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.os.UserManager; 3747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport android.support.test.filters.SmallTest; 3847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 3947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport com.android.managedprovisioning.common.SettingsFacade; 4047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport com.android.managedprovisioning.model.ProvisioningParams; 4147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 4247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport org.junit.Before; 4347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport org.junit.Test; 4447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport org.mockito.Mock; 4547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzimport org.mockito.MockitoAnnotations; 4647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 4747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz/** 4847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz * Unit-tests for {@link ManagedProfileSettingsTask}. 4947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz */ 5047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz@SmallTest 5147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franzpublic class ManagedProfileSettingsTaskTest { 5247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 5347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz private static final int TEST_USER_ID = 123; 5447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz private static final ComponentName ADMIN = new ComponentName("com.test.admin", ".Receiver"); 5547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz private static final ProvisioningParams NO_COLOR_PARAMS = new ProvisioningParams.Builder() 5647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) 5747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .setDeviceAdminComponentName(ADMIN) 5847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .build(); 5947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz private static final ProvisioningParams COLOR_PARAMS = new ProvisioningParams.Builder() 6047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .setProvisioningAction(ACTION_PROVISION_MANAGED_PROFILE) 6147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .setDeviceAdminComponentName(ADMIN) 6247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .setMainColor(Color.GREEN) 6347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .build(); 6447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 6547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 6647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Mock private Context mContext; 6747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Mock private UserManager mUserManager; 6847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Mock private DevicePolicyManager mDevicePolicyManager; 6947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Mock private PackageManager mPackageManager; 7047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Mock private AbstractProvisioningTask.Callback mCallback; 7147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Mock private SettingsFacade mSettingsFacade; 7247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz private ManagedProfileSettingsTask mTask; 7347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 7447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Before 7547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz public void setUp() { 7647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz MockitoAnnotations.initMocks(this); 7747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 7847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); 7947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)) 8047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .thenReturn(mDevicePolicyManager); 8147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz when(mContext.getPackageManager()).thenReturn(mPackageManager); 8247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 8347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz } 8447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 8547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Test 8647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz public void testNoMainColor() { 8747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // GIVEN that no main color was passed in the parameter 8847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz mTask = new ManagedProfileSettingsTask(mSettingsFacade, mContext, NO_COLOR_PARAMS, 8947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz mCallback); 9047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 9147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // WHEN running the task 9247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz mTask.run(TEST_USER_ID); 9347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 9447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN success should be called 9547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mCallback).onSuccess(mTask); 9647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verifyNoMoreInteractions(mCallback); 9747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 9847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN no color should be stored in dpm 9947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mDevicePolicyManager, never()) 10047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz .setOrganizationColorForUser(anyInt(), eq(TEST_USER_ID)); 10147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 10247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN user setup complete and contacts remote search should be set 10347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mSettingsFacade).setUserSetupCompleted(mContext, TEST_USER_ID); 10447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mSettingsFacade).setProfileContactRemoteSearch(mContext, 10547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz DEFAULT_CONTACT_REMOTE_SEARCH, TEST_USER_ID); 10647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 10747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN cross profile intent filters are set 10847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mPackageManager, atLeastOnce()).addCrossProfileIntentFilter( 10947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz any(IntentFilter.class), 11047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz eq(TEST_USER_ID), 11147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz anyInt(), 11247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz anyInt()); 11347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz } 11447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 11547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz @Test 11647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz public void testMainColor() { 11747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // GIVEN that a main color was passed in the parameter 11847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz mTask = new ManagedProfileSettingsTask(mSettingsFacade, mContext, COLOR_PARAMS, 11947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz mCallback); 12047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 12147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // WHEN running the task 12247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz mTask.run(TEST_USER_ID); 12347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 12447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN success should be called 12547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mCallback).onSuccess(mTask); 12647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verifyNoMoreInteractions(mCallback); 12747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 12847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN the main color should be stored in dpm 12947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mDevicePolicyManager).setOrganizationColorForUser(Color.GREEN, TEST_USER_ID); 13047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 13147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN user setup complete and contacts remote search should be set 13247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mSettingsFacade).setUserSetupCompleted(mContext, TEST_USER_ID); 13347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mSettingsFacade).setProfileContactRemoteSearch(mContext, 13447a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz DEFAULT_CONTACT_REMOTE_SEARCH, TEST_USER_ID); 13547a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz 13647a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz // THEN cross profile intent filters are set 13747a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz verify(mPackageManager, atLeastOnce()).addCrossProfileIntentFilter( 13847a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz any(IntentFilter.class), 13947a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz eq(TEST_USER_ID), 14047a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz anyInt(), 14147a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz anyInt()); 14247a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz } 14347a23e3a089354bfbc71610f6ef3c59366b20f3aBenjamin Franz} 144