Merge "Fix broken LocaleManagerServiceTest cases."
This commit is contained in:
committed by
Android (Google) Code Review
commit
0101805b69
@@ -34,6 +34,8 @@ import static org.mockito.Mockito.verify;
|
||||
import android.Manifest;
|
||||
import android.app.ActivityManagerInternal;
|
||||
import android.content.Context;
|
||||
import android.content.pm.InstallSourceInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManagerInternal;
|
||||
import android.os.Binder;
|
||||
import android.os.LocaleList;
|
||||
@@ -60,13 +62,16 @@ public class LocaleManagerServiceTest {
|
||||
private static final String DEFAULT_LOCALE_TAGS = "en-XC, ar-XB";
|
||||
private static final LocaleList DEFAULT_LOCALES =
|
||||
LocaleList.forLanguageTags(DEFAULT_LOCALE_TAGS);
|
||||
private static final InstallSourceInfo DEFAULT_INSTALL_SOURCE_INFO = new InstallSourceInfo(
|
||||
/* initiatingPackageName = */ null, /* initiatingPackageSigningInfo = */ null,
|
||||
/* originatingPackageName = */ null, /* installingPackageName = */ null);
|
||||
|
||||
private LocaleManagerService mLocaleManagerService;
|
||||
|
||||
@Mock
|
||||
private Context mMockContext;
|
||||
@Mock
|
||||
private PackageManagerInternal mMockPackageManager;
|
||||
private PackageManagerInternal mMockPackageManagerInternal;
|
||||
@Mock
|
||||
private FakePackageConfigurationUpdater mFakePackageConfigurationUpdater;
|
||||
@Mock
|
||||
@@ -75,11 +80,17 @@ public class LocaleManagerServiceTest {
|
||||
private ActivityManagerInternal mMockActivityManager;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
public void setUp() throws Exception {
|
||||
mMockContext = mock(Context.class);
|
||||
mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class);
|
||||
mMockActivityManager = mock(ActivityManagerInternal.class);
|
||||
mMockPackageManager = mock(PackageManagerInternal.class);
|
||||
mMockPackageManagerInternal = mock(PackageManagerInternal.class);
|
||||
|
||||
// For unit tests, set the default (null) installer info
|
||||
PackageManager mockPackageManager = mock(PackageManager.class);
|
||||
doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mockPackageManager)
|
||||
.getInstallSourceInfo(anyString());
|
||||
doReturn(mockPackageManager).when(mMockContext).getPackageManager();
|
||||
|
||||
mFakePackageConfigurationUpdater = new FakePackageConfigurationUpdater();
|
||||
doReturn(mFakePackageConfigurationUpdater)
|
||||
@@ -93,13 +104,13 @@ public class LocaleManagerServiceTest {
|
||||
anyString(), anyString());
|
||||
|
||||
mLocaleManagerService = new LocaleManagerService(mMockContext, mMockActivityTaskManager,
|
||||
mMockActivityManager, mMockPackageManager);
|
||||
mMockActivityManager, mMockPackageManagerInternal);
|
||||
}
|
||||
|
||||
@Test(expected = SecurityException.class)
|
||||
public void testSetApplicationLocales_arbitraryAppWithoutPermissions_fails() throws Exception {
|
||||
doReturn(DEFAULT_UID)
|
||||
.when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
setUpFailingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION);
|
||||
|
||||
try {
|
||||
@@ -107,7 +118,7 @@ public class LocaleManagerServiceTest {
|
||||
LocaleList.getEmptyLocaleList());
|
||||
fail("Expected SecurityException");
|
||||
} finally {
|
||||
verify(mMockContext).enforceCallingPermission(
|
||||
verify(mMockContext).enforceCallingOrSelfPermission(
|
||||
eq(android.Manifest.permission.CHANGE_CONFIGURATION),
|
||||
anyString());
|
||||
assertNoLocalesStored(mFakePackageConfigurationUpdater.getStoredLocales());
|
||||
@@ -142,7 +153,7 @@ public class LocaleManagerServiceTest {
|
||||
@Test
|
||||
public void testSetApplicationLocales_arbitraryAppWithPermission_succeeds() throws Exception {
|
||||
doReturn(DEFAULT_UID)
|
||||
.when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
// if package is not owned by the caller, the calling app should have the following
|
||||
// permission. We will mock this to succeed to imitate that.
|
||||
setUpPassingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION);
|
||||
@@ -157,7 +168,7 @@ public class LocaleManagerServiceTest {
|
||||
@Test
|
||||
public void testSetApplicationLocales_callerOwnsPackage_succeeds() throws Exception {
|
||||
doReturn(Binder.getCallingUid())
|
||||
.when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
|
||||
mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID,
|
||||
DEFAULT_LOCALES);
|
||||
@@ -168,7 +179,7 @@ public class LocaleManagerServiceTest {
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testSetApplicationLocales_invalidPackageOrUserId_fails() throws Exception {
|
||||
doReturn(INVALID_UID)
|
||||
.when(mMockPackageManager).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyInt(), anyInt());
|
||||
try {
|
||||
mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID,
|
||||
LocaleList.getEmptyLocaleList());
|
||||
@@ -180,7 +191,7 @@ public class LocaleManagerServiceTest {
|
||||
|
||||
@Test(expected = SecurityException.class)
|
||||
public void testGetApplicationLocales_arbitraryAppWithoutPermission_fails() throws Exception {
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
||||
.getPackageUid(anyString(), anyInt(), anyInt());
|
||||
setUpFailingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||
|
||||
@@ -188,7 +199,7 @@ public class LocaleManagerServiceTest {
|
||||
mLocaleManagerService.getApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID);
|
||||
fail("Expected SecurityException");
|
||||
} finally {
|
||||
verify(mMockContext).enforceCallingPermission(
|
||||
verify(mMockContext).enforceCallingOrSelfPermission(
|
||||
eq(android.Manifest.permission.READ_APP_SPECIFIC_LOCALES),
|
||||
anyString());
|
||||
}
|
||||
@@ -198,7 +209,7 @@ public class LocaleManagerServiceTest {
|
||||
public void testGetApplicationLocales_appSpecificConfigAbsent_returnsEmptyList()
|
||||
throws Exception {
|
||||
// any valid app calling for its own package or having appropriate permission
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
||||
.getPackageUid(anyString(), anyInt(), anyInt());
|
||||
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||
doReturn(null)
|
||||
@@ -213,7 +224,7 @@ public class LocaleManagerServiceTest {
|
||||
@Test
|
||||
public void testGetApplicationLocales_appSpecificLocalesAbsent_returnsEmptyList()
|
||||
throws Exception {
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
||||
.getPackageUid(anyString(), anyInt(), anyInt());
|
||||
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||
doReturn(new PackageConfig(/* nightMode = */ 0, /* locales = */ null))
|
||||
@@ -228,7 +239,7 @@ public class LocaleManagerServiceTest {
|
||||
@Test
|
||||
public void testGetApplicationLocales_callerOwnsAppAndConfigPresent_returnsLocales()
|
||||
throws Exception {
|
||||
doReturn(Binder.getCallingUid()).when(mMockPackageManager)
|
||||
doReturn(Binder.getCallingUid()).when(mMockPackageManagerInternal)
|
||||
.getPackageUid(anyString(), anyInt(), anyInt());
|
||||
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
||||
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
||||
@@ -242,7 +253,7 @@ public class LocaleManagerServiceTest {
|
||||
@Test
|
||||
public void testGetApplicationLocales_arbitraryCallerWithPermissions_returnsLocales()
|
||||
throws Exception {
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
||||
.getPackageUid(anyString(), anyInt(), anyInt());
|
||||
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
||||
@@ -260,10 +271,10 @@ public class LocaleManagerServiceTest {
|
||||
|
||||
private void setUpFailingPermissionCheckFor(String permission) {
|
||||
doThrow(new SecurityException("Mock"))
|
||||
.when(mMockContext).enforceCallingPermission(eq(permission), any());
|
||||
.when(mMockContext).enforceCallingOrSelfPermission(eq(permission), any());
|
||||
}
|
||||
|
||||
private void setUpPassingPermissionCheckFor(String permission) {
|
||||
doNothing().when(mMockContext).enforceCallingPermission(eq(permission), any());
|
||||
doNothing().when(mMockContext).enforceCallingOrSelfPermission(eq(permission), any());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user