1 /* 2 * Copyright (C) 2021 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.provisioning; 18 19 import static com.android.managedprovisioning.provisioning.ProvisioningActivity.PROVISIONING_MODE_FULLY_MANAGED_DEVICE; 20 import static com.android.managedprovisioning.provisioning.ProvisioningActivity.PROVISIONING_MODE_WORK_PROFILE; 21 import static com.android.managedprovisioning.provisioning.ProvisioningActivity.PROVISIONING_MODE_WORK_PROFILE_ON_ORG_OWNED_DEVICE; 22 import static com.android.managedprovisioning.provisioning.ProvisioningModeWrapperProvider.WORK_PROFILE_ON_ORG_OWNED_DEVICE_WRAPPER; 23 import static com.android.managedprovisioning.provisioning.ProvisioningModeWrapperProvider.WORK_PROFILE_WRAPPER; 24 25 import static com.google.common.truth.Truth.assertThat; 26 27 import static org.junit.Assert.assertThrows; 28 29 import android.content.ComponentName; 30 import android.content.Context; 31 32 import androidx.test.InstrumentationRegistry; 33 import androidx.test.filters.SmallTest; 34 35 import com.android.managedprovisioning.R; 36 import com.android.managedprovisioning.model.ProvisioningParams; 37 import com.android.managedprovisioning.provisioning.ProvisioningModeWrapperProvider.ProvisioningModeWrapper; 38 39 import org.junit.Test; 40 41 /** 42 * Unit tests for {@link ProvisioningModeWrapperProvider}. 43 */ 44 @SmallTest 45 public class ProvisioningModeWrapperProviderTest { 46 private static final ComponentName ADMIN = new ComponentName("com.foo", "com.bar"); 47 private static final String TEST_PROVIONING_ACTION = "android.app.action.TEST"; 48 private static final ProvisioningParams SIMPLE_PARAMS = new ProvisioningParams.Builder() 49 .setProvisioningAction(TEST_PROVIONING_ACTION) 50 .setDeviceAdminComponentName(ADMIN) 51 .build(); 52 53 private final Context mContext = InstrumentationRegistry.getTargetContext(); 54 private final ProvisioningModeWrapperProvider mTestProvider = 55 new ProvisioningModeWrapperProvider(SIMPLE_PARAMS); 56 57 @Test testGetProvisioningModeWrapper_invalidMode()58 public void testGetProvisioningModeWrapper_invalidMode() { 59 assertThrows(IllegalStateException.class, 60 () -> mTestProvider.getProvisioningModeWrapper(-1)); 61 } 62 63 @Test testGetProvisioningModeWrapper_workProfile()64 public void testGetProvisioningModeWrapper_workProfile() { 65 String expected = mContext.getString(R.string.work_profile_provisioning_summary); 66 67 ProvisioningModeWrapper wrapper = mTestProvider.getProvisioningModeWrapper( 68 PROVISIONING_MODE_WORK_PROFILE); 69 70 assertWrapperAsExpected(wrapper, expected); 71 } 72 73 @Test testGetProvisioningModeWrapper_workProfileOnOrgOwnedDevice()74 public void testGetProvisioningModeWrapper_workProfileOnOrgOwnedDevice() { 75 String expected = mContext.getString(R.string.cope_provisioning_summary); 76 77 ProvisioningModeWrapper wrapper = mTestProvider.getProvisioningModeWrapper( 78 PROVISIONING_MODE_WORK_PROFILE_ON_ORG_OWNED_DEVICE); 79 80 assertWrapperAsExpected(wrapper, expected); 81 } 82 83 @Test testGetProvisioningModeWrapper_fullyManagedDevice_withoutSensorPermission()84 public void testGetProvisioningModeWrapper_fullyManagedDevice_withoutSensorPermission() { 85 ProvisioningParams params = new ProvisioningParams.Builder() 86 .setProvisioningAction(TEST_PROVIONING_ACTION) 87 .setDeviceAdminComponentName(ADMIN) 88 .setDeviceOwnerPermissionGrantOptOut(true) 89 .build(); 90 ProvisioningModeWrapperProvider provider = new ProvisioningModeWrapperProvider(params); 91 String expected = mContext.getString(R.string.fully_managed_device_provisioning_summary); 92 93 ProvisioningModeWrapper wrapper = 94 provider.getProvisioningModeWrapper(PROVISIONING_MODE_FULLY_MANAGED_DEVICE); 95 96 assertWrapperAsExpected(wrapper, expected); 97 } 98 99 @Test testGetProvisioningModeWrapper_fullyManagedDevice_withSensorPermission()100 public void testGetProvisioningModeWrapper_fullyManagedDevice_withSensorPermission() { 101 ProvisioningParams params = new ProvisioningParams.Builder() 102 .setProvisioningAction(TEST_PROVIONING_ACTION) 103 .setDeviceAdminComponentName(ADMIN) 104 .setDeviceOwnerPermissionGrantOptOut(false) 105 .build(); 106 ProvisioningModeWrapperProvider provider = new ProvisioningModeWrapperProvider(params); 107 String expected = mContext.getString( 108 R.string.fully_managed_device_with_permission_control_provisioning_summary); 109 110 ProvisioningModeWrapper wrapper = 111 provider.getProvisioningModeWrapper(PROVISIONING_MODE_FULLY_MANAGED_DEVICE); 112 113 assertWrapperAsExpected(wrapper, expected); 114 } 115 assertWrapperAsExpected(ProvisioningModeWrapper wrapper, String expected)116 private void assertWrapperAsExpected(ProvisioningModeWrapper wrapper, String expected) { 117 assertThat(mContext.getString(wrapper.summary)).isEqualTo(expected); 118 } 119 } 120