19de20f854362b38c5f766791a53c6891980e0eadVictor Chang/* 29de20f854362b38c5f766791a53c6891980e0eadVictor Chang * Copyright (C) 2015 The Android Open Source Project 39de20f854362b38c5f766791a53c6891980e0eadVictor Chang * 49de20f854362b38c5f766791a53c6891980e0eadVictor Chang * Licensed under the Apache License, Version 2.0 (the "License"); 59de20f854362b38c5f766791a53c6891980e0eadVictor Chang * you may not use this file except in compliance with the License. 69de20f854362b38c5f766791a53c6891980e0eadVictor Chang * You may obtain a copy of the License at 79de20f854362b38c5f766791a53c6891980e0eadVictor Chang * 89de20f854362b38c5f766791a53c6891980e0eadVictor Chang * http://www.apache.org/licenses/LICENSE-2.0 99de20f854362b38c5f766791a53c6891980e0eadVictor Chang * 109de20f854362b38c5f766791a53c6891980e0eadVictor Chang * Unless required by applicable law or agreed to in writing, software 119de20f854362b38c5f766791a53c6891980e0eadVictor Chang * distributed under the License is distributed on an "AS IS" BASIS, 129de20f854362b38c5f766791a53c6891980e0eadVictor Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139de20f854362b38c5f766791a53c6891980e0eadVictor Chang * See the License for the specific language governing permissions and 149de20f854362b38c5f766791a53c6891980e0eadVictor Chang * limitations under the License. 159de20f854362b38c5f766791a53c6891980e0eadVictor Chang */ 169de20f854362b38c5f766791a53c6891980e0eadVictor Chang 179de20f854362b38c5f766791a53c6891980e0eadVictor Changpackage com.android.bluetooth.tests; 189de20f854362b38c5f766791a53c6891980e0eadVictor Chang 199de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.app.admin.DevicePolicyManager; 209de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.content.Context; 219de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.content.pm.UserInfo; 229de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.net.Uri; 239de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.os.UserHandle; 249de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.os.UserManager; 259de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.provider.ContactsContract.CommonDataKinds.Phone; 269de20f854362b38c5f766791a53c6891980e0eadVictor Changimport android.test.AndroidTestCase; 279de20f854362b38c5f766791a53c6891980e0eadVictor Chang 289de20f854362b38c5f766791a53c6891980e0eadVictor Changimport com.android.bluetooth.util.DevicePolicyUtils; 299de20f854362b38c5f766791a53c6891980e0eadVictor Changimport com.google.testing.littlemock.LittleMock; 309de20f854362b38c5f766791a53c6891980e0eadVictor Chang 319de20f854362b38c5f766791a53c6891980e0eadVictor Changimport java.util.Arrays; 329de20f854362b38c5f766791a53c6891980e0eadVictor Changimport java.util.List; 339de20f854362b38c5f766791a53c6891980e0eadVictor Chang 349de20f854362b38c5f766791a53c6891980e0eadVictor Changimport static com.google.testing.littlemock.LittleMock.mock; 359de20f854362b38c5f766791a53c6891980e0eadVictor Changimport static com.google.testing.littlemock.LittleMock.doReturn; 369de20f854362b38c5f766791a53c6891980e0eadVictor Changimport static com.google.testing.littlemock.LittleMock.anyInt; 379de20f854362b38c5f766791a53c6891980e0eadVictor Chang 389de20f854362b38c5f766791a53c6891980e0eadVictor Changpublic class DevicePolicyUtilsTest extends AndroidTestCase { 399de20f854362b38c5f766791a53c6891980e0eadVictor Chang private static final String TAG = "DevicePolicyUtilsTest"; 409de20f854362b38c5f766791a53c6891980e0eadVictor Chang 419de20f854362b38c5f766791a53c6891980e0eadVictor Chang private static final String SYSTEM_PROPERTY_DEXMAKER_DEXCACHE = "dexmaker.dexcache"; 429de20f854362b38c5f766791a53c6891980e0eadVictor Chang 439de20f854362b38c5f766791a53c6891980e0eadVictor Chang private String mOriginalDexcache; 449de20f854362b38c5f766791a53c6891980e0eadVictor Chang 459de20f854362b38c5f766791a53c6891980e0eadVictor Chang @Override 469de20f854362b38c5f766791a53c6891980e0eadVictor Chang protected void setUp() { 479de20f854362b38c5f766791a53c6891980e0eadVictor Chang mOriginalDexcache = System.getProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE); 489de20f854362b38c5f766791a53c6891980e0eadVictor Chang System.setProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE, getContext().getCacheDir().getPath()); 499de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 509de20f854362b38c5f766791a53c6891980e0eadVictor Chang 519de20f854362b38c5f766791a53c6891980e0eadVictor Chang @Override 529de20f854362b38c5f766791a53c6891980e0eadVictor Chang protected void tearDown() { 539de20f854362b38c5f766791a53c6891980e0eadVictor Chang if (mOriginalDexcache == null) { 549de20f854362b38c5f766791a53c6891980e0eadVictor Chang System.clearProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE); 559de20f854362b38c5f766791a53c6891980e0eadVictor Chang } else { 569de20f854362b38c5f766791a53c6891980e0eadVictor Chang System.setProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE, mOriginalDexcache); 579de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 589de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 599de20f854362b38c5f766791a53c6891980e0eadVictor Chang 609de20f854362b38c5f766791a53c6891980e0eadVictor Chang public void testIsBluetoothWorkContactSharingDisabled() { 619de20f854362b38c5f766791a53c6891980e0eadVictor Chang { 629de20f854362b38c5f766791a53c6891980e0eadVictor Chang // normal user only with bluetoothContacts is disabled 639de20f854362b38c5f766791a53c6891980e0eadVictor Chang Context mockContext = getMockContext(false, true); 649de20f854362b38c5f766791a53c6891980e0eadVictor Chang Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext); 659de20f854362b38c5f766791a53c6891980e0eadVictor Chang assertEquals("expected: " + Phone.CONTENT_URI + " value = " + uri, 669de20f854362b38c5f766791a53c6891980e0eadVictor Chang Phone.CONTENT_URI, uri); 679de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 689de20f854362b38c5f766791a53c6891980e0eadVictor Chang { 699de20f854362b38c5f766791a53c6891980e0eadVictor Chang // normal user only with bluetoothContacts is not disabled 709de20f854362b38c5f766791a53c6891980e0eadVictor Chang Context mockContext = getMockContext(false, false); 719de20f854362b38c5f766791a53c6891980e0eadVictor Chang Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext); 729de20f854362b38c5f766791a53c6891980e0eadVictor Chang assertEquals("expected: " + Phone.CONTENT_URI + " value = " + uri, 739de20f854362b38c5f766791a53c6891980e0eadVictor Chang Phone.CONTENT_URI, uri); 749de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 759de20f854362b38c5f766791a53c6891980e0eadVictor Chang { 769de20f854362b38c5f766791a53c6891980e0eadVictor Chang // managedProfile with bluetoothContacts is disabled 779de20f854362b38c5f766791a53c6891980e0eadVictor Chang Context mockContext = getMockContext(true, true); 789de20f854362b38c5f766791a53c6891980e0eadVictor Chang Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext); 799de20f854362b38c5f766791a53c6891980e0eadVictor Chang assertEquals("expected: " + Phone.CONTENT_URI + " value = " + uri, 809de20f854362b38c5f766791a53c6891980e0eadVictor Chang Phone.CONTENT_URI, uri); 819de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 829de20f854362b38c5f766791a53c6891980e0eadVictor Chang { 839de20f854362b38c5f766791a53c6891980e0eadVictor Chang // managedProfile with bluetoothContacts is not disabled 849de20f854362b38c5f766791a53c6891980e0eadVictor Chang Context mockContext = getMockContext(true, false); 859de20f854362b38c5f766791a53c6891980e0eadVictor Chang Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext); 869de20f854362b38c5f766791a53c6891980e0eadVictor Chang assertEquals("expected: " + Phone.ENTERPRISE_CONTENT_URI + " value = " + uri, 879de20f854362b38c5f766791a53c6891980e0eadVictor Chang Phone.ENTERPRISE_CONTENT_URI, uri); 889de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 899de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 909de20f854362b38c5f766791a53c6891980e0eadVictor Chang 919de20f854362b38c5f766791a53c6891980e0eadVictor Chang private static final List<UserInfo> NORMAL_USERINFO_LIST = Arrays.asList( 929de20f854362b38c5f766791a53c6891980e0eadVictor Chang new UserInfo[]{ new UserInfo(0, "user0", 0)}); 939de20f854362b38c5f766791a53c6891980e0eadVictor Chang 949de20f854362b38c5f766791a53c6891980e0eadVictor Chang private static final List<UserInfo> MANAGED_USERINFO_LIST = Arrays.asList(new UserInfo[]{ 959de20f854362b38c5f766791a53c6891980e0eadVictor Chang new UserInfo(0, "user0", 0), 969de20f854362b38c5f766791a53c6891980e0eadVictor Chang new UserInfo(10, "user10", UserInfo.FLAG_MANAGED_PROFILE)}); 979de20f854362b38c5f766791a53c6891980e0eadVictor Chang 989de20f854362b38c5f766791a53c6891980e0eadVictor Chang private Context getMockContext(boolean managedProfileExists, 999de20f854362b38c5f766791a53c6891980e0eadVictor Chang boolean isBluetoothContactsSharingDisabled) { 1009de20f854362b38c5f766791a53c6891980e0eadVictor Chang DevicePolicyManager mockDpm = mock(DevicePolicyManager.class); 1019de20f854362b38c5f766791a53c6891980e0eadVictor Chang doReturn(isBluetoothContactsSharingDisabled).when(mockDpm) 1029de20f854362b38c5f766791a53c6891980e0eadVictor Chang .getBluetoothContactSharingDisabled(LittleMock.<UserHandle>anyObject()); 1039de20f854362b38c5f766791a53c6891980e0eadVictor Chang 1049de20f854362b38c5f766791a53c6891980e0eadVictor Chang UserManager mockUm = mock(UserManager.class); 1059de20f854362b38c5f766791a53c6891980e0eadVictor Chang doReturn(managedProfileExists ? MANAGED_USERINFO_LIST : NORMAL_USERINFO_LIST) 1069de20f854362b38c5f766791a53c6891980e0eadVictor Chang .when(mockUm).getProfiles(anyInt()); 1079de20f854362b38c5f766791a53c6891980e0eadVictor Chang 1089de20f854362b38c5f766791a53c6891980e0eadVictor Chang Context mockContext = mock(Context.class); 1099de20f854362b38c5f766791a53c6891980e0eadVictor Chang doReturn(mockDpm).when(mockContext).getSystemService(Context.DEVICE_POLICY_SERVICE); 1109de20f854362b38c5f766791a53c6891980e0eadVictor Chang doReturn(mockUm).when(mockContext).getSystemService(Context.USER_SERVICE); 1119de20f854362b38c5f766791a53c6891980e0eadVictor Chang 1129de20f854362b38c5f766791a53c6891980e0eadVictor Chang return mockContext; 1139de20f854362b38c5f766791a53c6891980e0eadVictor Chang } 1149de20f854362b38c5f766791a53c6891980e0eadVictor Chang} 1159de20f854362b38c5f766791a53c6891980e0eadVictor Chang 116