• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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