blob: b69fb15fb0e86b322cab048b8b5503dc04c121dc [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.bluetooth.tests;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.pm.UserInfo;
import android.net.Uri;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.test.AndroidTestCase;
import com.android.bluetooth.util.DevicePolicyUtils;
import com.google.testing.littlemock.LittleMock;
import java.util.Arrays;
import java.util.List;
import static com.google.testing.littlemock.LittleMock.mock;
import static com.google.testing.littlemock.LittleMock.doReturn;
import static com.google.testing.littlemock.LittleMock.anyInt;
public class DevicePolicyUtilsTest extends AndroidTestCase {
private static final String TAG = "DevicePolicyUtilsTest";
private static final String SYSTEM_PROPERTY_DEXMAKER_DEXCACHE = "dexmaker.dexcache";
private String mOriginalDexcache;
@Override
protected void setUp() {
mOriginalDexcache = System.getProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE);
System.setProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE, getContext().getCacheDir().getPath());
}
@Override
protected void tearDown() {
if (mOriginalDexcache == null) {
System.clearProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE);
} else {
System.setProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE, mOriginalDexcache);
}
}
public void testIsBluetoothWorkContactSharingDisabled() {
{
// normal user only with bluetoothContacts is disabled
Context mockContext = getMockContext(false, true);
Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext);
assertEquals("expected: " + Phone.CONTENT_URI + " value = " + uri,
Phone.CONTENT_URI, uri);
}
{
// normal user only with bluetoothContacts is not disabled
Context mockContext = getMockContext(false, false);
Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext);
assertEquals("expected: " + Phone.CONTENT_URI + " value = " + uri,
Phone.CONTENT_URI, uri);
}
{
// managedProfile with bluetoothContacts is disabled
Context mockContext = getMockContext(true, true);
Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext);
assertEquals("expected: " + Phone.CONTENT_URI + " value = " + uri,
Phone.CONTENT_URI, uri);
}
{
// managedProfile with bluetoothContacts is not disabled
Context mockContext = getMockContext(true, false);
Uri uri = DevicePolicyUtils.getEnterprisePhoneUri(mockContext);
assertEquals("expected: " + Phone.ENTERPRISE_CONTENT_URI + " value = " + uri,
Phone.ENTERPRISE_CONTENT_URI, uri);
}
}
private static final List<UserInfo> NORMAL_USERINFO_LIST = Arrays.asList(
new UserInfo[]{ new UserInfo(0, "user0", 0)});
private static final List<UserInfo> MANAGED_USERINFO_LIST = Arrays.asList(new UserInfo[]{
new UserInfo(0, "user0", 0),
new UserInfo(10, "user10", UserInfo.FLAG_MANAGED_PROFILE)});
private Context getMockContext(boolean managedProfileExists,
boolean isBluetoothContactsSharingDisabled) {
DevicePolicyManager mockDpm = mock(DevicePolicyManager.class);
doReturn(isBluetoothContactsSharingDisabled).when(mockDpm)
.getBluetoothContactSharingDisabled(LittleMock.<UserHandle>anyObject());
UserManager mockUm = mock(UserManager.class);
doReturn(managedProfileExists ? MANAGED_USERINFO_LIST : NORMAL_USERINFO_LIST)
.when(mockUm).getProfiles(anyInt());
Context mockContext = mock(Context.class);
doReturn(mockDpm).when(mockContext).getSystemService(Context.DEVICE_POLICY_SERVICE);
doReturn(mockUm).when(mockContext).getSystemService(Context.USER_SERVICE);
return mockContext;
}
}