• 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.enterprise;
18 
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertNotNull;
21 import static org.junit.Assert.assertNull;
22 import static org.junit.Assert.assertTrue;
23 
24 import android.app.Activity;
25 import android.app.admin.DevicePolicyManager;
26 import android.content.ComponentName;
27 import android.content.Intent;
28 import android.content.pm.UserInfo;
29 import android.os.Process;
30 import android.os.UserManager;
31 import android.view.ViewGroup;
32 import android.widget.FrameLayout;
33 import android.widget.TextView;
34 
35 import com.android.settings.DeviceAdminAdd;
36 import com.android.settings.R;
37 import com.android.settings.Settings;
38 import com.android.settings.testutils.CustomActivity;
39 import com.android.settings.testutils.SettingsRobolectricTestRunner;
40 import com.android.settings.testutils.shadow.ShadowActivity;
41 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
42 import com.android.settings.testutils.shadow.ShadowProcess;
43 import com.android.settings.testutils.shadow.ShadowUserManager;
44 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
45 
46 import org.junit.Before;
47 import org.junit.Test;
48 import org.junit.runner.RunWith;
49 import org.robolectric.Robolectric;
50 import org.robolectric.RuntimeEnvironment;
51 import org.robolectric.Shadows;
52 import org.robolectric.annotation.Config;
53 import org.robolectric.shadow.api.Shadow;
54 
55 @RunWith(SettingsRobolectricTestRunner.class)
56 @Config(shadows = {
57         ShadowDevicePolicyManager.class,
58         ShadowUserManager.class,
59         ShadowActivity.class,
60         ShadowProcess.class
61 })
62 public class ActionDisabledByAdminDialogHelperTest {
63     private ActionDisabledByAdminDialogHelper mHelper;
64     private Activity mActivity;
65     private org.robolectric.shadows.ShadowActivity mActivityShadow;
66 
67     @Before
setUp()68     public void setUp() {
69         mActivity = Robolectric.buildActivity(CustomActivity.class).get();
70         mActivityShadow = Shadow.extract(mActivity);
71         mHelper = new ActionDisabledByAdminDialogHelper(mActivity);
72     }
73 
74     @Test
testShowAdminPoliciesWithComponent()75     public void testShowAdminPoliciesWithComponent() {
76         final int userId = 123;
77         final ComponentName component = new ComponentName("some.package.name",
78                 "some.package.name.SomeClass");
79         final EnforcedAdmin admin = new EnforcedAdmin(component, userId);
80 
81         mHelper.showAdminPolicies(admin, mActivity);
82 
83         final Intent intent = mActivityShadow.getNextStartedActivity();
84         assertTrue(
85                 intent.getBooleanExtra(DeviceAdminAdd.EXTRA_CALLED_FROM_SUPPORT_DIALOG, false));
86         assertEquals(component,
87                 intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN));
88     }
89 
90     @Test
testShowAdminPoliciesWithoutComponent()91     public void testShowAdminPoliciesWithoutComponent() {
92         final int userId = 123;
93         final EnforcedAdmin admin = new EnforcedAdmin(null, userId);
94         mHelper.showAdminPolicies(admin, mActivity);
95         final Intent intent = mActivityShadow.getNextStartedActivity();
96         assertEquals(intent.getComponent(), new ComponentName(mActivity,
97                 Settings.DeviceAdminSettingsActivity.class.getName()));
98     }
99 
100     @Test
testSetAdminSupportTitle()101     public void testSetAdminSupportTitle() {
102         final ViewGroup view = new FrameLayout(mActivity);
103         final TextView textView = new TextView(mActivity);
104         textView.setId(R.id.admin_support_dialog_title);
105         view.addView(textView);
106 
107         mHelper.setAdminSupportTitle(view, UserManager.DISALLOW_ADJUST_VOLUME);
108         assertEquals(Shadows.shadowOf(textView).innerText(),
109                 mActivity.getString(R.string.disabled_by_policy_title_adjust_volume));
110 
111         mHelper.setAdminSupportTitle(view, UserManager.DISALLOW_OUTGOING_CALLS);
112         assertEquals(Shadows.shadowOf(textView).innerText(),
113                 mActivity.getString(R.string.disabled_by_policy_title_outgoing_calls));
114 
115         mHelper.setAdminSupportTitle(view, UserManager.DISALLOW_SMS);
116         assertEquals(Shadows.shadowOf(textView).innerText(),
117                 mActivity.getString(R.string.disabled_by_policy_title_sms));
118 
119         mHelper.setAdminSupportTitle(view, DevicePolicyManager.POLICY_DISABLE_CAMERA);
120         assertEquals(Shadows.shadowOf(textView).innerText(),
121                 mActivity.getString(R.string.disabled_by_policy_title_camera));
122 
123         mHelper.setAdminSupportTitle(view, DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE);
124         assertEquals(Shadows.shadowOf(textView).innerText(),
125                 mActivity.getString(R.string.disabled_by_policy_title_screen_capture));
126 
127         mHelper.setAdminSupportTitle(view, DevicePolicyManager.POLICY_MANDATORY_BACKUPS);
128         assertEquals(Shadows.shadowOf(textView).innerText(),
129                 mActivity.getString(R.string.disabled_by_policy_title_turn_off_backups));
130 
131         mHelper.setAdminSupportTitle(view, DevicePolicyManager.POLICY_SUSPEND_PACKAGES);
132         assertEquals(Shadows.shadowOf(textView).innerText(),
133                 mActivity.getString(R.string.disabled_by_policy_title_suspend_packages));
134 
135         mHelper.setAdminSupportTitle(view, "another restriction");
136         assertEquals(Shadows.shadowOf(textView).innerText(),
137                 mActivity.getString(R.string.disabled_by_policy_title));
138 
139         mHelper.setAdminSupportTitle(view, null);
140         assertEquals(Shadows.shadowOf(textView).innerText(),
141                 mActivity.getString(R.string.disabled_by_policy_title));
142     }
143 
144     @Test
testSetAdminSupportDetails()145     public void testSetAdminSupportDetails() {
146         final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
147         final UserManager userManager = RuntimeEnvironment.application.getSystemService(
148                 UserManager.class);
149         final ShadowUserManager userManagerShadow = Shadow.extract(userManager);
150         final ViewGroup view = new FrameLayout(mActivity);
151         final ComponentName component = new ComponentName("some.package.name",
152                 "some.package.name.SomeClass");
153         final EnforcedAdmin admin = new EnforcedAdmin(component, 123);
154         final TextView textView = new TextView(mActivity);
155 
156         textView.setId(R.id.admin_support_msg);
157         view.addView(textView);
158         dpmShadow.setShortSupportMessageForUser(component, 123, "some message");
159         dpmShadow.setIsAdminActiveAsUser(true);
160         userManagerShadow.addProfile(new UserInfo(123, null, 0));
161         ShadowProcess.setMyUid(Process.SYSTEM_UID);
162 
163         mHelper.setAdminSupportDetails(mActivity, view, admin);
164         assertNotNull(admin.component);
165         assertEquals("some message", Shadows.shadowOf(textView).innerText());
166     }
167 
168     @Test
testSetAdminSupportDetailsNotAdmin()169     public void testSetAdminSupportDetailsNotAdmin() {
170         final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
171         final UserManager userManager = RuntimeEnvironment.application.getSystemService(
172                 UserManager.class);
173         final ShadowUserManager userManagerShadow = Shadow.extract(userManager);
174         final ComponentName component = new ComponentName("some.package.name",
175                 "some.package.name.SomeClass");
176         final EnforcedAdmin admin = new EnforcedAdmin(component, 123);
177 
178         dpmShadow.setShortSupportMessageForUser(component, 123, "some message");
179         dpmShadow.setIsAdminActiveAsUser(false);
180         userManagerShadow.addProfile(new UserInfo(123, null, 0));
181 
182         mHelper.setAdminSupportDetails(mActivity, null, admin);
183         assertNull(admin.component);
184     }
185 }
186 
187