1 /* 2 * Copyright (C) 2018 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.settings.users; 18 19 import static com.google.common.truth.Truth.assertThat; 20 21 import android.content.ComponentName; 22 import android.content.Context; 23 import android.os.UserHandle; 24 import android.os.UserManager; 25 26 import com.android.settings.R; 27 import com.android.settings.testutils.shadow.SettingsShadowResources; 28 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager; 29 import com.android.settings.testutils.shadow.ShadowUserManager; 30 31 import org.junit.After; 32 import org.junit.Before; 33 import org.junit.Ignore; 34 import org.junit.Test; 35 import org.junit.runner.RunWith; 36 import org.robolectric.RobolectricTestRunner; 37 import org.robolectric.RuntimeEnvironment; 38 import org.robolectric.annotation.Config; 39 40 @RunWith(RobolectricTestRunner.class) 41 @Config(shadows = {ShadowUserManager.class, ShadowDevicePolicyManager.class, 42 SettingsShadowResources.class}) 43 public class UserCapabilitiesTest { 44 45 private Context mContext; 46 private ShadowUserManager mUserManager; 47 private ShadowDevicePolicyManager mDpm; 48 49 @Before setUp()50 public void setUp() { 51 mContext = RuntimeEnvironment.application; 52 mUserManager = ShadowUserManager.getShadow(); 53 mDpm = ShadowDevicePolicyManager.getShadow(); 54 } 55 56 @After tearDown()57 public void tearDown() { 58 SettingsShadowResources.reset(); 59 } 60 61 @Test disallowUserSwitch_restrictionIsSet_true()62 public void disallowUserSwitch_restrictionIsSet_true() { 63 mUserManager.setUserRestriction(UserHandle.of(UserHandle.myUserId()), 64 UserManager.DISALLOW_USER_SWITCH, true); 65 66 UserCapabilities userCapabilities = UserCapabilities.create(mContext); 67 userCapabilities.updateAddUserCapabilities(mContext); 68 69 assertThat(userCapabilities.mDisallowSwitchUser).isTrue(); 70 } 71 72 @Test disallowUserSwitch_restrictionIsNotSet_false()73 public void disallowUserSwitch_restrictionIsNotSet_false() { 74 mUserManager.setUserRestriction(UserHandle.of(UserHandle.myUserId()), 75 UserManager.DISALLOW_USER_SWITCH, false); 76 77 UserCapabilities userCapabilities = UserCapabilities.create(mContext); 78 userCapabilities.updateAddUserCapabilities(mContext); 79 80 assertThat(userCapabilities.mDisallowSwitchUser).isFalse(); 81 } 82 83 @Test userSwitchEnabled_off()84 public void userSwitchEnabled_off() { 85 mUserManager.setUserSwitcherEnabled(false); 86 87 final UserCapabilities userCapabilities = UserCapabilities.create(mContext); 88 userCapabilities.updateAddUserCapabilities(mContext); 89 90 assertThat(userCapabilities.mUserSwitcherEnabled).isFalse(); 91 } 92 93 @Test userSwitchEnabled_on()94 public void userSwitchEnabled_on() { 95 mUserManager.setUserSwitcherEnabled(true); 96 97 final UserCapabilities userCapabilities = UserCapabilities.create(mContext); 98 userCapabilities.updateAddUserCapabilities(mContext); 99 100 assertThat(userCapabilities.mUserSwitcherEnabled).isTrue(); 101 } 102 103 @Test 104 @Ignore restrictedProfile_enabled()105 public void restrictedProfile_enabled() { 106 mUserManager.setUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED, true); 107 mDpm.setDeviceOwner(null); 108 SettingsShadowResources.overrideResource(R.bool.config_offer_restricted_profiles, true); 109 final UserCapabilities userCapabilities = UserCapabilities.create(mContext); 110 assertThat(userCapabilities.mCanAddRestrictedProfile).isTrue(); 111 } 112 113 @Test restrictedProfile_configNotSet()114 public void restrictedProfile_configNotSet() { 115 mUserManager.setUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED, true); 116 mDpm.setDeviceOwner(null); 117 SettingsShadowResources.overrideResource(R.bool.config_offer_restricted_profiles, false); 118 final UserCapabilities userCapabilities = UserCapabilities.create(mContext); 119 assertThat(userCapabilities.mCanAddRestrictedProfile).isFalse(); 120 } 121 122 @Test restrictedProfile_deviceIsManaged()123 public void restrictedProfile_deviceIsManaged() { 124 mUserManager.setUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED, true); 125 mDpm.setDeviceOwner(new ComponentName("test", "test")); 126 SettingsShadowResources.overrideResource(R.bool.config_offer_restricted_profiles, true); 127 final UserCapabilities userCapabilities = UserCapabilities.create(mContext); 128 assertThat(userCapabilities.mCanAddRestrictedProfile).isFalse(); 129 } 130 131 @Test restrictedProfile_typeNotEnabled()132 public void restrictedProfile_typeNotEnabled() { 133 mUserManager.setUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED, false); 134 mDpm.setDeviceOwner(null); 135 SettingsShadowResources.overrideResource(R.bool.config_offer_restricted_profiles, true); 136 final UserCapabilities userCapabilities = UserCapabilities.create(mContext); 137 assertThat(userCapabilities.mCanAddRestrictedProfile).isFalse(); 138 } 139 } 140